From a78eec57777f31ac7fa759203294f4bd741c71a9 Mon Sep 17 00:00:00 2001 From: alexmadison Date: Tue, 8 Mar 2022 10:11:52 +0100 Subject: [PATCH 1/3] demux_td reviewed and supplies added --- dataflow_neuro/primitives.act | 21 ++++----- test/unit_tests/demux_td_2/run/prsim.out | 52 +++++++++++------------ test/unit_tests/demux_td_2/run/prsim.pdf | Bin 0 -> 64922 bytes test/unit_tests/demux_td_2/run/test.prs | 42 ++++++++++-------- test/unit_tests/demux_td_2/test.prsim | 10 ++--- 5 files changed, 67 insertions(+), 58 deletions(-) create mode 100644 test/unit_tests/demux_td_2/run/prsim.pdf diff --git a/dataflow_neuro/primitives.act b/dataflow_neuro/primitives.act index e28272d..49cf0a6 100644 --- a/dataflow_neuro/primitives.act +++ b/dataflow_neuro/primitives.act @@ -392,7 +392,7 @@ namespace tmpl { ) } - + // Demux export template defproc demux_td (avMx1of2 in; avMx1of2 out1; a1of1 token; bool? reset_B; avMx1of2<1> cond; power supply) { //control @@ -403,7 +403,7 @@ namespace tmpl { A_1C1P_X1 en_ctl(.c1=in.a,.p1=_out_v,.y=_en,.vdd=supply.vdd,.vss=supply.vss); BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss); BUF_X1 reset_buf_token(.a=_reset_BX, .y=_reset_BXt,.vdd=supply.vdd,.vss=supply.vss); - sigbuf reset_bufarray(.in=_reset_BX, .out=_reset_BXX); + sigbuf reset_bufarray(.in=_reset_BX, .out=_reset_BXX, .supply=supply); //validity bool _in_v, _c_tk_buf, _c_d_buf[N], _c_v, cond_inv_t, cond_inv_f; @@ -411,13 +411,13 @@ namespace tmpl { //orientation of condition [ CONDITION_SIGN -> - BUF_X1 c_buf_tk(.a=cond.d.d[0].t, .y=_c_tk_buf); - sigbuf c_buf_d(.in=cond.d.d[0].f, .out=_c_d_buf); + BUF_X1 c_buf_tk(.a=cond.d.d[0].t, .y=_c_tk_buf, .vss = supply.vss, .vdd = supply.vdd); + sigbuf c_buf_d(.in=cond.d.d[0].f, .out=_c_d_buf, .supply=supply); [] else -> INV_X1 invout_t(.a = cond.d.d[0].t,.y=cond_inv_t,.vdd = supply.vdd,.vss=supply.vss); INV_X1 invout_f(.a = cond.d.d[0].f,.y=cond_inv_f,.vdd = supply.vdd,.vss=supply.vss); - BUF_X1 c_buf_tk_inv(.a=cond_inv_t, .y=_c_tk_buf); - sigbuf c_buf_d_inv(.in=cond_inv_f, .out=_c_d_buf); + BUF_X1 c_buf_tk_inv(.a=cond_inv_t, .y=_c_tk_buf, .vss = supply.vss, .vdd = supply.vdd); + sigbuf c_buf_d_inv(.in=cond_inv_f, .out=_c_d_buf, .supply=supply); ] @@ -434,9 +434,9 @@ namespace tmpl { A_2C2N_RB_X4 out1_t_buf_func[N]; sigbuf out1_en_buf_t(.in=_en, .out=_en1_X_t, .supply=supply); sigbuf out1_en_buf_f(.in=_en, .out=_en1_X_f, .supply=supply); - INV_X1 out1_a_inv(.a=out1.a,.y=_out1_a_B); - sigbuf out1_a_B_buf_f(.in=_out1_a_B,.out=_out1_a_BX_t); - sigbuf out1_a_B_buf_t(.in=_out1_a_B,.out=_out1_a_BX_f); + INV_X1 out1_a_inv(.a=out1.a,.y=_out1_a_B, .vss = supply.vss, .vdd = supply.vdd); + sigbuf out1_a_B_buf_f(.in=_out1_a_B,.out=_out1_a_BX_t, .supply=supply); + sigbuf out1_a_B_buf_t(.in=_out1_a_B,.out=_out1_a_BX_f, .supply=supply); (i:N: out1_f_buf_func[i].y=out1.d.d[i].f; out1_t_buf_func[i].y=out1.d.d[i].t; @@ -462,7 +462,8 @@ namespace tmpl { bool token_a_out; A_2C2N_RB_X4 token_buf; - INV_X1 outt_a_inv(.a=token.a,.y=token_a_out); + INV_X1 outt_a_inv(.a=token.a,.y=token_a_out, .vss = supply.vss, .vdd = supply.vdd); + token_buf.y = token.r; token_buf.c1 = _en; diff --git a/test/unit_tests/demux_td_2/run/prsim.out b/test/unit_tests/demux_td_2/run/prsim.out index bb33f75..2054884 100644 --- a/test/unit_tests/demux_td_2/run/prsim.out +++ b/test/unit_tests/demux_td_2/run/prsim.out @@ -1,4 +1,4 @@ -my_demux.my_demux.out1_f_buf_func[1].n1 my_demux.my_demux.out1_t_buf_func[1].n1 my_demux.my_demux._out1_a_BX_f[0] my_demux.my_demux.out1_en_buf_t.buf1._y my_demux.my_demux.token_a_out my_demux.my_demux._out_v my_demux.my_demux._in_v my_demux.my_demux._c_d_buf[0] my_demux.my_demux._en my_demux.my_demux.vc.OR2_tf[1].y my_demux.my_demux.cond_inv_f my_demux.my_demux._out1_a_B my_demux.my_demux.invout_f.a my_demux.my_demux._out1_a_BX_t[0] my_demux.in.v my_demux.my_demux._c_v my_demux.my_demux.invout_t.a my_demux.my_demux.out1_f_buf_func[0].n1 my_demux.out1.v my_demux.my_demux.out1_t_buf_func[0].n1 my_demux.my_demux.cond_inv_t my_demux.out1.a my_demux.my_demux._en1_X_f[0] my_demux.my_demux.out_or._y my_demux.my_demux._en1_X_t[0] my_demux.my_demux.vc.OR2_tf[0]._y my_demux.my_demux.in_v_buf._y my_demux.my_demux.vc.OR2_tf[0].y my_demux.token.a my_demux.my_demux.vc.OR2_tf[1]._y my_demux.my_demux._in_c_v_ my_demux.my_demux.c_buf_tk_inv._y my_demux.my_demux.c_f_c_t_or._y my_demux.my_demux.out1_en_buf_f.buf1._y my_demux.my_demux.c_buf_d_inv.buf1._y my_demux.my_demux._c_tk_buf my_demux.my_demux.vc.myctree.C2Els[0]._y my_demux.my_demux.out1_a_B_buf_f.buf1._y my_demux.my_demux.c_el._y my_demux.my_demux.out1_a_B_buf_t.buf1._y +my_demux.my_demux.vc.ct.in[0] my_demux.my_demux.out1_f_buf_func[1].n1 my_demux.my_demux.out1_t_buf_func[1].n1 my_demux.my_demux._out1_a_BX_f[0] my_demux.my_demux.out1_en_buf_t.buf1._y my_demux.my_demux.token_a_out my_demux.my_demux._out_v my_demux.my_demux._in_v my_demux.my_demux._c_d_buf[0] my_demux.my_demux._en my_demux.my_demux.cond_inv_f my_demux.my_demux._out1_a_B my_demux.my_demux.invout_f.a my_demux.my_demux._out1_a_BX_t[0] my_demux.in.v my_demux.my_demux._c_v my_demux.my_demux.invout_t.a my_demux.my_demux.out1_f_buf_func[0].n1 my_demux.out1.v my_demux.my_demux.out1_t_buf_func[0].n1 my_demux.my_demux.cond_inv_t my_demux.out1.a my_demux.my_demux.vc.ct.in[1] my_demux.my_demux._en1_X_f[0] my_demux.my_demux.out_or._y my_demux.my_demux._en1_X_t[0] my_demux.my_demux.vc.OR2_tf[0]._y my_demux.my_demux.in_v_buf._y my_demux.token.a my_demux.my_demux.vc.OR2_tf[1]._y my_demux.my_demux._in_c_v_ my_demux.my_demux.c_buf_tk_inv._y my_demux.my_demux.c_f_c_t_or._y my_demux.my_demux.out1_en_buf_f.buf1._y my_demux.my_demux.vc.ct.C2Els[0]._y my_demux.my_demux.c_buf_d_inv.buf1._y my_demux.my_demux._c_tk_buf my_demux.my_demux.out1_a_B_buf_f.buf1._y my_demux.my_demux.c_el._y my_demux.my_demux.out1_a_B_buf_t.buf1._y 83058 my_demux.my_demux.out1_f_buf_func[0].n1 : 0 83058 my_demux.my_demux.invout_f.a : 0 83058 my_demux.my_demux.invout_t.a : 0 @@ -13,7 +13,7 @@ my_demux.my_demux.out1_f_buf_func[1].n1 my_demux.my_demux.out1_t_buf_func[1].n1 83113 my_demux.my_demux.vc.OR2_tf[1]._y : 1 [by my_demux.my_demux.out1_t_buf_func[1].n1:=0] 92187 my_demux.my_demux.token_a_out : 1 [by my_demux.token.a:=0] 96782 my_demux.my_demux.cond_inv_t : 1 [by my_demux.my_demux.invout_t.a:=0] - 96962 my_demux.my_demux.vc.OR2_tf[1].y : 0 [by my_demux.my_demux.vc.OR2_tf[1]._y:=1] + 96962 my_demux.my_demux.vc.ct.in[1] : 0 [by my_demux.my_demux.vc.OR2_tf[1]._y:=1] 112853 my_demux.my_demux._out_v : 0 [by my_demux.my_demux.out_or._y:=1] 119989 my_demux.my_demux._out1_a_B : 1 [by my_demux.out1.a:=0] 120411 my_demux.my_demux.out1_a_B_buf_f.buf1._y : 0 [by my_demux.my_demux._out1_a_B:=1] @@ -29,9 +29,9 @@ my_demux.my_demux.out1_f_buf_func[1].n1 my_demux.my_demux.out1_t_buf_func[1].n1 127989 my_demux.my_demux._c_d_buf[0] : 1 [by my_demux.my_demux.c_buf_d_inv.buf1._y:=0] 129035 my_demux.my_demux._en1_X_t[0] : 1 [by my_demux.my_demux.out1_en_buf_t.buf1._y:=0] 134715 my_demux.my_demux._c_v : 0 [by my_demux.my_demux.c_f_c_t_or._y:=1] - 146511 my_demux.my_demux.vc.OR2_tf[0].y : 0 [by my_demux.my_demux.vc.OR2_tf[0]._y:=1] - 147465 my_demux.my_demux.vc.myctree.C2Els[0]._y : 1 [by my_demux.my_demux.vc.OR2_tf[0].y:=0] - 148546 my_demux.my_demux._in_v : 0 [by my_demux.my_demux.vc.myctree.C2Els[0]._y:=1] + 146511 my_demux.my_demux.vc.ct.in[0] : 0 [by my_demux.my_demux.vc.OR2_tf[0]._y:=1] + 147465 my_demux.my_demux.vc.ct.C2Els[0]._y : 1 [by my_demux.my_demux.vc.ct.in[0]:=0] + 148546 my_demux.my_demux._in_v : 0 [by my_demux.my_demux.vc.ct.C2Els[0]._y:=1] 149528 my_demux.my_demux.c_el._y : 1 [by my_demux.my_demux._in_v:=0] 149546 my_demux.my_demux._in_c_v_ : 0 [by my_demux.my_demux.c_el._y:=1] 149640 my_demux.my_demux._en1_X_f[0] : 1 [by my_demux.my_demux.out1_en_buf_f.buf1._y:=0] @@ -39,7 +39,7 @@ my_demux.my_demux.out1_f_buf_func[1].n1 my_demux.my_demux.out1_t_buf_func[1].n1 172716 my_demux.my_demux._out1_a_BX_f[0] : 1 [by my_demux.my_demux.out1_a_B_buf_t.buf1._y:=0] 203016 my_demux.my_demux.in_v_buf._y : 1 [by my_demux.my_demux._in_v:=0] 207019 my_demux.in.v : 0 [by my_demux.my_demux.in_v_buf._y:=1] -System initialized +[]System initialized 207019 Reset : 0 251920 my_demux._reset_B : 1 [by Reset:=0] 273504 my_demux.my_demux.reset_buf._y : 0 [by my_demux._reset_B:=1] @@ -48,25 +48,25 @@ System initialized 278766 my_demux.my_demux.reset_bufarray.buf1._y : 0 [by my_demux.my_demux._reset_BX:=1] 278905 my_demux.my_demux._reset_BXX[0] : 1 [by my_demux.my_demux.reset_bufarray.buf1._y:=0] 280321 my_demux.my_demux._reset_BXt : 1 [by my_demux.my_demux.reset_buf_token._y:=0] -System reset completed +[]System reset completed -Output neutral checked +[]Output neutral checked 280321 my_demux.my_demux.invout_t.a : 1 280321 my_demux.my_demux.out1_t_buf_func[1].n1 : 1 280321 my_demux.my_demux.out1_t_buf_func[0].n1 : 1 280332 my_demux.my_demux.vc.OR2_tf[1]._y : 0 [by my_demux.my_demux.out1_t_buf_func[1].n1:=1] - 280333 my_demux.my_demux.vc.OR2_tf[1].y : 1 [by my_demux.my_demux.vc.OR2_tf[1]._y:=0] + 280333 my_demux.my_demux.vc.ct.in[1] : 1 [by my_demux.my_demux.vc.OR2_tf[1]._y:=0] 280336 my_demux.my_demux.out1_t_buf_func[0]._y : 0 [by my_demux.my_demux.out1_t_buf_func[0].n1:=1] 280373 my_demux.my_demux.out1_t_buf_func[0].y : 1 [by my_demux.my_demux.out1_t_buf_func[0]._y:=0] 280390 my_demux.my_demux.c_f_c_t_or._y : 0 [by my_demux.my_demux.invout_t.a:=1] 280525 my_demux.my_demux.vc.OR2_tf[0]._y : 0 [by my_demux.my_demux.out1_t_buf_func[0].n1:=1] - 280637 my_demux.my_demux.vc.OR2_tf[0].y : 1 [by my_demux.my_demux.vc.OR2_tf[0]._y:=0] + 280637 my_demux.my_demux.vc.ct.in[0] : 1 [by my_demux.my_demux.vc.OR2_tf[0]._y:=0] 281129 my_demux.my_demux._c_v : 1 [by my_demux.my_demux.c_f_c_t_or._y:=0] 316667 my_demux.my_demux.cond_inv_t : 0 [by my_demux.my_demux.invout_t.a:=1] 316707 my_demux.my_demux.c_buf_tk_inv._y : 1 [by my_demux.my_demux.cond_inv_t:=0] 316964 my_demux.my_demux._c_tk_buf : 0 [by my_demux.my_demux.c_buf_tk_inv._y:=1] - 328149 my_demux.my_demux.vc.myctree.C2Els[0]._y : 0 [by my_demux.my_demux.vc.OR2_tf[0].y:=1] - 328236 my_demux.my_demux._in_v : 1 [by my_demux.my_demux.vc.myctree.C2Els[0]._y:=0] + 328149 my_demux.my_demux.vc.ct.C2Els[0]._y : 0 [by my_demux.my_demux.vc.ct.in[0]:=1] + 328236 my_demux.my_demux._in_v : 1 [by my_demux.my_demux.vc.ct.C2Els[0]._y:=0] 328237 my_demux.my_demux.c_el._y : 0 [by my_demux.my_demux._in_v:=1] 328530 my_demux.my_demux.in_v_buf._y : 0 [by my_demux.my_demux._in_v:=1] 330043 my_demux.my_demux._in_c_v_ : 1 [by my_demux.my_demux.c_el._y:=0] @@ -86,11 +86,11 @@ Output neutral checked 367396 my_demux.my_demux.out1_t_buf_func[0].n1 : 0 367396 my_demux.my_demux.out1_t_buf_func[1].n1 : 0 367755 my_demux.my_demux.vc.OR2_tf[1]._y : 1 [by my_demux.my_demux.out1_t_buf_func[1].n1:=0] - 381871 my_demux.my_demux.vc.OR2_tf[1].y : 0 [by my_demux.my_demux.vc.OR2_tf[1]._y:=1] + 381871 my_demux.my_demux.vc.ct.in[1] : 0 [by my_demux.my_demux.vc.OR2_tf[1]._y:=1] 383058 my_demux.my_demux.vc.OR2_tf[0]._y : 1 [by my_demux.my_demux.out1_t_buf_func[0].n1:=0] - 383279 my_demux.my_demux.vc.OR2_tf[0].y : 0 [by my_demux.my_demux.vc.OR2_tf[0]._y:=1] - 383286 my_demux.my_demux.vc.myctree.C2Els[0]._y : 1 [by my_demux.my_demux.vc.OR2_tf[0].y:=0] - 383316 my_demux.my_demux._in_v : 0 [by my_demux.my_demux.vc.myctree.C2Els[0]._y:=1] + 383279 my_demux.my_demux.vc.ct.in[0] : 0 [by my_demux.my_demux.vc.OR2_tf[0]._y:=1] + 383286 my_demux.my_demux.vc.ct.C2Els[0]._y : 1 [by my_demux.my_demux.vc.ct.in[0]:=0] + 383316 my_demux.my_demux._in_v : 0 [by my_demux.my_demux.vc.ct.C2Els[0]._y:=1] 390029 my_demux.my_demux.in_v_buf._y : 1 [by my_demux.my_demux._in_v:=0] 447490 my_demux.in.v : 0 [by my_demux.my_demux.in_v_buf._y:=1] 447490 my_demux.out1.a : 1 @@ -103,7 +103,7 @@ Output neutral checked 450375 my_demux.my_demux._out1_a_BX_f[0] : 0 [by my_demux.my_demux.out1_a_B_buf_t.buf1._y:=1] 450606 my_demux.my_demux.out1_t_buf_func[1].y : 0 [by my_demux.my_demux.out1_t_buf_func[1]._y:=1] 468950 my_demux.my_demux.out1_t_buf_func[0].y : 0 [by my_demux.my_demux.out1_t_buf_func[0]._y:=1] -First Cond Checked +[]First Cond Checked 468950 my_demux.my_demux.invout_t.a : 0 468950 my_demux.out1.v : 0 468950 my_demux.out1.a : 0 @@ -128,7 +128,7 @@ First Cond Checked 484418 my_demux.my_demux._en1_X_f[0] : 1 [by my_demux.my_demux.out1_en_buf_f.buf1._y:=0] 527786 my_demux.my_demux.out1_en_buf_t.buf1._y : 0 [by my_demux.my_demux._en:=1] 527797 my_demux.my_demux._en1_X_t[0] : 1 [by my_demux.my_demux.out1_en_buf_t.buf1._y:=0] -System initialized +[]System initialized 527797 my_demux.my_demux.invout_f.a : 1 527797 my_demux.my_demux.out1_t_buf_func[1].n1 : 1 527797 my_demux.my_demux.out1_t_buf_func[0].n1 : 1 @@ -138,15 +138,15 @@ System initialized 528325 my_demux.my_demux.out1_t_buf_func[0]._y : 0 [by my_demux.my_demux.out1_t_buf_func[0].n1:=1] 530248 my_demux.my_demux.out1_t_buf_func[1].y : 1 [by my_demux.my_demux.out1_t_buf_func[1]._y:=0] 530438 my_demux.my_demux.vc.OR2_tf[1]._y : 0 [by my_demux.my_demux.out1_t_buf_func[1].n1:=1] - 530440 my_demux.my_demux.vc.OR2_tf[1].y : 1 [by my_demux.my_demux.vc.OR2_tf[1]._y:=0] + 530440 my_demux.my_demux.vc.ct.in[1] : 1 [by my_demux.my_demux.vc.OR2_tf[1]._y:=0] 532359 my_demux.my_demux.vc.OR2_tf[0]._y : 0 [by my_demux.my_demux.out1_t_buf_func[0].n1:=1] 541366 my_demux.my_demux.out1_t_buf_func[0].y : 1 [by my_demux.my_demux.out1_t_buf_func[0]._y:=0] 552092 my_demux.my_demux.c_buf_d_inv.buf1._y : 1 [by my_demux.my_demux.cond_inv_f:=0] 552095 my_demux.my_demux._c_d_buf[0] : 0 [by my_demux.my_demux.c_buf_d_inv.buf1._y:=1] 554744 my_demux.my_demux._c_v : 1 [by my_demux.my_demux.c_f_c_t_or._y:=0] - 593317 my_demux.my_demux.vc.OR2_tf[0].y : 1 [by my_demux.my_demux.vc.OR2_tf[0]._y:=0] - 593346 my_demux.my_demux.vc.myctree.C2Els[0]._y : 0 [by my_demux.my_demux.vc.OR2_tf[0].y:=1] - 593663 my_demux.my_demux._in_v : 1 [by my_demux.my_demux.vc.myctree.C2Els[0]._y:=0] + 593317 my_demux.my_demux.vc.ct.in[0] : 1 [by my_demux.my_demux.vc.OR2_tf[0]._y:=0] + 593346 my_demux.my_demux.vc.ct.C2Els[0]._y : 0 [by my_demux.my_demux.vc.ct.in[0]:=1] + 593663 my_demux.my_demux._in_v : 1 [by my_demux.my_demux.vc.ct.C2Els[0]._y:=0] 593707 my_demux.my_demux.c_el._y : 0 [by my_demux.my_demux._in_v:=1] 593816 my_demux.my_demux.in_v_buf._y : 0 [by my_demux.my_demux._in_v:=1] 595264 my_demux.my_demux.token_buf._y : 0 [by my_demux.my_demux._in_v:=1] @@ -172,12 +172,12 @@ System initialized 677919 my_demux.my_demux.out1_t_buf_func[1].n1 : 0 677919 my_demux.my_demux.out1_t_buf_func[0].n1 : 0 677933 my_demux.my_demux.vc.OR2_tf[0]._y : 1 [by my_demux.my_demux.out1_t_buf_func[0].n1:=0] - 677940 my_demux.my_demux.vc.OR2_tf[0].y : 0 [by my_demux.my_demux.vc.OR2_tf[0]._y:=1] + 677940 my_demux.my_demux.vc.ct.in[0] : 0 [by my_demux.my_demux.vc.OR2_tf[0]._y:=1] 678081 my_demux.my_demux.token_a_out : 1 [by my_demux.token.a:=0] 685288 my_demux.my_demux.vc.OR2_tf[1]._y : 1 [by my_demux.my_demux.out1_t_buf_func[1].n1:=0] - 685448 my_demux.my_demux.vc.OR2_tf[1].y : 0 [by my_demux.my_demux.vc.OR2_tf[1]._y:=1] - 707005 my_demux.my_demux.vc.myctree.C2Els[0]._y : 1 [by my_demux.my_demux.vc.OR2_tf[1].y:=0] - 707006 my_demux.my_demux._in_v : 0 [by my_demux.my_demux.vc.myctree.C2Els[0]._y:=1] + 685448 my_demux.my_demux.vc.ct.in[1] : 0 [by my_demux.my_demux.vc.OR2_tf[1]._y:=1] + 707005 my_demux.my_demux.vc.ct.C2Els[0]._y : 1 [by my_demux.my_demux.vc.ct.in[1]:=0] + 707006 my_demux.my_demux._in_v : 0 [by my_demux.my_demux.vc.ct.C2Els[0]._y:=1] 707007 my_demux.my_demux.in_v_buf._y : 1 [by my_demux.my_demux._in_v:=0] 707008 my_demux.in.v : 0 [by my_demux.my_demux.in_v_buf._y:=1] 707008 my_demux.my_demux.invout_f.a : 0 diff --git a/test/unit_tests/demux_td_2/run/prsim.pdf b/test/unit_tests/demux_td_2/run/prsim.pdf new file mode 100644 index 0000000000000000000000000000000000000000..261c54e0b44ad4ff8ff99e6d5de3ebbf7aa31bbf GIT binary patch literal 64922 zcmaI6byQqIw>=m%NN@`p90HBIySqEV8h7{L?$WqRaF@n{ySuvucMT-ddEa|8zc*{m z^gp+&)-5~d)V}-dDk^1hNd^{1b|k8*4bsYXBo}qW5U_mMgVFdsDCfS^0n7hYZA|05r2Q7IpB1^!slx zHdbzCMh;Fk79RG0KT;M}c2-7iRyGcH7EVr1u76`I|Le;2KbAydQU$s=xH+3bO#9Dv z|F>!XS^NL6>%VFK&pITnY$2v2WsR<+Og*?#S!qt+L<)6n?|21@Rbp{&S zA$evGc5O~wj3g3!e$UI+(D%PPe~9;pzA=>YOBKj>eE-|3l=t)Z{kG8F#<%&9?ft)kw{LWQbmQG~ z*vDFQUyL*FY^E0f)cU=>T@3%dyO|%Z{gZ=mi1g#Q(x}mgrMo z+moy0vKVG0DeGo6*<@MAv4HFQJ${9$}{kG_N_>vPr& z^pmzr*v$F|y`%zpj_-Axn&?E#YR%2R{Ieuh5lwhoSbH@}-D&#Xkea9N6t^hJBYONT zKiPY)7^xD}Q^7fqKd-JF9JZ~84c+;gtw zsblWfFKZ!H5agR6c*#aRq91|a6lxRHPl7oLXJ_@R;pp$;tASOC*woF1#Zky1kNSH%Vp7%u|ME;U#67CrV1Q z`I~?7&^1H4rMZh44k0o0no5q*|H(quEsEs@y)W!j`5AdeQ_q$)fYfEZlrmZ#eQ|;# zf>HbwyP^~PmE&5mwtU2NKpS@Qb_tO$zq*OQy{vOJS#ZF!$`hAojC~PpxUDlun?`-e zdE__$51pgOI~tniIyqo&e>fqTW&-MO$5(BYYiV*R#=*bbQN^WqG)?7+{&`G!cPA2zRkv7} zEETn)?3f@^ecN{NXL&c(Oi}GAM#5Le=o;}sHKK9WT&F!}LPeeQENg`_K3-)Bez&S4 zmhH?dxnE(7ntghQQ#kVss}a12Dgm>%+Ou&e@ICTNkcY-6mHX6v^}|qV{>Z7r#=yi6 z7Y(S9@BxoAK~+pZ+`s%&RHtBxP9o6+C9RA@H&l%@Op(F6UK`Y=VeUyjb;I=_6$XAy zed^9}i{pNl+;5G5kX1RBZf`s#8oF==^I19juG8Aq8$>$QU$9A>oY?%-iR6>F#ID`A z;f!u8h%TV7nLwxH!?AHP+*#+ORnr2vi2^PiPfO2F4UC_+*@u0(7#gwd6*)7!;9GBQ zZ1Yx!a+bK2_LkVah6QzH939WG1e91EZ_p3y$bEC$xeuUDKhVW}TJp#@*b;Q=(hH<$ z^!;>1s*9lUrv~SRXzKOw11&vf6O_84oG*|_*RYvkn=-ur?;O)-Hjszl$?%j6nQYYf zkJ-_UZ&bg+7h;wEI4(Ib(woBd78;3QHotyJOQR(S+xsl`phE4$6xONHP+MVWuA&9d ze)95+X<+@ltu7VwZ_4~s05%2E*m&yS1FZHO5-%s%i`#aNdFu^

iPig2|3vi-sk? zanjZ)E&R6>Tj)Dj`{4aiLAF@ESPTm^ ziT8O%L+8w`p@{it83CWZW9r|`F2#XkueGKa>RXoQ`0dZzEL~Dt2ND4`q!QCl6+K_-5D|>clakzOEy2miM!d#&|Sl*hL_vnZdVM zg&5aiq%l@}zw&3y)mf+x*k>@*Ux*FHD;Zm6JmCz68y1-?*25&BEULmB;(}wfP~{xm zEj?mr&KiFDu$hvFKaxZJmA;7^^Qe3bPuY+XEG|UHm=|=k!#_Hv?8X;RTXH^AVZ`m# zSPjGJb4U4G00ZBXzGW7@bB)am?Q4r!7Ut^GA*JCgYAT-g7bslVY4U*$vlEw?LloTk z>?k~n@imM=layiVhR%I8#gpJ+YQpOUW-mnydL($(^3Av3D0zdq1MhQPJ!2lYE)|=P zC;%A8n;X}(dKrFGJwrRGhS;fsEIOjj(@7RXxATE~d?!|id8z)QNWsP^y$j}@K@J*@ z@v^Z7_9z#oq|D&%U7j&b+m^|I{07wBROq#2J7VYIOyJeGp|6?^eqlSe81smD>Vll@ zR9|lsY8+a``sLmLdLM}xzx5SX!n@#pmmC;C>UZuL|2pnHpc)N>(^zB3FACN$(BfSh z4nvA3T@Nu~6#U!XRcgBqwMSH!uzJ)xN`@O9zj;uidDdcw7@MH7^l?AyF@nu1^T6>= zRCOLOhhR0Nbg{1)EswJ9_t}5?aPcsjG$=}f+84t+Q7g+aL&U58p|0SVj^3l{b`P3C zEmaH0DEV)is{)1)&Dcjka5MMiDLPDw2JAOP71aSy9E*x`9dY>kJG{p()7_Xnu+%zd zk(Cn>=_kY9^YoZ8mX@RO{K4In7*>CTU)WC_3_?17%s6z@B)6e=U3a|tM`iwF^1bPI zQmH-+6U$BH*!?n@7GD1VlFcTO=TaV%&hqqP$2$?$`GeVK%R;5eJw-9VEpht!h@gDK z^HaM%e9%m$_p?0hEyq`dRv74UF0(oM67oC}C&fA+W$i7#jzDOUrr^mi^rJM-eQ+(^ ztHFFuWY2A@0aGjgCqG6lV;|94Z>OU+Egh`;q)9oL)V0)Xyq}T&4}Yf6G=7?5UA}gj zZ_%cYymFLxU-=U|>cdzGoSiH>o^{~CZVPO>bGHGHx7Ua~g71HoVhzcJPGn*$27zCU z+pGk=64-zLSaPlm9J8;5?}9xow0rqM5`?$Pa#Y1-NvNOniL}!D!((B1nJ~~Mpt3D) z+PDQv>jh~#II5!-5Go`GYpT6qAwFO}YqXTWpJS<>*DXYdZGlKrX4jf2EQ#a6m0eTBnmhZp`q z_37y^ofhZniT|kXj?OJr&Ao-$4ZjW(LRoycfa7UXJ-uV_jqDWPP9j|-rhQNtEVi(( zA3k1?TD>B*B2YPUS6wsvRp>q$PcZOF`g-Ju>RjjfK5k9P~8zl8ZME}Q?jTilh}IDbz!Y;UMp zz6q$IaQ(-YT6HP2uWGd9h~v)LcZCMYcYA1Fkj#cEo$dfdbg?`95Cp`(~WX&X%Y zN%;nKEb`6Xio$9 zR(A0!PHde%mUO7F)sxJO0f4Y;{BMd}~LHmGWA6`@8_*}s~?4`jP-K*9o z>VP$}zfS#o<6o3e6AC9{Ny$kN8NQ&eX2f?IBNz`}!0jshamjpGS2-BRh$bQYz|d$I z^C7i$0TrLXKk1&JWTaKh{W};AhZ(QS31j;&4%-wX5v`5RH&kACFt-dhu9I>$e(4 zHuhoap7YM087MN^n}2_ZhAr!XcG${PBJ`u^22u^Cmq+^Zu z_dZtBX#O(;bW7mkL;GUG&4HS{|K#4hYzxY&XoJp%Zy-i{qGQ>q9P- zf)-$V`RM2i$2Z8yDgW!%YIZTc?T40~f|dgae##HosbVaw7*8~<;G?vXsYG_uj4P0G z)0TNYGl zXQ%?6NxqOUi|5Dl%R7vwa1dT{Tp6oV(DQmeIa@ns*?g510XPVFHpJXI!K5lDl{benWzf@kuoQjsZa$FT- zfA~vmv5MVdi}#80BlJaDPH3|3M8~P%Kx~~6SENAn{BRT!+Rgc1)$s7;@?OiN_tH7H z4PdzwPi!asfha3L>+TuB42a%o6}M`yOO5X-tG#0f?d7;`mX|qHJ)~XHS#sK| zDQ*nUhkw<;d|XrW7v7`l0;C12oExR4k>5Z(1S&M|dS0eji9?f`f0s%{3-?u2e+Y^) zsn>#9OU}LE#paP7m#ORL(1$u6ifaVliA<;Ge16~vJrrL!(L6s$7-T!89*~J8bl$AHM!*O9G5@rR=W)n1=dsk) zw#*bG*x}ryDRuh65LIzNd;xNeT%Tu*!xe}JM1+e+FEsGyVFq_AYEt`e{=P6)Ou0+kC zF<^1GSGKkn=%=1`2n0}_qoqF5DbLGrfEKFl%4ypryM?_4Q|C%-~i|4wT{srJ_s?a)|f- z^%o7{+QaAfhd_C zm>9+xLmGTDyo#Zp4*8}sSB-#b=!Owp!GF6fH*fC+JVMfp^cwIasaLE&aIa!z_kjtI z;CV~X6?rL#s%{kGHeu~dIuJMEPfGtz=wCJ~@3QDk*)J9_K>dPp&~0+HAcyU&Nd_`O zF{)|w!ZCnk44fGG8Ca&FYWlun<=1Cox6#BL1o7o>eJG3rSV};x9U*-8|3J8Lx(q`tZEES8(7a;(20{ zk5Ch@ki$U^J8-OoYX=7wCq|tK!c!OKw!W&T7!l%pAQZ7Q{u)K$i0H^lcxxN<6{PaX zC<8tWdC$>pj_5dw!Ys!GS3IV@o1rg~L2Y{>VB>RQ5^(6qwV`i^)os$JCzS55e_vlI zBQe{sAye5$a59`ukcxmLO?yv$`S%m}G3LrpCslGbn%G8W`!MZCJ3+5}{uhfO=UP8d z(Do@5Ug!Po7Tf46BeeEFza%=it4>VP6IQ?1{*q&7jv*8Jh2`QRZropd!Lk>x!6uy{ zS$h`~pbDcGZ$9-i_*g6AYO*(OCfbgg$U}!d%1$7gUBdNttAhJvaC5q)*~xUUXXfG zo5bAR#GLjj>eTs>p_&Bs?)neO(_bB)(W>4$dmUU+JK#ctzFw?CdiHEtN6$OCXYM`6 z?LpC$xjRgU+&Ow}Cyd_uOTg|)#9gy0C7J*lgv3-LL&RA37L1CMop8g76k#nn9 zy36?_(*i|>adgu%MPC*>5ybi^vNemM-<0VElf8GwGrfw&C@uXe_r3$@=3KR>J?Hi` z_lUiD*lqQ5WN2DS-OA2R;7^QIk+7sACvr3t`<}n9nH}SAhK0Jg5DsU?g$trqW(3zy%KHu*5zs+AK z0vlaI__`gPXWSMU=OgKwAZc}8EW(%$6l}O&LDU6NqNS+(z$33CiR7}$F}rCLZ@8

i!{ubkJj|P1Wo~N*+$_+H^K~i-6vc-HT@@T?c#fp$aW))}y9T z^}sab16oN_lm1OaB?YTqu}WC)YE94nErTv*tp_ZA<)PIT3F#M#@zbqHO5`OzWM3|L zCkhTLUoNxH0T&saNt*ijI0Bu^%4AP?tZ-fF{e5UN(ghV3H++%IBq+aEV#&xF72-MG z)A4Djy!uKt{s!3Lc1rtid46J_Jhaf=X zIcd0#LvwTSQNrs7+dCbRC=)yKsDtpZ>rGZL1C^t_cpBT?+5nW3t92bDE zzF`VW1|XqF*u1rhB(38P2Ki;tgurHfXR}E8yqJTs!`Zz_hTcx~WS;Fy>5^w|;Olyv z;uMfFvFcpsyLh(FvyL%fwwU3vfhAkE;+nuNg7>2np%L**-OqH>QL)7YV>eM9Hu?&A zN0y4;C{JhCW1yfj9f~0Mj*J{q?FiSq{R2r~5H(DP2ycq3D0gLoc4MEGi2GgR=*5u> zVR6pZhf_bTARYlyw!$G>WdskCJQsKmrs2x+GgRV zh6^($tK&hYRhEeq06tN(_Q8y6X?*ugV`wV~r{2;b;8FqzOwz}v#_TMZUvj8Xwzvu` zxoIRBVIzq2y>Mf|+S9T_q50A`7g@$~dwaNf!Q!Q{oXQBK-l%{Nic6xGl7vtQKaf@DO|b9Lf}-mg@k)u(5PU19}JX&UlPVoBzG zW>w(T(H`D~5#6oHvQwoeboMD@^2m~Mj*{WWlE0e+p4Mm>S;>Q14CXp^2>e5$QpC}@ z_b(bJ&NyszcY-`{78wnanlWW-CQHod>FCoA4QpT4NlIO>1dK;fJtmgrotef#9+wi| z8W-M$xA89&8T1}IdN3++W!2ih3~O2H4$ZkN)lsN-Z6K28>8posMl$Gu3J=-eKNC;z zl0lz2noc3nsJy);{Nm4JSIm9KGHqMrPc+1t$Z)rEgW}O`;I(QEkIi??s^S;`W#A+n zQAHIn>CiS#j{l_Ydr7R3 zaWP~|F~Q46WnNq(y8k`%tzply72zn(nN!9`&eK?VhFXUP36~_amHI-rm%@$qYuL3y z?1YyZ&*(07#NZKPiOB7JUdDJAu5PnnH;5M7ZJe(0xxjLVg$xGdB%#;C1z%<<`;OD} zA%o`OjkTgGr1g6dgBbM#whQ(#ko7x)qwJ{`^kuS_(x)QKm$%0jA`wuK`4+y5lJqv` zx406S%<7hBf67iC9%}JBAHF?IVX#s1&=~A2FUcFW8w!|)XbP-+%D^V{m zLk_!8na)s)>1co2ntwECW|e+@aUk$*g9tsU#4bqL&Jik=jau$DB%HRP0_$)mt`P6Y zg(Wvp%bbybEzRyEWwOB37@aF+8bn*`Azs1JHrV{1aanOat5)-X$dtkG&PCi(w**_y}yvB2}l) zFLZ1WSIX8oDjYQNO7=}fbTU#XTh49-N5T zk?UP%nD2kLe!6%GS9BBBF1Fn|D6ii}*(G@=!Jr`7-$DPg6H zWUtes?JTY?ZgAz9t{XFsD>XM3=Fe$2s)hR-@$VgChu1}~M5hHxLcckX2FaYo$YGx{ z4X&Pj6QRwRbwbxTI|Y1W9-Bi=%8XuODCzsI8#I~Pm zCtyKiaP%jKu@l86ZwvRNV=x|>nVqz-&nA!;>QCBZZw zh~oejgoeY`+^#>-CUNMvvp)P*=hmTPbI*s1-mlS11Y$v>^E}8 zxQyM^nh>u_A!%vWUpAMvMNy18VvsD}1_3qct&ePbB56?H`bbSuYEPS6$EkF)v8+gMNMJqDH|IiuM*?W|GroA{WPvI; zix@^*{VS1teAqdFF^gqZRDAP{5avN17;v3-6#n7!_V;bf;r=R8sTJ%~u*0dx+_h`s zv%mN9thXsQTdvQAMoZ!)nP)dM=R^c2dH;94`0nrO5A{6ao}wBMs)X<=b}JZ0>;%9lN;r*Typz#?v3~A zJ6XfBi#&;@%i}#HUDf)1;s?SwqJtd3TA8p5DCZpEsKKC<@N2Ijo4Aoe z%|_Rjmeu3kJ?@s$nNR-Kzo1rR8?-6nlc?^K=g6WkX`4@C?8G1!?dwm{>%@820PE7R zrXfh0B{(l}hbTBJ2&JVWe039kdi|IM4Wv*;- ze(VP%8GZLQ2+d|VY-c)RTdyLR`kxqN#sOTSjUa3bl9F(lukxhCtRAY|i2F1VA;&Mp ziS4UGjUXQsY@I<(oG#1QszW5Y!kyEU>bpKkWw6eqTTk1WgoOB_=Blps72N9B2+a&5 z=ZvGSAperD2*RR012)J*!z1HY<@){FKtDcQ!g=N(mU4nvEs*~y3R;dp?x+~!n2sq; z(9k>zKXP}$KH&CwB z#?D|@%W?i$W1B44Ft$_DCTQT<(tF~hLFV#tX>jP;-H>jTbXH{B@K8jMHfacPfAZ1M z2it8^ISH(&Z;CVA&F3pdP_MFg_&Zbk=+h(hibJQJKi+06R{|#1H z1B;T18{FauYg%BkKGfCYh2VbdIrXSo3vH%jI^0){14EZ8B5Tz}5;(}2E7RZfFM zXfjfel+d{Pg7B_2Vu3nzZ@)ULv68kd!1K~Z1fFS9v%43$8{~5>=9d`U;eD=g>6+Zv%p+-sKvrnf@cILeP60AWX|N81xDf}YhbAv1_#;D(Wl9no z5VJETsx>o%K*iszVQmi!L(ylwKYSA*M~Iw(YtDq6zWkhn}hzCZQJN2qm(^pE|}yeEL*n zGTPKOfuNy9E9%|yDmIi9YvD#i{YgvlrAWXl4umpYpuL;(9yyjVSh&z2qecOS=SSm& zVa5^MC?1%t%qh4PAmF(L0nfW8nX4l=!b-LvwXC*f`Do3$<(l}BfOIW31_IlV0C#eP z4Gx6QlL)G!B|t*u)aoD2A#fXG6#-Gy-w6!jXH32P6pU{*GOIQLE_U4!5~xSTS5_MYHb!jEDiZ2V=0Mlc4VgPYY}Qv$t~qG@I(`4%__`Bvi}E`4uG-$og`F;A*$a=2|T%67N5heJ8oDc zuI;IA-kg9*LR(u|0(wwWA5k)0*Y1Aup8_+iQP7wZdI?6K@F{eE2KocIbJjb82pu)t$ksK;HLVIS~ zuj4~#v2;%zo|mRzojYh3!oN@R=u|6F=pSlu+KyCei4Y+S4>l852CtW}EVg5ReqUYK zb!lb^{g7t(E>=-eer-FNukJP9t6x5kwG}EreAkRnmK1mG&&^-`X%3v_B;jAUPc&5oxhWZgNx{X`oq8yi9=QawyLUYYQKh-|rY-sUotCsxbsi>@gIZo$_ zr3~tC#VRFZ|MI6GxvQX|f;ZVdpM-jlIS^ZBLgow*oky9JLz5~w_AjJb*UD_USlH>{PV0NruhyXb1?Wua+dl1}6P%Vid8;NlN8Lsm zxkRuTT-}6OLTctqEGxaR|8zwT?jWn>aPg2Wr0WpH&~h-Oo9^gNpfWe4Tbzffn;+L) z-9pB0o(@XwJ0>$~#jAD}j88XSLfGuX>j{ zWg#?G&j-NUk#?)VI&c#=ao+1aeHhFFI=}kEh@RB0stUD<1nw=eO0*U9qW(Zd;2T?G zHGT?d?(b8iJ{_$i99$bP<~nUY=~q-*poZ>1NJLER>kvv9RB2@Qc(V`>CI9q7n)sXm zf^R1jn+sMv``Ke^zF`yjwMxq$dKzZ@z#b>IYnx_b&A8uh{ZH zQ&g=cn;~i(4BV!@Qe~z<@Gs`IgHchVG)cY0e<)8ScV=qB%m8P z5BYY+)e%@TnA>Go#?3AoEsoofKr5Dr5xf4pG%+1@mE$~aYt17w^yhDl zZUZH%gGgF-d2(*C#IhO*9?z<5tBr=pfJRF7xYf}v90&IzeR=`D5@iF+-q}b))Ah~T z!PPp==GnB-?Ffc zn$Sn4dN9o`hqk*8PRRw}DhWZQr9irN#-!F!FNo(LAPeXQ4MO>~*E8;}eqWX-ud>m< znrTF<&tReM3)afE_1H0j{nhP(#V2ah^4oC(_|>vS%h<{hbAC&Y5JZwUWvxd>LT^t@ zv(8;_&-vLFy&340_UDQAXT`2$ZinvzL!}E1O42p}c|j(=j$s_%&Gdo!Bn+`w?np6{ z#_CNz@t(htU9%-vt)p#GU2jJ9LAkjym>f1_&V#k${uRM&rNYBAy~5A4PnUSW<(o~Ur&ZZwM4ErK#@=u{F6T{q0WYmA0?6a! zJJV|`Kw+9V(TSk2DNS;GiK2K^?#qKO2^pFF|DU$2x&!h-t^qQ_#>Uw|0_&_~MDvBf z3*|QN6t!J+6&#)Xz5KUyXfuwaW(NF44G=8Qsd4f6tb4G|_DwFx$G9v6jP-8dxDo5j zpm>=oIyey;Ao_4x^RhjzSy`6hV=-1mt*)YQKK-_hZJj5E_PDsi6y+1#Y3@=y$vZ$k>?G_8C5OHuQeEjPX`+`S|SuQ3B-Z>g1dXh=;2d%cC z?f|X7xTkTArh~D;8py*IIgr~D?8Ua)DBgek`m3~iy^proNou~7SVfdJ20a6O#ZWZq z^QOgsD^_6$RnmJ?x-?cBl!@2;CG6_Cf3YA+vmjr?7C>(30T3x*$(^lPyNZD1G2T~j ziF@lnyFd`?#Px}6#1sp|~O4%+=;dylF2B zQW|nCw2C802Q~5vTt3}Wwcg7Q`^_0~U!Wb8WHhw~ablaEz@dTwr$b|P^C(!-X%ji@ z({tbqlM^d*uPU>TKipkv%cs`#ddDhNO%cdQNfkYC#D%3pN-YZzmX@T2cg+!VYHkA1 z&0I_n^B2k><&(mN#h(5JI0#d2r-n=@9*${pDG|byIUONP*~16Il)c4Bb;QMI8A5+^ z2(GpNy{_W;%xGh$PZQ~`-Saqv97kT&j(^+l3OPbVsFK{9lBF?z`)8nXc2&+mw&b>D z*{l}ro~-jVF$81D@69q|(wad%xW>Oa5cB)+kSI+%_S(^C3v?cjmnwyoql3f~TbpYG zrOJ`}a_iU?t~-}ekqvQAM|ObU2)UmVYc5DS&C3KrFoS@4uiN|U)mdoM0;JCPS*cy@ zYgSNMgiPK9iG@_9;E@r5=YQ4GNBf*=nn5JpWWP zpm-h$CsDi>h+(EB&Z;m{cmA)9(z~*_>hr9DuBP^u|7YaBsE*t$ZuWfDa^gmAA{@?p^`UykJueM`eq$MBKn*}jQ1Ln_ z*T7r+AS{x=%>XSWTNeUU%E4qOaeaRc-@3|vqfHxh_7|_G=CI=n;JW(khYYt36lalf zsfXp5rwd0>URJp!4NYUpOef2l0>hFsTH7l zd;LT-%r!#*cenxjO1u&t3ar=MIN9t^AYC zxzw`m{mqx_z5fZadI}nXD8Cw%n}o3z6EUGpc-_=QVA*S>x+VNVTdl<)8!*;mF*1bI z$8fylhqWXU*LdfTH7Sx(U76gvCC%H7Wm$Pcf{KlUl5g|^FZDHU1)cU~aVh9#PsU%* z|2+MAWY!a*IjUjFS!p>hne|6rIr2P#DYRNta5be`frM3++}_mxLi7I;ixTB*%a?27 zQZO^A>an0UYYS{+12^bUsU~CUvAwhkq!H~}FnMi6ii%GliE%fMkTdPF>>3tmO*ZaH zGjepaFEuOsT(5+NYp$9xW&YDLWL# zsO{Lr{$fJ%1iDC`@|^#ds-Vdho2=OwUf9MRzc;BG%%wkrDrBQILUp1La!Bm5i8q*4 z@>MM(y?FTxXhB{A$S*Hp$#2Y{yWdtzW#7rHjya6jojL>2eUUD?2OR@R$Vm6a+1TE$ zfb}ixCey^mj+qbjX_7W;6fy%cOg1Ks#pYa^VLA5c!tG|4#a^H=ny8RtuaW`?2Th;o zl8oBxS?XQJ;lm0F>opD*2??PMHuFm^rv&vGtOGibbP>rut+unO4KjpgwK$gE>Z6ue z8=`)T{?4AvHd_-jV zS6Jx+CF`rL--Z1&_`Yt-ge)PB2PS-h&ZJp^O8Vj){>Saa2&YR0NO9CmiO`Wp;WsrG zDd2$;Isdkw!@cGSbuwn?OF6FN-1wz>SVu_SICc)k6Iz>8$dn&8*OY{1eINtl-JxOq z+k40J&2V>Fo3nb}b>q>`k^DhqAd8>WbGQ;M7WEfpx8mttedTMB?uH)1ptGHs7{}?O z`vTU-t4n;omg+0ZFE?iYyI@QiBlJzYq7r&0N|B74(A+TTUarFQbY6&V4%i+7+RoXgr{{CciJ)ac-s2 zMIUw{+W3K566`abJk-vPqDr!pJH6BP^fll5qsE17dP2E&dnp%9Q$B(M3i05goZhFV zA-pkt>k}~4PYF(hIDcllT;GASap_&*)q6bM~)G1*X&x8Vb#%0RVb?sT5| z0CfigjsmX`HS8Zdx42yT)A2^rkc&Thi_4)m>tXS{;u5Xbx9U!+Vl#e&U*Gy^uop#E zuv0jCg3l|c`9wd&m8$5}UVeOzn?5nUA{4mHWoROuuIsQ&7Aj(sUrpLLCOWIIT+dM989;9%9X$4&Subih0GPnY<=bXbk}cV zRJuwlF22J*dc}eWi2d`RGamu$SDz5~=hr_>A(E3v1-QBBNruqoQi6g~ z_&B*Q?9tq?(!;|DeYzOuB@DygTBu>|mfsK+-JJE2z30DzB@a5uU34KhDF`dWRxbeJ zQt`hpG6HEBid53Dc{D7K)+9qb{~ad*zr8w!#L07Pg-G*hKlr@Let>OaCW+^Eb%%}EoMYi|X4Ppb|Ak|_Ca)|-@ zTfpyYmvj@_fTHziZ(fRxdJ&Q5iXSnbwz=HdkDF{nR%49L>^iyumGkUbFd+@m4QkDc zh&t1aJi;&=O009K{jPP9IFI^Gb&)*6G25JPm`w)T&bEQ~ANYRr41Y%_vJYx@A>2_f zz~Rm;E30Jd`=1531kV5Fvl6`Bim)gWtN<<{SVLE z&s{F|Of?6X*@uU&581ushW#4RuiO-#m0ywcTiO&1vdJ!2vIXy3>X&8s(oR(1krW<) ze}g|%R}3x@C^oM*pp+wMMjmZ{ava0`5SLEChe5EDi$?csvFQ%!`(|H|p>|hq&n;`; zBQ83Cpa=D%#RrE&-oQQY{;9~RUE<_Bi!H8ao%KKl;H<7;Cka?M`N4UixX%_)A7c2=|Iwu*oty7pza+$Dyxy{K-NB@o85L3Y)m3y-H1=o-Jw*q98Nfz! z94<9MnL98IyCUr1ZsE{D24d5Uw`}G0k>^muSLm??0RMcujcs7z)Zrd4Hk?FwvQ_-z zy}qI%V4PdU#3Wlcl4iL4+eLpM?pKouBp8oNs;xNN+l66PT=4lHe(n|}Xmco8h|WKG z@tjL;U$2VtL9ZMwT*TVx)(mu}U4o zQVz;}`h-AU1ZD)XIsoN+{3NyG+%u2-vV_>FJvD>Fw||85Qmp7-**Ll`gM4bkN}rl_ z0+@BdjCjf@2L0B}!ecJ{`3m;wX#%y zPrSntKS>N(%FbB(4nuoNdw+hb9;fzL%Bpqo96o$2Z$G*}mXd2I9! z;A>a#!0IS6aT)`CE-)trZkrHtXI70`UX6~yU&?T2GF)?&jHls7bLB4i_n%O{FSVG`akj@V41VMv zmJoJ*L3STt>oFC%+okF&DGK*i)Xcsm+P>lW4%sdV?{1Uszf%+4!9?%b`{YI<{caua z1UvN{M24MCt^^U9nn(Zhs^!}38T#uyAFqGs`fAbVq*oSV0}}7L=nS4p$pXdrLjsntj)YJU`81Ewx>X=a z2aveI+-YdwqRx#}d#<`B_*Vu+7Ui8W^qi%h7LB?5PNg6jDUl&@35)SCQgyMb-T?yF zsqvD%{40(WadHzl6b9OC0m1q%LK4==LRs!gpyMvYU$Np0!+84iZI|n`z_R;`z+ArN zjL~ZKETgld0(-{yp!91kdG|s#a_|h37p$}A{U6(atIq`qj^*wYvLS@20sF&+KQXo= z!x2kNl6j;?Cex2we_2w4Cin<2+)LvXjgntQ#QNe=sqGjUoFg5J2-+W)X3t0j3BRC= zOX~C(mMIi$Hp9aTe#BEOW30NI;W=N8A@R*aO=!Rekgpmfd_wq4S2)Ok?Je!-L3WLD z^CF<1%lzN-71`LcP8?-aR!4wh(7aE9{fH>=^9PZ{AOp3x^fmH_*KOSBC=yKfDs%S3 zMvX{Bu2YeI=S3T55jBV%CTMjGJd8DSclL^A40lrj>E6;SjlAEVW4+7P_AI~j!Ak7B znJh_QQhD!TZ_Q~n3DCMPbCWuzs0*`{*sIJ@_)a5y{gT|pBo0GL6sVh{pW&j6Ooh)sSK;wr`CV2P>gSw`Jem(Af#2;}=mE zuG_6e?9@y`)7h3fb}E_n#VzhYyg_E&pV^;EfXU;CmtPtawmtgD1vLoj7!pA<5|l+% zp_e0OT>SiG%bscfv$WzF`~-|mc;sU=U<8(7J?=e zBjf;R-?(CE6ENM%Z!y2I7lO0k$nw$KUKA<%0+)AQp1x8jtf@;ViCy0})x;wNH*4Ft zz7BEQQ712@)XO)L1)^z&1W<>8)Ho^6wK>dAtlI%t_6uSQAY!^Gu)RsexK%$76zd)t zE}a1N2({dswH^ZI+!_O>PsG*d9HCc9hF>DlZXL(}7h`W7)>X5;4~u|wmvnb`cXyY7 zNGc)S-Q5im(xr5RASK-`-QC^qMxOJ1kI(V?UH+%@nLX=XF>CIb+3fX2xOI)zJyF#= zx*7LV&cNh^Fcz}5PbLp>@Ni%JtXG+V|4D3YJidNgxJ&m3N<>=yB%8=rVBHk(3bh2g zgstnC%S~Wkc@dl?W&Uxqz}LpyHH?zpSsOGYWGPy*S*=VrXI%?$FcjhH>21PRaINgF z@5QMi@0sgfQr(JOn!Cc zJ+`!cS*Q>HGXfMIq{i)jUp!Ot()@S?H#qcuf4%?13%%oU;g{8=$}hQM1B_HQ{dlQ! z>fV@>p;)N+a+se=I$e0Zz%&AvMGxX7sZ%f~>`>|R*&jSj*`p2U zgCuHpJR#g>QT0Lc1JWGeu!-w-%W>Z;ijPnc8)dA~Sy?^}uTWN5idssML`bTx#wGEQ zw8K((K%oj8z*vd)G%`iyl*xOM0AEa9AU7^qZ-H3XNe{FARP3m5YN}+js4dt>YVFL2 zIMb9y&)@}|msz`yTtDD?b zC&nwnVjI*LD!BzBo;5J&&5?}b{Ii>RvUDSA$%3X5y`f^PkPygHlI5p_iVtGETlH0} z=~h#0n_%5R-?d;m@sRKKWhPCfP6-F1pNi(K;yLi3aRD3PR-w3u-o@K7KVl{};smpXhr*Lz z39-oTfm)wRTksRV+qmO^Y<|6-2J|`WR8e`$))=262J%BSVlCAbp~Rc&kct>jA+%Ou%igtc~396akp#f^)(?($0uN9;7fR z_{bMu2Jtx z14|G^3S8jZ_sqm-srQx`?-u>-S=*D^Ut+gQkQ_ zK%|xt+0+so5dz8kY=)f*1RnwhVN--sFlyKILAg!z=k4gXgn+V-{Z}s>ITcS{jQgh| zNUF$8TPx-F+>w*b75L>|4oBOO!KHlujeG#^f5erKmyg`pbEF&>Kciw~bFjGLCGZ6v14 z+lc0ArW1g*QgA4RMsGmWD-DGpn|_F!qe4J?x-CX z`HmD9&hbBs#xV1A_0TvLrCW$_8|U_JNHW$^BWK2lVH?gMl3v&LSr2=Wz%ELf_B*zZ zFASwwrx-gD;dDmF^D&X`c#VX?)OqT^leDF)3YS~iH{w%fQS2h>E09yqwhKnf&f1g0 zS!RV;oIu37b-afO#6oo2G7yeQ0iQqsW=4UPJB@*32G&hZb>_a*K&J>iMO1~O9eFKG zKT@YC{{>XI0;}O3&cZP!->sPFXNSliL$^uW5s+Kk8uOx%CmveEw^2*N*(2kh-@Lnz zDl^E1fOT-ZkuXX2YB-(Anz+||%FcN{8@jhIKl|N+g2#rn0ic!*-hl=b}OA3OA$AO4p^(9fwyEa@CsS63^O9<4s~XR@WsKp zHQpm-;zIi{weII|w`C+=U4#6SJSW(u)#S_UT@(nj! zZ5r{fRCid+9Vz!>q-|3tjN*V`B*;Y|+xxQksVWs* zd?oF$Pl#MG{a@i0yvjEH-^4o?!neoW+9Bon;8@!)bKHFtxB>xNgVC~^3R=pV^ZTry z(ky@cPr{km?{tE_75a*VinutHf!0LitbLz{)C%qhMQ9?_!M76%#E1s2xrs*(*VivU zpfuM53rayin0gA#StyxvrZ#g(5ry$*uNtZ`hQCU#UV(jdiB&%~4aR2R0&sL40^sXEy>AUAL@8 z=1ejgGd_~Tmsd~3^;>pdT)-D=Dd7D$V{=-1&SKC-<{U3v8(AE0-#L8|(tc7W4+*O; z3Qfd`9^I_<@(4)0tBFg_7P@HFFzP?mQ4qCpT1gk&MXdaP8i)*6ca9?fl(@p}2dTwl zbO`u~0L{ydGAlG!LV})YrkoMmDw@Osq3!}^3-=!oe)Cq!;-j3++@Nk<5x$9)U=u8oLNx;BJ4lm(?ZXnbJ;APnwp6gKm6gaYE6eO)$*_XR zX7#)1V`8^junVtM;auwT* zY*vJ+fVYQH+HCT+#X-*cu+9zbA+Q7n(n?%ZY}VZQVv(849hg!{#1$RxcYG>d1)Eh> zzMo^LfV}tR!X<*GjZ;wI2yiq(X>P1-WLeaAhVjuvrm(;l7dt(PG zZ>9N?;?ft#Np&lz%z)Ji;Pi+vTj(5zbj3tBwei~u>Y_(pyX8e8h*6p5Q})C@_{DB#yXEFwtLaE`h7I65 z{K~_mS=Cxq1!qB5#g08kL3kGPy@`EFq<*B3^jX1LWl>jzt>J1-3f2j|twNBC%ppw7 zY9Ucj?52WE>lTdL71?Ml2Veb|agd3`Cfb(8IpE3j9CfS+yVGa0mIM88^T)^+3tpCK zgyc0kEZ12aO7GiHr6G;S zoRqi(-GNuc>_>bQIdZImJWGGW{dNagZ%AqqA~eA>&n}pw2>g19jE7t&f+9)@_)--- z1iqrSMJ}Qt#rEB&LN7D!<0 zERUetv|(|)@^DaLX9%Dofnfamsu$GN{o=xe|4fp0oG6l#w#MmKIPvjzG*l?oEF4-2 zSHNQWdU%UYqxu}A*}zXIMeXB#vI|>z2+Zu)pA89&9xbS7t&P&HwqH-1u*@wA{7Skc zh=pS7_YQ@xLL^qJNQlx`xy33L5^{&Rfh~cL`E_Wg(Jk)=un5;cCGR=7G7=dApGtwR zMaRJ}%z~(U&*F3z{$>j;czFl!1P=vwtsx*p{Y=ft(q}}FPD9`d@{(J!N-c#J&rM?5 zx-I3i8S(0+i2#nPHr#np~dp5dZmo5## z>>*<`-CVJ%$Y${h1A-_x z6dDpY;Bbo2=}KqiJ~&HkrBPObRDEPV@dWU~Cz%3&e*~z5(CI2>cV0I^s6|FBo*O>e z&%W9f)8_ay)^doLBRg~-v;mcoa5#9AX=$ER2KtE6c7$|Th4pkge8$z$Y^$!{!`iVS z4A+sz2>`=r^QM*3Sm^^M8+Fdfn=d!Stc!+2Dp7*&b*0>$gv&IbpZa6ZVz=7oDFc|dd3BYfgiG(cgvrT(q~>>lvl~2L5cXOD-9R^E2`4Z}&|!F8 zA;ZfW<1%HKi~bD*5QLm*{MTY=-3#^=udOjAW5_zL-h|cl`OB51yvtk?_JPqAlmWB( zhHy+LGhHrJC=-h0Nrr^IJSCA)^MNKL;wgF1m0m<3<0Cr6MldYKQds|oAE-3>cU`am z2Pkoo8i2ka2TJBhM<*$?PJp!mPV^Lv;M-%j#oVpYQf9NCT<3*$D(hs>*8xjtEffkx5&`6n@76OE zd8Nzq4iew_I$n(0&`hHk!=;U1YZd;?Xk^-U^A%pLJ zGk=Y8$LO1`Qo{Re9?Bu}!IKK73LflrN$0G6@r1<0^%)BJUgnwR(NsF}Au(sU^ab-q z%f^?;fshDN%4d+qn(rl&&^#3qzU1rofxLvNM8bKR}4HkTq z%JOwL^T8U5q|J9!rICe`#!JLWA;p|sGjKf;7%6s-?WF7qX<5)DYyJvvl8=aoVj!pX zD6rbHJtH=kEj*W_#Qo`ktYg})>Zb>o&A>*i_lbegMBui$o`39FIe|CBM@o;)V}Xh1 z`SR-l)8&G|Uk}96ez_{Uc#;qkV1Yl`3kdL%G9U#OC6HpBwLMNVq2jxe~BfBGp)*X z(Ec@W5&F?T%4Qi&L;%X-#Tid3IX;U(slHlzwuy|I;4gTsxBkYWypdD5*nr+4@o#wF zIy^Zg`Rm>OvosM}DYs|HJ_+u>ARjph7CUBW+kd(8C4ch<|9-8^vhy$joKoC=8?n)9 zT;>D~K8Ol-$PM|8bM6dNzGf1fhe8sI(elr)fn8*egP;v=q?ni%lznLWn|LF3*pA9(bAKMV` zau}f2-QcD1fG1;*9Ro=tm&pC2hXzp*el?Bx9?j4@W8ZwHz)Z95)9WF=lGN+){xtgh zFXOW!ei~;mU~oZ*tM(XiKq8Bs#jhp`ndD)?`?578KtNEP#q+p=t~J-sP4#_ldx=eO z?n-e~9zxvDV_@(T;wSL<;G^cfI+N!6)dov7b@4o|VHNyylZ@!&!gG^d)d=rXFA5pq zo=qE#6G#uGB#LyQpHFymC~Tu=IG)Ev;?Kkb#?3&@%VgYn0xqa`;}?+q3@P{nn#=Q} zejA^jn|ijAoS&Ph(*F;eJmKLJUWGUYf6ctrvJJ+E0uD)Se-DlG*Pbe=VHbXZ_L0Zp zorPN{P8!!h6V5nP3NS}jreMBXW=JZ{xA_U=y6`XyI5E{0$mJ{o!E;*>QK3DCsUVDa3PpJg!l z+{Bfl_|%kv3b9Y#e(d23z>r)K!?ECi^iWBnk?S~)cxs}=4R=HcC0LFO85=g=s)Iy+ z$l*BkW8>=rWQunNf5-=JbfExMFvCAa{OYDW9JBG%t$;&zE@(9zVikC@QKnZ9X%2{x z9>LV0)vr%&u^qu23$6@6H(>Go=gET9N}ShEdLQh&0*0+kw;{Rjz2R91j~ zd>$T+bvyD|CB^;wXO%vTBS+K{Jz2K5AgfUqjQvVc&rgxB{xuf?FtW~>tW>qja%!OYFoU;RJ3uJ&|7F3TH#hm=l^yC;$W zJSJjI6oEnfuneV;LMZ6Qn#kpdVrc)bx6+-lG`W8wG-8~MncDS26H@hE8tKC9M}0|#3Fgepwn`fxQ9sAF}saO-kV-SP!Q^{b6J&l=xn*ZuQ z_Wl218UA0>cB$R-2q{iTqtH_jSQE+7i9J1v2L$o6@0HwhV?&Xird%k7^>a5By?^?j0p5BF6@^q5 z@c)DRecpNLxX-bo3CyZrj!+&Re$ar52WFv3 z?DPEkuP8`;4M2PLTwzn*^8?voPm`)PggH|?!aOZ+d==sgtI7kzSXbM}u}lww5s^k84}i}zM=pBYCR(=KW#G5mj&-#>rae|hHPnzyc>K&I zw!-?l_-6MekpH2N-Sg_AtK}hbik;uLlf8xSy$|2m3|>0<^-zgUD30%;r^~&^QI}*# z{8zLGtgq&`IbYd?I2f*GDScyfE5u|8gO4U5*u@_6XDRqRPXjF<7F#?nb@LuwdW(8z zf5OC#+=iWje%weJO`1>ieA#m9o%wOI4K7?)tJm1nz+w~BuZwjT^;|oe$;W|L@j|Y13H-b|t4&0n^5>joKA<>t!v%9`2^-mp?5c zEFfI@^-4{~^XSZMeVS0OqK7qT)2`8oqH@y9!|qy!wbM2dR)lls>WeRg?uuR+Ef%~+ z!)3dTFQhB(BMj}-p2&#|N)(1vApHWhv`aOAcgRcI7W-8&;qwveDQkKKnD@3(e1(2egl2M{nZhqRt-ei68DZGgO=xQ|W7% zYHvc~F&776PIa8qhQ63Tj^*Iz_^1V+w*{34ydw%Q?K?cwN+yz0beoT8dECCtc-;Op zq#H2iHMcFf_%LUz^7Evale+^9co40ik^rHnp~Jwd!81z`1b--1tH`Xsj#QKrbFmCz)@K z&S5Hze)(s)WDfmoA}VX9CJ}8T3(%U!AMJGrAZ^2|@|E4=`E(h? zywvJ3vXB@3f+KQ#Lhf$ZxlEJ=o$i5TVhi4!=QT~Bo90pA7H(is4BIV+L8=xz9^M}QM<>Yq+neFk z@5^m?6;47-`1u>CyQy?)=`@2T5(c(K-?U|n1m*Tw*z#RWMn$!6>LUgUL&Y6h1s$;U z@KTghjOge&2xeJe2P7A!il>S`e-p<|LAiLqU{aak3vm7*cQV+Iv7urRuLwI}a!_&k zZRrI@VcMtIyX)K+6~_obhf0kxyVlGe2QK)5!YVEunliX=ga959@nwBf+Fn;3u?^IG z79AVJS_QsnP}>mYw6;#^kzuaP$bL#=>v!}lGeu25jSS_=L-3uBP5au7P>F40;0&7H z;BdtZ=PBF9@MrXO*0zv4m+p3_A~tBzkqK!xs(%vSAi=q@J65~k`nGlr4Es^)Sl?)i zB6=|Z_+hjYLLFA}?H*4Rd0Cwkbw?&OQ$(hqcc(wyITLeLrYKY>^%Rp##gv8f2cw-RP| zcS&4lJe__5#{C?lywz^$9uxY^YXsiYI5O*)5{=K_&xTns(64P!S1x)7jX$VYXy{;x zhFqfs4%W-qG~C<;cafG}4|8L{-}iDO6pEOSh&hmQnX2a{zlrjO-KQGZH$BBfrb0o$ zwVPRyyVgHPu#IBBpA(iZ{6U>a)i3#Ax|QWCT5q+}7It)y8JRvDblS_(>FK_n8B0f_ z--IL41wJxdBGRQkn;V66%VRg@FFK&!=P3sFGczMyA>hVTj5*?aK!nQ;I0Ros^%th7 zOr2_y+dOLYf?=0~qSeFMc)C6k0H8Vs`c$cN@b*ODU_;Z|*t%ocXS?lTt&Gk+I$R&6 zHCFtF-8Q1yVociVmYZQ+b#!&+Hwu%sTV+GGrRSyutlheBybgMV4+m(WB$hYBMi}TT zSK8$QEHm{(e4CWoC5~v9--YvaG;&nEopZD&-%weECG^6FzF3a!># zwZ5GbCVElHZs(bce2M9F`PuPApqM{Z~$ZTtxvG8I{umZ_tPIU8?s@$;?GRxM1ZQ~mVWTV0c_ z+96dwK@2gZb=D_AfFYX|-lxViZ3wpj5Q|TXC=Lo>4b9bQb<-v~3VT2Coz41-)^p_q zp}ZU%yuYZ=b*K(U4yTLAaeBTKhX*&&B1Dq6?L4^tb{KTPlyQw4Qd-Ou4)(vgTfShLF$r&s_Wo$J@ld!g&B_&59StgEfWlYgjV-R$dEZrhYg zauQXz8>(0CU6jZ$XNmyuh6)Ni?0HiVTRF~V<2xsEdP|gFF;x}QWMop0r78++%~@iI zbNEv?roML`c(x~{(GX`#-jh+J>RrU&t4w0v?AN{d#`QjEMWz`T5d(eS6cm|xB{aap z_2Bx%kIPsk4d~Ll(o12J!0!HJt`IZQC%+9P2A-dEX6T;JSq`n7Y2zY`949>4 zpE|U7s)^)DW}_Qw9(BG}9PhWCVM}^t*~G&Sg5J?j@;8d5RcHJNo6QZ?+lX|p_Z9Pm z0CN>HRkP`Ggp_Ap{Q&x(1Qln8XdqEDpUq0|ZI6ngBwnZv-8)?0UY`)FDJJS~)rR(T zI2fURjG1!Vs>L`S9-XiYQob(&9IdH6qbhyQig15H)I2hg`_^3Z?P=yBJi7WN#|nCn z8Q}BQl@s3uml$B07S(KXCr{_m?Tx&yMxP|cT9aH%^ z>R&ol)ZM&1Cj-L#DLz2tP+}?qJQ^$NhW&vL^b5D(?siNRQAWHI@mv26Bo}|WQ9rAO z%*D5zf{k1}G4nZ1+rlm10-|!6W^KO4P%wm8d~ z?N)6c29vhG4GEki?o*=@25)oQuq8z3b#DoajpJ7BRMf6rt{fa0-pxL1fZKTr85nyY zU|!vxZPR60ENAy80i{HDZD9);j~s*d_fm^H1%dU$twVirg@E zN{C~Jk_7=L^+tjTWoiU&k(9{j1tsuePG%5ku`zh!cONH{2vlD-iJC!Hp|70y%TW{Y zakASn$f~CMcb6$GYq$=5fWv4AXd1P0iLrjX#&4otm^#G&d1`F<2Mhmqd8YqY86hTS zrr&JIs>p2v&Iq~d4y{ALykVK~p1D-&U{S0r)>sb&3Tl&gI;bP@^(gLoh^1zlF{TH3 zXw#J@Woi?KqPL2u2I2ma=Adant1Yqek_{POUqAVne%H&QV2;6vRAUB6#_-(_oVdm* z5WIv_5X2UHEPbl5Cf~G*rY_$+D2rZqH+)*3r2O=zQ0pv=H@I(bw~%%pCOcv!k6?7! zAn=kvwHBF0ua}d$I$KaNh}F!G_Z*d0s9( z@+lUTd17M|2^sKj%W<{Bqs^_9z5d`>_vScPG0A-=897G5mRCfBnUu>fNB5?Wp*?B3 zyXLS~?Eqr|8wc}$VKM!8S*!n-AK6)cb0ae=yDEc1S=9^Vynqep4Y34h$^dNvzM%L% zaFjlf%6^%CFB)NK;1lNMgi%KNdI23wY~^0PL>jLIu*_xQ`_FJnSYCiyzmEL_qW`WG z_Wwe}#Q3ksQs9IKWrWsrRyjLT=(T-NNpGz zwsFXzMv?zGyg6cjLkSTRLoJIftJ{-a(l*pv!7h@uEE{r*nl|x_7}-+s!SH#p0jyw!h~Kl>XLv zQ7{uM(m>xGHI^a`CCf51Qre9=$itQsHAo<+r0rv76t%ydm<@`|z*tKo;GmwBN@~(I z`pBGqd<_CJt6ca8<2)5j`>Pbj#QvMVM5Cl5KnW3rFH_sZKR;NdM^x<0d2-WnjhL5_ zQcN+|gQB<|cgw_CG#S=$_oHPjV=~xYNhO(g$ZW}J6UUXHE~{ifM)WN-ZGR4S6&cJ< z2iKe!gfj(sAG6`J??bm4hQ>bF^Hpqp;4FIzvDw5Cf66)VLSl8HU8Q-Db7HVD1kwaX zbE2v_${e)^-i)70c6P82v3$uKOKl5h0kToukzD$U(l^ zGP5D)Ey-=&^WJQPPHW07jPm_{l1tru<(NWc*Y}4e_xW{Qw+K-dYMg(t)l+@Azp)iF zGskbXVpWok(GrB5ZBgEOSz`Jy;GCK=vGyH#%|@I!AYhG^}E{O((vy&oP&G z%kH|#9p8fgxKBRO{r74U?8B}UR>d+Feae2mi+c*fF6Grl#I1S>6k|gs8v@Lr+iE_~ z$xkwzcdv3xY;PzeT@Y!f=dm2zG@}GZW3dwU)&lKm%NihMld#Q*FgdH4SckgOmzmOE z6AMnz5J+a!$)klyFynE*r*)26b}GW4_xKh*#S~eXs0t3eL$L9VI~gjUf(WtYGf91L z3zHKw@zV` zs#6}@*C{Vud{3q~w^3H9!~{2JZAJg7ABn_uo>314FEHuy04c1a=~~AeNxQzko@^}g zp5mtjKI+t_wruiOie>zwwP3WVtH-;Ap&|Y#cK7l>xaO&h-`}`~<9E-{hL^*AXMhBA zm2ZVyf(W||R_eU1ZJmbm~PSi78YTH3-L>gvO z-`1F`2n8<426gwkWQ+OnM{+&&AwqOLw%#A`J=GHY8+^J|VLXXl%Ih0A= zF(-OmksRJo!PQyR&XA^cR*)JRARC*qNhOV03zObn9lV*~-hsf*QUGBeF5Lzs7Ag6!-RrnVa{dpm>pMmNgFCxl_uwu|9F^ zc^ryO_J);wAoS=~C*LJ~H>XS{ifkxXqhS#`k$#X#k!KrVi%GCE6B3}bp|4)-3CnFs zLq9{)9oG-TB$h9m&f(PU5uS499KY#w4`P05%l!w#KUHD;8^bd(|0};KO4@)C!Zuz~ zpLrLyQ6Htt4HTX}n$a*z%AvnAV>I#hrgaJ?oc!MJO<(UOyT#(h&NO?(HG^j*Uq?5W z*yr=UE#bSmN}}U8dYu^wcgMgY4`V~uN{NA}_;{{!Ar`V}LL^>dz=<@rzB!a%mDZan zw7lqc;%nr%!(%=Zqb^&<5if6}Njb=xV-=5cea?jJtDy_xN+!v2(6cr@P9P-8us2}s zx(byea_Cxp_`PdP>#dU*N@!6#KJDDzny|9WE8DIuxeBH?$ze^{=Q`?&=<#5=)`}3^S9g( zC}R2FdYwyiW}=I|IYxPC^j^j~A95R~_O{qQDThK<7Hv>LOi z8+|e8i#GNLD1Xbkn3x%U!@{a4X#q^+rd_mC?-wg{EnR~0`;Vo#qfqbOeUMHaK*GjG zatdx85?uSCH5rz2^{GeaxRD19531IOToLSTfa?qto#pGqdyam$qqlE3W3l9!2ry>O zjzqfOB?@eP-@_W$`(#3X6W})#A;F5RDW@wvEM1I9AwT1h4pEx(vDj=9$PkUFVr#QKf&n-$|Ame8qJEA+kwgBMK4(8 zxhp^kVRt$G>7p>hKE4~OOje=4w9GK9fJ1(eI5`s$Cwsfm4f$o}xCR|F2=fYE`M8vK zzuj+#w=NKJeMKlqk0h0Kx9(H^YG;eiI`d>}BV03ZiUwB05PKfqncU~ls)0prEmwhU zFePGcptHM;I*BAh0ZN#*&p_IZgGT9IksZd#CASv5sbADd*K(-m-kQgl)rO-EE2|6r@X=BX^KzlD~lLSwivBkV3OI0hu}=Z~)GjuP>+Exb}< zR{n%<_+#E6Ck1_%hAoe?ToD%&7{c%u9Q4Z(NIl0yOm+(RDQ2R#k`>n}(>9s-$O})k<=hV{aYxp&a#e3r?-!yIPKc^!GbgsyNfndBC-S4} zcpk$tjvqiHK5PD}>HGT*9oQBAU8FH{{?77wm830z{p0KqWt~9ok*rO6;ljbZr`D%_ zl_F?*&>F_LMA$-7{+*a0W*Luj8=V!!lW*px?>7h!=-BeEG;DMm0;X+7QuNE^aeC;x zt5h^H)#kH>kNqi75MIzOd4n%E<2)W?6tqs2`P;O+8oqodHEtpBLwE#JLQ@b)?=~83 zD@UQ!eEE=qKz;m+f2N&&5M06w%I0FY;G}|?&w+mNF-5qe$6+}~TCF<4dJ0-vvtUlf z!-z8r(cwtU`y-gvnn-5+yxZA|Ox22*2(s_pj^~+_PDg-YN4w{Hh2IYek-sC^kWAXN zB3@3P6@+0tvo1}LH@{4xREs_W=k5go{dT_)6F%g+L=&bxyC*|_G-8sEgYvZ*PygPR z-(32Wb{BP^C~83y1*FH6Ad0n{M(3qrwuoaD$Rsh!#0OGDSmd_BeTEaKAI>uiXjL0$ zA|J9v@WvyMcquA6*Hh8T^6$P3l;fl$khxk`MaK2_7xn~#JEq^>+=0-& z$o#`blKF4hHY3pUzq7t~uW1jlMTU5FLuqG(_xf!E-Zz6Afws{GU+MvNzpHUNW(5eXdyJOMXL&X;_)-? zG1Kt&tc~+;)c2^MHlr1NN>aekU%vkU)`V_HPek1du^4FtYYP+$%0^6lN5=B*i=`wP z#zYgdVOwx!M7!W8mDi54s5B*L1I*p~YU~wUl?3Kaq$n#tUWkCrU_=eP%ML4#kLt9+ zD}asxfAel?8(T5dhdOQ&$}VfNqoIGPc=N)6U6}r4si48h9d=i`tZggTmBy_^2*3YK zhTBn+_}ft)3X(AbxKeUjbUYWYzI&~}V}=p+)ostv={*b@g*Me6?Dw|>n)CN%S2kP_ z`8xp+3{6Dx3L?Xgb}pljy2a!0-@ePe3`Q6AIb$`IW;m#0LNimKOo~hVuF9Yd^Yb99 z_kl@LCM{shwHDO3;@H}ERPy%1+T}&@z00e4gi#zKjXxm#Tc*j#_ItdFM%CMcF~SPl zs(K?kd2#Jv@{3pA=fjvZEePB=`8fsgLbcoIbo!6L@h{Z$vou98&4r&E{kSS97myo< zcuj<&o-KL4AHuA%y*!~`lAWbZ&qajXAG2C4KbXaFi1J89wP~RT zLRWMkaIJ)YJRUitxRa6@NkwgjXZo`RvXLmR#$8*^D7C>AqN?pZwfe0)Xu&3z*B^BK zTYkv)`*w?&srHEP1f#+WH@`{4F`;_?@fr_BWz=F+hS3^C>qW3AuUgt(K48Yqg4C z*SSrA;u2zx!&%@4R(+9njCJ2}sSeKR_8L_-)y9$wD=={{bT?gU#NLpe2<9Ic+5`>k z!ZiB>u)n2>|60!fXru&0H98C#8i@XvBMDZ}MCq?yWVpjt|F2M%zb0I){~{65(lMX} zkRq4qKEz&kYdpy*sy2`NEJ-qK4v7W#ep1AF$TXX%&J6e6Cj*8x+toP5Y2hzJh*102 zsLnLJC(BD&t=H&(H+?yU&Hn`sZ^b&H5 z`c*aqig!cjBELW-34@8%k#dyT*EjmX@H{l=8kN-jU$H1vx>en{+3F#{ZLBMY^Knv8 zYv+89jDifsP0LIBj3`eU&!JxXp=|`oqXzqLdczwN9g~CVyI#!btEw;$@Mq)g`56yI!#|V?4p14{gb_Vs8ZhvPsWU?b{Yq66KSRul z%vX}*)G!-*OsRUT<#ulM6vDv3^#hv%*DVa$NU22WW6MY{hoO(%gEvqw=O+>> zg;^3maC*QnQx#$3j!CnnSW%%ge4cA(zJdE_2dWl`SFS}cobzs~hQOu^;Wcb)GD;{B ztd#7l$FDY*N^^(2IF?yKadt-~*Xw6}L$pnDyb&S|->yTLkV7G$;AQI{QPM{w;&z_&rQT!+`q^ z21pUtymw$8WX2g3@s*y~1X6QW@(r$aT*yqy3wi;8VCk?l0m{d(lC$5j)`=;Fr|o5z zS?Jn(Z@4HIpI<^y$vZe$^A7Z3{t4ILG7~0dw%_KDtb(+K2qEmOZHV@gBnctNpzwt1 z=EH1xyUIRQz-vzlgzXAdyj^8|`{2EkT-n54CTFyQb@|yxMc9`XkHg)9RkdMh`WwiT zooysM>nz0BL z@7@AJ60W2C2WS2*Sz`J9@`{+EDR7aVgUjP(ZNC?gcuSpI{Mdrpfrn}X-|_(#8y=h3b_n&r@U*#@v#u&TB^$O1#Ms{ zsd5oMIZ@u+)Q2+$XZQ?RQZ<@svYJ>d8*FqzDaIrxImY7b+RWs@@!h(DqB?uy_%V~d z-cHZc59-XZylt#I1m>oS#Ai8F$P5w`Ch+T-1e-IL>VJel#^ zM>|PXaPT7YKAtt3b`eq!ny6Vtvy~|^RqeX1i)UCTgX)1 zD~rMLhcjIS(?=r_Grjk|IX^ltHl`zU!F0BM80B!hyiTTS1C>hYH_sw?=-wvGXF|*? z*_I-&RYY^#>CvvNZ%UJ7(z+B489*J}ZA(6POkye?;C4bDTRDFq@mlyDdn^Bs6ZyI8ls0183VHg93kNW00?~L_d8EO(R5;Tmy zu(?8x{$DJte@hdYfp;8!TlAHrZGdS2TxD5#4<@y^r`uJS9<+S*Bd0E-6%eAM*Bq7h z7$=?0ZC_Kzza%Xe;)~o*=~wE!M6X00qAe94LaL>O22(`gy<#FqBN`tX-{Nx8OXLGB zMU(*ja#G!`OBYl?KJtVA5IacD0~|DD{}G_oQT)i1TFSvQ^(#=i;mUl9PnM zH#EE^>?#{>aAY)A%lwY1^w1}KWz$&;{fw(33=G?yF56^+{R7&O6+XGgLlq@Pj?F<4 z=ZVWY?6*~Du^keMWM4DW#I<%&kbnfr8IVAamU$t0bABre`L+SWiT*vvC@qBs_TvZA zMwbZx@58B;xq3gQ(x*-zAVjrXv;W|Qzb2W#JKHrh9=E_j2zK1OF|jV`Tmp zdyVXa18zNp4^@_tPcZok11Hj_A4+!_QUryr1c|th86dx$p0Evf9*tzRvp=v+6dT0T z;5WD^sUd7f1vZ_aDVQ)QcKB<`;0o&vCiQkFFx6r&*U0*QF^^aI>g&Ms3ZW+7s2I|t z@T1-i%`t47>f5?5IQ}T~e;84~}X%iq$X|GjnPESVR8{qgY==IWSePnHMXaO-|^&u@UI}* zlxWoA7@$eOHCX>dI}|>3?#3c8PD%)Y)=>*a_Yge(EdJH~QbR?9U}PUh(kd)mA==Bq z`=k$X zDLizg$r>o4`QhO*J$3Q2!%|;ag4m8^)P#Uy9M9;L;=J=8?Mzv77ob9Md3W;kU z2Z~eUrSb>Y{4FJ8V)^|XfL4(+22>ETZxhW$$ad_oyf6ClaT~f9#5X{gfQ!~z;fFk8 z0`S)@pYBd>m(L4>+1DO|>#j$dGj zebc~qQ5CFW9z+;S@GVT5mjVIq4Qewq=sOA-OKgZ8ntp^E!pfQFHr28H;YS=`(wan!5jBp5-T zy_0r~*CIJ)NtUb`_OTuwjbl3Fx%QW1#L%hT5el%_R^ZcPyzq0#gNG?(Eh?0lpE%+W zR4}3|W}y5Fa`h9HRX>ESsPP_#zTLkDX}#dS{e#YbOZ`}XKc{DA1&E)*aJ9-XD-)Y4 z11nes+<*+45^Vj_o;D;3Nk%)kGL)Wojx8dUEpU6Ml8Au&2ibqi{@8z)%^FsY1neO| zUGs(^*)-lA#!8CIlDMb?v27Q*Ti*zLz#dr&d zR~NeE>vgTrk=_4*=Wlr$$L|XOt8D!fp50_0r2g#by;$k>y~S61b%I>(1aa7AYal+$ zX_kandGwfm_K@;ajig-WnE{p1F~Q5~Y)+~rAs5v#!F%R;jMJZuZbk-cC5Iq#7qFB5 z0Pk-Z3**0Dc;Sr{e0p;V^w8O#ACb~QNMoT=71+7xN~g@f9fk~JL>CgaEHH)tp8qC?7@}t?Hi=V7&Z6d4Y3B&4?g01$|iFO z)+imItl&G8JKEVzi1itT>eDPS^HmiwW*m8o-!=<(AIDS|bafZ$!v0q!w!bAl|9U-* zH>?%Tivbq&F^!0rC0LdTaRvO=(*%0Ii!aS^j6!D#%|ysA^=G%Fyw*XwpRX@!RGIF_ zt%+tTY1bkGQ>F(tH^(U$M;r{fKOp*B62Qdx`^J`4p$`tAVvX;i(F;&tdK;#zeY1Zw z`#8+4_y4u`EYM9H*N#aOKtKqgqzSy3eK`e^0$yqLH~xSD(==cc++t{gLC9-cU`s-h zZQ0KlC7~g0KBO&$Qp_hw1Mf8rG=@OJ$LK&?7o0$-8(fMpa`+fOFjj$r3BPym%&yUg zlhgA~*yc35KI7e;ozI`hBq`+8QwXSb^No*#Ykjh|iIzh=nQAvGQ0F`J#OBj%MocE~eG_{(NP{lmQm zPE1Uxn7H2k+2+ILpBf(gOF^Hk2O?`rr{?#?XG->vye+k z(eM)-1qGr>$ItcH?DIumu~^{ata^?7?xCewjT~R<%ojagyUQbTRx`)jAPdLaIX<7` z5gJYhn}hfwj(5Nle4o$p#T;J(fM|FC+Rf>}FvJ7IfENI-l;g`d9T@F+fV=`4$<5O6 z->+~(QQbHK)t=9Ec)UKuBjArm3}QV7X0A4WCmw*GB1raFYXLJJ= z(GFS9eTFk>wO>Zi{C~^Q>nxlB=x2b@(gH)fNpI3vVajL*)0$v5a(Y-~!(aqB@jIs1 zgB_gSVILKw|DvFgzw03_1}sAkMwpT4w1@zU0Rj|cwQy!LyhHCbLgi)*pc@EQqXq(J zGMYFe7;7xRr)KEPW{{O8Ej;5Lzw05u{(Up#$1<%JE8JNe-f3g>W)0pE2y7Gv6L1>l zHA2H#8ITt0rO$c;Ai_d}5&AnmTR~!&Al{@CpnX%H}- zi6Q~-SU)8iA`oBzgle!(Bjlk-k%7ZI$uu$`v;+far_gK)KJr0#`IrjZM41Un!uRe{5Gbuy zL%&G{SYZ&A12O{R0px?|KyeLxfjkirC_f-i$bs^T#1qI5kpbbN?@$Kvh8(cvCan=@ z2(Tg#+#y(DbfEHMwgyYrb443 zTEoOFw3wzTf{}zhIXD;^Xxw}bXholjp)0Yc5@0I!1|u7Lf-0oSD}VzqP6L9QYOPQ$)l;B@VW!)XLlzt< zDL{SbeXO3_-w^_tcgE>JF9O*(4y=Q+GT`@3%JJEJAdBrbh=z>(I6+RkKS*4nhJ$IgH2epf-0kkq`m9$CCUvuu* zu2<*If9S=hi~jTdA5WT`KeopRu<<d3GAw+xJU9lNruN5t#n zjadPNy|eZ%|eE-dX4{(iGMMgeJ*8jZI$ z)J}GhP$vvt?Q);kUH)Mrkcg1q4R1Tq@#yZ;=T#vB*icAZZe5i~uK)3b4?7EaXMsct zS1Ii_WayqvDG>jH+DiZn3ilH33>(6(AH3>ch1AiW@T5)#nUc1+5dOCuI65F@kSg?% zFbZj!DD(rjDr?R+4)kZYeOyur8teno=oL(^S(@095GcL)a4)j+Me_sIAFEOyX`__X z-!ZD;(tTvky@?yHp`iC?t~hH$0#&WM_;*uk0tw{)eR^;5gM$~-PN)I~33ImuOl?Q) zsKz0r>pK!9NZKc-Du2nu3zI6@^?edacyQk6o3HIq=Y&8Cg=W7;%4RNa??-}5{6{)B zfX0;#-d}N&Lh5Q7{-K3FvToncN0IRNS_rXm8yBK{C*huSZXfu#V6%0oOQKZvXR44#mc3g-KE~*V1K8|6(kv2Y z@*iS93A~>y(}UC{sWTO%hf*^Ys)KcH&%1n$+F62YS=R^*lI)YAM=I*>Y1wnUg82KW zlu?{Agv{7g-<}34mweq!SIM9x8E`3uXzFfsrKPs&QzFcfgk0CDq)?m`GhTJ2*X=&h z1e3-w)&1mN5m*#G5m9LPjFE0%pV<$}@!$1e%e+6?*mw`6Lukc;`lEF5?`ThW;1Zh~20pbgl`61}O+^CzTXSLV80f1GSqcwXy*_ViJJ{Yk_(Qgq z71TVtaS7^LW1E?|zN*)zmkF8Qy70c1)vA>XiKCR2>-@s>E0$x&ue<CON-3lDP_`;GsLt{>GDZ1cL7^HfqfEr z-%41w->ZB59slm(Z6H2IAO zZ3FEAU0Hd`^0${(`Lhy!zv`!5Kkhk{^8eklwEs&~`K`}1l~z(++Wfy;Mxli=lvZ4S z7F6m$xpnsa5D~Z*dSvmKQ(skbGNSyuQRUj@>nXcr3yia&Y-bj(g*|Se6sfCPP#(EK zwMgBdid^vJ&3TSgS3-Fy|J~tVjcdcfr3Y5v4n60Oc$7JT2UVE^Xi!Y%9NWIJaY!h) zX1Pe$R7h|IrAzZW7f<2BFkGRh)pah!gHnr+9fwO-w?GG}X{^OfUnI1kgo=#nLsva? zHw7Wh!_-cKBvDE+yK#vG`Y-t5a=N6FvXPBkpPXEBcr=q4r0a?5^m~FG;Ws^f)E$#Z znY*@QB1VrZJG(v0Mf{^Sh%1>e*?OWB2eNQpTLbO_3%gTB_Za(&@)r};9;0NBIkv5> z4R#zwTtok$Zi_^8D6}n7{pA!QTPc|x{lm1{8%--#Aoq_w;+ToQa0tHex7V6Lcm(&d zSsy@lQ(b*W0x2fKNH=A~l4~FE03HiX-;!g;rs=^y-qO9e$a9M|v53kPPOUO~2i-D+HG2V3q(U7ueNQd<`#N0A~~ReF&UN-4dUadTa0((KuJ)lHLDFF#ej z@S9jYy~_8iHWEaHLN=1(^wdz^uGC$){1@shnZ1$yh6DiUdKo7o&mDdL(Hn>Q2bZ{` zRsIsp&Y4a{3)63 zROpoENku$!G&ybuotuafUyEovi}~1$KngtyoBzyZH0bTaM1xN(R5U zNBa}azJ0fxX?GXM%+j(lhAQIY9e>M5SvVQJ)>f{o!rqtvzyOZbNGE+KD z-JDc^rgwPY(X^$w9uHUZTGcd(cu;88aKwPS>qzkGZyR)MM;E-gN2=;GVnr$S*@3?? zC4q}aE>}o4udej7o>$fcjt?Z^k?P=t*imY5YCQXoWVQzzYYiT&N?Y{G8dCG=)`KWO z7VS|jE{GR}EH3BzWDbJk1L5EV$t|&TgaY+!j6RnI!DOysH$vFN6E! zryTisk_H?_fNC$SH#8mKv?2YgT4ZipzGJ8au&*5@TKp)eOPe>NDf}quFE#M|z zZ!nJ33L~`I5l?9N@t6)ylz1GDk#HBge8rBrT$w%z{zh>{KA+p0%=0DPpORdjLdXP% zf8>|i!GUvRE_Z$bHy01vaOO)TJP`q$-y;@iz`46Y1Lq7#7aSvC1Q+B5Tz4FvCxRE} zl;TW!fHo%107qnizwW4X5QlEUW8(DaMm#nSeD=r1!AT*}aqwn}tyc?2V8)iG)e72J zSOk;#4)q$)2RvTgZPQy!=nXz5&JZ659`j>i(OXSs@ai3v7wQF<{xNZ89URLL8)t}z z*=$75=h5ZC2@tXM3T7*uXAqOlBHSU)4358J(^=4sdUPFD0o}~U#2L{Ud`z4vjz)sj zg3j-w(&@E2bax*UXShS086C+-r_%{>{HNC$1n847>CEWwJ|@lz=fuRs!I{Bv@CgE( z=MkIk4)DQYE%E6raO6cyUcC;Tx8rr2ui(_KSh~US5pc9YY&t7?=#S285YUl+Oq?E$ z*@%rZ#kUtumWbscy-^p}7xd8UrK}9 z^2}Ou?3klB3wSU>biHN+9A6Y0hsQ-k$H90N*U#agiAZ|*JT^zM=+WSj08cs#TyXFN p9oPA3E*B2>^l*Y4M"my_demux.my_demux.invout_f.y"- ~("my_demux.my_demux.invout_f.a")->"my_demux.my_demux.invout_f.y"+ -~"my_demux.my_demux.vc.myctree.C2Els[0].c1"&~"my_demux.my_demux.vc.myctree.C2Els[0].c2"->"my_demux.my_demux.vc.myctree.C2Els[0]._y"+ -"my_demux.my_demux.vc.myctree.C2Els[0].c1"&"my_demux.my_demux.vc.myctree.C2Els[0].c2"->"my_demux.my_demux.vc.myctree.C2Els[0]._y"- -"my_demux.my_demux.vc.myctree.C2Els[0]._y"->"my_demux.my_demux.vc.myctree.C2Els[0].y"- -~("my_demux.my_demux.vc.myctree.C2Els[0]._y")->"my_demux.my_demux.vc.myctree.C2Els[0].y"+ -= "my_demux.my_demux.vc.myctree.supply.vdd" "my_demux.my_demux.vc.myctree.C2Els[0].vdd" -= "my_demux.my_demux.vc.myctree.supply.vss" "my_demux.my_demux.vc.myctree.C2Els[0].vss" -= "my_demux.my_demux.vc.myctree.in[0]" "my_demux.my_demux.vc.myctree.C2Els[0].c1" -= "my_demux.my_demux.vc.myctree.in[0]" "my_demux.my_demux.vc.myctree.tmp[0]" -= "my_demux.my_demux.vc.myctree.in[1]" "my_demux.my_demux.vc.myctree.C2Els[0].c2" -= "my_demux.my_demux.vc.myctree.in[1]" "my_demux.my_demux.vc.myctree.tmp[1]" -= "my_demux.my_demux.vc.myctree.out" "my_demux.my_demux.vc.myctree.C2Els[0].y" -= "my_demux.my_demux.vc.myctree.out" "my_demux.my_demux.vc.myctree.tmp[2]" +~"my_demux.my_demux.vc.ct.C2Els[0].c1"&~"my_demux.my_demux.vc.ct.C2Els[0].c2"->"my_demux.my_demux.vc.ct.C2Els[0]._y"+ +"my_demux.my_demux.vc.ct.C2Els[0].c1"&"my_demux.my_demux.vc.ct.C2Els[0].c2"->"my_demux.my_demux.vc.ct.C2Els[0]._y"- +"my_demux.my_demux.vc.ct.C2Els[0]._y"->"my_demux.my_demux.vc.ct.C2Els[0].y"- +~("my_demux.my_demux.vc.ct.C2Els[0]._y")->"my_demux.my_demux.vc.ct.C2Els[0].y"+ += "my_demux.my_demux.vc.ct.supply.vdd" "my_demux.my_demux.vc.ct.C2Els[0].vdd" += "my_demux.my_demux.vc.ct.supply.vss" "my_demux.my_demux.vc.ct.C2Els[0].vss" += "my_demux.my_demux.vc.ct.in[0]" "my_demux.my_demux.vc.ct.C2Els[0].c1" += "my_demux.my_demux.vc.ct.in[0]" "my_demux.my_demux.vc.ct.tmp[0]" += "my_demux.my_demux.vc.ct.in[1]" "my_demux.my_demux.vc.ct.C2Els[0].c2" += "my_demux.my_demux.vc.ct.in[1]" "my_demux.my_demux.vc.ct.tmp[1]" += "my_demux.my_demux.vc.ct.out" "my_demux.my_demux.vc.ct.C2Els[0].y" += "my_demux.my_demux.vc.ct.out" "my_demux.my_demux.vc.ct.tmp[2]" += "my_demux.my_demux.vc.ct.in[0]" "my_demux.my_demux.vc.OR2_tf[0].y" += "my_demux.my_demux.vc.ct.in[1]" "my_demux.my_demux.vc.OR2_tf[1].y" "my_demux.my_demux.vc.OR2_tf[0].a"|"my_demux.my_demux.vc.OR2_tf[0].b"->"my_demux.my_demux.vc.OR2_tf[0]._y"- ~("my_demux.my_demux.vc.OR2_tf[0].a"|"my_demux.my_demux.vc.OR2_tf[0].b")->"my_demux.my_demux.vc.OR2_tf[0]._y"+ "my_demux.my_demux.vc.OR2_tf[0]._y"->"my_demux.my_demux.vc.OR2_tf[0].y"- @@ -297,15 +307,13 @@ ~("my_demux.my_demux.vc.OR2_tf[1].a"|"my_demux.my_demux.vc.OR2_tf[1].b")->"my_demux.my_demux.vc.OR2_tf[1]._y"+ "my_demux.my_demux.vc.OR2_tf[1]._y"->"my_demux.my_demux.vc.OR2_tf[1].y"- ~("my_demux.my_demux.vc.OR2_tf[1]._y")->"my_demux.my_demux.vc.OR2_tf[1].y"+ -= "my_demux.my_demux.vc.OR2_tf[1].y" "my_demux.my_demux.vc.myctree.in[1]" -= "my_demux.my_demux.vc.OR2_tf[0].y" "my_demux.my_demux.vc.myctree.in[0]" -= "my_demux.my_demux.vc.supply.vss" "my_demux.my_demux.vc.myctree.supply.vss" -= "my_demux.my_demux.vc.supply.vdd" "my_demux.my_demux.vc.myctree.supply.vdd" += "my_demux.my_demux.vc.supply.vss" "my_demux.my_demux.vc.ct.supply.vss" += "my_demux.my_demux.vc.supply.vdd" "my_demux.my_demux.vc.ct.supply.vdd" = "my_demux.my_demux.vc.supply.vdd" "my_demux.my_demux.vc.OR2_tf[1].vdd" = "my_demux.my_demux.vc.supply.vdd" "my_demux.my_demux.vc.OR2_tf[0].vdd" = "my_demux.my_demux.vc.supply.vss" "my_demux.my_demux.vc.OR2_tf[1].vss" = "my_demux.my_demux.vc.supply.vss" "my_demux.my_demux.vc.OR2_tf[0].vss" -= "my_demux.my_demux.vc.out" "my_demux.my_demux.vc.myctree.out" += "my_demux.my_demux.vc.out" "my_demux.my_demux.vc.ct.out" = "my_demux.my_demux.vc.in.d[0].d[0]" "my_demux.my_demux.vc.in.d[0].f" = "my_demux.my_demux.vc.in.d[0].d[1]" "my_demux.my_demux.vc.in.d[0].t" = "my_demux.my_demux.vc.in.d[1].d[0]" "my_demux.my_demux.vc.in.d[1].f" diff --git a/test/unit_tests/demux_td_2/test.prsim b/test/unit_tests/demux_td_2/test.prsim index f225e62..577e3b3 100644 --- a/test/unit_tests/demux_td_2/test.prsim +++ b/test/unit_tests/demux_td_2/test.prsim @@ -7,11 +7,11 @@ set my_demux.token.r 0 set my_demux.cond.d.d[0].t 0 set my_demux.cond.d.d[0].f 0 cycle -system "echo 'System initialized'" +system "echo '[]System initialized'" set Reset 0 cycle -system "echo 'System reset completed'" +system "echo '[]System reset completed'" status X mode run @@ -19,7 +19,7 @@ assert-qdi-channel-neutral "my_demux.out1" 2 assert-qdi-channel-neutral "my_demux.in" 2 cycle -system "echo 'Output neutral checked'" +system "echo '[]Output neutral checked'" set my_demux.cond.d.d[0].t 1 set my_demux.cond.d.d[0].f 0 @@ -46,7 +46,7 @@ assert my_demux.in.a 1 set-qdi-channel-neutral "my_demux.in" 2 -system "echo 'First Cond Checked'" +system "echo '[]First Cond Checked'" set my_demux.out1.a 0 set my_demux.out1.v 0 @@ -56,7 +56,7 @@ set my_demux.cond.d.d[0].t 0 set my_demux.cond.d.d[0].f 0 cycle -system "echo 'System initialized'" +system "echo '[]System initialized'" set my_demux.cond.d.d[0].t 0 set my_demux.cond.d.d[0].f 1 From 2a4d8c8dee4ab12b64a9f9b646cb55d7ee800c38 Mon Sep 17 00:00:00 2001 From: alexmadison Date: Tue, 8 Mar 2022 10:24:42 +0100 Subject: [PATCH 2/3] added sig names on rhs, ty maxime --- test/prsim_plot.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/prsim_plot.py b/test/prsim_plot.py index 0408a91..8dd0a07 100755 --- a/test/prsim_plot.py +++ b/test/prsim_plot.py @@ -54,17 +54,21 @@ Use -exclude='regex' to specify signals to exclude (or -ex).""") raise Exception("Unknown colour given. I cba to code up general colours atm.") # Check if start time given + t0 = None for arg in argv: r = re.findall(r'-t0=(\d+)', arg) if len(r) >= 1: print(f"Filtering by start time t0 = {r[0]}") + t0 = int[r[0]] entries = [e for e in entries if int(e[0]) >= int(r[0])] # Check if end time given + t1 = None for arg in argv: r = re.findall(r'-t1=(\d+)', arg) if len(r) >= 1: print(f"Filtering by end time t1 = {r[0]}") + t1 = int[r[0]] entries = [e for e in entries if int(e[0]) <= int(r[0])] @@ -173,8 +177,12 @@ Use -exclude='regex' to specify signals to exclude (or -ex).""") # ax.set_ylabel("Signal") ax.set_yticks([]) + # Plot signal names + sig_repeat_period = 20 for sig in unique_sigs: ax.text(-1, sig_to_index(sig), sig, ha = "right", va = "center", size = 10) + ax.text(num_times, sig_to_index(sig), sig, ha = "left", va = "center", size = 10) + for i in range(num_sigs-1): ax.axhline(i+0.5, c = "white", lw = 2) From f91fa9b1585e0b3b05566d60cd30eec8345a4690 Mon Sep 17 00:00:00 2001 From: alexmadison Date: Tue, 8 Mar 2022 10:48:43 +0100 Subject: [PATCH 3/3] all times fix --- test/prsim_plot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/prsim_plot.py b/test/prsim_plot.py index 8dd0a07..2e822fd 100755 --- a/test/prsim_plot.py +++ b/test/prsim_plot.py @@ -119,6 +119,7 @@ Use -exclude='regex' to specify signals to exclude (or -ex).""") # Get list of all times (after filtering) times = np.array([int(e[0]) for e in entries]) if not include_all_times: unique_times = np.unique(times) + num_times = unique_times.shape[0] # Get list of all sigs sigs = np.array([e[1] for e in entries])