From 1cab72c694dcb0816b32a54a109d9d5e162aec81 Mon Sep 17 00:00:00 2001 From: hadeshyp Date: Fri, 13 May 2011 06:29:19 +0000 Subject: [PATCH] New monitor entities readme.txt explains usage. Boris --- monitor/cfg_cell.vhd | 67 +++ monitor/fifo_cell.vhd | 308 ++++++++++++ monitor/fifo_package.vhd | 46 ++ .../ipcores_v6.2/virtex4_fifo_16x1024.ngc | 3 + .../ipcores_v6.2/virtex4_fifo_16x1024.vhd | 155 ++++++ .../ipcores_v6.2/virtex4_fifo_16x1024.xco | 84 ++++ .../ipcores_v6.2/virtex4_fifo_16x1024.xise | 79 +++ .../ipcores_v6.2/virtex4_fifo_32x512.ngc | 3 + .../ipcores_v6.2/virtex4_fifo_32x512.vhd | 155 ++++++ .../ipcores_v6.2/virtex4_fifo_32x512.xco | 84 ++++ .../ipcores_v6.2/virtex4_fifo_32x512.xise | 79 +++ monitor/fifos/virtex4_fifo_16x1024.ngc | 3 + monitor/fifos/virtex4_fifo_16x1024.vhd | 152 ++++++ monitor/fifos/virtex4_fifo_16x1024.xco | 81 ++++ monitor/fifos/virtex4_fifo_32x512.ngc | 3 + monitor/fifos/virtex4_fifo_32x512.vhd | 152 ++++++ monitor/fifos/virtex4_fifo_32x512.xco | 81 ++++ monitor/monitor.vhd | 455 ++++++++++++++++++ monitor/monitor_config.vhd | 254 ++++++++++ monitor/mux_cfg.vhd | 84 ++++ monitor/mux_fifo.vhd | 122 +++++ monitor/mux_reg.vhd | 81 ++++ monitor/readme.txt | 34 ++ monitor/reg_cell.vhd | 63 +++ monitor/rom.vhd | 175 +++++++ 25 files changed, 2803 insertions(+) create mode 100644 monitor/cfg_cell.vhd create mode 100644 monitor/fifo_cell.vhd create mode 100644 monitor/fifo_package.vhd create mode 100644 monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.ngc create mode 100644 monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.vhd create mode 100644 monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.xco create mode 100644 monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.xise create mode 100644 monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.ngc create mode 100644 monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.vhd create mode 100644 monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.xco create mode 100644 monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.xise create mode 100644 monitor/fifos/virtex4_fifo_16x1024.ngc create mode 100644 monitor/fifos/virtex4_fifo_16x1024.vhd create mode 100644 monitor/fifos/virtex4_fifo_16x1024.xco create mode 100644 monitor/fifos/virtex4_fifo_32x512.ngc create mode 100644 monitor/fifos/virtex4_fifo_32x512.vhd create mode 100644 monitor/fifos/virtex4_fifo_32x512.xco create mode 100644 monitor/monitor.vhd create mode 100644 monitor/monitor_config.vhd create mode 100644 monitor/mux_cfg.vhd create mode 100644 monitor/mux_fifo.vhd create mode 100644 monitor/mux_reg.vhd create mode 100644 monitor/readme.txt create mode 100644 monitor/reg_cell.vhd create mode 100644 monitor/rom.vhd diff --git a/monitor/cfg_cell.vhd b/monitor/cfg_cell.vhd new file mode 100644 index 0000000..5a43614 --- /dev/null +++ b/monitor/cfg_cell.vhd @@ -0,0 +1,67 @@ +-- *********************************************************************************** +-- *********************************************************************************** +-- +-- CFG cell for FIFO controls +-- -------------------------- +-- +-- [0] - reset +-- [1] - ringbuffer +-- [2] - check if differing input +-- [3] - halt +-- [4] - autowrite +-- +-- *********************************************************************************** +-- *********************************************************************************** + + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; + +library work; +use work.monitor_config.all; + + +entity CFG_cell is + generic( + init : std_logic_vector(7 downto 0) + ); + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + DATA_IN : in std_logic_vector(7 downto 0); + WRITE_IN : in std_logic; + + DATA_OUT : out std_logic_vector(7 downto 0) := (others => '0') + ); +end entity; + +architecture basic of CFG_cell is + +signal data, next_data : std_logic_vector(7 downto 0) := init; + +begin + + DATA_OUT <= data; + + p_write:process(WRITE_IN, RESET, data, DATA_IN) + begin + next_data <= data; + if RESET = '0' then + if WRITE_IN = '1' then + next_data <= DATA_IN; + end if; + end if; + end process; + + proc_cell_logic : process(CLK) + begin + if rising_edge(CLK) then + data <= next_data; + end if; + end process; + +end architecture; \ No newline at end of file diff --git a/monitor/fifo_cell.vhd b/monitor/fifo_cell.vhd new file mode 100644 index 0000000..b56f660 --- /dev/null +++ b/monitor/fifo_cell.vhd @@ -0,0 +1,308 @@ +-- *********************************************************************************** +-- *********************************************************************************** +-- +-- FIFO storage cell +-- ----------------- +-- +-- Architecture independent +-- In order to assure architecture independence, set the ARCH constant +-- in devmon_config.vhd +-- The ARCH will be prepended to all FIFOs +-- +-- ----------------------------------------------------------------------------------- +-- +-- TODO: +-- ----- +-- Do fifo_reset only during 1 cycle and reset the cfg(0) to '0' after write +-- Clean the unused signals +-- +-- *********************************************************************************** +-- *********************************************************************************** + + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; + +library work; +use work.monitor_config.all; +use work.fifo_package.all; + + +entity FIFO_cell is + generic( + fifo_type : String; -- The FIFO cell identifier, e.g. "32x512" or "8x16" + f_low : integer range 0 to 255; -- from 10 ns to 2560 ns, the automatic strobe signal + f_high : integer range 0 to 30; -- 10*2**2**f_high ns if this is set, f_low is ignored + t_res : integer range 0 to 31; -- from which bit on the timer will be taken + t_size : integer range 0 to 32; -- size of the timestamp in the package + d_size : integer range 0 to 32; -- size of data in the package + i_size : integer range 0 to 32 -- size of additional information from the external port in the package + ); + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + DATA_IN : in std_logic_vector(FIFO_BUS-1 downto 0); + WRITE_IN : in std_logic; + READ_IN : in std_logic; + DATA_OUT : out std_logic_vector(FIFO_BUS-1 downto 0) := (others => '0'); + VALID_OUT : out std_logic := '0'; + STATUS_OUT : out std_logic_vector(7 downto 0) := (others => '0'); + + CFG_IN : in std_logic_vector(7 downto 0); + TIME_IN : in std_logic_vector(31 downto 0); + EXTERNAL_IN : in std_logic_vector(7 downto 0) + ); +end entity; + +architecture basic of FIFO_cell is + +signal fifo_data_in, next_fifo_data_in, fifo_data_out : std_logic_vector(31 downto 0) := (others => '0'); +signal timestamp, next_timestamp : std_logic_vector(31 downto 0) := (others => '0'); +signal next_fifo_read, fifo_read, fifo_reset, fifo_write, next_fifo_write, fifo_empty, fifo_full, fifo_valid : std_logic := '0'; +signal t1, t2, next_t1, next_t2 : std_logic := '0'; +signal next_reset : std_logic := '0'; +signal stored : std_logic_vector(15 downto 0) := (others => '0'); +signal check : std_logic := '0'; + +signal timer, next_timer : integer := 0; +signal stored_data, next_stored_data : std_logic_vector(FIFO_BUS-1 downto 0) := (others => '0'); +signal buf_data_in, next_buf_data_in : std_logic_vector(FIFO_BUS-1 downto 0) := (others => '0'); +signal autowrite, next_autowrite, write, next_write : std_logic := '0'; +signal hw_trigger, next_hw_trigger : std_logic := '0'; +signal buf_val_in, next_buf_val_in : std_logic := '0'; +signal buf_info_in, next_buf_info_in : std_logic_vector(7 downto 0) := x"00"; + +begin + + gen_virtex4: if ARCH="_virtex4" generate + gen_16x1024: if fifo_type = "fifo_16x1024" generate + the_16x1024_FIFO : virtex4_fifo_16x1024 + port map( + clk => CLK, + din => fifo_data_in(15 downto 0), + rd_en => fifo_read, + rst => fifo_reset, + wr_en => fifo_write, + data_count => stored(9 downto 0), + dout => fifo_data_out(15 downto 0), + empty => fifo_empty, + full => fifo_full, + valid => fifo_valid + ); + end generate; + gen_32x512: if fifo_type = "fifo_32x512 " generate + the_32x512_FIFO : virtex4_fifo_32x512 + port map( + clk => CLK, + din => fifo_data_in(31 downto 0), + rd_en => fifo_read, + rst => fifo_reset, + wr_en => fifo_write, + data_count => stored(8 downto 0), + dout => fifo_data_out(31 downto 0), + empty => fifo_empty, + full => fifo_full, + valid => fifo_valid + ); + end generate; + end generate; + + gen_timestamp0: if t_size = 1 generate + next_timestamp(0) <= TIME_IN(t_res); + end generate; + gen_timestamp1: if t_size > 1 generate + next_timestamp(t_size-1 downto 0) <= TIME_IN(t_res + t_size - 1 downto t_res); + end generate; + proc_reg_timestamp: process(CLK) + begin + if rising_edge(CLK) then + timestamp <= next_timestamp; + end if; + end process; + + gen_fifo_data_no_info: if i_size = 0 generate + gen_timestamp_0: if t_size = 0 generate + next_fifo_data_in(d_size-1 downto 0) <= buf_data_in(d_size-1 downto 0); + end generate; + gen_timestamp_1: if t_size = 1 generate + next_fifo_data_in(d_size downto 0) <= timestamp(0) & buf_data_in(d_size-1 downto 0); + end generate; + gen_timestamp_others: if t_size > 1 generate + next_fifo_data_in(d_size+t_size-1 downto 0) <= timestamp(t_size-1 downto 0) & buf_data_in(d_size-1 downto 0); + end generate; + end generate; + gen_fifo_data_1_info: if i_size = 1 generate + gen_timestamp_0: if t_size = 0 generate + next_fifo_data_in(d_size downto 0) <= buf_info_in(0) & buf_data_in(d_size-1 downto 0); + end generate; + gen_timestamp_1: if t_size = 1 generate + next_fifo_data_in(d_size+1 downto 0) <= buf_info_in(0) & timestamp(0) & buf_data_in(d_size-1 downto 0); + end generate; + gen_timestamp_others: if t_size > 1 generate + next_fifo_data_in(d_size+t_size downto 0) <= buf_info_in(0) & timestamp(t_size-1 downto 0) & buf_data_in(d_size-1 downto 0); + end generate; + end generate; + gen_fifo_data_info: if i_size > 1 generate + gen_timestamp_0: if t_size = 0 generate + next_fifo_data_in(d_size+i_size-1 downto 0) <= buf_info_in(i_size-1 downto 0) & buf_data_in(d_size-1 downto 0); + end generate; + gen_timestamp_1: if t_size = 1 generate + next_fifo_data_in(d_size+i_size downto 0) <= buf_info_in(i_size-1 downto 0) & timestamp(0) & buf_data_in(d_size-1 downto 0); + end generate; + gen_timestamp_others: if t_size > 1 generate + next_fifo_data_in(d_size+t_size+i_size-1 downto 0) <= buf_info_in(i_size-1 downto 0) & timestamp(t_size-1 downto 0) & buf_data_in(d_size-1 downto 0); + end generate; + end generate; + + p_autowrite: process(timer, RESET) + begin + if f_high = 0 then + if timer = f_low then + next_timer <= 0; + next_autowrite <= '1'; + else + next_timer <= timer + 1; + next_autowrite <= '0'; + end if; + else + if timer = (2**f_high)-1 then + next_timer <= 0; + next_autowrite <= '1'; + else + next_timer <= timer + 1; + next_autowrite <= '0'; + end if; + end if; + + if RESET = '1' then + next_timer <= 0; + next_autowrite <= '0'; + end if; + end process; + + next_buf_data_in <= DATA_IN; + next_stored_data <= buf_data_in; + next_hw_trigger <= WRITE_IN; + next_buf_info_in <= EXTERNAL_IN; + proc_register_signals : process(CLK) + begin + if rising_edge(CLK) then + write <= next_write; + autowrite <= next_autowrite; + fifo_write <= next_fifo_write; + timer <= next_timer; + stored_data <= next_stored_data; + hw_trigger <= next_hw_trigger; + buf_data_in <= next_buf_data_in; + buf_info_in <= next_buf_info_in; + fifo_data_in <= next_fifo_data_in; + end if; + end process; + + next_fifo_write <= (autowrite and CFG_IN(4) and CFG_IN(2) and (fifo_empty) and (not CFG_IN(3)) and (not RESET)) + or (autowrite and CFG_IN(4) and CFG_IN(2) and (not fifo_empty) and check and (not CFG_IN(3)) and (not RESET)) + or (hw_trigger and (not CFG_IN(3)) and (not CFG_IN(2)) and (not RESET)) + or (hw_trigger and (not CFG_IN(3)) and CFG_IN(2) and (not fifo_empty) and check and (not RESET)) + or (hw_trigger and (not CFG_IN(3)) and CFG_IN(2) and fifo_empty and (not RESET)) + or (autowrite and CFG_IN(4) and (not CFG_IN(2)) and (not CFG_IN(3)) and (not RESET)); + + + check <= '0' when stored_data = buf_data_in else '1'; +-- p_compare:process(stored_data, buf_data_in) +-- begin +-- if stored_data = buf_data_in then +-- check <= '0'; +-- else +-- check <= '1'; +-- end if; +-- end process; + + proc_register_f : process(CLK) + begin + if rising_edge(CLK) then + fifo_read <= next_fifo_read; + fifo_reset <= next_reset; + t1 <= next_t1; + t2 <= next_t2; + end if; + end process; + + proc_cell_logic : process(stored, t1, t2, READ_IN, fifo_read, CFG_IN, RESET) + variable ALFULL : integer range 1 to 1024; + begin + if fifo_type = "fifo_32x512 " then + ALFULL := 508; + elsif fifo_type = "fifo_16x1024" then + ALFULL := 1020; + end if; + + next_reset <= CFG_IN(0) or RESET; + + -- RING BUFFER MODE + if CFG_IN(1) = '1' then + next_fifo_read <= '0'; + next_t1 <= t1; + next_t2 <= t2; + + if READ_IN = '1' then + next_fifo_read <= '1'; -- the real read + next_t1 <= '0'; -- mark as real + else + if std_logic_vector(to_unsigned(ALFULL,16)) < stored then -- the fifo is 'almost' full + next_fifo_read <= '1'; -- the fake read + next_t1 <= '1'; -- mark as fake + else + next_t1 <= '0'; -- no real or fake read, so reset the marker + end if; + end if; + + if fifo_read = '1' then + if t1 = '1' then + next_t2 <= '1'; -- propagate the marker + else + next_t2 <= '0'; -- no fake read, so reset the second marker + end if; + end if; + + -- NORMAL MODE + else + next_t1 <= '0'; + next_t2 <= '0'; + + next_fifo_read <= READ_IN; + + end if; + + if RESET = '1' then + next_t1 <= '0'; + next_t2 <= '0'; + next_fifo_read <= '0'; + end if; + end process; + + p_valid:process(fifo_valid, t2) + begin + if fifo_valid = '1' then + VALID_OUT <= not t2; + else + VALID_OUT <= '0'; + end if; + end process; + + DATA_OUT <= fifo_data_out(FIFO_BUS-1 downto 0); + + STATUS_OUT(0) <= fifo_full; + STATUS_OUT(1) <= fifo_empty; + + -- DEBUG + STATUS_OUT(2) <= autowrite; + STATUS_OUT(3) <= fifo_write; + STATUS_OUT(4) <= fifo_read; + STATUS_OUT(5) <= fifo_data_in(0); + STATUS_OUT(6) <= fifo_data_in(1); + STATUS_OUT(7) <= fifo_data_in(2); + +end architecture; \ No newline at end of file diff --git a/monitor/fifo_package.vhd b/monitor/fifo_package.vhd new file mode 100644 index 0000000..41077c2 --- /dev/null +++ b/monitor/fifo_package.vhd @@ -0,0 +1,46 @@ +library ieee; +use ieee.std_logic_1164.all; +USE IEEE.numeric_std.ALL; + + +package fifo_package is + + +component virtex4_fifo_16x1024 IS + port ( + clk: IN std_logic; + din: IN std_logic_VECTOR(15 downto 0); + rd_en: IN std_logic; + rst: IN std_logic; + wr_en: IN std_logic; + data_count: OUT std_logic_VECTOR(9 downto 0); + dout: OUT std_logic_VECTOR(15 downto 0); + empty: OUT std_logic; + full: OUT std_logic; + valid: OUT std_logic); +END component; + +component virtex4_fifo_32x512 IS + port ( + clk: IN std_logic; + din: IN std_logic_VECTOR(31 downto 0); + rd_en: IN std_logic; + rst: IN std_logic; + wr_en: IN std_logic; + data_count: OUT std_logic_VECTOR(8 downto 0); + dout: OUT std_logic_VECTOR(31 downto 0); + empty: OUT std_logic; + full: OUT std_logic; + valid: OUT std_logic); +END component; + + + + +end package fifo_package; + + + +package body fifo_package is + +end package body fifo_package; diff --git a/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.ngc b/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.ngc new file mode 100644 index 0000000..7e0139f --- /dev/null +++ b/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$2ga40<,[o}e~g`n;"2*726&;$?,)?40893456789:;8=5?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>>;0185+66n2;;6D@_UU8svjaXmdzuRzgrdqk8<<76;<0==4FNQWW>uthoVof|ywPtipfwmYf{zoyx1750?05?46=AGZ^X7~}of]fiur~W}byi~fPndebp`:>294:i6??:HLSQQ85>0;KMTPR=x{elSk{cl^vkv`uoWhyxiz39;2=60=683CE\XZ5psmd[cskdV~c~h}g_ogdeqc;13:5=45>0;MVPUSS2mkmRm`uov?=?699j1:<7AZTQWW>wbXlh~jSnaznu>:>586k2;;6B[[PTV9swYci}kTob{at=;94;7338?1EC^ZT;CG@WG;9=0;2<:4148JJUSS2HNO^O2>4;2=57=6>3CE\XZ5dhl?50<768>0=;4@UURVP?bh}}6:97>11:026>552@D[YY4KI@>05?699;18>7GAPTV9@LD;;80;2<=4338LQQVR\3NDM1=>:1<27>552F__\XZ5DN@?74<768;087GAPTV9@LVF4:0;24?>0280?OIX\^1[HO33;2=55=32@D[YY4XEC>0>586:2>1CXZ_UU8GKUG;;3:5=?5;:NWWTPR=LFZI0>4?>597B1Ea3=|gt9>if037<(77:2?2868:3138<1=>893974O7;@FGVD:7601JHI\N<02==>GCL[K7=<06;@FGVD:6:730MIJ]A=30:g=FLMXJ0<:50?;8EABUI5;?255NDEPB848?3HNO^L2=>99B@ATF4:437LJKR@>7:==FLMXJ0807;@FGVD:1611JHI\N<6<;?DBCZH63255NDEPB8<8?3HNO^O2?>89B@ATE48:556OKDS@?548>3HNO^O2>2?;8EABUJ5;82o5NDEPA842=8730MIJ]B=37:==FLMXI0<07;@FGVG:5611JHI\M<2<;?DBCZK6?255NDEPA808?3HNO^O29>99B@ATE4>437LJKRC>;:==FLMXI040<;@NO=>GTQGIT^HI<;CW1<>DR[VCEJB?4C`9@EVEFLLCEMl5LARAB@@OIJk1HM^MNDDMVPDd6MF4:AOOD2BNI5;:2:5KI@>26;108;EKB8429?2NBM1?:>69GMD:6>7=0HDO316<4?AOF4825;6JFA=3::3=CAH6:2:5KI@>14;1<08;EKB8749?2NBM1<<>69GMD:5<7=0HDO324<4?AOF4;<5;6JFA=04:2=CAH694394DHC?6<813MCJ0?08;EKB866912NBM1=>:1<4?AOF4:;5:6JFA=1=2>BNI5>5:6JFA=7=2>BNI5<5:6JFA=5=2>BNI525:6JFA=;=2>BNJ5:5;6JFB=33:2=CAK6:=394DH@?57803MCI0<=17:FJF9736>1OEO2>5?58@LD;9?4<7IGM<05=3>BNJ5;32:5KIC>2=;01OEO2=3?58@LD;:=4<7IGM<37=3>BNJ58=2:5KIC>13;1508;EKA87?9>2NBN1<17:FJF957601OEO2<1;2=3>BNJ59:2;5KIC>0:3=CAK6?2;5KIC>6:3=CAK6=2;5KIC>4:3=CAK632;5KIC>::2=CAYK7<394DHRB84803MC[M1<19:FJTD:4294<7IG_A=1=3>BNXK6;2:5KIQ@?5;1BHI5;:2:5KO@>26;108;EMB8429?2NDM1?:>69GKD:6>7=0HBO316<4?AIF4825;6J@A=3::3=CGH6:2:5KO@>14;1<08;EMB8749?2NDM1<<>69GKD:5<7=0HBO324<4?AIF4;<5;6J@A=04:2=CGH694394DNC?6<813MEJ0?08;EMB866912NDM1=>:1<4?AIF4:;5:6J@A=1=2>BHI5>5:6J@A=7=2>BHI5<5:6J@A=5=2>BHI525:6J@A=;=3>BHIVXNK;5KOC>3:2=CGK6:<394DN@?54803MEI0<<17:FLF9746>1OCO2>4?58@JD;9<4<7IAM<04=3>BHJ5;<2:5KOC>2<;117:FLF9466>1OCO2=2?58@JD;::4<7IAM<36=3>BHJ58>2:5KOC>12;1:08;EMA87>9?2NDN1<6>79GKG:56>1OCO2<0?;8@JD;;80;2:5KOC>05;017:FLTD:66>1OC]O32?;8@JVF4:0;2:5KOQC?7;189GKUD;;3:5;6J@PC>0:6=BFH90ICL=;G66?CGK[L80JI=4FEA7?CBDM:1MH]:4FERF5>A43NDO>6G?2:K26>O5:2C846GAIUR\45>>8:KMMQVX8;20ECG[P^20<>OIA]ZT<964IOKWTZ6202CEEY^P07:8MKOSXV:<56GAIUQWEQC03@DBXR>?7:KMMQY79>1BBDZP0358MKOSW99<7D@FT^273>OIA]U;9:5FNHV\4311BBDZP1358MKOSW89<7D@FT^373>OIA]U:9:5FNHV\531969JJLRX9H=0ECG[_0@4?LHN\V;H;6GAIU]2@2=NF@^T=H94IOKW[4@03@DBXR1BBDZP2358MKOSW;9<7D@FT^073>OIA]U99:5FNHV\631H94IOKW[7@03@DBXR=?7:KMMQY49>1BBDZP3358MKOSW:9<7D@FT^173>OIA]U89:5FNHV\73198;HLJPZ5??2CEEYQ<969JJLRX;H=0ECG[_2@4?LHN\V9H;6GAIU]0@2=NF@^T?H94IOKW[6@13@DBXRO9;HLJPZD>3@DBXRHFLD31?LHQM[^TOAEPDNC\V@A6:2CEZH\[_BNH[AIEW[OL>6BF2:NL2>JHIMOO;6B@GHABH1=K]];?7A[[279OQQ4XD=1GYY=;;MWW00=J[NEE96CZXB[`?Hgmg{\n~~g`nb9Nmkiu^lxxeb`<;O226>H6<2D:<=:4N0220>H68;>0B<><4:L241286@>0768J460<2D:<5=4N037?K76:=1E=<:;;O3221=I98=?7C?>859M54?43G;986@>2168J446<2D:>?:4N0000>H6:=>0B<<:3:L276=I9=90B<;<;O357>H6?:1E=5=4N0;1?K443G8;?6@=129M675H3:2D>?6@6229M=6587C7:3:L:26=I1>90B46<;O;:b>HEWK_X\D@PPSMSW2=IM]]D^F:4NNLF5>I53FA:7]:4P@PWe>VNFVH^_DJWb:RJJZDR[GKFI>5_RD38U3=UIDH::k5]AL]F\QCI[@EESLh4R@O\A]RBFZCDBRLn;SGB@Z@NZZ^h7_KND^UJ@QNXIj1YILJPWHFWLZD13[OLOHO9;SGDG@D63Z20_LXJD@VB56=TADUHCABFSHMM[FNBKB<0_B[]CD58WWPFDVK<7^\YAM]A0>UTZH>0_^\M4:VZT@413\:$kh!rg-dh5(ul&mydk }hg-qehYqiecoSi?=e:W3+bta&{l$ka>!re-dvm`)zal$~lcPv`nj`Zb6Wds<=>>2g9V4*aun'xm#jb?.sf,cwna&{bm#ob_wcomaYc9Vg~t=>?100`?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at3f8Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{13g8Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{110g?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at30g?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at20g?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at50g?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at40g?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at70g?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at60g?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at90g?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at811?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at^az8584:2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYdq5;5??5Z0.eqb+ta'nf;"j gsqp*bbd&mi$hn!BcnwmpZeh}g~Tot2=>208Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_b{?7;553\:$kh!rg-dh5(ul&my~ hdb,gg*bd'DidyczPcnwmpZe~4=48>6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Uhu1;1339V4*aun'xm#jb?.sf,cwut&nnh"im db-Ngjsi|VidyczPcx>5:64<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[f;?7997X> gsd-vc)`d9$yh"i}sr,d`f(ck&nh#@m`uov\gjsi|Vir050<3:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQcuu>3:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[iss4848?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Ugyy2=>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_mww8684;2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYk}}6?2>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSa{{<4<07>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]oqq:16:90Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$Anaznu]`kphsWe0:0<3:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQcuu>;:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[iss4048?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Usc2?>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_ymq8484;2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYg{692>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSua}<2<07>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]{kw:36:90Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$Anaznu]`kphsWqey080<3:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQwos>5:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[}iu4>48?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Usc27>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_ymq8<8502_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&idycz30?0;?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+firf}6:2?64U1-dvc(un&mg<#|k/fppw+ack'nh#im cnwmp949:11^<"i}f/pe+bj7&{n$k}|.ff`*ae(lj%hcx`{<2<1<>S7'nxm"h gm2-va)`zzy%kim!db-gg*eh}g~783<7;T2,cw`)zo%l`= }d.eqwv(`lj$oo"jl/bmvjq:26;20Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$ob{at=4=6==R8&myj#|i/fn3*wb(o{yx"jjl.ea,`f)dg|d0:0=8:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.alqkr;07837X> gsd-vc)`d9$yh"i}sr,d`f(ck&nh#naznu>::71<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(kfexR>=7:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.alqkrX9;=0Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$ob{at^013>S7'nxm"h gm2-va)`zzy%kim!db-gg*eh}g~T??94U1-dvc(un&mg<#|k/fppw+ack'nh#im cnwmpZ25?2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&idyczP5358Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,gjsi|V<9;6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"m`uov\371<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(kfexR6=7:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.alqkrX1;n0Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$ob{at^llp5679;o0Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$ob{at^llp56798827X> gsd-vc)`d9$yh"i}sr,qwqu(k8%hm|vndv?4;4>3\:$kh!rg-dh5(ul&my~ }suq,g4)di{xrbhz31?0:?P6(o{l%~k!hl1,q`*au{z$yy} c0-`ewt~fl~7>3<6;T2,cw`)zo%l`= }d.eqwv(u{}y$o gsd-vc)`d9$yh"i}sr,qwqu(k8%laxv!glY3Y+aj9'g:>k5Z0.eqb+ta'nf;"j gsqp*wus{&i:#jczx/en_4[)ody%a~/fov|+ajS:W%k`}!mr0e?P6(o{l%~k!hl1,q`*au{z$yy} c0-dip~)odQ?Q#ibs/op66=R8&myj#|i/fn3*wb(o{yx"}{s.a2+s7;87887X> gsd-vc)`d9$yh"i}sr,qwqu(k8%}=1?1229V4*aun'xm#jb?.sf,cwut&{y"m>/w3?6;443\:$kh!rg-dh5(ul&my~ }suq,g4)q9595>>5Z0.eqb+ta'nf;"j gsqp*wus{&i:#{?34?0a?P6(o{l%~k!hl1,q`*au{z$yy} c0-u5Z6Xign;<=>>2c9V4*aun'xm#jb?.sf,cwut&{y"m>/w3\5Zgil9:;<<o5Z0.eqb+ta'nf;"j gsqp*wus{&i:#{?P3^cm`567888i7X> gsd-vc)`d9$yh"i}sr,qwqu(k8%}=R:Paof34566:01^<"i}f/pe+bj7&{n$k}|.sqww*e5'jky~t`jt=2=6<=R8&myj#|i/fn3*wb(o{yx"}{s.a1+fguzpdnx1?1289V4*aun'xm#jb?.sf,cwut&{y"m=/bcqv|hb|585>45Z0.eqb+ta'nf;"j gsqp*wus{&i9#no}rxlfp959:o1^<"i}f/pe+bj7&{n$k}|.sqww*e5'ng~t#ib[1_-ch7)e88m7X> gsd-vc)`d9$yh"i}sr,qwqu(k;%laxv!glY2Y+aj{'gx>k5Z0.eqb+ta'nf;"j gsqp*wus{&i9#jczx/en_7[)ody%a~ gsd-vc)`d9$yh"i}sr,qwqu(k;%}=1:12c9V4*aun'xm#jb?.sf,cwut&{y"m=/w3\4Zgil9:;<<o5Z0.eqb+ta'nf;"j gsqp*wus{&i9#{?P2^cm`567888i7X> gsd-vc)`d9$yh"i}sr,qwqu(k;%}=R=Paof34566:k1^<"i}f/pe+bj7&{n$k}|.sqww*e5';T8Road12344473\:$kh!rg-dh5(ul&my~ }suq,gjkw8;:0Y=!hrg,qb*ak8'xo#j||s/pppv)dgdz:>45Z0.eqb+ta'nf;"j gsqp*wus{&xjaRkbpu{\bgYn;81^<"i}f/pe+bj7&{n$k}|.sqww*tfeVof|ywPfc]j[hs89:;?85Z0.eqb+ta'nf;"j gsqp*wus{&xjaRkbpu{\bgYnWds<=>?_RU363=R8&myj#|i/fn3*wb(o{yx"}{s.pbiZcjx}sTeS7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|88?7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{2368Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkr4:=1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~by:=4:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmp0433\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|d:?:4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov461=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}2986[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at80:?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs7<32:Zts:01^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQly=0=6f=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Uhu1<1_sv1=>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vir0>0=c:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZe~4:4T~y<6;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[f;<78h7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_b{?0;Yu|;30Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPcx>6:7e<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Tot2:>^pw6<=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Uhu1812b9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5<5Sz=9:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZe~4>49o6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az828Xz}827X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_b{?<;4d3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw38?]qp7g<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Ttb|30?0b?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWqey0<0=a:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZ~hz585>l5Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]{kw:46;k0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPxnp?0;4f3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSua}<4<1e>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vrd~1812`9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYg{6<2?o4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\|jt;078j7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_ymq8<85l2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRv`r=;=[wr6n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:768l0Y=!hrg,qb*ak8'xo#~ats-`kphs484:j6[?/fpe*w`(oe:%~i!}povq+firf}6920>f:W3+bta&{l$ka>!re-qtkru'je~by2;>0d8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<4<2b>S7'nxm"h gm2-va)uxg~y#naznu>5:4`<]9%l~k }f.eo4+tc'{zex!lotlw8286n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:?68l0Y=!hrg,qb*ak8'xo#~ats-`kphs404:i6[?/fpe*w`(oe:%~i!}povq+firf}U;=h5Z0.eqb+ta'nf;"j rqlwv*eh}g~T=e:W3+bta&{l$ka>!re-qtkru'je~byQ;1d9V4*aun'xm#jb?.sf,vuhsz&idyczP50g8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_73f?P6(o{l%~k!hl1,q`*twf}x$ob{at^52a>S7'nxm"h gm2-va)uxg~y#naznu];5`=R8&myj#|i/fn3*wb(zyd~"m`uov\=74<]9%l~k }f.eo4+tc'{zex!lotlw[a7;87897X> gsd-vc)`d9$yh"|nup,gjsi|Vn:0<0=2:W3+bta&{l$ka>!re-qtkru'je~byQk1=0=67=R8&myj#|i/fn3*wb(zyd~"m`uov\`4:46;80Y=!hrg,qb*ak8'xo#~ats-`kphsWm;783<=;T2,cw`)zo%l`= }d.psjqt(kfexRj><4<16>S7'nxm"h gm2-va)uxg~y#naznu]g5909:;1^<"i}f/pe+bj7&{n$~}`{r.alqkrXl86<2?<4U1-dvc(un&mg<#|k/srmpw)dg|dSi?38?01?P6(o{l%~k!hl1,q`*twf}x$ob{at^f28<8592_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V:9=6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R?=1:W3+bta&{l$ka>!re-qtkru'je~byQk1^015>S7'nxm"h gm2-va)uxg~y#naznu]g5Z5592_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V>9=6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R;=1:W3+bta&{l$ka>!re-qtkru'je~byQk1^415>S7'nxm"h gm2-va)uxg~y#naznu]g5Z1592_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V29=6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R7=9:W3+bta&{l$ka>!ws-dsvu)z~x#n> c`pq}kcs494956[?/fpe*w`(oe:%{!hwrq-svrt'j:$ol|}yogw848512_;#j|i.sd,ci6){%l{~}!wrvp+f6(khxyuck{<3<1=>S7'nxm"h gm2-sw)`zy%{~z|/b2,gdtuqgo0>0=f:W3+bta&{l$ka>!ws-dsvu)z~x#n> glw{*bk\8T$la< b13d8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l0.enq}(`eR;V"jc|.lq1b>S7'nxm"h gm2-sw)`zy%{~z|/b2,chs&ngP>P hmr,nw7`<]9%l~k }f.eo4+qu'n}x#y|tr-`4*aj}q$laV=R.fop*hu5n2_;#j|i.sd,ci6){%l{~}!wrvp+f6(ods"jcT4\,div(j{;90Y=!hrg,qb*ak8'}y#jy|s/uppv)d8&|:0=0=3:W3+bta&{l$ka>!ws-dsvu)z~x#n> v0>2:75<]9%l~k }f.eo4+qu'n}x#y|tr-`4*p64;49?6[?/fpe*w`(oe:%{!hwrq-svrt'j:$z<2<>318Q5)`zo$yj"ic0/uq+bqt{'}xx~!l0.t28185j2_;#j|i.sd,ci6){%l{~}!wrvp+f6(~8U;Sl`k012357d<]9%l~k }f.eo4+qu'n}x#y|tr-`4*p6W8Ujbi>?0131f>S7'nxm"h gm2-sw)`zy%{~z|/b2,r4Y5Whdo<=>?13`8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l0.t2[6Yffm:;<=?=b:W3+bta&{l$ka>!ws-dsvu)z~x#n> v0]7[dhc89:;=?74U1-dvc(un&mg<#y}/fupw+qt|z%h="mnrs{maq:76;30Y=!hrg,qb*ak8'}y#jy|s/uppv)d9&ij~waeu>2:7?<]9%l~k }f.eo4+qu'n}x#y|tr-`5*efz{seiy2=>3;8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l1.abvwim}682?h4U1-dvc(un&mg<#y}/fupw+qt|z%h="ibuy,di^6Z&ng:"`?=f:W3+bta&{l$ka>!ws-dsvu)z~x#n? glw{*bk\9T$la~ bs3d8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l1.enq}(`eR8V"jc|.lq1b>S7'nxm"h gm2-sw)`zy%{~z|/b3,chs&ngP?P hmr,nw7`<]9%l~k }f.eo4+qu'n}x#y|tr-`5*aj}q$laV:R.fop*hu5;2_;#j|i.sd,ci6){%l{~}!wrvp+f7(~86;2?=4U1-dvc(un&mg<#y}/fupw+qt|z%h="x><0<17>S7'nxm"h gm2-sw)`zy%{~z|/b3,r4:56;90Y=!hrg,qb*ak8'}y#jy|s/uppv)d9&|:0>0=3:W3+bta&{l$ka>!ws-dsvu)z~x#n? v0>7:7d<]9%l~k }f.eo4+qu'n}x#y|tr-`5*p6W9Ujbi>?0131f>S7'nxm"h gm2-sw)`zy%{~z|/b3,r4Y6Whdo<=>?13`8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l1.t2[7Yffm:;<=?=b:W3+bta&{l$ka>!ws-dsvu)z~x#n? v0]0[dhc89:;=?l4U1-dvc(un&mg<#y}/fupw+qt|z%h="x>_5]bja6789;9<6[?/fpe*w`(oe:%{!hwrq-svrt'jef|=85Z0.eqb+ta'nf;"z| gvqp*rus{&xjaRhzlm]j6a=R8&myj#|i/fn3*rt(o~yx"z}{s.pbiZ`rdeUbS`{w012374=R8&myj#|i/fn3*rt(o~yx"z}{s.pbiZ`rdeUbS`{w0123[VQ79m1^<"i}f/pe+bj7&~x$~lcPws]fjZo6::1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by<;;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw572<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~9>95Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu110>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|=8?7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{5368Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkr1:=1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by9=4:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmp=433\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|d5?74U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\g|:76;i0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPcx>3:Zts:01^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=3=6f=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}Uhu1?1_sv1=>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vir0?0=c:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZe~4;4T~y<6;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f;;78h7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{_b{?7;Yu|;30Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPcx>7:7e<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~Tot2;>^pw6<=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}Uhu1;12b9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYdq5?5Sz=9:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZe~4?49o6[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at^az838Xz}827X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{_b{?3;4d3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSnw37?]qp7?<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~Tot27>3a8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp632R|{2`9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYg{6;2?o4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\|jt;978j7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{_ymq8785i2_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRv`r=1=6d=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}Usc2;>3c8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx793;:7g<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~Ttb|39?0g?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWqey040Pru3e?P6(o{l%~k!hl1,tv*qwf}x$ob{at=2=5c=R8&myj#|i/fn3*rt(yd~"m`uov?5;7a3\:$kh!rg-dh5(pz&}{by| cnwmp9499o1^<"i}f/pe+bj7&~x${}`{r.alqkr;;7;m7X> gsd-vc)`d9$|~"ynup,gjsi|5>5=k5Z0.eqb+ta'nf;"z| wqlwv*eh}g~793?i;T2,cw`)zo%l`= xr.usjqt(kfex1811g9V4*aun'xm#jb?.vp,suhsz&idycz37?3e?P6(o{l%~k!hl1,tv*qwf}x$ob{at=:=5c=R8&myj#|i/fn3*rt(yd~"m`uov?=;7b3\:$kh!rg-dh5(pz&}{by| cnwmpZ66m2_;#j|i.sd,ci6){%||cz}/bmvjqY69l1^<"i}f/pe+bj7&~x${}`{r.alqkrX:8o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW:;n7X> gsd-vc)`d9$|~"ynup,gjsi|V>:i6[?/fpe*w`(oe:%{!xpovq+firf}U>=h5Z0.eqb+ta'nf;"z| wqlwv*eh}g~T:e:W3+bta&{l$ka>!ws-ttkru'je~byQ6239V4*aun'xm#jb?.vp,suhsz&idyczPd0>3:74<]9%l~k }f.eo4+qu'~zex!lotlw[a7;97897X> gsd-vc)`d9$|~"ynup,gjsi|Vn:0?0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk1=1=67=R8&myj#|i/fn3*rt(yd~"m`uov\`4:36;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;793<=;T2,cw`)zo%l`= xr.usjqt(kfexRj><7<16>S7'nxm"h gm2-sw)pxg~y#naznu]g5919:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl8632?<4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?39?02?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[5463\:$kh!rg-dh5(pz&}{by| cnwmpZb6W88:7X> gsd-vc)`d9$|~"ynup,gjsi|Vn:S?<>;T2,cw`)zo%l`= xr.usjqt(kfexRj>_202?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[1463\:$kh!rg-dh5(pz&}{by| cnwmpZb6W<8:7X> gsd-vc)`d9$|~"ynup,gjsi|Vn:S;<>;T2,cw`)zo%l`= xr.usjqt(kfexRj>_602?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[=463\:$kh!rg-dh5(pz&}{by| cnwmpZb6W08?7X> gsd-vc)`d9$|~"ynup,gjsi|Vddx=>?1648Q5)`zo$yj"cjm.eai+aeen$ln`in.oefgf(een%i`fQbel]dakcui}ey#{ocie,`wqt(zhggcb~T0\,qeh(u'>Tbbgaiu,qeh)TLY$XECICE^RQMH(TLY;i7X> gsd-vc)jmd%a}Q}al]q`Zci9j1^<"i}f/pe+hcj'}g{Sob_sf\ak76l2_;#j|i.sd,vvredb%yhR||t^cpv`a582_;#j|i.sd,vvredb%yhR||t^cpv`aXl88;7X> gsd-vc)u{}hgg"|k_sqw[duumnUo>3?k;T2,cw`)zo%yylck.pg[wusW{olS=?k;T2,cw`)zo%yylck.pg[wusW{olS??k;T2,cw`)zo%yylck.uq[wusWhyyijS7'nxm"h rrvahn)pzVxxxRm`mc32a>S7'nxm"h rrvahn)pzVxxxR|jg=2=5`=R8&myj#|i/sqwfim({UyyQ}ef>2:4b<]9%l~k }f.pppgjl'~xT~~zPrde\44b<]9%l~k }f.pppgjl'~xT~~zPrde\5d=R[LXTMAGNSb9VW@TX^@YBNAK<;WA@=>PNM^U_U]K9;VGB85813^OJ0<09;VGB878?3^OJ0>4?>79TAD:46?1\IO2?>79TAG:66?1\IO2=>99TAG:4294=7ZKM<2<`?RTN\LUFCIKPAb9TVLRBWDEOIRLk;VPJP@YPAM^CSLj4WSKWAZQNL]BTN^T\ECI;6V\T^EM@2=_[]U]ONl4X^ALV@YNFOE=7Ujm_Hfe?]boWYxba[k}shmm55=_ldUFmga}Vdppmjh682RoaRCfnnpUawunggi0mac`su]fiur~j2kgab}{_gwoh3=eija~|i5mabivtZkfzboy?6mcke9geqgXkfex%>&d:fbpdYdg|d$<'k;ecweZeh}g~#>$j4d`vb[firf}"8%i5kauc\gjsi|!>"h6jnt`]`kphs <#o7io{a^alqkr/> n0hlzn_bmvjq.0!m1omyoPcnwmp->.l2njxlQlotlw,2:a=ci}kTob{at=0=`>bf|hUhcx`{<2e9geqgXkfex181d:fbpdYdg|d0:0k;ecweZeh}g~743h4d`vb[firf}626=0k;ecweZeh}g~75394dckwawt13mce$='9;ekm,4/03mce$<>&7:fjj-76!>1oec&>2(58`lh/9:#<7iga(06*3>bnf!;>%;5kio*1-3=cag"8%;5kio*7-3=cag">%;5kio*5-3=cag"<%;5kio*;-3=cag"2%;5kio>3:2=cag6:<394dhl?54803mce0<<17:fjj9746>1oec2>4?;8`lh;9<0;2:5kio>21;0bh}}":>$64dnww,45.02ndyy&>4(:8`jss 8?";6j`uu*1-2=cg|~#?$94dnww,1/03me~x%;&7:flqq.1!>1ocxz'7(58`jss 1#<7iazt);*3>bh}}6;255kotv?558?3me~x1?>>99gkpr;9;437iazt=30:==cg|~7=90n;emvp97229437iazt=36:2=cg|~7=394dnww87803me~x1=17:flqq:36>1ocxz35?58`jss4?4<7iazt=5=3>bh}}632:5kotv?=;>cik5:gntq5n2lbjbQheogqeqiuW!.Wimkm|%EHZL*Lick}aumq$44);=1myabk;hliafrcj`~n~j4iohfgquea}oy~:5fnu]`hn>0|ah_dosp|Ys`{oxd%;&159svjaXmdzuRzgrdqk,3/6<2zycjQjmqvz[qnumzb#;$?;;qplcZcjx}sTxe|jsi*;-42vugnUna}zv_ujqavnXizyn~y&>)0`8twi`Wlg{xtQ{hsgplZgt{lx$?'>b:rqkbYbey~rSyf}erj\evubz}"8%vugnUna}zv_ujqavnXizyn~y&6)0f8twi`Wlg{xtQ{hsgplZgt{lx044?>0`8twi`Wlg{xtQ{hsgplZhboh~n$='>b:rqkbYbey~rSyf}erj\j`af|l":%vugnUna}zv_ujqavnXflmjxh&8)0`8twi`Wlg{xtQ{hsgplZhboh~n$5'>b:rqkbYbey~rSyf}erj\j`af|l"2%5rne\bpjkW}byi~f'6(30?uthoVl~`aQ{hsgpl-1.9:1{~biPftno[qnumzb#4$?<;qplcZ`rdeUdk|h);*50=wzfmTjxbc_ujqavn;13:5=l5rne\bpjkW}byi~fParqfvq.7!8k0|ah_gwohZrozlycSl}|esv+5,7f3yxdkRhzlm]wlwct`Vkxh|{(3+2e>vugnUmyabPtipfwmYf{zoyx%=&1`9svjaXn|fgSyf}erj\evubz}"?%c:rqkbYa}efTxe|jsi]mabgsm531<384re]`hn773{nThlzn_bmvjq.7!8:0~iQkauc\gjsi|!;"==5}d^fbpdYdg|d$?'>0:pg[agsiVidycz'3(33?wbXlh~jSnaznu*7-46q;;>9 agn68pwsb12ehh|ilnu6?sgkam;?7{g}tdz7[coagV;=t<>=4208rltsmq>Tjdh`_04{5543$ocmcRijndpbpjtX~?U9 CAAE-LLJ@5a>2|b~ykw4^djbjY6>q;;>9"iigm\c`hbzh~d~Rx9_3.xgZnf{VcexRmck<2/gZnf{Vyyy3?,b]q`Z`umx7: nQjn``oaZtt|Vyrbn3>,b]kevYulVnjxlQlotlw95*dWmceSzgkti?22)eX`hyT{Qkauc\gjsi|4:'oRhzlm]ehdatW{yS{oc=1.`[lkwdlgnbyo{inl\p|vb59&hSx}j_doaaabblVxnk0>#c^uq[ctby4;'oR{|e^flqqYu{}7: nQznegqbiipWee|1="l_icp[jpbzofd{0>#c^rqaiiflVfjxh`ly<3/gZbh}}U|eizg=04/gZktofdTzlb21-a\vaYcmy~c1<>=4-a\awthzVcefhm{inl\p|vb59&hSeo|_tlgaw`kg~7; nQgar]bhhit|Vl~`a3?,b]kevYu{}7: nQkauc\gjsi|V}bhyf211.`[mgtW~xTmne20-a\qvcXmji655*dWf|n~kb`w^nls86+kV}yS}`{r^uj`qn:99&hS}|`g^gntqX|pzn1="l_vp\`drfWje~byQxievk946+kVzyiaand^pfcv;7$jUocxzPrrv\rdj:8%iTdl}Pd`vb[firf}7: nQrne\bpjkW}byi~fPndebp`Yqie7:6y3361*dWkgeiQcov?3(fYwz`gTjdh`_u{sa87lp82'oR~}of]eqijX|pzn1="l_lgnkwX|pzn1<"r2d9umwrbp=UmekaP17z2472Xn`ldSjkaescwkwYq>V8Tt~zP179tvZgdc?1|~Rmck028swYci}kTob{at)2*55=pzVnjxlQlotlw,4/682}ySio{a^alqkr/: ;;7z|Pd`vb[firf}"8%<>4ws]geqgXkfex%:&119tvZbf|hUhcx`{(4+24>quWmkmRm`uov+2,773~xThlzn_bmvjq.0!8:0{Qkauc\gjsi|!2"==5xr^fbpdYdg|d$4'>2:uq[agsiVidycz39;2=1>quWld=7z|Prrv~DEv0i91KLu=k4;D90?7|[<<1?:;55;306ae2k38>4;7tn235>4=i;8=1:6*<15804`=z[<>1?:;55;306ae2k38>4;74S071>61d290:??jl5b811=0f3Z??6>9l:18277bd=j09958m;e1go7<:87;8rQ7f?3:1=7?5f0yP13<4?<0>6<==db7`>73?>01/>kh51418R6722;q~=8l51:w21f<73t.:5:4>f:`0`=<72:;1?7=>{I0e`>\3039po7?=:039y!7fk39o46*<128032=h;m=1<75f3bd94?=h;;<1<7*>988075=i9021<65`33794?"61008?=5a18:95>=h;;>1<7*>988075=i9021>65`33194?"61008?=5a18:97>=h;;81<7*>988075=i9021865`33394?"61008?=5a18:91>=h;;:1<7*>988075=i9021:65`30d94?"61008?=5a18:93>=h;8o1<7*>988075=i9021465`30f94?"61008?=5a18:9=>=n;l31<75`36:94?=h;><1<75f30a94?=n;m;1<75`34`94?"61008:l5a18:94>=h;98802d=i9021=65`34;94?"61008:l5a18:96>=h;<21<7*>98802d=i9021?65`34594?"61008:l5a18:90>=h;<<1<7*>98802d=i9021965`37194?"61008:l5a18:92>=h;?81<7*>98802d=i9021;65`37394?"61008:l5a18:9<>=h;?:1<7*>98802d=i9021565`34d94?"61008:l5a18:9e>=h;98802d=i9021n65`34f94?"61008:l5a18:9g>=h;98802d=i9021h65`34794?"61008:l5a18:9a>=h;<>1<7*>98802d=i9021j65f32c94?"61008845a18:94>=n;:31<7*>98800<=i9021=65f32:94?"61008845a18:96>=n;:=1<7*>98800<=i9021?65f32494?"61008845a18:90>=n;:?1<7*>98800<=i9021965f35094?"61008845a18:92>=n;=;1<7*>98800<=i9021;65f35294?"61008845a18:9<>=n;:l1<7*>98800<=i9021565f32g94?"61008845a18:9e>=n;:n1<7*>98800<=i9021n65f32a94?"61008845a18:9g>=n;:h1<7*>98800<=i9021h65f32694?"61008845a18:9a>=n;:91<7*>98800<=i9021j65m2gg94?7=83:pD?hk;%3bg?4am2e:5;4?::aba<7280;6=uG2gf8 4gd2on0ckm50;9~f11=833?6nk5f0yK6cbf<>2h0i6<<5108g>`7j57;32>g6be3->m6>j6;%76>6bf3-;2=7?65:k0=6<72-;257=64:l2==<732c85?4?:%3:=?5><2d:554>;:k0=4<72-;257=64:l2==<532c85=4?:%3:=?5><2d:554<;:k0<2d:554:;:k0<2d:5548;:k0<2d:5546;:k03d<722c8h=4?::k0`6<722e8h:4?::k0<=<72-;257=79:l2==<732c84:4?:%3:=?5?12d:554>;:k0<3<72-;257=79:l2==<532c8484?:%3:=?5?12d:554<;:k0<1<72-;257=79:l2==<332c84>4?:%3:=?5?12d:554:;:k0<7<72-;257=79:l2==<132c84<4?:%3:=?5?12d:5548;:k0<5<72-;257=79:l2==n2d:554>;:k0=f<72-;257=6f:l2==<532c85o4?:%3:=?5>n2d:554<;:k0=d<72-;257=6f:l2==<332c8544?:%3:=?5>n2d:554:;:k0==<72-;257=6f:l2==<132c85:4?:%3:=?5>n2d:5548;:k0=3<72-;257=6f:l2==n2d:5546;:m05<<722e8>;4?:%3:=?5482d:554?;:m060<72-;257=<0:l2==<632e8>94?:%3:=?5482d:554=;:m066<72-;257=<0:l2==<432e8>?4?:%3:=?5482d:554;;:m064<72-;257=<0:l2==<232e8>=4?:%3:=?5482d:5549;:m05c<72-;257=<0:l2==<032e8=h4?:%3:=?5482d:5547;:m05a<72-;257=<0:l2==<>32e8m=4?::k0a<<722c8ml4?:%3:=?5fj2d:554?;:k0e<<72-;257=nb:l2==<632c8m54?:%3:=?5fj2d:554=;:k0e2<72-;257=nb:l2==<432c8m;4?:%3:=?5fj2d:554;;:k0e0<72-;257=nb:l2==<232c8m94?:%3:=?5fj2d:5549;:k0e6<72-;257=nb:l2==<032c8m?4?:%3:=?5fj2d:5547;:k0e4<72-;257=nb:l2==<>32e8;54?::m033<722c8hi4?::k05g<722c8n84?:%3:=?5e>2d:554?;:k0f1<72-;257=m6:l2==<632c8n>4?:%3:=?5e>2d:554=;:k0f7<72-;257=m6:l2==<432c8n<4?:%3:=?5e>2d:554;;:k0f5<72-;257=m6:l2==<232c8mk4?:%3:=?5e>2d:5549;:k0e`<72-;257=m6:l2==<032c8mi4?:%3:=?5e>2d:5547;:k0ef<72-;257=m6:l2==<>32c8o=4?:%3:=?5d92d:554?;:k0fc<72-;257=l1:l2==<632c8nh4?:%3:=?5d92d:554=;:k0fa<72-;257=l1:l2==<432c8nn4?:%3:=?5d92d:554;;:k0fg<72-;257=l1:l2==<232c8nl4?:%3:=?5d92d:5549;:k0f<<72-;257=l1:l2==<032c8n54?:%3:=?5d92d:5547;:k0f2<72-;257=l1:l2==<>32e8=54?::k03g<722c8=n4?::k0ad<722e8h?4?::m0`f<722c8h<4?::m01g<72-;257=9a:l2==<732e89l4?:%3:=?51i2d:554>;:m01<<72-;257=9a:l2==<532e8954?:%3:=?51i2d:554<;:m012<72-;257=9a:l2==<332e89;4?:%3:=?51i2d:554:;:m026<72-;257=9a:l2==<132e8:?4?:%3:=?51i2d:5548;:m024<72-;257=9a:l2==;:k07=<72-;257=;9:l2==<532c8?:4?:%3:=?5312d:554<;:k073<72-;257=;9:l2==<332c8?84?:%3:=?5312d:554:;:k007<72-;257=;9:l2==<132c88<4?:%3:=?5312d:5548;:k005<72-;257=;9:l2==4?:%3:=?5312d:554i;:k05d<722e8on4?:%3:=?5dm2d:554?;:m0gg<72-;257=le:l2==<632e8ol4?:%3:=?5dm2d:554=;:m0g<<72-;257=le:l2==<432e8o54?:%3:=?5dm2d:554;;:m0g2<72-;257=le:l2==<232e8o;4?:%3:=?5dm2d:5549;:m0g0<72-;257=le:l2==<032e8o94?:%3:=?5dm2d:5547;:m0g6<72-;257=le:l2==<>32e8i:4?:%3:=?5b02d:554?;:m0a3<72-;257=j8:l2==<632e8i84?:%3:=?5b02d:554=;:m0a1<72-;257=j8:l2==<432e8i>4?:%3:=?5b02d:554;;:m0a7<72-;257=j8:l2==<232e8i<4?:%3:=?5b02d:5549;:m0a5<72-;257=j8:l2==<032e8hk4?:%3:=?5b02d:5547;:m0``<72-;257=j8:l2==<>32e8;h4?::k03<<722e8??4?::k0g7<722e8h;4?::`054<7280;6=u+1`a9ba=O;8:0D?hk;nd`>5<7>51;294~"6ij09jh5G3028L7`c3f;2:7>5;|`2ea<72=0;6=u+1`a9b==O;8:0D?hk;%33e?7>o2?3:17b?6b;29?xd6jk0;694?:1y'5de=9??;I0e`>o283:17d;7:188m4g32900c<7;:188yg7dm3:1?7>50z&2ef<48o1C?<>4H3dg?l372900e<;?:188k4?32900qo?mc;290?6=8r.:mn4>5`9K746<@;lo7d;?:188m0>=831b=l:50;9l5<2=831vn5<7s-;jo7=?f:J055=O:on0e8>50;9j506=831d=4:50;9~f4dc290?6=4?{%3bg?72i2B8==5G2gf8m06=831b954?::k2e1<722e:594?::a5a6=8391<7>t$0c`>66a3A9:<6F=fe9j15<722c:9=4?::m2=1<722wi=ok50;694?6|,8kh6<;n;I124>N5nm1b9=4?::k65;n3:0?6=3th:h<4?:283>5}#9hi1?=h4H233?M4al2c><7>5;h364?6=3f;287>5;|`2fc<72=0;6=u+1`a950g<@:;;7E5<ab804c=O;8:0D?hk;h73>5<5<54;294~"6ij0:9l5G3028L7`c3`?;6=44i4:94?=n9h>1<75`18694?=zj8n86=4<:183!7fk39;j6F<119K6cb1<75rb0a2>5<3290;w)?nc;36e>N4991C>kj4i4294?=n=10;66g>a583>>i61=0;66sm1e694?5=83:p(>o6=90;66a>9583>>{e9j81<7:50;2x 4gd28?j7E=>0:J1ba=n=90;66g:8;29?l7f<3:17b?64;29?xd6l<0;6>4?:1y'5de=;9l0D>??;I0e`>o283:17d?:0;29?j7><3:17pl>c283>1<729q/=lm514c8L6773A8mh6g:0;29?l3?2900e50z&2ef<48o1C?<>4H3dg?l372900e<;?:188k4?32900qo?j2;291?6=8r.:mn4i9:J055=O:on0(<>n:09j0<<722c?i7>5;h70>5<0:J1ba=#99k1=6g;9;29?l2b2900e8=50;9j12<722e:5o4?::a5`2=83?1<7>t$0c`>c?<@:;;7E26=44i5g94?=n=:0;66g:7;29?j7>j3:17pl>e483>0<729q/=lm5f89K746<@;lo7)??a;38m1?=831b8h4?::k67?6=3`?<6=44o0;a>5<55;294~"6ij0m56F<119K6cb<,8:j6<5f4883>>o3m3:17d;<:188m01=831d=4l50;9~f4c0290>6=4?{%3bg?`>3A9:<6F=fe9'55g=92c?57>5;h6f>5<>i61k0;66sm1d:94?3=83:p(0`82?l2>2900e9k50;9j16<722c>;7>5;n3:f?6=3th:i44?:483>5}#9hi1j45G3028L7`c3-;;m7?4i5;94?=n50z&2ef5<2290;w)?nc;d:?M5682B9ji5+11c95>o313:17d:j:188m05=831b9:4?::m2=g<722wi><750;694?6|,8kh6ko4H233?M4al2.:5<5<3290;w)?nc;db?M5682B9ji5+11c90>o313:17d;8:188m4?f2900c<7m:188yg4>:3:187>50z&2ef5<54;294~"6ij0m46F<119K6cb<,8:j6<5f4883>>o2;3:17d;8:188k4?e2900qo6b23-;;m7?4i5;94?=n=>0;66a>9c83>>{e:o?1<7=50;2x 4gd2o=0D>??;I0e`>N3>2.:9445;h74>5<ab8e3>N4991C>kj4H548 43>2:n>7)??a;38m1?=831b9:4?::m2=g<722wi>k=50;794?6|,8kh6kl4H233?M4al2B?:6*>5880`0=n<00;66g;e;29?l302900e<7n:188k4?e2900qo6b23-;;m7?4i5;94?=n=>0;66a>9c83>>{e:lk1<7;50;2x 4gd2oh0D>??;I0e`>N3>2.:9445;h74>5<5<7>54;294~"6ij0mm6F<119K6cb<,8:j695f4883>>o2?3:17d?6a;29?j7>j3:17pl=f083>1<729q/=lm5f`9K746<@;lo7)??a;68m1?=831b9:4?::k2=d<722e:5o4?::a6cd=83>1<7>t$0c`>cg<@:;;7E26=44i4594?=n90k1<75`18`94?=zj;lj6=4;:183!7fk3lj7E=>0:J1ba=#99k186g;9;29?l302900e<7n:188k4?e2900qo<:5;291?6=8r.:mn4i9:J055=O:on0(<>n:09j0<<722c?i7>5;h70>5<0:J1ba=#99k1=6g;9;29?l2b2900e8=50;9j12<722e:5o4?::a604=83?1<7>t$0c`>c?<@:;;7E26=44i5g94?=n=:0;66g:7;29?j7>j3:17pl=5083>0<729q/=lm5f89K746<@;lo7)??a;38m1?=831b8h4?::k67?6=3`?<6=44o0;a>5<?7>55;294~"6ij0m56F<119K6cb<,8:j6<5f4883>>o3m3:17d;<:188m01=831d=4l50;9~f737290>6=4?{%3bg?`>3A9:<6F=fe9'55g=92c?57>5;h6f>5<>i61k0;66sm25d94?3=83:p(0`82?l2>2900e9k50;9j16<722c>;7>5;n3:f?6=3th98i4?:483>5}#9hi1j45G3028L7`c3-;;m7?4i5;94?=n50z&2ef5<ab8e=>N4991C>kj4$02b>4=n<00;66g;e;29?l342900e8950;9l55<7s-;jo7=?f:J055=O:on0e8>50;9j506=831d=4:50;9~f75a29086=4?{%3bg?57n2B8==5G2gf8m06=831b=8>50;9l5<2=831vn?=::187>5<7s-;jo7?:a:J055=O:on0e8>50;9j1=<722c:m94?::m2=1<722wi>>k50;194?6|,8kh6>>i;I124>N5nm1b9=4?::k215<722e:594?::a665=83>1<7>t$0c`>43f3A9:<6F=fe9j15<722c>47>5;h3b0?6=3f;287>5;|`17a<72:0;6=u+1`a975`<@:;;7E<7>5;n3:0?6=3th9?<4?:583>5}#9hi1=8o4H233?M4al2c><7>5;h7;>5<5<53;294~"6ij085<ab821d=O;8:0D?hk;h73>5<1<75rb31a>5<4290;w)?nc;13b>N4991C>kj4i4294?=n9<:1<75`18694?=zj;8o6=4;:183!7fk3;>m6F<119K6cb>o6i=0;66a>9583>>{e::k1<7=50;2x 4gd2::m7E=>0:J1ba=n=90;66g>5183>>i61=0;66sm23`94?2=83:p(>o203:17d?n4;29?j7><3:17pl=3883>6<729q/=lm531d8L6773A8mh6g:0;29?l7283:17b?64;29?xd5:00;694?:1y'5de=9??;I0e`>o283:17d;7:188m4g32900c<7;:188yg4403:1?7>50z&2ef<48o1C?<>4H3dg?l372900e<;?:188k4?32900qo<=7;290?6=8r.:mn4>5`9K746<@;lo7d;?:188m0>=831b=l:50;9l5<2=831vn?=8:180>5<7s-;jo7=?f:J055=O:on0e8>50;9j506=831d=4:50;9~f742290?6=4?{%3bg?72i2B8==5G2gf8m06=831b954?::k2e1<722e:594?::a63?=83?1<7>t$0c`>c?<@:;;7E26=44i5g94?=n=:0;66g:7;29?j7>j3:17pl=6983>0<729q/=lm5f89K746<@;lo7)??a;38m1?=831b8h4?::k67?6=3`?<6=44o0;a>5<55;294~"6ij0m56F<119K6cb<,8:j6<5f4883>>o3m3:17d;<:188m01=831d=4l50;9~f701290>6=4?{%3bg?`>3A9:<6F=fe9'55g=92c?57>5;h6f>5<>i61k0;66sm27794?3=83:p(0`82?l2>2900e9k50;9j16<722c>;7>5;n3:f?6=3th9:94?:483>5}#9hi1j45G3028L7`c3-;;m7?4i5;94?=n50z&2ef5<2290;w)?nc;d:?M5682B9ji5+11c95>o313:17d:j:188m05=831b9:4?::m2=g<722wi>;?50;794?6|,8kh6k74H233?M4al2.:;h6:>5<>o2?3:17b?6b;29?xd5>90;684?:1y'5de=n01C?<>4H3dg?!77i3;0e9750;9j0`<722c>?7>5;h74>5<ab8e=>N4991C>kj4$02b>4=n<00;66g;e;29?l342900e8950;9l55<7s-;jo7h6;I124>N5nm1/==o51:k7=?6=3`>n6=44i4194?=n=>0;66a>9c83>>{e:jo1<7;50;2x 4gd2o30D>??;I0e`>"68h0:7d:6:188m1c=831b9>4?::k63?6=3f;2n7>5;|`1ga<72<0;6=u+1`a9b<=O;8:0D?hk;%33e?7>o2;3:17d;8:188k4?e2900qon:09j0<<722c?i7>5;h70>5<0:J1ba=#99k1=6g;9;29?l2b2900e8=50;9j12<722e:5o4?::a6fd=83?1<7>t$0c`>c?<@:;;7E26=44i5g94?=n=:0;66g:7;29?j7>j3:17pl=c883>0<729q/=lm5f89K746<@;lo7)??a;38m1?=831b8h4?::k67?6=3`?<6=44o0;a>5<55;294~"6ij0mn6F<119K6cb<,8:j695f4883>>o3m3:17d;8:188m4?f2900c<7m:188yg4di3:197>50z&2ef5<4290;w)?nc;13b>N4991C>kj4i4294?=n9<:1<75`18694?=zj;hi6=4<:183!7fk39;j6F<119K6cb1<75rb3`2>5<3290;w)?nc;36e>N4991C>kj4i4294?=n=10;66g>a583>>i61=0;66sm2cc94?5=83:p(>o6=90;66a>9583>>{e:hl1<7:50;2x 4gd28?j7E=>0:J1ba=n=90;66g:8;29?l7f<3:17b?64;29?xd5j00;6>4?:1y'5de=;9l0D>??;I0e`>o283:17d?:0;29?j7><3:17pl=ae83>1<729q/=lm514c8L6773A8mh6g:0;29?l3?2900e50z&2ef<6=h1C?<>4H3dg?l372900e8650;9j5d2=831d=4:50;9~f7d029086=4?{%3bg?57n2B8==5G2gf8m06=831b=8>50;9l5<2=831vn?o6:187>5<7s-;jo7?:a:J055=O:on0e8>50;9j1=<722c:m94?::m2=1<722wi>o850;194?6|,8kh6>>i;I124>N5nm1b9=4?::k215<722e:594?::a6d1=83>1<7>t$0c`>43f3A9:<6F=fe9j15<722c>47>5;h3b0?6=3f;287>5;|`1f0<72:0;6=u+1`a975`<@:;;7E<7>5;n3:0?6=3th9m84?:583>5}#9hi1=8o4H233?M4al2c><7>5;h7;>5<5<53;294~"6ij085<ab821d=O;8:0D?hk;h73>5<1<75rb3`0>5<4290;w)?nc;13b>N4991C>kj4i4294?=n9<:1<75`18694?=zj;k:6=4;:183!7fk3;>m6F<119K6cb>o6i=0;66a>9583>>{e:l?1<7;50;2x 4gd2o30D>??;I0e`>"68h0:7d:6:188m1c=831b9>4?::k63?6=3f;2n7>5;|`1a1<72<0;6=u+1`a9b<=O;8:0D?hk;%33e?7>o2;3:17d;8:188k4?e2900qon:09j0<<722c?i7>5;h70>5<0:J1ba=#99k1=6g;9;29?l2b2900e8=50;9j12<722e:5o4?::a6`7=83?1<7>t$0c`>c?<@:;;7E26=44i5g94?=n=:0;66g:7;29?j7>j3:17pl=e183>0<729q/=lm5f89K746<@;lo7)??a;38m1?=831b8h4?::k67?6=3`?<6=44o0;a>5<55;294~"6ij0m56F<119K6cb<,8:j6<5f4883>>o3m3:17d;<:188m01=831d=4l50;9~f7bb290>6=4?{%3bg?`>3A9:<6F=fe9'55g=92c?57>5;h6f>5<>i61k0;66sm2ef94?3=83:p(0`82?l2>2900e9k50;9j16<722c>;7>5;n3:f?6=3th9hn4?:483>5}#9hi1j45G3028L7`c3-;;m7?4i5;94?=n50z&2ef<6=h1C?<>4H3dg?l372900e8650;9j5d2=831d=4:50;9~f716290?6=4?{%3bg?72i2B8==5G2gf8m06=831b954?::k2e1<722e:594?::a626=83>1<7>t$0c`>43f3A9:<6F=fe9j15<722c>47>5;h3b0?6=3f;287>5;|`12c<72=0;6=u+1`a950g<@:;;7E5<ab821d=O;8:0D?hk;h73>5<1<75rb3:6>5<3290;w)?nc;36e>N4991C>kj4i4294?=n=10;66g>a583>>i61=0;66sm29694?2=83:p(>o203:17d?n4;29?j7><3:17pl=8283>1<729q/=lm514c8L6773A8mh6g:0;29?l3?2900e5`9K746<@;lo7d;?:188m0>=831b=l:50;9l5<2=831vn?6>:187>5<7s-;jo7?:a:J055=O:on0e8>50;9j1=<722c:m94?::m2=1<722wi=k850;694?6|,8kh6<;n;I124>N5nm1b9=4?::k65;n3:0?6=3th:j84?:583>5}#9hi1=8o4H233?M4al2c><7>5;h7;>5<5<54;294~"6ij0:9l5G3028L7`c3`?;6=44i4:94?=n9h>1<75`18694?=zj8l86=4;:183!7fk3;>m6F<119K6cb>o6i=0;66a>9583>>{e9o81<7:50;2x 4gd28?j7E=>0:J1ba=n=90;66g:8;29?l7f<3:17b?64;29?xd5800;694?:1y'5de=9??;I0e`>o283:17d;7:188m4g32900c<7;:188yg4703:187>50z&2ef<6=h1C?<>4H3dg?l372900e8650;9j5d2=831d=4:50;9~f760290?6=4?{%3bg?72i2B8==5G2gf8m06=831b954?::k2e1<722e:594?::a650=83>1<7>t$0c`>43f3A9:<6F=fe9j15<722c>47>5;h3b0?6=3f;287>5;|`140<72=0;6=u+1`a950g<@:;;7E5<ab8210=O;8:0D?hk;%33e?743`ln6=44igd94?=h90>1<75rb3gf>5<4290;w)?nc;361>N4991C>kj4$02b>45>i61=0;66sm1`d94?5=83:p(<3:17pl=e883>1<729q/=lm51458L6773A8mh6*>0`8e1>oam3:17dhi:188m4672900c<7;:188yg4?n3:197>50z&2ef<6=11C?<>4H3dg?!77i3887dhj:188mc`=831b==>50;9j557=831d=4:50;9~f774290>6=4?{%3bg?7202B8==5G2gf8 46f2;90ekk50;9jbc<722c:<=4?::k244<722e:594?::a6=c=83?1<7>t$0c`>43?3A9:<6F=fe9'55g=::1bjh4?::keb?6=3`;;<7>5;h335?6=3f;287>5;|`157<72<0;6=u+1`a950><@:;;7E5;hde>5<5<ab821==O;8:0D?hk;%33e?443`ln6=44igd94?=n99:1<75f11394?=h90>1<75rb332>5<2290;w)?nc;36<>N4991C>kj4$02b>75>o6890;66g>0083>>i61=0;66sm29a94?3=83:p(<3:17pl=1183>0<729q/=lm514:8L6773A8mh6*>0`817>oam3:17dhi:188m4672900e<>>:188k4?32900qo<66;297?6=8r.:mn4>549K746<@;lo7)??a;30?l`b2900ekh50;9l5<2=831vn?6m:186>5<7s-;jo7?:8:J055=O:on0(<>n:318mcc=831bjk4?::k245<722c:<<4?::m2=1<722wi>=h50;794?6|,8kh6<;7;I124>N5nm1/==o5229jb`<722cmj7>5;h334?6=3`;;=7>5;n3:0?6=3th9;n4?:483>5}#9hi1=864H233?M4al2.:5<5<55;294~"6ij0:955G3028L7`c3-;;m7<<;hdf>5<46F<119K6cb<,8:j6?=4igg94?=nno0;66g>0183>>o6880;66a>9583>>{e9ol1<7;50;2x 4gd28?37E=>0:J1ba=#99k1>>5ffd83>>oan3:17d??0;29?l7793:17b?64;29?xd5?h0;684?:1y'5de=9<20D>??;I0e`>"68h09?6gie;29?l`a2900e<>?:188m4662900c<7;:188yg7am3:197>50z&2ef<6=11C?<>4H3dg?!77i3887dhj:188mc`=831b==>50;9j557=831d=4:50;9~f71>290>6=4?{%3bg?7202B8==5G2gf8 46f2;90ekk50;9jbc<722c:<=4?::k244<722e:594?::a5cb=83?1<7>t$0c`>43?3A9:<6F=fe9'55g=::1bjh4?::keb?6=3`;;<7>5;h335?6=3f;287>5;|`13=<72<0;6=u+1`a950><@:;;7E5;hde>5<5<ab821==O;8:0D?hk;%33e?443`ln6=44igd94?=n99:1<75f11394?=h90>1<75rb334>5<2290;w)?nc;36<>N4991C>kj4$02b>4c>o6890;66g>0083>>i61=0;66sm28694?3=83:p(<3:17pl=1`83>6<729q/=lm51478L6773A8mh6*>0`827>oam3:17dhi:188k4?32900qo<<6;296?6=8r.:mn4>559K746<@;lo7)??a;30?l`b2900c<7;:188yg44<3:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo<<2;296?6=8r.:mn4>559K746<@;lo7)??a;30?l`b2900c<7;:188yg4483:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo<=e;296?6=8r.:mn4>559K746<@;lo7)??a;30?l`b2900c<7;:188yg45k3:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo<=a;296?6=8r.:mn4>559K746<@;lo7)??a;30?l`b2900c<7;:188yg4503:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo<=6;296?6=8r.:mn4>559K746<@;lo7)??a;30?l`b2900c<7;:188yg4e:3:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo559K746<@;lo7)??a;30?l`b2900c<7;:188yg4fm3:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo559K746<@;lo7)??a;30?l`b2900c<7;:188yg4fi3:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo559K746<@;lo7)??a;30?l`b2900c<7;:188yg4f>3:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo559K746<@;lo7)??a;30?l`b2900c<7;:188yg4f:3:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo<;1;296?6=8r.:mn4>559K746<@;lo7)??a;30?l`b2900c<7;:188yg4el3:1>7>50z&2ef<6==1C?<>4H3dg?!77i3;87dhj:188k4?32900qo?l4;290?6=8r.:mn4>569K746<@;lo7)??a;03?l`b2900ekh50;9j556=831d=4:50;9~f4e2290?6=4?{%3bg?72?2B8==5G2gf8 46f2;>0ekk50;9jbc<722c:<=4?::m2=1<722wi=n850;694?6|,8kh6<;8;I124>N5nm1/==o5259jb`<722cmj7>5;h334?6=3f;287>5;|`2g2<72=0;6=u+1`a9501<@:;;7E5;hde>5<5<54;294~"6ij0:9:5G3028L7`c3-;;m7<;;hdf>5<1<75rb0a:>5<3290;w)?nc;363>N4991C>kj4$02b>72>o6890;66a>9583>>{e9jk1<7:50;2x 4gd28?<7E=>0:J1ba=#99k1>95ffd83>>oan3:17d??0;29?j7><3:17pl>cc83>1<729q/=lm51458L6773A8mh6*>0`810>oam3:17dhi:188m4672900c<7;:188yg7dk3:187>50z&2ef<6=>1C?<>4H3dg?!77i38?7dhj:188mc`=831b==>50;9l5<2=831vn5<7s-;jo7?:8:J055=O:on0(<>n:338mcc=831bjk4?::k245<722c:<<4?::m2=1<722wi=nj50;694?6|,8kh6<;8;I124>N5nm1/==o5259jb`<722cmj7>5;h334?6=3f;287>5;|`1a2<72j81<7>t$0c`>4?d3A9:<6F=fe9Y0=7=#9981?6*>0280?!77<390(<>::29'550=;2.:<:4<;%3b5+11a97>"68m087)??e;18 46a2:1/=<>53:&254<43-;:>7=4$030>6=#98>1?6*>1480?!76>390(=;2.:=44<;%32e?5<,8;i6>5+10a97>"69m087)?>e;18 47a2:1/=?>53:&264<43-;9>7=4$000>6=#9;>1?6*>2480?!75>390(<<8:29'57>=;2.:>44<;%31e?5<,88i6>5+13a97>"6:m087)?=e;18 44a2:1/=>>53:&274<43-;8>7=4$010>6=#9:>1?6*>3480?!74>390(<=8:29'56>=;2.:?44<;%30e?5<,89i6>5+12a97>"6;m087)?53:&204<43-;?>7=4$060>6=#9=>1?6*>4480?!73>390(<:8:29'51>=;2.:844<;%37e?5<,8>o6<7<;%37a?`13-;?j7h9;%3:`?7>;2.:5h4>929m5d6=9;1e=l?5139'5d0=<<1/==653:&24<<43-9;m7?6f:&04g<61o1e?=m5139m75b=9;1/=l;5f79'5d?=:2c?m7>5;h6a>5<>oa;3:17d?n2;29?l7f;3:17dh;:188m4gf2900e5=9881e>h6110:76g=8;29 4?>2;k0b<77:398m71=83.:544=a:l2==<432c9:7>5$0;:>7g9986?>o4;3:1(<76:3c8j4??2?10e><50;&2=<<5i2d:5548;:k05?6=,8326?o4n0;;>==9881e>h6110276g=f;29 4?>2;k0b<77:`98m7c=83.:544=a:l2==5$0;:>7g998g?>o5=3:1(<76:3c8j4??2l10e>l50;&2=<<4i2d:554?;:k0=?6=,8326>o4n0;;>4=9880e>h6110976g<7;29 4?>2:k0b<77:298m60=83.:5445$0;:>6g9985?>o3:3:1(<76:2c8j4??2>10e9?50;&2=<<4i2d:5547;:k74?6=,8326>o4n0;;><=9880e>h6110j76g2:k0b<77:c98m6b=83.:5445$0;:>6g998f?>o0:3:1(<76:638j4??2910e:>50;&2=<<092d:554>;:k5a?6=,8326:?4n0;;>7=98845>h6110876g9c;29 4?>2>;0b<77:598m3d=83.:54481:l2==<232c=m7>5$0;:>279984?>o103:1(<76:638j4??2110e;950;&2=<<092d:5546;:k52?6=,8326:?4n0;;>d=98845>h6110i76g93;29 4?>2>;0b<77:b98m34=83.:54481:l2==5$0;:>27998e?>o2n3:1(<76:638j4??28:07d;j:18'542<3`?j6=4+18;934=i9021=854i6;94?"6100<=6`>99822>=n?10;6)?69;52?k7>03;<76g87;29 4?>2>;0b<77:0:8?l11290/=475709m5<>=9010e:;50;&2=<<092d:554>a:9j31<72-;2579>;o3:5$0;:>275<#9031;<5a18:95a=1<7*>98845>h6110:i65f5883>!7>13=:7c?68;3e?>o>;3:1(<76:808j4??2910e4?50;&2=<<>:2d:554>;:k;b?6=,83264<4n0;;>7=988:6>h6110876g7d;29 4?>2080b<77:598m=e=83.:54462:l2==<232c3n7>5$0;:><46`>9984?>o?13:1(<76:808j4??2110e5650;&2=<<>:2d:5546;:k;3?6=,83264<4n0;;>d=988:6>h6110i76g74;29 4?>2080b<77:b98m=5=83.:54462:l2==7>5$0;:><46`>998e?>o?83:1(<76:808j4??28:07d9i:18'542<3`=i6=4+18;9=7=i9021=854i8c94?"61002>6`>99822>=n100;6)?69;;1?k7>03;<76g68;29 4?>2080b<77:0:8?l?0290/=475939m5<>=9010e4850;&2=<<>:2d:554>a:9j=0<72-;2577=;o3:5$0;:><45<#90315?5a18:95a=988:6>h6110:i65f7`83>!7>13397c?68;3e?>o>n3:1(<76:8g8j4??2910e4j50;&2=<<>m2d:554>;:k:g?6=,83264k4n0;;>7=988:a>h6110876gn4;29 4?>2h90b<77:198md4=83.:544n3:l2==<632cj=7>5$0;:>d59980?>o48=0;6)?69;137>h6110;76g<0383>!7>139;?6`>9982?>o4880;6)?69;137>h6110976g<0183>!7>139;?6`>9980?>o4800;6)?69;13<>h6110;76g<0683>!7>139;46`>9982?>o48?0;6)?69;13<>h6110976g<0483>!7>139;46`>9980?>iem3:1(<76:cf8j4??2910com50;&2=<;:mae?6=,8326oj4n0;;>7=988a`>h6110876am8;29 4?>2kn0b<77:598kg1=83.:544md:l2==<232ei:7>5$0;:>gb9984?>ie<3:1(<76:cf8j4??2110co=50;&2=<d=988a`>h6110i76anf;29 4?>2kn0b<77:b98kdc=83.:544md:l2==5$0;:>gb998e?>ifj3:1(<76:cf8j4??28:07bon:18'542<3fk=6=4+18;9fa=i9021=854ob794?"6100ih6`>99822>=hk=0;6)?69;`g?k7>03;<76al3;29 4?>2kn0b<77:0:8?je5290/=475be9m5<>=9010cn?50;&2=<a:9lg5<72-;257lk;o3:5$0;:>gb5<#9031ni5a18:95a=988a`>h6110:i65`a483>!7>13ho7c?68;3e?>ib83:1(<76:ed8j4??2910cik50;&2=<;:mgg?6=,8326ih4n0;;>7=988gb>h6110876aka;29 4?>2ml0b<77:598ka?=83.:544kf:l2==<232eo47>5$0;:>a`9984?>ic>3:1(<76:ed8j4??2110ci;50;&2=<d=988gb>h6110i76ak1;29 4?>2ml0b<77:b98ka6=83.:544kf:l2==5$0;:>a`998e?>idl3:1(<76:ed8j4??28:07bml:18'542<3fi36=4+18;9`c=i9021=854od594?"6100oj6`>99822>=hm?0;6)?69;fe?k7>03;<76aj5;29 4?>2ml0b<77:0:8?jc3290/=475dg9m5<>=9010ch=50;&2=<a:9la7<72-;257ji;o3:5$0;:>a`5<#9031hk5a18:95a=988gb>h6110:i65`c683>!7>13nm7c?68;3e?>ibl3:1(<76:da8j4??2910chl50;&2=<;:mfe?6=,8326hm4n0;;>7=988fg>h6110876ai2;29 4?>2o;0b<77:198kc6=83.:544i1:l2==<632enj7>5$0;:>c79980?>{e:821<7=50;2x 4gd28?=7E=>0:J1ba=#99k1>?5ffd83>>oan3:17b?:1;29?xd51<0;6>4?:1y'5de=9<<0D>??;I0e`>"68h09>6gie;29?l`a2900c<;>:188yv56k3:189uQ30a894gc2=3012=301:5;897072=301?j>:5;897b72=301?mj:5;897ec2=301?mi:5;897ed2=301?mm:5;897e>2=301?m7:5;897ef2=301?k::5;897c32=301?k<:5;897c52=301?k>:5;897c72=301?ji:5;897bb2=301?jk:5;897bd2=301?k8:43897c02<80q~=lf;2955}Y;jl012ol01??n:gg894e32ol013;;<63>c68245=:9j21==>4=0a:>46734;hm7??0:?2gg<68916=nm5112894cc28::70?ld;334>;5910mi6s|3bf94??2sW98>6P<189]7ae8:\0`7=Y;>n0R>9j;_1b4>X4m>1U?h84^2g6?[5b<2T8i>5Q3d08Z6c63W9n<6Pm7;_1`3>X4k?1U?n;4^2a7?[5d;278=<4ic:?1b6<2?279il4:7:?1b7<2?279j<4:7:?1bg<2?279jl4:7:?170<20279?>4:8:?174<20279>k4:8:?16a<20279>o4:8:?16<<20279>:4:8:?160<20279n<4:8:?1ec<20279mi4:8:?1eg<20279m44:8:?1e2<20279m84:8:?1e6<20279m<4:8:?137<20279;<4:8:?135<20279:k4:8:?12`<20279484:8:?1<1<202794>4:8:?1<7<202794<4:8:?2b3<2027:j84:8:?2b1<2027:j>4:8:?2b7<20279<44:8:?14=<20279<:4:8:?143<20279<84:8:?1a2<3i279i:4;b:?1a2<6i;16>h951`1897c028kj70707070;5m>08<:522d59750<5;o<6>>:;|q0`4<72:qU?i?4=3d0>4?f348nm7?6a:p64?=839pR>99;<02=?7>j27:mk4if:p7`?=83>pR>k6;<0:2?`b34;nh7??0:?1=097;<0:7?7>j2wx=h?50;1xZ64134;nn7?6b:?2ga50;6xZ64234;h?7;7;<3fe?7>j27:on4ie:p5a`=83>pR><;;<3`6?3?34;n57?6b:?2ggj27:ol4ie:p5ab=83>pR><=;<3`4?3?34;n;7?6b:?2g<j27:o54ie:p5ad=83>pR>j27:o;4ie:p5a?=83>pR>?j;<3ag?3?34;n?7?6b:?2g0j27:o94ie:p73d=838pR>;m;<0f3?ec3ty8:44?:3y]70g<5;o<6nm4}r15;5m>0hm6s|37494?4|V:?<70<0;6?uQ344897c02j20q~=84;296~X4>:16>h95e69~w6142909wS=92:?1a22wx?:<50;0xZ606348n;7k:;|q034<72;qU?;>4=3g4>`252z\01c=::l=1i>5rs24e>5<5sW9>i63=e68f6>{t;?o1<77}Y;vP<549>6`1=l;1v>8;:181[52<279i:4l7:p71g=838pR>=n;<0f3?3a3ty8854?:3y]76?<5;o<68k4}r173?6=:rT8?5522d591a=z{:>=6=4={_103>;5m>0>o6s|35794?4|V:9=70h95789~w6352909wS=;1:?1a2<002wx?8?50;0xZ627348n;798;|q015<72;qU?>h4=3g4>2052z\07`=::l=1;85rs26f>5<5sW98h63=e6840>{t;=n1<77}Y;:h01?k8:7d8yv53j3:1>vP<359>6`1=>=1v>:<:181[54;279i:4:9:p50c=833p1>?=:0;5?844?3?;70<=5;73?84e;3?;7005<58o968=4=0g0>05<58o?68=4=0g6>05<58o=68=4=0g4>05<58o368=4=0g:>05<58oj68=4=0ga>05<5;;26<7n;<022?7>i279j?4>9c9>603==:16>8:5529>604==:16>8?5529>605==:16>8>5529>61`==:16>9j5529>61e=90k01?:j:418970>2<901?87:41897002<901?89:41897022<901?8;:41897042<901?8=:41897062<901?8?:418yv7fm3:1>v3>ae863>;6io0:595rs0`3>5<60r7:no4:0:?2g`<28279984;e:?111<3m2799?4;e:?114<3m2799>4;e:?115<3m2798k4;e:?10a<3m2798n4;e:?10`<3m279:44;e:?12=<3m279::4;e:?123<3m279:84;e:?121<3m279:>4;e:?127<3m279:<4;e:?125<3m279594>019>64g=90>0q~?l4;297~;6jk0:m9521bg9506<58i?6<7;;|q2fg<72:q6=ol5186894dd2<:01v3>cd82=1=:9l819:5rs0a6>5<4s4;io7?n4:?2gc<6=916=n;51868yv7ek3:1?v3>bb82=1=:9kn19=521e2915=z{8h86=4={<3`b?7><27:i>4:7:p5f0=839p1<63>c782=1=z{8ho6=4<{<3a`?7><27:nh4:0:?2`4<282wx=o:50;0x94b7283?70?j4;74?xu6k>0;6>u21cg95d2<58n:6<;?;<3`3?7><2wx=ok50;1x94db283?70?mf;73?87c:3?;7p}>b483>7}:9m;1=4:4=0g6>0153z?2fc<6i=16=i<5142894e?283?7p}>bg83>6}:9kl1=4:4=0a3>06<58n868>4}r3a2?6=:r7:h?4>959>5`0==>1vd28215=:9j31=4:4}r3`4?6=;r7:o=4>959>5f7==916=i:5519~w4d02909w0?k3;3:0>;6m>0>;6s|1bc94?5|58i:6959~w4e62908w0?l1;3:0>;6k;0><63>d4864>{t9k21<74?334;n47;8;|q2gg<72:q6=n<51`6894b228?;70?lb;3:0>{t9j81<7=t=0a1>4?334;h?7;?;<3g2?373ty:n44?:3y>5a3=90>01c282e1=:9m<1=8>4=0a`>4?33ty:o>4?:3y>5f5=90>01v3>d782=1=:9lk19:5rs0ag>5<5s4;o;7?:0:?2ga<61=1vec863>{t9li1<7lt=0g1>1c<58o869k4=0g7>1c<58o>69k4=0g5>1c<58o<69k4=0g;>1c<58o269k4=0gb>1c<58oi69k4=0gg>4?33ty9=:4?:2y>64?==>16><85569>641=90>0q~<>6;29b~;59?0:5o522d;9b`=::8=1jk5220c9bc=:9j>1==>4=0a6>c`<58i=6kh4=0a4>c`<58i36kh4=0a:>c`<58ij6kh4=0aa>c`<58ih6kh4=0gg>cc<58io6kh4}r0e9c9~w7?32908w0<62;74?84>;3?<70<64;3:0>{t:081<7:t=3;1>4?e3482:7hi;<0:0?`a34;nh7hi;|q1ag<72:q6>hm5569>6`d=90h01?kn:5g8yv4bk3:1>v3=eb82=g=::lo1jk5rs3d7>5<4s48m97;8;<0e7?2b348m87?6b:p6c3=838p1?h::0;a?84a?3lm7p}=e`83>6}::lh19:522dc954>9c9>6c2==>16>k95fd9~w7cc2908w0;5n80:5l522dg95<253z?1b4<61k16>h75112897c028ki7p}=f783>6}::oh1=4o4=3db>4?f348m;7?64:p6c?=83;>w0;5l80>?63=d1867>;5kl0>?63=ce867>;5ko0>?63=cb867>;5kk0>?63=c8867>;5k10:5l522bc916=::l?19>522d6916=::l919>522d0916=::l;19>522d2916=::ml19>522eg916=::mn19>522ea916=z{;8?6=4={<061?30348?<7?64:p61d=83>p1?;::0;a?84113?<70<>3;df?84393ln7p}=2283>7}::<>19:5222d95<254z?111<61k16>;65569>645=99:01?=9:gg8yv4593:1>v3=53863>;5;m0:595rs36;>5<3s48>>7?6b:?123<2?279=?4>019>664=nl1v?{t:==1<7:t=372>4?e348=97;8;<025?`b3488<7hj;|q167<72;q6>8=5569>66c=90>0q~<;9;290~;5=:0:5o52275912=::881jh522269b`=z{;;m6=4={<064?303488n7?64:p610=83>p1?;?:0;a?841<3?<70<>1;334>;5:l0mi6s|20g94?4|5;>m6894=31b>4?33ty9884?:5y>61`=90h01?8<:45897772oo01?v3=4e863>;5;10:595rs360>5<3s48?h7?6b:?124<2?2794673489:7hj;|q15a<72;q6>9k5569>66?=90>0q~<;4;290~;54=30b>cc52z?105<28279?84>959~w7262909w0<;0;364>;5<80:595rs310>5<4s488j7;?;<001?373488?7?64:p660=839p1?=i:073?844=3;j863=3782=1=z{;9:6=4<{<00a?373488?7;?;<005?7><2wx>>:50;1x975b28?;70<<3;3b0>;5;=0:595rs30e>5<4s488h7;?;<005?373489j7?64:p664=839p1?=k:073?84493;j863=3382=1=z{;8o6=4<{<00g?373489j7;?;<01`?7><2wx>>>50;1x975d28?;70<=f;3b0>;5;90:595rs30a>5<4s488n7;?;<01`?373489n7?64:p67c=839p1?=m:073?845l3;j863=2d82=1=z{;826=4<{<00e?373489n7;?;<01=?7><2wx>?m50;1x975f28?;70<=b;3b0>;5:j0:595rs304>5<4s48857;?;<01=?373489;7?64:p67g=839p1?=6:073?84513;j863=2`82=1=z{;8>6=4<{<00<2wx>?650;1x975?28?;70<=7;3b0>;5:10:595rs305>5<4s488;7?:0:?160<6i=16>?851868yv42n3:19v3=6882=g=::1l1jh5226a9b`=::9:1jh522d597<=z{;?n6=4:{<05j2794k4>019>62e=99:01?>?:023?84b?3937p}=5e83>0}::?=1=4l4=3:f>cc<5;=i6kk4=0de>cc<5;o<6>94}r06g?6==r79:;4>9c9>6=c=99:01?9m:023?87an3;;<63=e6802>{t:4?e3483h7hj;<04e?`b34;mi7hj;<0f3?233ty99l4?:4y>632=90h01?6k:023?840i3;;<63>fd8245=::l=18>5rs37:>5<2s48=?7?6b:?1=83?p1?8=:0;a?84?k3;;<63=788245=:9on1==>4=3g4>17;7>55z?124<61k16>5l5fd9>62>=nl16=km5fd9>6`1=<91v?;9:18684183;2n63=8c8245=::>21==>4=0d`>467348n;7=i;|q1a3<728hp1?j>:5g897b72=o01?mj:5g897ec2=o01?mi:5g897ed2=o01?mm:5g897e>2=o01?m7:5g897ef2=o01?k::5g897c32=o01?k<:5g897c52=o01?k>:5g897c72=o01?ji:5g897bb2=o01?jk:5g897bd2=o01?79:0;7?846?3;;<63=e68e7>;5m>08<9522d59754<5;o<6>>>;<0f3?5782wx>l>50;0x97b62<=01?ll:0;7?xu5k>0;69u22e3956894=3:e>c`<5;ho6kk4}r0:b?6=:r79h=4:7:?1fg<61=1v?m9:18784c83;2n63=e5863>;50o0:<<522c09b`=z{;3o6=4={<0`a?30348i57?64:p6f2=83>p1?mj:0;a?84b:3?<70<7e;335>;5il0mi6s|28a94?4|5;io6894=3`;>4?33ty9o>4?:5y>6fb=90h01?k>:45897>c2ol01?ol:gg8yv4>m3:1>v3=cg863>;5jh0:595rs3a6>5<3s48hj7?6b:?1a6<2?2794h4if:?1f54l50;0x97ed2<=01?l8:0;7?xu5k;0;69u22ba95466348jm7hj;|q1=d<72;q6>nl5569>6g0=90>0q~p1?m6:0;a?84cl3?<70<7b;de?84f<3ln7p}=9683>7}::j219:522c195<254z?1g=<61k16>im5569>6=d=99;01?o=:gg8yv4>13:1>v3=c`863>;5j<0:595rs3a3>5<3s48hm7?6b:?1``<2?2794n4>009>6d0=nl1v?l>:18184ek3?;70{t:kn1<7437348ih7?64:p6d`=839p1?lm:42897d62<:01?oi:0;7?xu5j;0;6>u22c`9506<5;h:6<2wx>lj50;1x97df2<:01?oi:42897gc283?7p}=b183>6}::kk1=8>4=3ce>4g3348i<7?64:p6dd=839p1?l6:42897gc2<:01?om:0;7?xu5il0;6>u22c;9506<5;ko6<2wx>l750;1x97d?2<:01?om:42897g>283?7p}=ab83>6}::k21=8>4=3ca>4g3348jo7?64:p6d1=839p1?l8:42897g>2<:01?o8:0;7?xu5ih0;6>u22c59506<5;k26<2wx>l;50;1x97d12<:01?o8:42897g2283?7p}=a983>6}::k<1=8>4=3c4>4g3348j47?64:p6d5=839p1?l::42897g22<:01?o<:0;7?xu5i?0;6>u22c79506<5;k>6<2wx>l?50;1x97d32<:01?o<:42897g6283?7p}=a583>6}::k>1=8>4=3c0>4g3348j87?64:p6d4=839p1?l<:073?84f93;j863=a382=1=z{;ni6=4:{<0f1?7>j279=>4if:?13fio50;7x97c3283i70<>3;335>;5?j0:<<522129557<5;o<6?64}r0g=?6==r79i>4>9c9>644=no16>:l5fg9>5c`=no16>h95269~w7b?290>w0;59;0:<<5226`9557<58lm6<>>;<0f3?413ty9h:4?:4y>6`7=90h01??>:gd8971f2ol010q~>;<3ea?779279i:4<3:p6a3=83?p1?ji:0;a?84683lm70<89;de?87al3lm70>;<04=?77927:ji4>009>6`1=;81v?j<:18684cl3;2n63=0g8eb>;5?10mj63>fb8eb>;5m>08<6s|2e094?3|5;nh6<7m;<03b?779279;54>009>5ce=99;01?k8:3d8yv41l3:1>v3=73864>;5?80:595rs354>5<5s48<>7?n4:?13f<61=1v?7?:181840:3;2863=958ea>{t:?i1<706<5;=;6<7;;|q133<72;q6>:?51`68971e283?7p}=6c83>7}::>:19=5227d95<252z?135<6i=16>:o51868yv41i3:1>v3=6g864>;5>l0:595rs357>5<5s48=j7?n4:?13<<61=1v?9<:181841m3;j863=7982=1=z{;2;6=4={<0;1?37348387?64:p6=g=838p1?6::0c7?84?n3;286s|28394?4|5;2>6<7;;<0:1?`a3ty9;k4?:3y>6=2==916>5=51868yv4?13:1>v3=8582e1=::1o1=4:4}r04a?6=:r794>4:0:?1<7<61=1v?67:18184?;3;j863=8e82=1=z{;=o6=4={<0;6?373483=7?64:p6=1=838p1?6=:0c7?84?k3;286s|29494?4|5;2:6<2wx=k?50;0x94`12<:01<63>f582=1=z{8lj6=4={<3e1?7f<27:jk4>959~w4ca2909w0?i4;73?87a;3;286s|1g;94?4|58l?6<2wx=hk50;0x94`42<:017}::9319=5221:95<252z?14<<6i=16><=51868yv46=3:1>v3=0882=1=::821jk5rs320>5<5s48;47;?;<033?7><2wx>=j50;0x976?28k?70<>2;3:0>{t:981<706<5;:=6<7;;|q14f<72;q6>=951`689776283?7p}=0083>7}::9<19=5221795<252z?143<6i=16><>51868yv47i3:1>v3=0482e1=::9l1=4:4}r0f959>6`1=n=1v<;k:181846?3;;=63=198214=z{8=o6=4={<0:0?779279584>509~yv56k3:1>vP<1b9>02<49j1/>km51958yv5c93:1>vP02<4l81/>km519:8yv53i3:1>vP<3`9>02<4;h1/>km517:8yv5303:1>vP<389>02<4;01/>km517d8yv53?3:1>vP<399>02<4;11/>km51648yv53>3:1>vP<369>02<4;>1/>km51658yv53=3:1>vP<379>02<4;?1/>km516:8yv53<3:1>vP<349>02<4;<1/>km516;8yv52;3:1>vP<439>02<4<;1/>km516c8yv52:3:1>vP<409>02<4<81/>km516`8yv5293:1>vP<419>02<4<91/>km516a8yv5283:1>vP<3g9>02<4;o1/>km516g8yv53n3:1>vP<3d9>02<4;l1/>km516d8yv53m3:1>vP<3e9>02<4;m1/>km51928yv53l3:1>vP<3b9>02<4;j1/>km51938yv53k3:1>vP<3c9>02<4;k1/>km51908yv53j3:1>vP<359>02<4;=1/>km51918yv53;3:1>vP<329>02<4;:1/>km51968yv5b13:1>vP02<4m01/>km51978yv5dn3:1>vP02<4ko1/>km51948yv51j3:1>vP<5c9>02<4=k1/>km519;8yv5113:1>vP<5`9>02<4=h1/>km519c8yv5103:1>vP<589>02<4=01/>km519`8yv51?3:1>vP<599>02<4=11/>km519a8yv51>3:1>vP<569>02<4=>1/>km519f8yv51=3:1>vP<579>02<4=?1/>km519g8yv50<3:1>vP<629>02<4>:1/>km519d8yv50;3:1>vP<639>02<4>;1/>km51828yv50:3:1>vP<609>02<4>81/>km514d8yv5093:1>vP<619>02<4>91/>km51728yv5083:1>vP<5g9>02<4=o1/>km51738yv51n3:1>vP<5d9>02<4=l1/>km51708yv51m3:1>vP<5e9>02<4=m1/>km51718yv51l3:1>vP<5b9>02<4=j1/>km51768yv51k3:1>vP<549>02<4=<1/>km51778yv51<3:1>vP<559>02<4==1/>km51748yv5003:1>vP<799>02<4?11/>km51758yv50>3:1>vP<779>02<4??1/>km517;8yv5c?3:1>vP02<4l>1/>km517c8yv5493:1>vP<279>02<4:?1/>km517`8yv55n3:1>vP<249>02<4:<1/>km517a8yv55m3:1>vP<259>02<4:=1/>km517f8yv55l3:1>vP<229>02<4::1/>km517g8yv55k3:1>vP<239>02<4:;1/>km51628yv55j3:1>vP<209>02<4:81/>km51638yv55i3:1>vP<219>02<4:91/>km51608yv5513:1>vP<1g9>02<49o1/>km51618yv5503:1>vP<1d9>02<49l1/>km51668yv55?3:1>vP<1e9>02<49m1/>km51678yxh1?l0;6?uG2gf8yk00n3:1>vF=fe9~j3>72909wEkj4}o4;7?6=:rB9ji5rn7:7>5<5sA8mh6sa69794?4|@;lo7p`98783>7}O:on0qc877;296~N5nm1vb;67:181M4al2we:5750;0xL7`c3td=4l4?:3yK6cb52zJ1ba=zf?2h6=4={I0e`>{i>1n1<7vF=fe9~j3?72909wEkj4}o4:7?6=:rB9ji5rn7;7>5<5sA8mh6sa68794?4|@;lo7p`99783>7}O:on0qc867;296~N5nm1vb;77:181M4al2we:4750;0xL7`c3td=5l4?:3yK6cb52zJ1ba=zf?3h6=4={I0e`>{i>0n1<7n3:1>vF=fe9~j3g72909wEkj4}o4b7?6=:rB9ji5rn7c7>5<5sA8mh6sa6`794?4|@;lo7p`9a783>7}O:on0qc8n7;296~N5nm1vb;o7:181M4al2we:l750;0xL7`c3td=ml4?:3yK6cb52zJ1ba=zf?kh6=4={I0e`>{i>hn1<7kj4}o7`6?6=9rB9ji5rn4a0>5<6sA8mh6sa5b694?7|@;lo7p`:c483>4}O:on0qc;l6;295~N5nm1vb8m8:182M4al2we9n650;3xL7`c3td>o44?:0yK6cb51zJ1ba=zf{I0e`>{i=ji1<7?tH3dg?xh2km0;6kj4}o7g6?6=9rB9ji5rn4f0>5<6sA8mh6sa5e694?7|@;lo7p`:d483>4}O:on0qc;k6;295~N5nm1vb8j8:182M4al2we9i650;3xL7`c3td>h44?:0yK6cb51zJ1ba=zf{I0e`>{i=mi1<7?tH3dg?xh2lm0;6kj4}o7f6?6=9rB9ji5rn4g0>5<6sA8mh6sa5d694?7|@;lo7p`:e483>4}O:on0qc;j6;295~N5nm1vb8k8:182M4al2we9h650;3xL7`c3td>i44?:0yK6cb51zJ1ba=zf{I0e`>{i=li1<7?tH3dg?xh2mm0;6kj4}o7e6?6=9rB9ji5rn4d0>5<6sA8mh6sa5g694?7|@;lo7p`:f483>4}O:on0qc;i6;295~N5nm1vb8h8:182M4al2we9k650;3xL7`c3td>j44?:0yK6cb51zJ1ba=zf{I0e`>{i=oi1<7?tH3dg?xh2nm0;6kj4}o436?6=9rB9ji5rn720>5<6sA8mh6sa61694?7|@;lo7p`90483>4}O:on0qc8?6;295~N5nm1vb;>8:182M4al2we:=650;3xL7`c3td=<44?:0yK6cb51zJ1ba=zf?:i6=4>{I0e`>{i>9i1<7?tH3dg?xh18m0;6kj4}o426?6=9rB9ji5rn730>5<6sA8mh6sa60694?7|@;lo7p`91483>4}O:on0qc8>6;295~N5nm1vb;?8:182M4al2we:<650;3xL7`c3td==44?:0yK6cb51zJ1ba=zf?;i6=4>{I0e`>{i>8i1<7?tH3dg?xh19m0;6kj4}o416?6=9rB9ji5rn700>5<6sA8mh6sa63694?7|@;lo7p`92483>4}O:on0qc8=6;295~N5nm1vb;<8:182M4al2we:?650;3xL7`c3td=>44?:0yK6cb51zJ1ba=zf?8i6=4>{I0e`>{i>;i1<7?tH3dg?xh1:m0;6kj4}o406?6=9rB9ji5rn710>5<6sA8mh6sa62694?7|@;lo7p`93483>4}O:on0qc8<6;295~N5nm1vb;=8:182M4al2we:>650;3xL7`c3td=?44?:0yK6cb51zJ1ba=zf?9i6=4>{I0e`>{i>:i1<7?tH3dg?xh1;m0;6kj4}o476?6=9rB9ji5rn760>5<6sA8mh6sa65694?7|@;lo7p`94483>4}O:on0qc8;6;295~N5nm1vb;:8:182M4al2we:9650;3xL7`c3td=844?:0yK6cb51zJ1ba=zf?>i6=4>{I0e`>{i>=i1<7?tH3dg?xh1kj4}o466?6=9rB9ji5rn770>5<6sA8mh6sa64694?7|@;lo7p`95483>4}O:on0qc8:6;295~N5nm1vb;;8:182M4al2we:8650;3xL7`c3td=944?:0yK6cbm7>51zJ1ba=zf??i6=4>{I0e`>{i>kj4}o456?6=9rB9ji5rn740>5<6sA8mh6sa67694?7|@;lo7p`96483>4}O:on0qc896;295~N5nm1vb;88:182M4al2we:;650;3xL7`c3td=:44?:0yK6cb51zJ1ba=zf?{I0e`>{i>?i1<7?tH3dg?xh1>m0;6kj4}o446?6=9rB9ji5rn750>5<6sA8mh6sa66694?7|@;lo7p`97483>4}O:on0qc886;295~N5nm1vb;98:182M4al2we::650;3xL7`c3td=;44?:0yK6cb51zJ1ba=zf?=i6=4>{I0e`>{i>>i1<7?tH3dg?xh1?m0;65deg:720fuIJIw=sO@Qy~DE \ No newline at end of file diff --git a/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.vhd b/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.vhd new file mode 100644 index 0000000..2b8d5bc --- /dev/null +++ b/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.vhd @@ -0,0 +1,155 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used -- +-- solely for design, simulation, implementation and creation of -- +-- design files limited to Xilinx devices or technologies. Use -- +-- with non-Xilinx devices or technologies is expressly prohibited -- +-- and immediately terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" -- +-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR -- +-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION -- +-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION -- +-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS -- +-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, -- +-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE -- +-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY -- +-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -- +-- FOR A PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support -- +-- appliances, devices, or systems. Use in such applications are -- +-- expressly prohibited. -- +-- -- +-- (c) Copyright 1995-2009 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file virtex4_fifo_16x1024.vhd when simulating +-- the core, virtex4_fifo_16x1024. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +Library XilinxCoreLib; +-- synthesis translate_on +ENTITY virtex4_fifo_16x1024 IS + port ( + clk: IN std_logic; + rst: IN std_logic; + din: IN std_logic_VECTOR(15 downto 0); + wr_en: IN std_logic; + rd_en: IN std_logic; + dout: OUT std_logic_VECTOR(15 downto 0); + full: OUT std_logic; + empty: OUT std_logic; + valid: OUT std_logic; + data_count: OUT std_logic_VECTOR(9 downto 0)); +END virtex4_fifo_16x1024; + +ARCHITECTURE virtex4_fifo_16x1024_a OF virtex4_fifo_16x1024 IS +-- synthesis translate_off +component wrapped_virtex4_fifo_16x1024 + port ( + clk: IN std_logic; + rst: IN std_logic; + din: IN std_logic_VECTOR(15 downto 0); + wr_en: IN std_logic; + rd_en: IN std_logic; + dout: OUT std_logic_VECTOR(15 downto 0); + full: OUT std_logic; + empty: OUT std_logic; + valid: OUT std_logic; + data_count: OUT std_logic_VECTOR(9 downto 0)); +end component; + +-- Configuration specification + for all : wrapped_virtex4_fifo_16x1024 use entity XilinxCoreLib.fifo_generator_v6_2(behavioral) + generic map( + c_has_int_clk => 0, + c_wr_response_latency => 1, + c_rd_freq => 1, + c_has_srst => 0, + c_enable_rst_sync => 1, + c_has_rd_data_count => 0, + c_din_width => 16, + c_has_wr_data_count => 0, + c_full_flags_rst_val => 0, + c_implementation_type => 0, + c_family => "virtex4", + c_use_embedded_reg => 0, + c_has_wr_rst => 0, + c_wr_freq => 1, + c_use_dout_rst => 1, + c_underflow_low => 0, + c_has_meminit_file => 0, + c_has_overflow => 0, + c_preload_latency => 1, + c_dout_width => 16, + c_msgon_val => 1, + c_rd_depth => 1024, + c_default_value => "BlankString", + c_mif_file_name => "BlankString", + c_error_injection_type => 0, + c_has_underflow => 0, + c_has_rd_rst => 0, + c_has_almost_full => 0, + c_has_rst => 1, + c_data_count_width => 10, + c_has_wr_ack => 0, + c_use_ecc => 0, + c_wr_ack_low => 0, + c_common_clock => 1, + c_rd_pntr_width => 10, + c_use_fwft_data_count => 0, + c_has_almost_empty => 0, + c_rd_data_count_width => 10, + c_enable_rlocs => 0, + c_wr_pntr_width => 10, + c_overflow_low => 0, + c_prog_empty_type => 0, + c_optimization_mode => 0, + c_wr_data_count_width => 10, + c_preload_regs => 0, + c_dout_rst_val => "0", + c_has_data_count => 1, + c_prog_full_thresh_negate_val => 1021, + c_wr_depth => 1024, + c_prog_empty_thresh_negate_val => 3, + c_prog_empty_thresh_assert_val => 2, + c_has_valid => 1, + c_init_wr_pntr_val => 0, + c_prog_full_thresh_assert_val => 1022, + c_use_fifo16_flags => 0, + c_has_backup => 0, + c_valid_low => 0, + c_prim_fifo_type => "1kx18", + c_count_type => 0, + c_prog_full_type => 0, + c_memory_type => 1); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_virtex4_fifo_16x1024 + port map ( + clk => clk, + rst => rst, + din => din, + wr_en => wr_en, + rd_en => rd_en, + dout => dout, + full => full, + empty => empty, + valid => valid, + data_count => data_count); +-- synthesis translate_on + +END virtex4_fifo_16x1024_a; + diff --git a/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.xco b/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.xco new file mode 100644 index 0000000..ab4fb70 --- /dev/null +++ b/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.xco @@ -0,0 +1,84 @@ +############################################################## +# +# Xilinx Core Generator version 12.3 +# Date: Thu Apr 28 15:37:14 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc4vlx40 +SET devicefamily = virtex4 +SET flowvendor = Foundation_ISE +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ff1148 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -10 +SET verilogsim = true +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT Fifo_Generator family Xilinx,_Inc. 6.2 +# END Select +# BEGIN Parameters +CSET almost_empty_flag=false +CSET almost_full_flag=false +CSET component_name=virtex4_fifo_16x1024 +CSET data_count=true +CSET data_count_width=10 +CSET disable_timing_violations=false +CSET dout_reset_value=0 +CSET empty_threshold_assert_value=2 +CSET empty_threshold_negate_value=3 +CSET enable_ecc=false +CSET enable_int_clk=false +CSET enable_reset_synchronization=true +CSET fifo_implementation=Common_Clock_Block_RAM +CSET full_flags_reset_value=0 +CSET full_threshold_assert_value=1022 +CSET full_threshold_negate_value=1021 +CSET inject_dbit_error=false +CSET inject_sbit_error=false +CSET input_data_width=16 +CSET input_depth=1024 +CSET output_data_width=16 +CSET output_depth=1024 +CSET overflow_flag=false +CSET overflow_sense=Active_High +CSET performance_options=Standard_FIFO +CSET programmable_empty_type=No_Programmable_Empty_Threshold +CSET programmable_full_type=No_Programmable_Full_Threshold +CSET read_clock_frequency=1 +CSET read_data_count=false +CSET read_data_count_width=10 +CSET reset_pin=true +CSET reset_type=Asynchronous_Reset +CSET underflow_flag=false +CSET underflow_sense=Active_High +CSET use_dout_reset=true +CSET use_embedded_registers=false +CSET use_extra_logic=false +CSET valid_flag=true +CSET valid_sense=Active_High +CSET write_acknowledge_flag=false +CSET write_acknowledge_sense=Active_High +CSET write_clock_frequency=1 +CSET write_data_count=false +CSET write_data_count_width=10 +# END Parameters +GENERATE +# CRC: 1af5cd03 diff --git a/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.xise b/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.xise new file mode 100644 index 0000000..c60e567 --- /dev/null +++ b/monitor/fifos/ipcores_v6.2/virtex4_fifo_16x1024.xise @@ -0,0 +1,79 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.ngc b/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.ngc new file mode 100644 index 0000000..4f11146 --- /dev/null +++ b/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$50a40<,[o}e~g`n;"2*726&;$?,)?40893456789:;8=5?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>>;0185+66<2;>6D@_UU8B@ATF48>1<3?;;079MKVR\3KOH_L31583:4=59;18>7GAPTV9@LG;;80;2<<4338JJUSS2MCI0>?50?31?64=AGZ^X7jfn=12>586;2996B[[PTV9@JG;;80;2<=4338LQQVR\3NDN1=>:1<20>552F__\XZ5dnww867=87;:794FNQWW>AOWI591<3?>;58JJUSS2MC[N1=50?33?1}`u:?fg320=+68;1>59595222?=7<1=12<=7>e:;9MKVR\3zycjQjmqvz[qnumzb747>1249:>LHW]]0{~biPelrw}ZrozlycSl}|esv?11e9:>LHW]]0{~biPftno[qnumzb747>1259:>LHW]]0{~biPftno[qnumzbTm~}jru>;>585<231EC^ZT;rqkbYa}efTxe|jsi]mabgsm521<3?7;88LQQVR\3njxlQlotlw8=<768h057AZTQWW>wbXlh~jSnaznu>;>586j231CXZ_UU8tvZbf|hUhcx`{<983:7=>I11JHI\N<1<:?DBCZH6:<374AEFQE976601JHI\N<00==>GCL[K7=>0m;@FGVD:6<3:556OKDSC?518?3HNO^L2>>99B@ATF4;437LJKR@>0:==FLMXJ0907;@FGVD:2611JHI\N<7<;?DBCZH6<255NDEPB8=8?3HNO^L26>99B@ATE49427LJKRC>24;?>89B@ATE488556OKDS@?568e3HNO^O2>4;2==>GCL[H7=907;@FGVG:6611JHI\M<3<;?DBCZK68255NDEPA818?3HNO^O2:>99B@ATE4?437LJKRC>4:==FLMXI0507;@FGVG:>6:1J@A74AR[MGZTBO:1IY?64BTQ\MK@H92Ij7NO\C@FFMKGf3JKXOLJJIO@a?FGTKHNNCXZNb:ABWFGCMF__N?5LE008GMCDCVFBOH@\E^VZT@40OAEN4:AOOG53:2=CAH6:<394DHC?54803MCJ0<<17:FJE9746>1OEL2>4?58@LG;9<4<7IGN<04=3>BNI5;<2:5KI@>2<;117:FJE9466>1OEL2=2?58@LG;::4<7IGN<36=3>BNI58>2:5KI@>12;1:08;EKB87>9?2NBM1<6>79GMD:56>1OEL2<0?;8@LG;;80;2:5KI@>05;069GMG:6;7=0HDL315<4?AOE48?5;6JFB=35:2=CAK6:;394DH@?5=803MCI0<716:FJF979?2NBN169GMG:597=0HDL323<4?AOE4;95;6JFB=07:2=CAK699394DH@?63803MCI0?917:FJF94?6>1OEO2=9?48@LD;:7=0HDL331<:?AOE4:;1<394DH@?74813MCI0>09;EKA81813MCI0809;EKA83813MCI0:09;EKA8=813MCI0408;EKSE969?2NB\L2>>69GMUG;:730HD^N<283:2=CAYK7?394DHRA85803MC[N1?17:FJTG:5601OE]L33;2=3>BNXK682;5KO@>3:2=CGH6:<394DNC?54803MEJ0<<17:FLE9746>1OCL2>4?58@JG;9<4<7IAN<04=3>BHI5;<2:5KO@>2<;117:FLE9466>1OCL2=2?58@JG;::4<7IAN<36=3>BHI58>2:5KO@>12;1:08;EMB87>9?2NDM1<6>79GKD:56>1OCL2<0?;8@JG;;80;2:5KO@>05;0>69GKG:6:7=0HBL312<4?AIE48>5;6J@B=36:2=CGK6::394DN@?52803MEI0<617:FLF97>6?1OCO2>>69GKG:587=0HBL320<4?AIE4;85;6J@B=00:2=CGK698394DN@?60803MEI0?817:FLF9406>1OCO2=8?58@JD;:04=7IAM<3<4?AIE4::556J@B=12>5803MEI0>?16:FLF959>2NDN1:16:FLF939>2NDN1816:FLF919>2NDN1616:FLF9?9?2NDNR\JG69GKUG;87=0HB^N<0<4?AIWI58556J@P@>0>5803ME[M1=17:FLTG:76>1OC]L31?58@JVE4;427IA_B=194;10<;DLB7>CIJ;1M885IAMQF6>@C;2LOO95IDBG0?CBW<2LO\H?4G29DJA4?8:KMMQVX8820ECG[P^21<>OIA]ZT<>64IOKWTZ6302CEEY^P04:8MKOSXV:=46GAIUR\42?97:KMMQY7?>1BBDZP0958MKOSW93<7D@FT^2B3>OIA]U;N:5FNHV\4F11BBDZP1958MKOSW83<7D@FT^3B3>OIA]U:N:5FNHV\5F1F69JJLRX:9=0ECG[_334?LHN\V89;6GAIU]172=NF@^T>994IOKW[7303@DBXR<97:KMMQY5?>1BBDZP2958MKOSW;3<7D@FT^0B3>OIA]U9N:5FNHV\6F11BBDZP3958MKOSW:3<7D@FT^1B3>OIA]U8N:5FNHV\7F1J8;HLJPZ5B?2CEEYQ:4N0270>H68<>0B<>94:L24220818J4733G;:<95A1037?K76:=1E=<=;;O3201=I98??7C?>659M54133G;:495A10;0?K75<2D:>=:4N0020>H6:;>0B<<<4:L261286@>2768J440<2D:>5:4N00:7>H6;=1E=>>;;O3051=I9:8?7C?<359M56233G;84>5A1568J427<2D:8?:4N0600>H6<=>0B<::4:L2032<86@>4968J42>;2D:995A1420?K71;2D:;>5A1918J4?53G887CH5=:1E>;=4N350?K4?;2D95>5A3118J6743G99?6@<329M7157=;O60?K27;2D?=>5A4318J1543G>?>6@:f:LA[GSTX@DT\_A_S69MAQQHZB>0BB@J1:M1?JM63Y>0\L\[a:RJJZDR[@NSn6^FN^@VWKGJM:1[^H?4Q79QEHD6>o1YM@QJXUGMWLIIWHl0^LCPEYVFJVOHFVHj7_KND^DJVVRd3[OJHRYFDUJ\Ef=UMHNT[DJ[H^@5?WC@KLK=7_KHCD@2?V><[H\NHLZN129PMHYDGEFB_DAA_BJFGN0<[F_YOH94SSTBHZG03ZX]MAQM4:QPVD2<[ZXI86ZVPD05?P6(o{l%~k!hl1,q`*au`o$ydk!}al]ueiocWm;9i6[?/fpe*w`(oe:%~i!hrid-vm`(zhgTzlbfd^f2[hs89::>k5Z0.eqb+ta'nf;"j gsje*wna'{kfS{ocie]g5Zkrp9:;=<?j4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|d??j4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|d8?j4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|d9?j4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|d:?j4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|d;?j4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|d4?j4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|d5><4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSnw30?11?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at^az8484:2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYdq585??5Z0.eqb+ta'nf;"j gsqp*bbd&mi$hn!BcnwmpZeh}g~Tot2<>208Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_b{?0;553\:$kh!rg-dh5(ul&my~ hdb,gg*bd'DidyczPcnwmpZe~4<48>6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Uhu181339V4*aun'xm#jb?.sf,cwut&nnh"im db-Ngjsi|VidyczPcx>4:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[iss4948?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Ugyy2>>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_mww8784;2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYk}}682>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSa{{<5<07>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]oqq:26:90Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$Anaznu]`kphsWe0;0<3:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQcuu>4:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[iss4148?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Usc2?>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_ymq8484;2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYg{692>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSua}<2<07>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]{kw:36:90Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$Anaznu]`kphsWqey080<3:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQwos>5:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[}iu4>48?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Usc27>3:8Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,gjsi|5:5>55Z0.eqb+ta'nf;"j gsqp*bbd&mi$hn!lotlw848502_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&idycz32?0;?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+firf}682?64U1-dvc(un&mg<#|k/fppw+ack'nh#im cnwmp929:11^<"i}f/pe+bj7&{n$k}|.ff`*ae(lj%hcx`{<4<1<>S7'nxm"h gm2-va)`zzy%kim!db-gg*eh}g~7:3<7;T2,cw`)zo%l`= }d.eqwv(`lj$oo"jl/bmvjq:06;20Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$ob{at=:=62=R8&myj#|i/fn3*wb(o{yx"jjl.ea,`f)dg|dS=<8;T2,cw`)zo%l`= }d.eqwv(`lj$oo"jl/bmvjqY6:>1^<"i}f/pe+bj7&{n$k}|.ff`*ae(lj%hcx`{_304?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+firf}U8>:5Z0.eqb+ta'nf;"j gsqp*bbd&mi$hn!lotlw[1403\:$kh!rg-dh5(ul&my~ hdb,gg*bd'je~byQ:269V4*aun'xm#jb?.sf,cwut&nnh"im db-`kphsW?8<7X> gsd-vc)`d9$yh"i}sr,d`f(ck&nh#naznu]462=R8&myj#|i/fn3*wb(o{yx"jjl.ea,`f)dg|dS5!re-dvvu)zz~x#n? c`pq}kcs494956[?/fpe*w`(oe:%~i!hrrq-vvrt'j;$ol|}yogw848512_;#j|i.sd,ci6)zm%l~~}!rrvp+f7(khxyuck{<3<1=>S7'nxm"h gm2-va)`zzy%~~z|/b3,gdtuqgo0>0=f:W3+bta&{l$ka>!re-dvvu)zz~x#n? glw{*bk\8T$la< b13d8Q5)`zo$yj"ic0/pg+btt{'xxx~!l1.enq}(`eR;V"jc|.lq1b>S7'nxm"h gm2-va)`zzy%~~z|/b3,chs&ngP>P hmr,nw7`<]9%l~k }f.eo4+tc'nxx#||tr-`5*aj}q$laV=R.fop*hu5n2_;#j|i.sd,ci6)zm%l~~}!rrvp+f7(ods"jcT4\,div(j{;90Y=!hrg,qb*ak8'xo#j||s/pppv)d9&|:0=0=3:W3+bta&{l$ka>!re-dvvu)zz~x#n? v0>2:75<]9%l~k }f.eo4+tc'nxx#||tr-`5*p64;49?6[?/fpe*w`(oe:%~i!hrrq-vvrt'j;$z<2<>318Q5)`zo$yj"ic0/pg+btt{'xxx~!l1.t28185j2_;#j|i.sd,ci6)zm%l~~}!rrvp+f7(~8U;Sl`k012357d<]9%l~k }f.eo4+tc'nxx#||tr-`5*p6W8Ujbi>?0131f>S7'nxm"h gm2-va)`zzy%~~z|/b3,r4Y5Whdo<=>?13`8Q5)`zo$yj"ic0/pg+btt{'xxx~!l1.t2[6Yffm:;<=?=b:W3+bta&{l$ka>!re-dvvu)zz~x#n? v0]7[kis89:;=?74U1-dvc(un&mg<#|k/fppw+tt|z%h>"mnrs{maq:76;30Y=!hrg,qb*ak8'xo#j||s/pppv)d:&ij~waeu>2:7?<]9%l~k }f.eo4+tc'nxx#||tr-`6*efz{seiy2=>3;8Q5)`zo$yj"ic0/pg+btt{'xxx~!l2.abvwim}682?h4U1-dvc(un&mg<#|k/fppw+tt|z%h>"ibuy,di^6Z&ng:"`?=f:W3+bta&{l$ka>!re-dvvu)zz~x#n< glw{*bk\9T$la~ bs3d8Q5)`zo$yj"ic0/pg+btt{'xxx~!l2.enq}(`eR8V"jc|.lq1b>S7'nxm"h gm2-va)`zzy%~~z|/b0,chs&ngP?P hmr,nw7`<]9%l~k }f.eo4+tc'nxx#||tr-`6*aj}q$laV:R.fop*hu5;2_;#j|i.sd,ci6)zm%l~~}!rrvp+f4(~86;2?=4U1-dvc(un&mg<#|k/fppw+tt|z%h>"x><0<17>S7'nxm"h gm2-va)`zzy%~~z|/b0,r4:56;90Y=!hrg,qb*ak8'xo#j||s/pppv)d:&|:0>0=3:W3+bta&{l$ka>!re-dvvu)zz~x#n< v0>7:7d<]9%l~k }f.eo4+tc'nxx#||tr-`6*p6W9Ujbi>?0131f>S7'nxm"h gm2-va)`zzy%~~z|/b0,r4Y6Whdo<=>?13`8Q5)`zo$yj"ic0/pg+btt{'xxx~!l2.t2[7Yffm:;<=?=b:W3+bta&{l$ka>!re-dvvu)zz~x#n< v0]0[dhc89:;=?l4U1-dvc(un&mg<#|k/fppw+tt|z%h>"x>_5]mkq6789;9<6[?/fpe*w`(oe:%~i!hrrq-vvrt'jef|=?4U1-dvc(un&mg<#|k/fppw+tt|z%ym`Qjmqvz[cdXaVg~t=>?0278Q5)`zo$yj"ic0/pg+btt{'xxx~!}al]fiur~WohTeRczx1234ZUP8;<0Y=!hrg,qb*ak8'xo#j||s/pppv)uidUna}zv_h3g?P6(o{l%~k!hl1,q`*tfeVxoSh`Pi000?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphs:=1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~by?=4:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmp7433\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|d??:4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov761=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}?986[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at707?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphs?;>0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|Vidycz7289V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5:5>n5Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]`}969W{~956[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az8485k2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRmv<0<\vq4>3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw32?0`?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs7>3Q}t3;8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp682?m4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\g|:46Vx>45Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]`}929:j1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQly=6=[wr512_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRmv<4<1g>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vir080Pru0:?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs7:37Uyx?74U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\g|:06;i0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPcx>4:Zts:h1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQwos>3:7g<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Ttb|31?0b?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWqey0?0=a:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZ~hz595>l5Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]{kw:36;k0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPxnp?1;4f3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSua}<7<1e>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vrd~1912`9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYg{632?j4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\|jt;07Uyxf:W3+bta&{l$ka>!re-qtkru'je~by2>>0d8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<3<2b>S7'nxm"h gm2-va)uxg~y#naznu>0:4`<]9%l~k }f.eo4+tc'{zex!lotlw8186n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:268l0Y=!hrg,qb*ak8'xo#~ats-`kphs4?4:j6[?/fpe*w`(oe:%~i!}povq+firf}6<2e:W3+bta&{l$ka>!re-qtkru'je~byQ?1d9V4*aun'xm#jb?.sf,vuhsz&idyczP10g8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_33f?P6(o{l%~k!hl1,q`*twf}x$ob{at^12a>S7'nxm"h gm2-va)uxg~y#naznu]75`=R8&myj#|i/fn3*wb(zyd~"m`uov\14c<]9%l~k }f.eo4+tc'{zex!lotlw[37b3\:$kh!rg-dh5(ul&x{by| cnwmpZ16m2_;#j|i.sd,ci6)zm%y|cz}/bmvjqY?:;1^<"i}f/pe+bj7&{n$~}`{r.alqkrXl86;2?<4U1-dvc(un&mg<#|k/srmpw)dg|dSi?31?01?P6(o{l%~k!hl1,q`*twf}x$ob{at^f28785:2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9595>?5Z0.eqb+ta'nf;"j rqlwv*eh}g~Th<2;>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?1;453\:$kh!rg-dh5(ul&x{by| cnwmpZb64?49>6[?/fpe*w`(oe:%~i!}povq+firf}Uo=191239V4*aun'xm#jb?.sf,vuhsz&idyczPd0>;:77<]9%l~k }f.eo4+tc'{zex!lotlw[a7X8;;0Y=!hrg,qb*ak8'xo#~ats-`kphsWm;T=??4U1-dvc(un&mg<#|k/srmpw)dg|dSi?P2338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\777<]9%l~k }f.eo4+tc'{zex!lotlw[a7X<;;0Y=!hrg,qb*ak8'xo#~ats-`kphsWm;T9??4U1-dvc(un&mg<#|k/srmpw)dg|dSi?P6338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\377<]9%l~k }f.eo4+tc'{zex!lotlw[a7X0;30Y=!hrg,qb*ak8'}y#jy|s/uppv)d8&ij~waeu>3:7?<]9%l~k }f.eo4+qu'n}x#y|tr-`4*efz{seiy2>>3;8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l0.abvwim}692?74U1-dvc(un&mg<#y}/fupw+qt|z%h<"mnrs{maq:46;l0Y=!hrg,qb*ak8'}y#jy|s/uppv)d8&mfyu hmZ2^*bk6&d;9j6[?/fpe*w`(oe:%{!hwrq-svrt'j:$k`{w.foX5X(`ez$f?h4U1-dvc(un&mg<#y}/fupw+qt|z%h<"ibuy,di^4Z&ngx"`}=f:W3+bta&{l$ka>!ws-dsvu)z~x#n> glw{*bk\;T$la~ bs3d8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l0.enq}(`eR>V"jc|.lq17>S7'nxm"h gm2-sw)`zy%{~z|/b2,r4:76;90Y=!hrg,qb*ak8'}y#jy|s/uppv)d8&|:0<0=3:W3+bta&{l$ka>!ws-dsvu)z~x#n> v0>1:75<]9%l~k }f.eo4+qu'n}x#y|tr-`4*p64:49?6[?/fpe*w`(oe:%{!hwrq-svrt'j:$z<2;>3`8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l0.t2[5Yffm:;<=?=b:W3+bta&{l$ka>!ws-dsvu)z~x#n> v0]2[dhc89:;=?l4U1-dvc(un&mg<#y}/fupw+qt|z%h<"x>_3]bja6789;9n6[?/fpe*w`(oe:%{!hwrq-svrt'j:$zS7'nxm"h gm2-sw)`zy%{~z|/b3,gdtuqgo0<0=9:W3+bta&{l$ka>!ws-dsvu)z~x#n? c`pq}kcs4;4956[?/fpe*w`(oe:%{!hwrq-svrt'j;$ol|}yogw8685n2_;#j|i.sd,ci6){%l{~}!wrvp+f7(ods"jcT0\,di4(j9;l0Y=!hrg,qb*ak8'}y#jy|s/uppv)d9&mfyu hmZ3^*bkt&dy9j6[?/fpe*w`(oe:%{!hwrq-svrt'j;$k`{w.foX6X(`ez$f?h4U1-dvc(un&mg<#y}/fupw+qt|z%h="ibuy,di^5Z&ngx"`}=f:W3+bta&{l$ka>!ws-dsvu)z~x#n? glw{*bk\<3<17>S7'nxm"h gm2-sw)`zy%{~z|/b3,r4:46;90Y=!hrg,qb*ak8'}y#jy|s/uppv)d9&|:090=b:W3+bta&{l$ka>!ws-dsvu)z~x#n? v0]3[dhc89:;=?l4U1-dvc(un&mg<#y}/fupw+qt|z%h="x>_0]bja6789;9n6[?/fpe*w`(oe:%{!hwrq-svrt'j;$zQnne234575j2_;#j|i.sd,ci6){%l{~}!wrvp+f7(~8U?Sca{0123576<]9%l~k }f.eo4+qu'n}x#y|tr-`khv7:91^<"i}f/pe+bj7&~x$kz}|.vqww*ehey;946[?/fpe*w`(oe:%{!hwrq-svrt'{kfSk{cl^da[l423\:$kh!rg-dh5(pz&m|~ xsuq,vdkXn|fgSd;T2,cw`)zo%l`= xr.etwv(p{}y$~lcPftno[lYj}q:;<=Q\W13g?P6(o{l%~k!hl1,tv*tfeV}ySh`Pi000?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphs:=1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by?=4:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmp7433\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|d??:4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov761=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}?986[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at707?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphs?;>0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|Vidycz7289V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYdq5:5>n5Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]`}969W{~956[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at^az8485k2_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRmv<0<\vq4>3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSnw32?0`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7>3Q}t3;8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp682?m4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\g|:46Vx>45Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]`}929:j1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=6=[wr512_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRmv<4<1g>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vir080Pru0:?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7:37Uyx?74U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\g|:06;i0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPcx>4:Zts:h1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQwos>3:7g<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~Ttb|31?0b?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWqey0?0=a:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZ~hz595>l5Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]{kw:36;k0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPxnp?1;4f3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSua}<7<1e>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1912`9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYg{632?j4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\|jt;07Uyxf:W3+bta&{l$ka>!ws-ttkru'je~by2>>0d8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{<3<2b>S7'nxm"h gm2-sw)pxg~y#naznu>0:4`<]9%l~k }f.eo4+qu'~zex!lotlw8186n2_;#j|i.sd,ci6){%||cz}/bmvjq:268l0Y=!hrg,qb*ak8'}y#z~ats-`kphs4?4:j6[?/fpe*w`(oe:%{!xpovq+firf}6<2e:W3+bta&{l$ka>!ws-ttkru'je~byQ?1d9V4*aun'xm#jb?.vp,suhsz&idyczP10g8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_33f?P6(o{l%~k!hl1,tv*qwf}x$ob{at^12a>S7'nxm"h gm2-sw)pxg~y#naznu]75`=R8&myj#|i/fn3*rt(yd~"m`uov\14c<]9%l~k }f.eo4+qu'~zex!lotlw[37b3\:$kh!rg-dh5(pz&}{by| cnwmpZ16m2_;#j|i.sd,ci6){%||cz}/bmvjqY?:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl86;2?<4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?31?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f28785:2_;#j|i.sd,ci6){%||cz}/bmvjqYc9595>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<2;>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?1;453\:$kh!rg-dh5(pz&}{by| cnwmpZb64?49>6[?/fpe*w`(oe:%{!xpovq+firf}Uo=191239V4*aun'xm#jb?.vp,suhsz&idyczPd0>;:77<]9%l~k }f.eo4+qu'~zex!lotlw[a7X8;;0Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;T=??4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?P2338Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3\777<]9%l~k }f.eo4+qu'~zex!lotlw[a7X<;;0Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;T9??4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?P6338Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3\377<]9%l~k }f.eo4+qu'~zex!lotlw[a7X0;>0Y=!hrg,qb*ak8'}y#z~ats-`kphsWge<=>>779V4*aun'xm#`kb/f`n*bdjo'miajo!nfg`g+djo&hggRcjm^efj`tf|fx$zlbfd/appw)uidfdc}U?]/pbi+t(~=Uecd`ft/pbi*UCX'YBBJBJ_QPJI+UCX8h0Y=!hrg,qb*kbe&~f|R|nm^pg[`h6k2_;#j|i.sd,i`k(|dzT~lcPre]fj47c3\:$kh!rg-qwqdkc&xoS}{_`qqab473\:$kh!rg-qwqdkc&xoS}{_`qqabYc9;:0Y=!hrg,qb*tt|kf`#jPrrv\evtboVn9=n5Z0.eqb+ta'{ynae re]qwqYdgdh:h6[?/fpe*w`(zz~i`f!}d^pppZehek;:i6[?/fpe*w`(zz~i`f!}d^pppZtbo5:5=h5Z0.eqb+ta'{ynae re]qwqYumn6924U1-dvc(un&xxxobd/vp\vvrXizxnkRj>219V4*aun'xm#}{bmi,swYu{}Ujkh_e02g>S7'nxm"h rrvahn)pzVxxxRm`mc3g?P6(o{l%~k!}su`oo*quW{ySnabb03f?P6(o{l%~k!}su`oo*quW{ySkh<1<2a>S7'nxm"h rrvahn)pzVxxxR|jg=3=5a=R8&myj#|i/sqwfim({UyyQ}ef]35a=R8&myj#|i/sqwfim({UyyQ}ef]2e>STM[UJ@DO\c:WPAWYQAZCI@H=4VBA:?SOB_V^R\H84WDC?4;0<_LK7=384WDC?6;><_LK7?7>16:UFE959>2]NN1>16:UFF979>2]NN1<18:UFF95=87<0[HL33?a8SWOSMVGDHHQNc:UQMQCXEFNNSOj4WSKWAZQNL]BTMi5XRHVF[ROC\AUI=i5WIMKM\(^CJ):%=-][UC"3*4&F[JCB96V@RB[5?]USD@H<7U][_FLG3>^T\V\HOo5W_BMQAZOINF<0TilPIed8\anXX{cfZh||inl24>^ceVGjfb|Yesqjkk773QnfS@gaosTfvvohfj1j``a|t^gntqe3hffc~zPftno2>dfkb{h6lncjws[hguclx87nbdd:fbpdYdg|d$='k;ecweZeh}g~#=$j4d`vb[firf}"9%i5kauc\gjsi|!9"h6jnt`]`kphs =#o7io{a^alqkr/= n0hlzn_bmvjq.1!m1omyoPcnwmp-1.l2njxlQlotlw,=/c3mkmRm`uov?4;b2:a=ci}kTob{at=0=`>bf|hUhcx`{<2e9geqgXkfex181d:fbpdYdg|d0:0i;ecweZeh}g~747>1d:fbpdYdg|d0508;e`jp`tu>2nbb%>&6:fjj-7.?2nbb%??)69gmk.69 =0hd`'13+4?aoi 89";6jfn)37-2=cag":9$94dhl+53/03mce$<9&7:fjj-7?!>1oec&>9(48`lh/: =0hd`'21+4?aoi ;;";6jfn)01-2=cag"9?$94dhl+61/03mce$?;&7:fjj-41!>1oec&=7(58`lh/:1#<7iga(3;*2>bnf!9";6jfn)13-2=cag"8=$84dhl+0,069gmk:6;7=0hd`315<4?aoi48?5;6jfn=35:2=cag6:;394dhl?5=803mce0<716:fjj979?2nbb169gmk:597=0hd`323<4?aoi4;95;6jfn=07:2=cag699394dhl?63803mce0?917:fjj94?6>1oec2=9?48`lh;:7=0hd`331<:?aoi4:;1<394dhl?74813mce0>09;ekm81813mce0809;ekm83813mce0:09;ekm8=813mce0408;emvp-6.?2ndyy&>)99gkpr/99#37iazt)32-==cg|~#=?'7;emvp-74!11ocxz'15+;?air|!;>%55kotv+53/?3me~x%?8)99gkpr/91#37iazt)3:-2=cg|~#>$64dnww,76.02ndyy&=1(:8`jss ;8"46j`uu*17,>bh}}"9;$64dnww,7>.02ndyy&=9(58`jss :#37iazt)13-==cg|~#?<'8;emvp-2.?2ndyy&:)69gkpr/> =0hb{{(6+4?air|!2";6j`uu*:-2=cg|~7<364dnww846902ndyy2>1?:8`jss488546j`uu>27;>bh}}6:;364dnww84>902ndyy2>9?58`jss48437iazt=03:==cg|~7><07;emvp945611ocxz322<;?air|58?255kotv?608?3me~x1<9>99gkpr;:>437iazt=0;:==cg|~7>408;emvp94902ndyy2<0?c8`jss4:;1<364dnww8679?2ndyy2<>69gkpr;<7=0hb{{<4<4?air|5<5;6j`uu>4:2=cg|~74394dnww8<8?3lnbj?`hd49fiur~:o1mekaPgdlfvdrhzV|=S?"/Xhnjj}&DG[O+Kh`jr`vlv%75&:>0jxbcd:kmn`eslkci|k;hliafrtj`~n~94iov\gim?3gmhnxgcd99lr`tadf}j7}|`g^gntq6<2zycjQjmqvz[qnumzb#<$?;;qplcZcjx}sTxe|jsi*2-42vugnUna}zv_ujqavn/< ;?7}|`g^gntqX|axne&:)068twi`Wlg{xtQ{hsgpl-0.9=1{~biPelrw}Zrozlyc$:'>4:rqkbYbey~rSyf}erj+<,713yxdkRkbpu{\pmtb{a636=0>b:rqkbYbey~rSyf}erj\evubz}";%vugnUna}zv_ujqavnXizyn~y&9)0`8twi`Wlg{xtQ{hsgplZgt{lx$:'>b:rqkbYbey~rSyf}erj\evubz}"3%vugnUna}zv_ujqavnXflmjxh&:)0`8twi`Wlg{xtQ{hsgplZhboh~n$;'>b:rqkbYbey~rSyf}erj\j`af|l"<%5rne\bpjkW}byi~f'1(30?uthoVl~`aQ{hsgpl-4.9:1{~biPftno[qnumzb#?$?<;qplcZ`rdeUdk|h)6*56=wzfmTjxbc_ujqavn/= ;87}|`g^dvhiYs`{oxd%8&129svjaXn|fgSyf}erj+3,743yxdkRhzlm]wlwct`!2"=85rne\bpjkW}byi~f38;2=5d=wzfmTjxbc_ujqavnXizyn~y&?)0c8twi`Wog`Rzgrdqk[dutm{~#=$?n;qplcZ`rdeUdk|h^cpw`ts ;#:m6~}of]eqijX|axneQnsrgqp-5.9h1{~biPftno[qnumzbTm~}jru*7-4ga:rqkbYa}efTxe|jsi]bwvcu|!="=l5rne\bpjkW}byi~fParqfvq.?!8i0|ah_gwohZrozlycSl}|esv?a:rqkbYa}efTxe|jsi]mabgsm!9"=l5rne\bpjkW}byi~fPndebp`.3!8k0|ah_gwohZrozlycSckhaug+1,7f3yxdkRhzlm]wlwct`Vdnklzj(7+2e>vugnUmyabPtipfwmYimnki%9&1`9svjaXn|fgSyf}erj\j`af|l"3%4re]geqgXkfex%=&119q`Zbf|hUhcx`{(5+24>tcWmkmRm`uov+1,773{nThlzn_bmvjq.1!8:0~iQkauc\gjsi|!="==5}d^fbpdYdg|d$5'>0:pg[agsiVidycz30?31?wbXlh~jSnaznu>;>5823{nTic84re]qwq5uu{};m7yc/^ad+sou|lr?Skgio^11|075&gmd86z}ud;8qkbbzofd{85yamkg56=qa{~nt9Qiigm\77~29;9:7{g}tdz7[coagV99t8?=,gkekZabflxjxb|Pv7]1(KIIM%DDBH=jc:tjvqc4)eX`hyTc{k}fmmt95*dWyxn`bok_mcwake~58&hSiazt^uj`qn:;;&hS`}hoo]uei;6$jUyhRjjpuj>144+kVoy~b|PiohfgqohfV~r|h3?,b]kevYrfmoyjaax=1.`[mgtWhffc~zPftno95*dWakxS}{=0.`[agsiVidyczPwhfwl8?+kVbjRy}_`ah95*dW|ynShml=1.`[fijefdToaalk<3/gZquWhi`Saax=1.`[wbXxg~ySzgkti?:(fYr{lUm{kzPd`vb[firf}7; nQgar]bhhit|Vof|yw20-a\vaYci}kTob{at^uj`qn:1%iTc{k}fmmt[iip59&hSz|Ppovq[roc|a72 nQrne\ahvsqV~r|h3?,b]tvZbf|hUhcx`{_vkgpm;>$jU{~hb`ae]qabu:8%iThb{{_sqw[sgk59&hSeo|_ecweZeh}g~6=!mPpsmd[cskdV~c~h}g_ogdeqcX~hf69=7#c^uq[acw|a7>=?"l_qplcZcjx}sTxe|jsi]mabgsmV|j`0=#c^rqkbYbey~rSyf}erj\evubz}U}ma3=,b]kevYqieco1<"l_qplcZ`rdeUdk|h^cpw`tsWkg18??,bmntjhbf}Uem`k2vhpwa}2Xn`ldS>%iT|ah_gwohZr~xl7; nQbelmq}Zr~xl7: p4ws]geqgXkfex%;&119tvZbf|hUhcx`{(7+24>quWmkmRm`uov+3,773~xThlzn_bmvjq.?!880{Qkauc\gjsi|521<3;4ws]fj3=pzVxxxpNOp6ag?EF<8?1J7:51zQ63?5el3?1=>=4>;o115?0<,:;n6>?7;|Q61?5el3?1=>4455lj?h6?;8099P10<4k=0;6<==db7`>7308h1o8<750;395~U2?39ih7;5120gg0e=:<=;;6x[1b594?7=93;;?v]:7;1a`?3=9:8oo8m524533>"4800:995Y30d96~s6=j0:7x?:d;28y!7e?3;=7o:>9;2915<42<:pD>>8;[6:>6}5:3o1n7s+1ba904?<,:;o6>li;n62:<7>5;n11b?6=,8h26>=7;o3a5$0`:>65?3g;i47?4;n11`?6=,8h26>=7;o3a5$0`:>65?3g;i47=4;n11f?6=,8h26>=7;o3a5$0`:>65?3g;i47;4;n11=?6=,8h26>=7;o3a5$0`:>65?3g;i4794;n113?6=,8h26>=7;o3a<3`>957>5;n1`4?6=3f9ii7>5;h112?6=3`>:>7>5;n1:1?6=,8h26>l;;o3a5$0`:>6d33g;i47?4;n1:6?6=,8h26>l;;o3a5$0`:>6d33g;i47=4;n1:4?6=,8h26>l;;o3a5$0`:>6d33g;i47;4;n1;a?6=,8h26>l;;o3a5$0`:>6d33g;i4794;n1;g?6=,8h26>l;;o3a<3f93n7>5$0`:>6d33g;i4774;n1;e?6=,8h26>l;;o3a5$0`:>6d33g;i47l4;n1;3?6=,8h26>l;;o3a5$0`:>6d33g;i47j4;n1;1?6=,8h26>l;;o3a5$0`:>6d33g;i47h4;n1;7?6=,8h26>l;;o3a1:9l7=7=83.:n44=9;10c>6?:18'5g?=;k>0b!7e139i86`>b9821>=h;0h1<7*>b880f1=i9k21=;54o2;b>5<#9k31?o:4n0`;>41<3f9257>5$0`:>6d33g;i47?7;:m0==<72-;i57=m4:l2f=<6121d?4950;&2f<<4j=1e=o651`98k6?1290/=o753c68j4d?28h07b=63;29 4d>2:h?7c?m8;3`?>i4010;6)?m9;1a0>h6j10:h65`36f94?"6j008n95a1c:95`=9<;o3a?7>5$0`:>6143g;i47?4;h165?6=,8h26>9<;o3a<7>5$0`:>6143g;i47=4;h17b?6=,8h26>9<;o3a5$0`:>6143g;i47;4;h17`?6=,8h26>9<;o3a5$0`:>6143g;i4794;h17f?6=,8h26>9<;o3a<3`9?m7>5$0`:>6143g;i4774;h17=?6=,8h26>9<;o3a5$0`:>6143g;i47l4;h172?6=,8h26>9<;o3a5$0`:>6143g;i47j4;h170?6=,8h26>9<;o3a5$0`:>6143g;i47h4;h176?6=,8h26>9<;o3a1:9j716=83.:n44<729m5g>=9;10e>=i:18'5g?=;>90b!7e139b9821>=n;b88036=i9k21=;54i27:>5<#9k31?:=4n0`;>41<3`9>47>5$0`:>6143g;i47?7;:k012<72-;i57=83:l2f=<6121b?8850;&2f<<4?:1e=o651`98m632290/=o753618j4d?28h07d=:2;29 4d>2:=87c?m8;3`?>o4<>0;6)?m9;147>h6j10:h65f32a94?"6j008;>5a1c:95`="6kj0mi6aid;29?xd303:1mo4l0;337~N48>1Q844>6z3g>4e=9l09>7?i:32964<7:>a:&62?26j2.:n<4>b49j7a?=83.:n44=821b?i650;&2f<<4lh1e=o651:9j7a1=83.:n44=:21b?i850;&2f<<4lh1e=o653:9j7a3=83.:n44=<21b?i:50;&2f<<4lh1e=o655:9j7a5=83.:n44=>21b?i<50;&2f<<4lh1e=o657:9j7a7=83.:n44=021b?n<50;9j047=831b8<:50;9l04>=831b?nh50;&2f<<4l91e=o650:9j7fc=83.:n44=921b?nj50;&2f<<4l91e=o652:9j7fe=83.:n44=;21b?nl50;&2f<<4l91e=o654:9j7fg=83.:n44==21b?n750;&2f<<4l91e=o656:9j7f>=83.:n44=?21b?n950;&2f<<4l91e=o658:9j046=831d?n;50;9j7`5=83.:n44=821b?h<50;&2f<<4m=1e=o651:9j7`7=83.:n44=:21b?h>50;&2f<<4m=1e=o653:9j7a`=83.:n44=<21b?ik50;&2f<<4m=1e=o655:9j7ab=83.:n44=>21b?im50;&2f<<4m=1e=o657:9j7ad=83.:n44=021d??=50;9l77`=83.:n44<399m5g>=821d??k50;&2f<<4;11e=o651:9l77b=83.:n44<399m5g>=:21d??m50;&2f<<4;11e=o653:9l77d=83.:n44<399m5g>=<21d??o50;&2f<<4;11e=o655:9l77?=83.:n44<399m5g>=>21d??650;&2f<<4;11e=o657:9l771=83.:n44<399m5g>=021d?h;50;9j07?=831b?hk50;&2f<<4mo1e=o650:9j7`b=83.:n44=921b?hm50;&2f<<4mo1e=o652:9j7`d=83.:n44=;21b?ho50;&2f<<4mo1e=o654:9j7`?=83.:n44==21b?h650;&2f<<4mo1e=o656:9j7`1=83.:n44=?21b?h850;&2f<<4mo1e=o658:9l7f6=831d?ok50;9j04c=831b??;50;9j7c>=83.:n44=821b?k950;&2f<<4n01e=o651:9j7c0=83.:n44=:21b?k;50;&2f<<4n01e=o653:9j7c2=83.:n44=<21b?k=50;&2f<<4n01e=o655:9j7c4=83.:n44=>21b?k?50;&2f<<4n01e=o657:9j7c6=83.:n44=021b8=<50;&2f<<38:1e=o650:9j057=83.:n44;029m5g>=921b8=>50;&2f<<38:1e=o652:9j7c`=83.:n44;029m5g>=;21b?kk50;&2f<<38:1e=o654:9j7cb=83.:n44;029m5g>==21b?km50;&2f<<38:1e=o656:9j7cd=83.:n44;029m5g>=?21b?ko50;&2f<<38:1e=o658:9l774=831b?n=50;9j770=831b8?o50;9l045=831d8=921d?4<50;&2f<<4j=1e=o652:9l7<7=83.:n44=;21d?4>50;&2f<<4j=1e=o654:9l7=`=83.:n44==21d?5k50;&2f<<4j=1e=o656:9l7=b=83.:n44=?21d?5m50;&2f<<4j=1e=o658:9l7=d=83.:n44=121d?5o50;&2f<<4j=1e=o65a:9l7=?=83.:n44=j21d?5950;&2f<<4j=1e=o65c:9l7=0=83.:n44=l21d?5;50;&2f<<4j=1e=o65e:9l7=2=83.:n44=n21d?5=50;&2f<<4j=1e=o651198k6>5290/=o753c68j4d?28;07b=71;29 4d>2:h?7c?m8;31?>i4090;6)?m9;1a0>h6j10:?65`36d94?"6j008n95a1c:951=l;;o3a7:9l7=9110c>77:18'5g?=;k>0b?3:1(!7e139i86`>b982f>=h;091<7*>b880f1=i9k21=n54o2:;>5<#9k31?o:4n0`;>4b<3f95$0`:>6d33g;i47?j;:m03f<72-;i57=m4:l2f=<6n21b?8:50;&2f<<4?:1e=o650:9j705=83.:n44<729m5g>=921b?8?50;&2f<<4?:1e=o652:9j706=83.:n44<729m5g>=;21b?9h50;&2f<<4?:1e=o654:9j71c=83.:n44<729m5g>==21b?9j50;&2f<<4?:1e=o656:9j71e=83.:n44<729m5g>=?21b?9l50;&2f<<4?:1e=o658:9j71g=83.:n44<729m5g>=121b?9750;&2f<<4?:1e=o65a:9j71>=83.:n44<729m5g>=j21b?9850;&2f<<4?:1e=o65c:9j713=83.:n44<729m5g>=l21b?9:50;&2f<<4?:1e=o65e:9j715=83.:n44<729m5g>=n21b?9<50;&2f<<4?:1e=o651198m626290/=o753618j4d?28;07d=;0;29 4d>2:=87c?m8;31?>o4;o0;6)?m9;147>h6j10:?65f32g94?"6j008;>5a1c:951=9<;o3a7:9j70>=83.:n44<729m5g>=9110e>;8:18'5g?=;>90b3:1(!7e139b982f>=n;<81<7*>b88036=i9k21=n54i264>5<#9k31?:=4n0`;>4b<3`98o7>5$0`:>6143g;i47?j;:k07g<72-;i57=83:l2f=<6n21b??:50;9l05b=83.:n44;0g9m5g>=821d8=m50;&2f<<38o1e=o651:9l05d=83.:n44;0g9m5g>=:21d8=o50;&2f<<38o1e=o653:9l05?=83.:n44;0g9m5g>=<21d8=650;&2f<<38o1e=o655:9l051=83.:n44;0g9m5g>=>21d8=850;&2f<<38o1e=o657:9l053=83.:n44;0g9m5g>=021d8?950;&2f<<3:11e=o650:9l070=83.:n44;299m5g>=921d8?;50;&2f<<3:11e=o652:9l072=83.:n44;299m5g>=;21d8?=50;&2f<<3:11e=o654:9l074=83.:n44;299m5g>==21d8??50;&2f<<3:11e=o656:9l076=83.:n44;299m5g>=?21d85;|`05f<7280;6=u+1ba975><@:;j7E=?7:m2f3<722wi=nj50;694?6|,8ih6k74H23b?M57?2.:;h6b>5<1<75f5983>>i6jk0;66sm1ec94?2=83:p(>o213:17d?l4;29?j7e<3:17pl>ec83>6<729q/=nm530;8L67f3A9;;6g:1;29?l7293:17b?m4;29?xd6lk0;694?:1y'5fe=9?n;I133>o293:17d;6:188m4e32900c50z&2gf<4901C?:188k4d32900qo?kc;290?6=8r.:on4>5c9K74g<@::<7d;>:188m0?=831b=n:50;9l5g2=831vn5<7s-;ho7=>9:J05d=O;9=0e8?50;9j507=831d=o:50;9~f4bc290?6=4?{%3`g?72j2B8=l5G3158m07=831b944?::k2g1<722e:n94?::a5`c=8391<7>t$0a`>67>3A9:m6F<069j14<722c:9<4?::m2f1<722wi=ik50;694?6|,8ih6<;m;I12e>N48>1b9<4?::k6=?6=3`;h87>5;n3a0?6=3th:ik4?:283>5}#9ji1?<74H23b?M57?2c>=7>5;h365?6=3f;i87>5;|`2`c<72=0;6=u+1ba950d<@:;j7E=?7:k65?6=3`?26=44i0a7>5<cb805<=O;8k0D>>8;h72>5<5<54;294~"6kj0:9o5G30c8L6603`?:6=44i4;94?=n9j>1<75`1c694?=zj8l:6=4<:183!7dk39:56F<1`9K7511<75rb0g2>5<3290;w)?lc;36f>N49h1C?=94i4394?=n=00;66g>c583>>i6j=0;66sm1g094?5=83:p(>o6=80;66a>b583>>{e9o91<7=50;2x 4ed2:;27E=>a:J042=n=80;66g>5083>>i6j=0;66sm1gf94?3=83:p(0c82?l2f2900e9h50;9j11<722c>47>5;n3af?6=3th:jh4?:483>5}#9ji1jl5G30c8L6603-;;n7?4i5c94?=n50z&2gf5<2290;w)?lc;db?M56i2B8<:5+11`95>o3i3:17d:i:188m02=831b954?::m2fg<722wi>=?50;794?6|,8ih6ko4H23b?M57?2.:;h6b>5<>o203:17b?mb;29?xd58;0;684?:1y'5fe=nh1C?87>5;h7;>5<cb8ee>N49h1C?=94$02a>4=n;:186>5<7s-;ho7hn;I12e>N48>1/==l51:k7e?6=3`>m6=44i4694?=n=10;66a>bc83>>{e:9?1<7;50;2x 4ed2ok0D>?n;I133>"68k0:7d:n:188m1`=831b994?::k65;|`176<72=0;6=u+1ba9bg=O;8k0D>>8;%33f?2>o6jh0;66a>bc83>>{e:::1<7:50;2x 4ed2oh0D>?n;I133>"68k0?7d:n:188m0>=831b=oo50;9l5gd=831vn?o;:187>5<7s-;ho7h6;I12e>N48>1/==l51:k7e?6=3`??6=44i4:94?=h9kh1<75rb3c6>5<3290;w)?lc;d:?M56i2B8<:5+11`95>o3i3:17d;;:188m0>=831d=ol50;9~f7`129086=4?{%3`g?`?3A9:m6F<069K02=#94=n6<729q/=nm5f99K74g<@::<7E:8;%36e?26>2.:;h6b>5<6=4<:183!7dk3l37E=>a:J042=O<>1/=8o54048 46e281b8l4?::k65;|`1ba<72<0;6=u+1ba9bf=O;8k0D>>8;I64?!72i3>::6g;a;29?l2a2900e8650;9j5gg=831d=ol50;9~f7`b29086=4?{%3`g?`?3A9:m6F<069K02=#94=n0<729q/=nm5fb9K74g<@::<7E:8;%36e?26>2c?m7>5;h6e>5<5<3290;w)?lc;da?M56i2B8<:5+11`90>o3i3:17d;7:188m4df2900c50z&2gf5;n3af?6=3th8<84?:583>5}#9ji1jo5G30c8L6603-;;n7:4i5c94?=n=10;66g>b`83>>i6jk0;66sm31694?2=83:p(0c87?l2f2900e8650;9j5gg=831d=ol50;9~f70>290>6=4?{%3`g?`f3A9:m6F<069'55d=92c?m7>5;h6e>5<1<75f5983>>i6jk0;66sm27:94?3=83:p(0c82?l2f2900e9h50;9j11<722c>47>5;n3af?6=3th9::4?:483>5}#9ji1jl5G30c8L6603-;;n7?4i5c94?=n3:197>50z&2gf5<2290;w)?lc;db?M56i2B8<:5+11`95>o3i3:17d:i:188m02=831b954?::m2fg<722wi>;:50;794?6|,8ih6ko4H23b?M57?2.:;h6b>5<>o203:17b?mb;29?xd5>;0;684?:1y'5fe=nh1C?87>5;h7;>5<cb8eg>N49h1C?=94$02a>1=nm:09j0d<722c?j7>5;h77>5<1<75rb376>5<4290;w)?lc;12=>N49h1C?=94i4394?=n9<;1<75`1c694?=zj;>h6=4;:183!7dk3;>n6F<1`9K751>o6k=0;66a>b583>>{e:<>1<7=50;2x 4ed2:;27E=>a:J042=n=80;66g>5083>>i6j=0;66sm25c94?2=83:p(>o213:17d?l4;29?j7e<3:17pl=5283>6<729q/=nm530;8L67f3A9;;6g:1;29?l7293:17b?m4;29?xd5<10;694?:1y'5fe=9?n;I133>o293:17d;6:188m4e32900c50z&2gf<4901C?:188k4d32900qo<;6;290?6=8r.:on4>5c9K74g<@::<7d;>:188m0?=831b=n:50;9l5g2=831vn?;>:180>5<7s-;ho7=>9:J05d=O;9=0e8?50;9j507=831d=o:50;9~f723290?6=4?{%3`g?72j2B8=l5G3158m07=831b944?::k2g1<722e:n94?::a606=8391<7>t$0a`>67>3A9:m6F<069j14<722c:9<4?::m2f1<722wi>9<50;694?6|,8ih6<;m;I12e>N48>1b9<4?::k6=?6=3`;h87>5;n3a0?6=3th98k4?:283>5}#9ji1?<74H23b?M57?2c>=7>5;h365?6=3f;i87>5;|`105<72=0;6=u+1ba950d<@:;j7E=?7:k65?6=3`?26=44i0a7>5<cb805<=O;8k0D>>8;h72>5<5<54;294~"6kj0:9o5G30c8L6603`?:6=44i4;94?=n9j>1<75`1c694?=zj;=i6=4::183!7dk3lj7E=>a:J042=#99h1=6g;a;29?l2a2900e8:50;9j1=<722e:no4?::a62g=83?1<7>t$0a`>cg<@:;j7E=?7:&24g<63`>j6=44i5d94?=n==0;66g:8;29?j7ej3:17pl=7883>0<729q/=nm5f`9K74g<@::<7)??b;38m1g=831b8k4?::k60?6=3`?36=44o0`a>5<55;294~"6kj0mm6F<1`9K751<,8:i6<5f4`83>>o3n3:17d;;:188m0>=831d=ol50;9~f710290>6=4?{%3`g?`f3A9:m6F<069'55d=92c?m7>5;h6e>5<1<75f5983>>i6jk0;66sm26494?3=83:p(0c82?l2f2900e9h50;9j11<722c>47>5;n3af?6=3th9;84?:483>5}#9ji1jl5G30c8L6603-;;n7?4i5c94?=n50z&2gf5<2290;w)?lc;db?M56i2B8<:5+11`95>o3i3:17d:i:188m02=831b954?::m2fg<722wi>ij50;794?6|,8ih6ko4H23b?M57?2.:;h6b>5<>o203:17b?mb;29?xd5lj0;684?:1y'5fe=nh1C?87>5;h7;>5<cb8ee>N49h1C?=94$02a>4=n5<7s-;ho7hn;I12e>N48>1/==l51:k7e?6=3`>m6=44i4694?=n=10;66a>bc83>>{e:m31<7;50;2x 4ed2ok0D>?n;I133>"68k0:7d:n:188m1`=831b994?::k65;|`1`=<72<0;6=u+1ba9bd=O;8k0D>>8;%33f?7>o2<3:17d;7:188k4de2900qom:09j0d<722c?j7>5;h77>5<6=4::183!7dk3lh7E=>a:J042=#99h186g;a;29?l2a2900e8650;9j5gg=831d=ol50;9~f7b0290>6=4?{%3`g?`f3A9:m6F<069'55d=92c?m7>5;h6e>5<1<75f5983>>i6jk0;66sm2bc94?5=83:p(>o6=80;66a>b583>>{e:j31<7=50;2x 4ed2:;27E=>a:J042=n=80;66g>5083>>i6j=0;66sm2b294?2=83:p(>o213:17d?l4;29?j7e<3:17pl=c983>6<729q/=nm530;8L67f3A9;;6g:1;29?l7293:17b?m4;29?xd5jl0;694?:1y'5fe=9?n;I133>o293:17d;6:188m4e32900c50z&2gf<4901C?:188k4d32900qo5c9K74g<@::<7d;>:188m0?=831b=n:50;9l5g2=831vn?m9:180>5<7s-;ho7=>9:J05d=O;9=0e8?50;9j507=831d=o:50;9~f7df290?6=4?{%3`g?72j2B8=l5G3158m07=831b944?::k2g1<722e:n94?::a6f3=8391<7>t$0a`>67>3A9:m6F<069j14<722c:9<4?::m2f1<722wi>o650;694?6|,8ih6<;m;I12e>N48>1b9<4?::k6=?6=3`;h87>5;n3a0?6=3th9o94?:283>5}#9ji1?<74H23b?M57?2c>=7>5;h365?6=3f;i87>5;|`1f3<72=0;6=u+1ba950d<@:;j7E=?7:k65?6=3`?26=44i0a7>5<cb805<=O;8k0D>>8;h72>5<5<54;294~"6kj0:9o5G30c8L6603`?:6=44i4;94?=n9j>1<75`1c694?=zj;i96=4<:183!7dk39:56F<1`9K7511<75rb3`1>5<3290;w)?lc;36f>N49h1C?=94i4394?=n=00;66g>c583>>i6j=0;66sm2dd94?3=83:p(0c82?l2f2900e9h50;9j11<722c>47>5;n3af?6=3th9ih4?:483>5}#9ji1jl5G30c8L6603-;;n7?4i5c94?=n50z&2gf5<2290;w)?lc;db?M56i2B8<:5+11`95>o3i3:17d:i:188m02=831b954?::m2fg<722wi>hl50;794?6|,8ih6ko4H23b?M57?2.:;h6b>5<>o203:17b?mb;29?xd5mh0;684?:1y'5fe=nh1C?87>5;h7;>5<cb8ee>N49h1C?=94$02a>4=n5<7s-;ho7hn;I12e>N48>1/==l51:k7e?6=3`>m6=44i4694?=n=10;66a>bc83>>{e:l=1<7;50;2x 4ed2ok0D>?n;I133>"68k0:7d:n:188m1`=831b994?::k65;|`1<1<72=0;6=u+1ba950d<@:;j7E=?7:k65?6=3`?26=44i0a7>5<cb821g=O;8k0D>>8;h72>5<1<75rb3:1>5<3290;w)?lc;36f>N49h1C?=94i4394?=n=00;66g>c583>>i6j=0;66sm29394?2=83:p(>o213:17d?l4;29?j7e<3:17pl=8183>1<729q/=nm514`8L67f3A9;;6g:1;29?l3>2900e5c9K74g<@::<7d;>:188m0?=831b=n:50;9l5g2=831vn?79:187>5<7s-;ho7?:b:J05d=O;9=0e8?50;9j1<<722c:o94?::m2f1<722wi>4;50;694?6|,8ih6<;m;I12e>N48>1b9<4?::k6=?6=3`;h87>5;n3a0?6=3th9594?:583>5}#9ji1=8l4H23b?M57?2c>=7>5;h7:>5<5<54;294~"6kj0:9o5G30c8L6603`?:6=44i4;94?=n9j>1<75`1c694?=zj;;;6=4;:183!7dk3;>n6F<1`9K751>o6k=0;66a>b583>>{e:9l1<7:50;2x 4ed28?i7E=>a:J042=n=80;66g:9;29?l7d<3:17b?m4;29?xd58l0;694?:1y'5fe=9?n;I133>o293:17d;6:188m4e32900c50z&2gf<6=k1C?1<7>t$0a`>43e3A9:m6F<069j14<722c>57>5;h3`0?6=3f;i87>5;|`167<72=0;6=u+1ba950d<@:;j7E=?7:k65?6=3`?26=44i0a7>5<cb821g=O;8k0D>>8;h72>5<1<75rb303>5<3290;w)?lc;36f>N49h1C?=94i4394?=n=00;66g>c583>>i6j=0;66sm20d94?2=83:p(>o213:17d?l4;29?j7e<3:17pl<0083>6<729q/=nm51448L67f3A9;;6*>0c8;?l`a2900e<>?:188k4d32900qo579K74g<@::<7)??b;:8mc`=831b==>50;9l5g2=831vn5<7s-;ho7?:6:J05d=O;9=0(<>m:99jbc<722c:<=4?::m2f1<722wi>k=50;694?6|,8ih6<;7;I12e>N48>1/==l5f79jbc<722c:<=4?::k244<722e:n94?::a6d7=8391<7>t$0a`>4313A9:m6F<069'55d=9h1bjk4?::k245<722e:n94?::a67b=8391<7>t$0a`>4313A9:m6F<069'55d=9h1bjk4?::k245<722e:n94?::a6d6=83?1<7>t$0a`>43>3A9:m6F<069'55d=9k1bjk4?::k245<722c:<<4?::k247<722e:n94?::a67e=83?1<7>t$0a`>43>3A9:m6F<069'55d=9k1bjk4?::k245<722c:<<4?::k247<722e:n94?::a6<`=83?1<7>t$0a`>43>3A9:m6F<069'55d=9k1bjk4?::k245<722c:<<4?::k247<722e:n94?::a67d=83?1<7>t$0a`>43>3A9:m6F<069'55d=9k1bjk4?::k245<722c:<<4?::k247<722e:n94?::a6t$0a`>43>3A9:m6F<069'55d=9k1bjk4?::k245<722c:<<4?::k247<722e:n94?::a67g=83?1<7>t$0a`>43>3A9:m6F<069'55d=9k1bjk4?::k245<722c:<<4?::k247<722e:n94?::a6d>=8391<7>t$0a`>4313A9:m6F<069'55d=02cmj7>5;h334?6=3f;i87>5;|`1=a<72<0;6=u+1ba950?<@:;j7E=?7:&24g<6j2cmj7>5;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`16<<72<0;6=u+1ba950?<@:;j7E=?7:&24g<6j2cmj7>5;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`1<`<72:0;6=u+1ba9500<@:;j7E=?7:&24g<6i2cmj7>5;h334?6=3f;i87>5;|`15d<72:0;6=u+1ba9500<@:;j7E=?7:&24g<6i2cmj7>5;h334?6=3f;i87>5;|`15;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`15<<72<0;6=u+1ba950?<@:;j7E=?7:&24g<6j2cmj7>5;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`15;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`15=<72<0;6=u+1ba950?<@:;j7E=?7:&24g<6j2cmj7>5;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`15;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`152<72<0;6=u+1ba950?<@:;j7E=?7:&24g<6j2cmj7>5;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`15;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`153<72<0;6=u+1ba950?<@:;j7E=?7:&24g<6j2cmj7>5;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`174<72<0;6=u+1ba950?<@:;j7E=?7:&24g<6=2cmj7>5;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`1e3<72<0;6=u+1ba950?<@:;j7E=?7:&24g<6=2cmj7>5;h334?6=3`;;=7>5;h336?6=3f;i87>5;|`171<72:0;6=u+1ba9500<@:;j7E=?7:&24g5<cb8210=O;8k0D>>8;%33f?>i6=4=:183!7dk3;>96F<1`9K751<,8:i655ffg83>>i6j=0;66sm25;94?4=83:p(oan3:17b?m4;29?xd5<>0;6?4?:1y'5fe=9?n;I133>"68k037dhi:188k4d32900qo<;5;296?6=8r.:on4>549K74g<@::<7)??b;:8mc`=831d=o:50;9~f72429096=4?{%3`g?72=2B8=l5G3158 46e211bjk4?::m2f1<722wi>9?50;094?6|,8ih6<;:;I12e>N48>1/==l58:keb?6=3f;i87>5;|`17c<72;0;6=u+1ba9503<@:;j7E=?7:&24g5<52;294~"6kj0:985G30c8L6603-;;n764igd94?=h9k>1<75rb3`e>5<5290;w)?lc;361>N49h1C?=94$02a>==nno0;66a>b583>>{e:kn1<7<50;2x 4ed28?>7E=>a:J042=#99h146gif;29?j7e<3:17pl=bc83>7<729q/=nm51478L67f3A9;;6*>0c8;?l`a2900c7>50z&2gf<6=<1C?5<7s-;ho7?:5:J05d=O;9=0(<>m:99jbc<722e:n94?::a6g3=8381<7>t$0a`>4323A9:m6F<069'55d=02cmj7>5;n3a0?6=3th9n>4?:383>5}#9ji1=8;4H23b?M57?2.:5<cb8210=O;8k0D>>8;%33f?>96F<1`9K751<,8:i655ffg83>>i6j=0;66sm1d094?2=83:p(0183>>o6880;66a>b583>>{e9l91<7:50;2x 4ed28?37E=>a:J042=#99h1>85ffg83>>o6890;66g>0083>>i6j=0;66sm1d694?2=83:p(0183>>o6880;66a>b583>>{e9l?1<7:50;2x 4ed28?37E=>a:J042=#99h1>85ffg83>>o6890;66g>0083>>i6j=0;66sm1d494?2=83:p(0183>>o6880;66a>b583>>{e9l=1<7:50;2x 4ed28?37E=>a:J042=#99h1>85ffg83>>o6890;66g>0083>>i6j=0;66sm1d:94?2=83:p(0183>>o6880;66a>b583>>{e9l31<7:50;2x 4ed28?37E=>a:J042=#99h1>85ffg83>>o6890;66g>0083>>i6j=0;66sm21594?3=83:p(0183>>o6880;66g>0383>>i6j=0;66sm1dc94?2=83:p(0183>>o6880;66a>b583>>{e:o;1<7m=:183!7dk3;io6F<1`9K75145=9=0vbn950:lf=?6<,8>h6?5+15f96>"68:087)??4;18 4622:1/==853:&242<43-;;47=4$0a;>7=#99i1?6*>0e80?!77m390(<>i:29'546=;2.:=<4<;%326?5<,8;86>5+10697>"69<087)?>6;18 4702:1/=<653:&25<<43-;:m7=4$03a>6=#98i1?6*>1e80?!76m390(<4<;%316?5<,8886>5+13697>"6:<087)?=6;18 4402:1/=?653:&26<<43-;9m7=4$00a>6=#9;i1?6*>2e80?!75m390(<5+12697>"6;<087)?<6;18 4502:1/=>653:&27<<43-;8m7=4$01a>6=#9:i1?6*>3e80?!74m390(<=i:29'516=;2.:8<4<;%376?5<,8>86>5+15697>"6<<087)?;6;18 4202:1/=9653:&20<<43-;?m7=4$06a>6=#9=o1=o=4$06e>c1<,8?;6k94$0`g>4d43-;ii7?m3:l2g5<5<2d:o<4=4:&2g3<3>2.:<44<;%33e?5<,:;?6i6=44i5a94?=n=;0;66g:3;29?l`32900e5;h0`>5<#9k31>o5a1c:94>=n:h0;6)?m9;0a?k7e03;07d<6:18'5g?=:k1e=o652:9j6=<72-;i57!7e138i7c?m8;78?l53290/=o752c9m5g>=>21b?>4?:%3a=?4e3g;i4794;h11>5<#9k31>o5a1c:9<>=n;80;6)?m9;0a?k7e03307d=?:18'5g?=:k1e=o65a:9j6c<72-;i57!7e138i7c?m8;f8?l41290/=o752c9m5g>=m21b?n4?:%3a=?5e3g;i47>4;h1b>5<#9k31?o5a1c:95>=n;00;6)?m9;1a?k7e03807d=7:18'5g?=;k1e=o653:9j72<72-;i57=m;o3a>6=4+1c;97g=i9k21965f4583>!7e139i7c?m8;48?l24290/=o753c9m5g>=?21b8?4?:%3a=?5e3g;i4764;h62>5<#9k31?o5a1c:9=>=n<90;6)?m9;1a?k7e03k07d=i:18'5g?=;k1e=o65b:9j7`<72-;i57=m;o3a!7e139i7c?m8;g8?l14290/=o75739m5g>=821b;<4?:%3a=?153g;i47?4;h4e>5<#9k31;?5a1c:96>=n>l0;6)?m9;51?k7e03907d8k:18'5g?=?;1e=o654:9j2f<72-;i579=;o3a!7e13=97c?m8;58?l0>290/=o75739m5g>=021b:54?:%3a=?153g;i4774;h44>5<#9k31;?5a1c:9e>=n>?0;6)?m9;51?k7e03h07d8;:18'5g?=?;1e=o65c:9j26<72-;i579=;o3a!7e13=97c?m8;d8?l07290/=o75739m5g>=9910e8h50;&2f<<0:2d:n54>1:9j1`<72-;i579=;o3ah7>5$0`:>245<#9k31;?5a1c:951=b8846>h6j10:965f7`83>!7e13=97c?m8;35?>o013:1(4d<3`=?6=4+1c;937=i9k21=n54i6294?"6j00<>6`>b982`>=n><0;6)?m9;51?k7e03;n76g:a;29 4d>2>80b=821b5?4?:%3a=??43g;i47?4;h;3>5<#9k315>5a1c:96>=n0o0;6)?m9;;0?k7e03907d6j:18'5g?=1:1e=o654:9j!7e13387c?m8;58?l>f290/=o75929m5g>=021b444?:%3a=??43g;i4774;h:;>5<#9k315>5a1c:9e>=n0>0;6)?m9;;0?k7e03h07d6::18'5g?=1:1e=o65c:9j<1<72-;i577<;o3a!7e13387c?m8;d8?l>6290/=o75929m5g>=9910e5>50;&2f<<>;2d:n54>1:9j3c<72-;i577<;o3a5$0`:><55<#9k315>5a1c:951=i1<7*>b88:7>h6j10:965f9c83>!7e13387c?m8;35?>o>i3:1(=83.:n4463:l2f=<6121b5:4?:%3a=??43g;i47?n;:k:2?6=,8h264=4n0`;>4d<3`3>6=4+1c;9=6=i9k21=n54i8394?"6j002?6`>b982`>=n0?0;6)?m9;;0?k7e03;n76g8b;29 4d>2090b=821b5h4?:%3a=??a3g;i47?4;h;g>5<#9k315k5a1c:96>=n1j0;6)?m9;;e?k7e03907do::18'5g?=i=1e=o650:9je6<72-;i57o;;o3a65fa083>!7e13k?7c?m8;18?l57m3:1(2::o7c?m8;38?l57j3:1(2::o7c?m8;18?l56;3:1(1;29 4d>2:;97c?m8;38?l5683:1(2:;97c?m8;18?jda290/=o75bd9m5g>=821dni4?:%3a=?db3g;i47?4;n`a>5<#9k31nh5a1c:96>=hjh0;6)?m9;`f?k7e03907bl6:18'5g?=jl1e=o654:9lf=<72-;i57lj;o3a!7e13hn7c?m8;58?jd2290/=o75bd9m5g>=021dn94?:%3a=?db3g;i4774;n`0>5<#9k31nh5a1c:9e>=hj;0;6)?m9;`f?k7e03h07bl?:18'5g?=jl1e=o65c:9lec<72-;i57lj;o3a!7e13hn7c?m8;d8?jgd290/=o75bd9m5g>=9910cll50;&2f<1:9led<72-;i57lj;o3a5$0`:>gc5<#9k31nh5a1c:951=b88aa>h6j10:965`c783>!7e13hn7c?m8;35?>id=3:1(4d<3fi;6=4+1c;9f`=i9k21=n54oca94?"6j00ii6`>b982`>=hj80;6)?m9;`f?k7e03;n76an6;29 4d>2ko0b=821dhk4?:%3a=?c73g;i47?4;nfg>5<#9k31i=5a1c:96>=hlj0;6)?m9;g3?k7e03907bjm:18'5g?=m91e=o654:9l`d<72-;i57k?;o3a!7e13o;7c?m8;58?jb0290/=o75e19m5g>=021dh;4?:%3a=?c73g;i4774;nf6>5<#9k31i=5a1c:9e>=hl=0;6)?m9;g3?k7e03h07bj=:18'5g?=m91e=o65c:9l`4<72-;i57k?;o3a!7e13o;7c?m8;d8?jeb290/=o75e19m5g>=9910cnj50;&2f<1:9lgf<72-;i57k?;o3a5$0`:>`65<#9k31i=5a1c:951=b88f4>h6j10:965`e983>!7e13o;7c?m8;35?>ib?3:1(4n0`;>4d<3fo96=4+1c;9a5=i9k21=n54oeg94?"6j00n<6`>b982`>=hl:0;6)?m9;g3?k7e03;n76al8;29 4d>2l:0b=821din4?:%3a=?cc3g;i47?4;nga>5<#9k31ii5a1c:96>=hmh0;6)?m9;gg?k7e03907bh<:18'5g?=n;1e=o650:9lb4<72-;i57h=;o3a65`eg83>!7e13l97c?m8;18?xd5;;0;6>4?:1y'5fe=9<=0D>?n;I133>"68k0:56gif;29?l7783:17b?:2;29?xd5i>0;6>4?:1y'5fe=9<=0D>?n;I133>"68k0:56gif;29?l7783:17b?:2;29?xu4:?0;6>ht^205?87dl3>j70?id;6b?87am3>j70?if;6b?84783>j70j70j70j70<<0;6b?84f<3>j703>j70j70j70j70j70=?4;6b?84113>j70<98;6b?841?3>j70<96;6b?841=3>j70<94;6b?841:3>j70<91;6b?841;3>j70<8b;6b?840i3>j70<89;6b?84003>j70<87;6b?840>3>j70<85;6b?840<3>j70<83;6b?84cl3>j70j70j703>j70j70j70j70j70j70;6m:0:<<521d69557<58o>6<>>;<3f2?77927:i:4>009>5`>=99;0163>e`8244=:::81jk5rs52f>5:;6P<239]0457S=l6:\0a0=Y<;=0R9<9;_611>X3:=1U8?=4^501?[2592T?>=5Q40d8Z16c3W>;o6P;0c9]05g:;<12f?`c348mh7;7;<0e0?3?348mo7;7;<0ef?3?349;97;7;<130?3?348?o7;6;<07e?3>348?47;6;<072?3>348?87;6;<076?3>348?<7;6;<00a?3>348h<7;6;<0aa?3>348io7;6;<0ae?3>348i47;6;<0a2?3>348i87;6;<0a6?3>348387;6;<0;7?3>3483>7;6;<0;5?3>3483<7;6;<0:3?3>3482:7;6;<0:1?3>348287;6;<0:7?3>348:<7;6;<03b?3>348;i7;6;<03`?3>348;o7;6;<017?3>3489>7;6;<015?3>3489<7;6;<02b?3>348m=7:m;<0e5?2d348m=7?l2:?1b4<6k:16>k?51bc897`62;i01?h>:22897`62;l01?h>:3g897`62;n01?h>:34897`62:i01?h>:52897`62:l01?h>:2g897`62:n01?h>:24897`620>01?h>:80897`620:01?h>:9d897`621o01?h>:9f897`621i01?h>:9`897`621k01?h>:9;897`621201?h>:95897`621?01?h>:96897`621901?h>:90897`621;01?h>:92897`62>l01?h>:6g897`62>n01?h>:6a897`620h01?h>:8c897`620301?h>:8:897`620=01?h>:84897`620?01?h>:83897`621<01?h>:6`897`62h:01?h>:8g897`620n01?h>:8a897`62h?01?h>:`1897`62h801?h>:`3897`62:;870;5n808==522g3975`:>7>53z\757=::on1=oo4=3d7>4df3ty9?>4?:2y]7gc<5;986348j47hi;<033?779279m:4if:p5fb=838pR9?7;<3``?7ej2wx>l;50;0xZ6e7348j97?mb:p5ce=839pR>pR>348;87?mb:?2a<pR>348;>7?mb:?2a2pR>348;<7?mb:?2a034;oo7;6;<3eb?7ej27:i94if:p5c3=83>pR><7;<3gf?3>34;mi7?mb:?2a67:;<0e5?c63ty8n>4?:3y]7<2<5;l:6ih4}r1a5?6=:rT85?522g39`a=z{:h;6=4={_1:5>;5n80oo6s|3`d94?4|V:3;70k?5d89~w6gd2909wS=7d:?1b4d348m=7j8;|q0ed<72;qU?5l4=3d2>a052z\05<5sW93563=f08g0>{t;h<1<77}Y;1<01?h>:e38yv5f<3:1>vP<849>6c7=l91v>o<:181[5?<279j<4lf:p7d4=838pR>6<;<0e5?eb3ty8m<4?:3y]7=4<5;l:6nj4}r1b4?6=:rT84<522g39gf=z{:3m6=4={_1;4>;5n80hn6s|38g94?4|V:=m70k?5e99~w6de2909wS=6a:?1b4348m=7k9;|q0f<<72;qU?464=3d2>`352z\0=2=::o;1i95rs2`4>5<5sW92:63=f08f7>{t;k<1<77}Y;1201?h>:eg8yv5f?3:1>vP<7e9>6c7=l:1v>7l:181[50k279j<4l8:p722=838pR>;;;<0e5?143ty8;?4?:3y]705<5;l:6:?4}r144?6=:rT89<522g392c=z{:;5n80=i6s|37g94?4|V:>m70m0;6?uQ35g897`62?i0q~=9c;296~X4k?56c9~w60e2909wS=;c:?1b4<1i2wx?;o50;0xZ62e348m=786;|q02<<72;qU?9o4=3d2>3>52z\00<=::o;1::5rs244>5<5sW9?463=f0852>{t;??1<77}Y;=?01?h>:718yv51;3:1>vP<459>6c7=>;1v>8=:181[53;279j<491:p737=838pR>:=;<0e5?073ty8:=4?:3y]717<5;l:68h4}r16b?6=:rT88=522g391`=z{:?n6=4={_10b>;5n80>h6s|34f94?4|V:9n70k?57`9~w61f2909wS=:9:?1b4<012wx?:750;0xZ63?348m=797;|q03=<72;qU?894=3d2>2152z\013=::o;1;;5rs255>5<5sW9>963=f0841>{t;>?1<77}Y;==01?h>:628yv51>3:1>vP<3b9>6c7=><1v>;m:181[54j279j<4:a:p50`=833p1>?l:0`5?843m3?:70<f;72?xu5nh0;602<58lo68:4=0df>02<58lm68:4=323>02<5;::68:4=321>02<5;:868:4=327>02<5;:>68:4=310>4df3488<7?ma:?1bf<6jk16>;75559>63>===16>;95559>630===16>;;5559>632===16>;<5559>637=9kk01?8<:468971e2<>01?9n:468971>2<>01?97:46897102<>01?99:46897122<>01?9;:46897142<>0q~?le;296~;6km0>463>cg82f1=z{8n;6=4>6z?2`d<2927:io4:1:?12<<3n279:54;f:?122<3n279:;4;f:?120<3n279:94;f:?127<3n279:<4;f:?126<3n279;o4;f:?13d<3n279;44;f:?13=<3n279;:4;f:?133<3n279;84;f:?131<3n279;>4;f:?1e3<68816>>:51c68yv7b:3:1?v3>d`82g1=:9lh1=8?4=0g1>4d33ty:hl4?:2y>5ag=9k>01509>5`5=9k>0q~?kb;297~;6lk0:n9521ea914=:9ln19<5rs0f1>5<5s4;no7?m4:?2b`<202wx=h:50;1x94bd28i?70?jd;365>;6m=0:n95rs0f`>5<4s4;oo7?m4:?2`a<2927:ih4:1:p5a5=838p1e483>6}:9mn1=n:4=0gf>43634;n97?m4:p5ab=839p1c59>5``=9<;01u21eg95g2<58nm68?4=0d3>0752z?2ac<6j=16>=?5599~w4c02908w0?kf;3`0>;6n90:9<521d595g253z?2`c<6j=16=h>5509>5c7==81v{t9l21<7=t=0g3>4e334;m=7?:1:?2a=<6j=1ve0865>;6n;0>=6s|1e594?4|58l:65`7=9j>015c4=9k>01?>;:4:8yv7bi3:1>v3>f28214=:9lk1=o:4}r3g=?6=:r7:j>4>b59>653==11v?>9:18b87al3>m70?ie;6e?87an3>m70m70m70m70{t::;1<7=t=310>0><5;9;6864=312>4d33ty9?=4?:dy>666=9kh01?h<:gd8975628:;70<<4;334>;6m;0:<<521d19556<58o?6<>?;<3f1?77827:i;4>019>5`1=99:01;6mh0:<=5rs221>5<4s48j87;;;<0b1?33349;87?mb:p6d0=839p1?o;:4:897g22<201?o9:0`7?xu5i=0;69u22`695gd<5;k36<>?;<0b2?778279<:4>019~w7`22908w0{t:o<1<74de348m47??0:p6cc=839p1?hi:4:897`c2=l01?hj:0`a?xu5no0;6?u22gd95gd<5:::6<>?;|q1b1<72:q6>k;5599>6c2=9kh01?h7:gd8yv4al3:1?v3=fe82fg=::oo195523139bc=z{;l<6=4<{<0eg?7ei279jo4>b`9>6c>=9k>0q~{t;991<7?<{<131?7ej279hi4:4:?1`f<2<279ho4:4:?1`d<2<279h44:4:?1`=<2<279h;4:4:?1`0<6jh16>i95559>6``===16>hk5559>6`b===16>hm5559>6`d===16>ho5559>6`?===16>h65559>6`1===1v?=k:18184113?370<:6;3a0>{t:?:1<7:t=34:>4de3481}::?21=ol4=35b>0><5;8h6kh4=36g>c`52z?122<20279994>b59~w73b290?w0<97;3af>;5?00>463=2b8244=::=h1jk5rs31b>5<5s48=:7;7;<067?7e<2wx>8j50;6x970128hi70<88;7;?845j3lm70<;9;de?xu5;00;6?u227791==::<81=o:4}r06g?6=bc9>621==116>?l5113897202ol0q~<<8;296~;5>=0>463=5082f1=z{;?i6=4;{<050?7ej279;;4:8:?16d1}::?81=ol4=357>0><5;826kh4=362>c`52z?124<202798h4>b59~w73?290?w0<91;3af>;5?:0>463=288244=:::l1jk5rs314>5<5s48=?7;7;<064?7e<2wx>8o50;6x970428hi70<85;7;?845i3;;=63=428eb>{t:=i1<707<5;>h68851438973028h?7p}=4`83>6}::509>61e=9j>01?:k:0`7?xu5<10;6>u2246914=::=k19<5225:95g253z?111<6=816>9o51b68972e28h?7p}=4783>6}::<919<5225:914=::=<1=o:4}r07=?6=;r799>4>509>61>=9j>01?:6:0`7?xu5<=0;6>u2240914=::=<19<5225695g253z?117<6=816>9851b68972028h?7p}=4383>6}::<;19<52256914=::=81=o:4}r071?6=;r799<4>509>612=9j>01?:::0`7?xu5<90;6>u2242914=::=819<5225295g253z?115<6=816>9<51b68972428h?7p}=3d83>6}::=l19<52252914=:::o1=o:4}r075?6=;r798k4>509>616=9j>01?:>:0`7?xu5;o0;6>u225g9507<5;9n6:<50;7x971e28hi70;50l0:<=5220c9556<5;l:6>o4}r045?6==r79;l4>bc9>6d6=no16>5j5fg9>64?=no16>k?5389~w717290>w0<89;3af>;5i90:<<5229f9557<5;;26<>>;<0e5?5?3ty9:k4?:4y>62>=9kh01?7i:gd897>d2ol01??7:gd897`62:=0q~<9e;291~;5?>0:no5228d9557<5;2h6<>>;<02m3lm70<7b;de?846?3lm70j0;68u226795gd<5;3n6<>>;<0;f?779279=:4>009>6c7=<:1v?8m:186840<3;in63=9e8eb>;50h0mj63=178eb>;5n80?>6s|27c94?3|5;=86009>640=99;01?h>:538yv4a83:1=4u22ef90c=::mi18k522e`90c=::mk18k522e;90c=::m218k522e490c=::m?18k522e590c=::ll18k522dg90c=::ln18k522da90c=::lh18k522dc90c=::l318k522d:90c=::l=18k522`:95g2<5;9:6<>>;<0e5?`3348m=7=?e:?1b4<48j16>k?531`897`62::j7p}=b083>7}::mn195522bc95g254z?1`a<6jk16>hh5599>6d7=no16>nl5fg9~w7d72909w0lh50;0x97be2<201?m7:0`7?xu5l;0;69u22e`95gd<5;oo6864=3c3>465348ij7hi;|q1e`<72;q6>io5599>6f1=9k>0q~4=3`g>c`52z?1`<<20279o;4>b59~w7b7290?w0;5mk0>463=9g8247=::kh1jk5rs3c`>5<5s48o47;7;<0`1?7e<2wx>nh50;6x97b?28hi70m3;;<63=b88eb>{t:hk1<70><5;i86i851c`897c?2<201?7k:023?84e=3lm7p}=a883>7}::m?195522b095g254z?1`0<6jk16>h95599>6v3=d686<>;5k=0:n95rs3af>5<3s48o;7?mb:?1a<<202795h4>039>6g1=no1v?m?:18184di3?:70{t:jh1<7436348hn7?m4:p6gc=839p1?m6:43897e72<;01?lj:0`7?xu5k80;6>u22b;9507<5;i;6om50;1x97e?2<;01?lj:43897dd28h?7p}=bg83>6}::j21=8?4=3`f>4e3348ij7?m4:p6gg=839p1?m8:43897dd2<;01?ln:0`7?xu5jm0;6>u22b59507<5;hh6o650;1x97e12<;01?ln:43897d?28h?7p}=bc83>6}::j<1=8?4=3`b>4e3348in7?m4:p6g0=839p1?m::43897d?2<;01?l9:0`7?xu5j00;6>u22b79507<5;h36o:50;1x97e32<;01?l9:43897d328h?7p}=b683>6}::j>1=8?4=3`5>4e3348i;7?m4:p6g4=839p1?m<:43897d32<;01?l=:0`7?xu5j<0;6>u22b19507<5;h?6o=50;1x97e528?:70;5j:0:n95rs3g5>5<2s48nj7?mb:?16a4=3d2>7?55z?1aa<6jk16>?m5110897>c28:970<>9;336>;5n80946s|2d194?3|5;oh6019>64>=99:01?h>:358yv4b:3:19v3=ec82fg=::;h1==<4=3:`>465348:47??2:?1b4<4=2wx>h?50;7x97cf28hi70<=a;334>;50k0:<=522059556<5;l:6>:4}r0f4?6==r79i44>bc9>67g=99801?6m:021?846?3;;>63=f0807>{t:ml1<7;t=3g;>4de348957??0:?1<85112897`62:80q~0:no5223;9554<5;2j6<>=;<022?77:279j<4<1:p62`=838p1?6;:43897>428h?7p}=8883>7}::1>1=n:4=3:f>4d33ty9m?4?:3y>6=2=9k>01?o9:gd8yv40m3:1>v3=82865>;50;0:n95rs3:;>5<5s483?7?l4:?1{t:1=1<74e33483o7?m4:p62e=838p1?6>:43897>728h?7p}=8783>7}::1;1=n:4=3:a>4d33ty9484?:3y>6=6=9j>01?6n:0`7?xu51;0;6?u2285914=::0<1=o:4}r0:g?6=:r795:4>c59>6d7=9k>0q~0:n9522`5955652z?1=3<29279584>b59~w7?e2909w0<66;3`0>;5i90:n95rs3;3>5<5s48297;>;<0:0?7e<2wx>4o50;0x97?228i?70<6f;3a0>{t:1l1<707<5;3864:51b6897?b28h?7p}=9983>7}::091=n:4=3;g>4d33ty9646==816>=h51c68yv46=3:1>v3=1182g1=::8k1=o:4}r01a?6=:r79==4>b59>667=no1v?>n:181847n3?:70{t:8>1<74e3348:57?m4:p65?=838p1?>j:438976c28h?7p}=1283>7}::9o1=n:4=33;>4d33ty9<54?:3y>65b==816>=m51c68yv46:3:1>v3=0e82g1=::8=1=o:4}r025?6=:r79c59>640=9k>0q~<>e;296~;5::0>=63=2382f1=z{;836=4={<017?7d<279>i4>b59~w74a2909w0<=3;3a0>;5;;0:<=5rs33g>5<5s489>7;>;<015?7e<2wx>?950;0x974528i?70<=c;3a0>{t:8i1<707<5;8;6??51b68974e28h?7p}=1c83>7}::;:19<5220d95g252z?165<6k=16>?o51c68yv45<3:1>v3=1g82g1=::;31=o:4}r0e6?6=:r79j>4>b59>6c7=n<1v<;j:18184493;;>63=338217=z{83>6=4={<0b2?77:279m:4>539~yv55>3:1>vP<279>0=<4:?1/?=851`c8yv26:3:1>vP;139>0=<39;1/?=851c28yv50<3:1>vP<559>0=<4==1/?=8517:8yv50:3:1>vP<529>0=<4=:1/?=851618yv5083:1>vP<509>0=<4=81/?=8516g8yv51n3:1>vP<519>0=<4=91/?=851978yv51m3:1>vP<4g9>0=<4vP<4d9>0=<4vP<4e9>0=<4vP<4b9>0=<4vP<4c9>0=<4vP<4`9>0=<4

vP<489>0=<4<01/?=851858yv51?3:1>vP<499>0=<4<11/?=8518:8yv51=3:1>vP<479>0=<4vP<449>0=<4<<1/?=8518c8yv51;3:1>vP<459>0=<4<=1/?=8518`8yv51:3:1>vP<429>0=<4<:1/?=8518a8yv5193:1>vP<439>0=<4<;1/?=8518f8yv5183:1>vP<409>0=<4<81/?=8518g8yv52n3:1>vP<419>0=<4<91/?=8518d8yv52m3:1>vP<3g9>0=<4;o1/?=851`28yv52l3:1>vP<3d9>0=<4;l1/?=851`38yv52k3:1>vP<3e9>0=<4;m1/?=851`08yv50j3:1>vP<5`9>0=<4=h1/?=851`18yv50i3:1>vP<589>0=<4=01/?=851`68yv5013:1>vP<599>0=<4=11/?=851`78yv5003:1>vP<569>0=<4=>1/?=851`48yv50?3:1>vP<579>0=<4=?1/?=851`58yv50>3:1>vP<549>0=<4=<1/?=851`:8yv50=3:1>vP<539>0=<4=;1/?=851`;8yv5093:1>vP<469>0=<4<>1/?=851``8yv51>3:1>vP<3b9>0=<4;j1/?=851`a8yv52j3:1>vP<3c9>0=<4;k1/?=851`f8yv2513:1>vP;289>0=<3:01/?=851`g8yv2683:1>vP;119>0=<3991/?=851`d8yv5e=3:1>vP<949>0=<41<1/?=851728yv5e;3:1>vP<959>0=<41=1/?=851738yv5e93:1>vP<939>0=<41;1/?=851708yv5e83:1>vP<909>0=<4181/?=851718yv5fn3:1>vP<919>0=<4191/?=851768yv5fm3:1>vP<8g9>0=<40o1/?=851778yv5fl3:1>vP<8d9>0=<40l1/?=851748yv5fk3:1>vP<8e9>0=<40m1/?=851758yv5fj3:1>vP<8b9>0=<40j1/?=8517;8yv5fi3:1>vP<8c9>0=<40k1/?=8517c8yv5f13:1>vP<8`9>0=<40h1/?=8517`8yv5f03:1>vP<889>0=<4001/?=8517a8yv5f>3:1>vP<869>0=<40>1/?=8517f8yv5f=3:1>vP<879>0=<40?1/?=8517g8yv5f<3:1>vP<849>0=<40<1/?=8517d8yv5f;3:1>vP<859>0=<40=1/?=851628yv5f:3:1>vP<829>0=<40:1/?=851638yv5f93:1>vP<839>0=<40;1/?=851608yv5f83:1>vP<809>0=<4081/?=851668yv5>n3:1>vP<819>0=<4091/?=851678yv5>m3:1>vP<7g9>0=<4?o1/?=851648yv5>l3:1>vP<7d9>0=<4?l1/?=851658yv5ek3:1>vP<9c9>0=<41k1/?=8516:8yv5ej3:1>vP<9`9>0=<41h1/?=8516;8yv5ei3:1>vP<989>0=<4101/?=8516c8yv5e13:1>vP<999>0=<4111/?=8516`8yv5e03:1>vP<969>0=<41>1/?=8516a8yv5e?3:1>vP<979>0=<41?1/?=8516f8yv5e>3:1>vP<929>0=<41:1/?=8516d8yv5e:3:1>vP<899>0=<4011/?=851928yv5f?3:1>vP<7e9>0=<4?m1/?=851938yv5>k3:1>vP<7b9>0=<4?j1/?=851908yv5d83:1>vP0=<4k91/?=851918yv5em3:1>vP0=<4jl1/?=851968yv2603:1>vP;199>0=<3911/?=851948yv5413:1>vP<2g9>0=<4:o1/?=851958yv54?3:1>vP<2d9>0=<4:l1/?=8519:8yv54>3:1>vP<2e9>0=<4:m1/?=8519;8yv54=3:1>vP<2b9>0=<4:j1/?=8519c8yv54<3:1>vP<2c9>0=<4:k1/?=8519`8yv54;3:1>vP<2`9>0=<4:h1/?=8519a8yv54:3:1>vP<289>0=<4:01/?=8519f8yv5493:1>vP<299>0=<4:11/?=8519g8yv5483:1>vP<269>0=<4:>1/?=851828yxh1?h0;6?uG3158yk00j3:1>vF<069~j31d2909wE=?7:m22b=838pD>>8;|l53`<72;qC?=94}o44b?6=:rB8<:5rn7:3>5<5sA9;;6sa69394?4|@::<7p`98383>7}O;9=0qc873;296~N48>1vb;6;:181M57?2we:5;50;0xL6603td=4;4?:3yK75152zJ042=zf?236=4={I133>{i>131<7vF<069~j3>d2909wE=?7:m2=b=838pD>>8;|l5<`<72;qC?=94}o4;b?6=:rB8<:5rn7;3>5<5sA9;;6sa68394?4|@::<7p`99383>7}O;9=0qc863;296~N48>1vb;7;:181M57?2we:4;50;0xL6603td=5;4?:3yK75152zJ042=zf?336=4={I133>{i>031<7j3:1>vF<069~j3?d2909wE=?7:m2>8;|l5=`<72;qC?=94}o4:b?6=:rB8<:5rn7c3>5<5sA9;;6sa6`394?4|@::<7p`9a383>7}O;9=0qc8n3;296~N48>1vb;o;:181M57?2we:l;50;0xL6603td=m;4?:3yK75152zJ042=zf?k36=4={I133>{i>h31<7vF<069~j3gd2909wE=?7:m2db=838pD>>8;|l5e`<72;qC?=94}o4bb?6=:rB8<:5rn7`3>5<5sA9;;6sa6c394?4|@::<7p`9b383>7}O;9=0qc8m3;296~N48>1vb;l;:181M57?2we:o;50;0xL6603td=n;4?:3yK75152zJ042=zf?h36=4={I133>{i>k31<7vF<069~j3dd2909wE=?7:m2gb=838pD>>8;|l5f`<72;qC?=94}o4ab?6=:rB8<:5rn7a3>5<5sA9;;6sa6b394?4|@::<7p`9c383>7}O;9=0qc8l3;296~N48>1vb;m;:181M57?2we:n;50;0xL6603td=o;4?:3yK75152zJ042=zf?i36=4={I133>{i>j31<7290:wE=?7:m1fg=83;pD>>8;|l6gg<728qC?=94}o7`g?6=9rB8<:5rn4ag>5<6sA9;;6sa5bg94?7|@::<7p`:cg83>4}O;9=0qc;k0;295~N48>1vb8j>:182M57?2we9i<50;3xL6603td>h>4?:0yK75151zJ042=zf6=4>{I133>{i=m<1<7?tH224?xh2l>0;6290:wE=?7:m1ag=83;pD>>8;|l6`g<728qC?=94}o7gg?6=9rB8<:5rn4fg>5<6sA9;;6sa5eg94?7|@::<7p`:dg83>4}O;9=0qc;j0;295~N48>1vb8k>:182M57?2we9h<50;3xL6603td>i>4?:0yK75151zJ042=zf6=4>{I133>{i=l<1<7?tH224?xh2m>0;6290:wE=?7:m1`g=83;pD>>8;|l6ag<728qC?=94}o7fg?6=9rB8<:5rn4gg>5<6sA9;;6sa5dg94?7|@::<7p`:eg83>4}O;9=0qc;i0;295~N48>1vb8h>:182M57?2we9k<50;3xL6603td>j>4?:0yK75151zJ042=zf6=4>{I133>{i=o<1<7?tH224?xh2n>0;6290:wE=?7:m1cg=83;pD>>8;|l6bg<728qC?=94}o7eg?6=9rB8<:5rn4dg>5<6sA9;;6sa5gg94?7|@::<7p`:fg83>4}O;9=0qc8?0;295~N48>1vb;>>:182M57?2we:=<50;3xL6603td=<>4?:0yK75151zJ042=zf?:>6=4>{I133>{i>9<1<7?tH224?xh18>0;6290:wE=?7:m25g=83;pD>>8;|l54g<728qC?=94}o43g?6=9rB8<:5rn72g>5<6sA9;;6sa61g94?7|@::<7p`90g83>4}O;9=0qc8>0;295~N48>1vb;?>:182M57?2we:<<50;3xL6603td==>4?:0yK75151zJ042=zf?;>6=4>{I133>{i>8<1<7?tH224?xh19>0;6290:wE=?7:m24g=83;pD>>8;|l55g<728qC?=94}o42g?6=9rB8<:5rn73g>5<6sA9;;6sa60g94?7|@::<7p`91g83>4}O;9=0qc8=0;295~N48>1vb;<>:182M57?2we:?<50;3xL6603td=>>4?:0yK75151zJ042=zf?8>6=4>{I133>{i>;<1<7?tH224?xh1:>0;6290:wE=?7:m27g=83;pD>>8;|l56g<728qC?=94}o41g?6=9rB8<:5rn70g>5<6sA9;;6sa63g94?7|@::<7p`92g83>4}O;9=0qc8<0;295~N48>1vb;=>:182M57?2we:><50;3xL6603td=?>4?:0yK75151zJ042=zf?9>6=4>{I133>{i>:<1<7?tH224?xh1;>0;6290:wE=?7:m26g=83;pD>>8;|l57g<728qC?=94}o40g?6=9rB8<:5rn71g>5<6sA9;;6sa62g94?7|@::<7p`93g83>4}O;9=0qc8;0;295~N48>1vb;:>:182M57?2we:9<50;3xL6603td=8>4?:0yK75151zJ042=zf?>>6=4>{I133>{i>=<1<7?tH224?xh1<>0;6290:wE=?7:m21g=83;pD>>8;|l50g<728qC?=94}o47g?6=9rB8<:5rn76g>5<6sA9;;6sa65g94?7|@::<7p`94g83>4}O;9=0qc8:0;295~N48>1vb;;>:182M57?2we:8<50;3xL6603td=9>4?:0yK75187>51zJ042=zf??>6=4>{I133>{i><<1<7?tH224?xh1=>0;6290:wE=?7:m20g=83;pD>>8;|l51g<728qC?=94}o46g?6=9rB8<:5rn77g>5<6sA9;;6sa64g94?7|@::<7p`95g83>4}O;9=0qc890;295~N48>1vb;8>:182M57?2we:;<50;3xL6603td=:>4?:0yK75151zJ042=zf?<>6=4>{I133>{i>?<1<7?tH224?xh1>>0;6290:wE=?7:m23g=83;pD>>8;|l52g<728qC?=94}o45g?6=9rB8<:5rn74g>5<6sA9;;6sa67g94?7|@::<7p`96g83>4}O;9=0qc880;295~N48>1vb;9>:182M57?2we::<50;3xL6603td=;>4?:0yK75151zJ042=zf?=>6=4>{I133>{i>><1<7?tH224?xh1?>0;6290:wE=?7:~yxFGKr=hh7h=564g`7{GHKq;qMN_{|BC \ No newline at end of file diff --git a/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.vhd b/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.vhd new file mode 100644 index 0000000..4893462 --- /dev/null +++ b/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.vhd @@ -0,0 +1,155 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used -- +-- solely for design, simulation, implementation and creation of -- +-- design files limited to Xilinx devices or technologies. Use -- +-- with non-Xilinx devices or technologies is expressly prohibited -- +-- and immediately terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" -- +-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR -- +-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION -- +-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION -- +-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS -- +-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, -- +-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE -- +-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY -- +-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -- +-- FOR A PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support -- +-- appliances, devices, or systems. Use in such applications are -- +-- expressly prohibited. -- +-- -- +-- (c) Copyright 1995-2009 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file virtex4_fifo_32x512.vhd when simulating +-- the core, virtex4_fifo_32x512. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +Library XilinxCoreLib; +-- synthesis translate_on +ENTITY virtex4_fifo_32x512 IS + port ( + clk: IN std_logic; + rst: IN std_logic; + din: IN std_logic_VECTOR(31 downto 0); + wr_en: IN std_logic; + rd_en: IN std_logic; + dout: OUT std_logic_VECTOR(31 downto 0); + full: OUT std_logic; + empty: OUT std_logic; + valid: OUT std_logic; + data_count: OUT std_logic_VECTOR(8 downto 0)); +END virtex4_fifo_32x512; + +ARCHITECTURE virtex4_fifo_32x512_a OF virtex4_fifo_32x512 IS +-- synthesis translate_off +component wrapped_virtex4_fifo_32x512 + port ( + clk: IN std_logic; + rst: IN std_logic; + din: IN std_logic_VECTOR(31 downto 0); + wr_en: IN std_logic; + rd_en: IN std_logic; + dout: OUT std_logic_VECTOR(31 downto 0); + full: OUT std_logic; + empty: OUT std_logic; + valid: OUT std_logic; + data_count: OUT std_logic_VECTOR(8 downto 0)); +end component; + +-- Configuration specification + for all : wrapped_virtex4_fifo_32x512 use entity XilinxCoreLib.fifo_generator_v6_2(behavioral) + generic map( + c_has_int_clk => 0, + c_wr_response_latency => 1, + c_rd_freq => 1, + c_has_srst => 0, + c_enable_rst_sync => 1, + c_has_rd_data_count => 0, + c_din_width => 32, + c_has_wr_data_count => 0, + c_full_flags_rst_val => 0, + c_implementation_type => 0, + c_family => "virtex4", + c_use_embedded_reg => 0, + c_has_wr_rst => 0, + c_wr_freq => 1, + c_use_dout_rst => 1, + c_underflow_low => 0, + c_has_meminit_file => 0, + c_has_overflow => 0, + c_preload_latency => 1, + c_dout_width => 32, + c_msgon_val => 1, + c_rd_depth => 512, + c_default_value => "BlankString", + c_mif_file_name => "BlankString", + c_error_injection_type => 0, + c_has_underflow => 0, + c_has_rd_rst => 0, + c_has_almost_full => 0, + c_has_rst => 1, + c_data_count_width => 9, + c_has_wr_ack => 0, + c_use_ecc => 0, + c_wr_ack_low => 0, + c_common_clock => 1, + c_rd_pntr_width => 9, + c_use_fwft_data_count => 0, + c_has_almost_empty => 0, + c_rd_data_count_width => 9, + c_enable_rlocs => 0, + c_wr_pntr_width => 9, + c_overflow_low => 0, + c_prog_empty_type => 0, + c_optimization_mode => 0, + c_wr_data_count_width => 9, + c_preload_regs => 0, + c_dout_rst_val => "0", + c_has_data_count => 1, + c_prog_full_thresh_negate_val => 509, + c_wr_depth => 512, + c_prog_empty_thresh_negate_val => 3, + c_prog_empty_thresh_assert_val => 2, + c_has_valid => 1, + c_init_wr_pntr_val => 0, + c_prog_full_thresh_assert_val => 510, + c_use_fifo16_flags => 0, + c_has_backup => 0, + c_valid_low => 0, + c_prim_fifo_type => "512x36", + c_count_type => 0, + c_prog_full_type => 0, + c_memory_type => 1); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_virtex4_fifo_32x512 + port map ( + clk => clk, + rst => rst, + din => din, + wr_en => wr_en, + rd_en => rd_en, + dout => dout, + full => full, + empty => empty, + valid => valid, + data_count => data_count); +-- synthesis translate_on + +END virtex4_fifo_32x512_a; + diff --git a/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.xco b/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.xco new file mode 100644 index 0000000..07a1593 --- /dev/null +++ b/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.xco @@ -0,0 +1,84 @@ +############################################################## +# +# Xilinx Core Generator version 12.3 +# Date: Thu Apr 28 15:34:00 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc4vlx40 +SET devicefamily = virtex4 +SET flowvendor = Foundation_ISE +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = ff1148 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -10 +SET verilogsim = true +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT Fifo_Generator family Xilinx,_Inc. 6.2 +# END Select +# BEGIN Parameters +CSET almost_empty_flag=false +CSET almost_full_flag=false +CSET component_name=virtex4_fifo_32x512 +CSET data_count=true +CSET data_count_width=9 +CSET disable_timing_violations=false +CSET dout_reset_value=0 +CSET empty_threshold_assert_value=2 +CSET empty_threshold_negate_value=3 +CSET enable_ecc=false +CSET enable_int_clk=false +CSET enable_reset_synchronization=true +CSET fifo_implementation=Common_Clock_Block_RAM +CSET full_flags_reset_value=0 +CSET full_threshold_assert_value=510 +CSET full_threshold_negate_value=509 +CSET inject_dbit_error=false +CSET inject_sbit_error=false +CSET input_data_width=32 +CSET input_depth=512 +CSET output_data_width=32 +CSET output_depth=512 +CSET overflow_flag=false +CSET overflow_sense=Active_High +CSET performance_options=Standard_FIFO +CSET programmable_empty_type=No_Programmable_Empty_Threshold +CSET programmable_full_type=No_Programmable_Full_Threshold +CSET read_clock_frequency=1 +CSET read_data_count=false +CSET read_data_count_width=9 +CSET reset_pin=true +CSET reset_type=Asynchronous_Reset +CSET underflow_flag=false +CSET underflow_sense=Active_High +CSET use_dout_reset=true +CSET use_embedded_registers=false +CSET use_extra_logic=false +CSET valid_flag=true +CSET valid_sense=Active_High +CSET write_acknowledge_flag=false +CSET write_acknowledge_sense=Active_High +CSET write_clock_frequency=1 +CSET write_data_count=false +CSET write_data_count_width=9 +# END Parameters +GENERATE +# CRC: c40666b3 diff --git a/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.xise b/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.xise new file mode 100644 index 0000000..5b7e948 --- /dev/null +++ b/monitor/fifos/ipcores_v6.2/virtex4_fifo_32x512.xise @@ -0,0 +1,79 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/monitor/fifos/virtex4_fifo_16x1024.ngc b/monitor/fifos/virtex4_fifo_16x1024.ngc new file mode 100644 index 0000000..6a80452 --- /dev/null +++ b/monitor/fifos/virtex4_fifo_16x1024.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.4e +$2ff41<,[o}e~g`n;"2*447&;:%>-*>;1;8456789:;<9>40123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?1:30?4(79o1:<7GAPTV9twi`Wlg{xtQ{hsgpl9?=878=7<>5IORVP?vugnUna}zv_ujqavnXizyn~y26:1<12>772@D[YY4rne\ahvsqV~c~h}g_ogdeqc;13:5=h5>0;KMTPR=x{elSk{cl^vkv`uo400;2?;4118JJUSS2yxdkRhzlm]wlwct`Vkxh|{<883:73<990BB][[:qplcZ`rdeUdk|h^lfcdrb400;2<74118LQQVR\3njxlQlotlw8<<768i0==4@UURVP?tcWmkmRm`uov?=?699j1:<7AZTQWW>rtXlh~jSnaznu>:>586<2;>6D@_UU8B@ATF48>1<3?;;079MKVR\3KOH_L31583:44<9?0BB][[:ekm843=87;?7<85OTVSQQ0910>47;9;97><5IORVP?BNI59:6=0>2:11>LHW]]0OEO2<1;2=56=4:3E^X][[:EMB867=87;87><5OTVSQQ11:625>2=AGZ^X7JFP@>0>58692>1EC^ZT;FJTG:4294:<6:5IORVP?QBI591<3??;58JJUSS2^OI0>4?>0080?IR\Y__6IA_A=194;753=0DYY^ZT;FLTG:4294?79M;Fg97ri~38ol:=96"1108202<><9;=69;;823=7=>I;1J>55NDEPB858>3HNO^L2>0?;8EABUI5;:245NDEPB844912KOH_O31219:CG@WG;9=437LJKR@>2:==FLMXJ0?07;@FGVD:4611JHI\N<5<;?DBCZH6>255NDEPB838?3HNO^L28>99B@ATF41437LJKR@>::==FLMXI0=06;@FGVG:68730MIJ]B=32:<=FLMXI0<<19:CG@WD;9:4i7LJKRC>20?6912KOH_L315<;?DBCZK6:255NDEPA878?3HNO^O2<>99B@ATE4=437LJKRC>6:==FLMXI0;07;@FGVG:0611JHI\M<9<;?DBCZK62245NSXL@[WC@:2HJ?6LZ299AQVYNFOE:7No4C@Q@EACNFHk0OL]LAEGJJGdEN<2IGGL:4CMIA7>EKZ01HC@CFTUGG3>EUMH^NH<5K2:FJ2>BNI5:5;6JFA=33:2=CAH6:=394DHC?57803MCJ0<=17:FJE9736>1OEL2>5?58@LG;9?4<7IGN<05=3>BNI5;32:5KI@>2=;01OEL2=3?58@LG;:=4<7IGN<37=3>BNI58=2:5KI@>13;1508;EKB87?9>2NBM1<17:FJE957601OEL2<1;2=3>BNI59:2;5KI@>0:3=CAH6?2;5KI@>6:3=CAH6=2;5KI@>4:3=CAH632;5KI@>::3=CAK6;2:5KIC>24;169GMG:6<7=0HDL314<4?AOE48<5;6JFB=34:2=CAK6:4394DH@?5<813MCI0<08;EKA8769?2NBN1<>>69GMG:5:7=0HDL322<4?AOE4;>5;6JFB=06:2=CAK69:394DH@?62803MCI0?617:FJF94>6?1OEO2=>69GMG:48730HDL33083:2=CAK68=384DH@?7;089GMUG;;3:5;6JFP@>0:2=CAYH7<394DHRA84803MC[N1<19:FJTG:4294<7IG_B=1=2>BHI5:5;6J@A=33:2=CGH6:=394DNC?57803MEJ0<=17:FLE9736>1OCL2>5?58@JG;9?4<7IAN<05=3>BHI5;32:5KO@>2=;01OCL2=3?58@JG;:=4<7IAN<37=3>BHI58=2:5KO@>13;1508;EMB87?9>2NDM1<17:FLE957601OCL2<1;2=3>BHI59:2;5KO@>0:3=CGH6?2;5KO@>6:3=CGH6=2;5KO@>4:3=CGH632;5KO@>::2=CGHUYIJ84DN@?4;169GKG:6;7=0HBL315<4?AIE48?5;6J@B=35:2=CGK6:;394DN@?5=803MEI0<716:FLF979?2NDN169GKG:597=0HBL323<4?AIE4;95;6J@B=07:2=CGK699394DN@?63803MEI0?917:FLF94?6>1OCO2=9?48@JD;:7=0HBL331<:?AIE4:;1<394DN@?74813MEI0>09;EMA81813MEI0809;EMA83813MEI0:09;EMA8=813MEI0408;EMA[WC@?2ND\L2?>69GKUG;97=0HB^N<3<:?AIWI591<394DNRB86803ME[N1>17:FLTG:66>1OC]L32?;8@JVE4:0;2:5KOQ@?7;5@?01?0JLB\E39E@6=ALJ>0JIMJ3:DGT1=ALYO>7Kocsd38C6=@FM80E=<4I008M74OIA]ZT<<64IOKWTZ6502CEEY^P02:8MKOSXV:?46GAIUR\40>98:KMMQVX8>30ECG[SUCWA2=NF@^T<=94IOKW[5703@DBXR>=7:KMMQY7;>1BBDZP0558MKOSW9?<7D@FT^253>OIA]U;;:5FNHV\4=11BBDZP1558MKOSW8?<7D@FT^353>OIA]U:;:5FNHV\5=1B69JJLRX9J=0ECG[_0F4?LHN\V;N;6GAIU]2B2=NF@^T>=94IOKW[7703@DBXR<=7:KMMQY5;>1BBDZP2558MKOSW;?<7D@FT^053>OIA]U9;:5FNHV\6=11BBDZP3558MKOSW:?<7D@FT^153>OIA]U8;:5FNHV\7=178;HLJPZ5F?2CEEYQJR\;UG86BZT248HPR4WE>0@XZ;5:OV\F_d3DkacXjrrkljf=JageyZh||inl5?K6Xag|87C??4:L24520368J464<2D:<9:4N0260>H68?>0B<>84:L24=2159M54633G;:=95A1007?K76;=1E=<:;;O3211=I98759M54>33G;:5>5A1368J444;2D:?>5A1518J4343G;=?6@>729M5=5H59;1E??5A439M17=I>;1E;?5A829M<65H>::1E5>=4N860?K?2;2D2:>5A9618J<>43G32j6@M_CWPTLHXX[E[_:5AEUULVN2<[H\NHLZN129PMHYDGEFB_DAA_BJFGN0<[F_YOH94SSTBHZG03ZX]MAQM4:QPVD2<[ZXI86ZVPD05?P6(o{l%~k!hl1,q`*au`o$ydk!}al]ueiocWm;9i6[?/fpe*w`(oe:%~i!hrid-vm`(zhgTzlbfd^f2[dhc89:;>k5Z0.eqb+ta'nf;"j gsje*wna'{kfS{ocie]g5Zgil9:;<<S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]`}979;;1^<"i}f/pe+bj7&{n$k}|.ff`*ae(lj%Fob{at^alqkrXkp692><4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSnw33?11?P6(o{l%~k!hl1,q`*au{z$lhn kc.f`+Heh}g~Tob{at^az8184:2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYdq5?5??5Z0.eqb+ta'nf;"j gsqp*bbd&mi$hn!BcnwmpZeh}g~Tot29>208Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_b{?3;553\:$kh!rg-dh5(ul&my~ hdb,gg*bd'DidyczPcnwmpZe~4148?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Ugyy2?>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_mww8484;2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYk}}692>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSa{{<2<07>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]oqq:36:90Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$Anaznu]`kphsWe080<3:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQcuu>5:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[iss4>48?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Ugyy27>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_mww8<84;2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYg{6;2>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSua}<0<07>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]{kw:56:90Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$Anaznu]`kphsWqey0>0<3:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQwos>7:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[}iu4<48?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Usc29>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_ymq8284;2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYg{632>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSua}<8<13>S7'nxm"h gm2-va)`zzy%kim!db-gg*eh}g~T!re-dvvu)omi%hn!kc.alqkrX>;=0Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$ob{at^513>S7'nxm"h gm2-va)`zzy%kim!db-gg*eh}g~T4?94U1-dvc(un&mg<#|k/fppw+ack'nh#im cnwmpZ?5l2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&idyczPnnv34575m2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&idyczPnnv34576:01^<"i}f/pe+bj7&{n$k}|.sqww*e6'jky~t`jt=2=6<=R8&myj#|i/fn3*wb(o{yx"}{s.a2+fguzpdnx1?1289V4*aun'xm#jb?.sf,cwut&{y"m>/bcqv|hb|585>45Z0.eqb+ta'nf;"j gsqp*wus{&i:#no}rxlfp959:o1^<"i}f/pe+bj7&{n$k}|.sqww*e6'ng~t#ib[1_-ch7)e88m7X> gsd-vc)`d9$yh"i}sr,qwqu(k8%laxv!glY2Y+aj{'gx>k5Z0.eqb+ta'nf;"j gsqp*wus{&i:#jczx/en_7[)ody%a~/fov|+ajS=W%k`}!mr00?P6(o{l%~k!hl1,q`*au{z$yy} c0-u5969:=1^<"i}f/pe+bj7&{n$k}|.sqww*e6';7<3?=3:W3+bta&{l$ka>!re-dvvu)zz~x#n? v0>2:72<]9%l~k }f.eo4+tc'nxx#||tr-`5*p6484:>>5Z0.eqb+ta'nf;"j gsqp*wus{&i:#{?32?07?P6(o{l%~k!hl1,q`*au{z$yy} c0-u59499;90Y=!hrg,qb*ak8'xo#j||s/pppv)d9&|:0>0=4:W3+bta&{l$ka>!re-dvvu)zz~x#n? v0>0:4443\:$kh!rg-dh5(ul&my~ }suq,g4)q95>5>95Z0.eqb+ta'nf;"j gsqp*wus{&i:#{?34?31=>S7'nxm"h gm2-va)`zzy%~~z|/b0,gdtuqgo0=0=9:W3+bta&{l$ka>!re-dvvu)zz~x#n< c`pq}kcs484956[?/fpe*w`(oe:%~i!hrrq-vvrt'j8$ol|}yogw878512_;#j|i.sd,ci6)zm%l~~}!rrvp+f4(khxyuck{<2<1b>S7'nxm"h gm2-va)`zzy%~~z|/b0,chs&ngP

"x><1<17>S7'nxm"h gm2-va)`zzy%~~z|/b0,r4:66;90Y=!hrg,qb*ak8'xo#j||s/pppv)d:&|:0?0=3:W3+bta&{l$ka>!re-dvvu)zz~x#n< v0>0:75<]9%l~k }f.eo4+tc'nxx#||tr-`6*p64=49n6[?/fpe*w`(oe:%~i!hrrq-vvrt'j8$z?0131f>S7'nxm"h gm2-va)`zzy%~~z|/b0,r4Y3Whdo<=>?1328Q5)`zo$yj"ic0/pg+btt{'xxx~!lolr365=R8&myj#|i/fn3*wb(o{yx"}{s.aliu7512_;#j|i.sd,ci6)zm%l~~}!rrvp+wgjWlg{xtQib^k05>S7'nxm"h gm2-va)`zzy%~~z|/scn[`kw|pUmnRgPmtz3456482_;#j|i.sd,ci6)zm%l~~}!rrvp+wgjWlg{xtQib^k\kw67899?7X> gsd-vc)`d9$yh"i}sr,qwqu(zhgTi`~{y^da[lYhz9:; gsd-vc)`d9$yh"|nm^pg[`hXa8887X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{259V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjq75<2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfex?<;;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw772<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~?>95Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu710>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|?8?7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{7368Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkr?:=1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~by7=9:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZe~4949o6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az858Xz}827X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_b{?5;4d3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw31?]qp7?<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Tot2=>3a8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp692R|{289V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq595>n5Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]`}959W{~956[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az8185k2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRmv<5<\vq4>3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw35?0`?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs793Q}t3;8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp6=2?m4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\g|:16Vx>45Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]`}919:j1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQly=5=[wr512_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRmv<9<1g>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vir050Pru0b?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWqey0=0=a:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZ~hz5;5>l5Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]{kw:56;k0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPxnp?7;4f3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSua}<5<1e>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vrd~1;12`9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYg{6=2?o4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\|jt;?78j7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_ymq8=85i2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRv`r=;=6a=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Usc26>^pw5c=R8&myj#|i/fn3*wb(zyd~"m`uov?4;7a3\:$kh!rg-dh5(ul&x{by| cnwmp9799o1^<"i}f/pe+bj7&{n$~}`{r.alqkr;:7;m7X> gsd-vc)`d9$yh"|nup,gjsi|595=k5Z0.eqb+ta'nf;"j rqlwv*eh}g~783?i;T2,cw`)zo%l`= }d.psjqt(kfex1;11g9V4*aun'xm#jb?.sf,vuhsz&idycz36?3e?P6(o{l%~k!hl1,q`*twf}x$ob{at=5=5c=R8&myj#|i/fn3*wb(zyd~"m`uov?<;7a3\:$kh!rg-dh5(ul&x{by| cnwmp9?99l1^<"i}f/pe+bj7&{n$~}`{r.alqkrX88o0Y=!hrg,qb*ak8'xo#~ats-`kphsW8;n7X> gsd-vc)`d9$yh"|nup,gjsi|V8:i6[?/fpe*w`(oe:%~i!}povq+firf}U8=h5Z0.eqb+ta'nf;"j rqlwv*eh}g~T8e:W3+bta&{l$ka>!re-qtkru'je~byQ81d9V4*aun'xm#jb?.sf,vuhsz&idyczP80g8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_801?P6(o{l%~k!hl1,q`*twf}x$ob{at^f28585:2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc95;5>?5Z0.eqb+ta'nf;"j rqlwv*eh}g~Th<2=>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?7;453\:$kh!rg-dh5(ul&x{by| cnwmpZb64=49>6[?/fpe*w`(oe:%~i!}povq+firf}Uo=1;1239V4*aun'xm#jb?.sf,vuhsz&idyczPd0>5:74<]9%l~k }f.eo4+tc'{zex!lotlw[a7;?7897X> gsd-vc)`d9$yh"|nup,gjsi|Vn:050=2:W3+bta&{l$ka>!re-qtkru'je~byQk1=;=64=R8&myj#|i/fn3*wb(zyd~"m`uov\`4Y7:81^<"i}f/pe+bj7&{n$~}`{r.alqkrXl8U:><5Z0.eqb+ta'nf;"j rqlwv*eh}g~Th><5Z0.eqb+ta'nf;"j rqlwv*eh}g~Th45Z0.eqb+ta'nf;"z| gvqp*rus{&i;#no}rxlfp969:01^<"i}f/pe+bj7&~x$kz}|.vqww*e7'jky~t`jt=3=6<=R8&myj#|i/fn3*rt(o~yx"z}{s.a3+fguzpdnx1<1289V4*aun'xm#jb?.vp,crut&~y"m?/bcqv|hb|595>k5Z0.eqb+ta'nf;"z| gvqp*rus{&i;#jczx/en_5[)od;%a<3\:$kh!rg-dh5(pz&m|~ xsuq,g4)di{xrbhz30?0:?P6(o{l%~k!hl1,tv*ap{z$|y} c0-`ewt~fl~7=3<6;T2,cw`)zo%l`= xr.etwv(p{}y$o gsd-vc)`d9$|~"ixsr,twqu(k8%hm|vndv?7;4a3\:$kh!rg-dh5(pz&m|~ xsuq,g4)`e|r%k`U?]/en5+k6:o1^<"i}f/pe+bj7&~x$kz}|.vqww*e6'ng~t#ib[0_-chu)ez8m7X> gsd-vc)`d9$|~"ixsr,twqu(k8%laxv!glY1Y+aj{'gx>k5Z0.eqb+ta'nf;"z| gvqp*rus{&i:#jczx/en_6[)ody%a~/w3?4;443\:$kh!rg-dh5(pz&m|~ xsuq,g4)q95;5>>5Z0.eqb+ta'nf;"z| gvqp*rus{&i:#{?32?00?P6(o{l%~k!hl1,tv*ap{z$|y} c0-u5959::1^<"i}f/pe+bj7&~x$kz}|.vqww*e6';783o5Z0.eqb+ta'nf;"z| gvqp*rus{&i:#{?P1^cm`567888i7X> gsd-vc)`d9$|~"ixsr,twqu(k8%}=RTmcj?012265=R8&myj#|i/fn3*rt(o~yx"z}{s.aliu6582_;#j|i.sd,ci6){%l{~}!wrvp+fijx8837X> gsd-vc)`d9$|~"ixsr,twqu(zhgTjxbc_bmnf7g<]9%l~k }f.eo4+qu'n}x#y|tr-qehYa}efTobcm140:?P6(o{l%~k!hl1,tv*ap{z$|y} r`o\bpjkWjefn?956[?/fpe*w`(oe:%{!hwrq-svrt'{kfSk{cl^alig?5l2_;#j|i.sd,ci6){%l{~}!wrvp+wgjWog`Rm`mc]neu75l2_;#j|i.sd,ci6){%l{~}!wrvp+wgjWog`Rm`mc]neu35l2_;#j|i.sd,ci6){%l{~}!wrvp+wgjWog`Rm`mc]neu>502_;#j|i.sd,ci6){%l{~}!wrvp+wgjWog`Rhm_h06?P6(o{l%~k!hl1,tv*ap{z$|y} r`o\bpjkW`8?7X> gsd-vc)`d9$|~"ixsr,twqu({UyyQk10f8Q5)`zo$yj"ic0/uq+wgjW~xTicQf1318Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkr5<2_;#j|i.sd,ci6){%||cz}/LalqkrXkfex<<;;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw672<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~8>95Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu610>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|<8?7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{6368Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkr0:=1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by6=4:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmp<4>3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSnw30?0`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7<3Q}t3;8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp6:2?m4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\g|:66Vx>45Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]`}949:j1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=0=[wr512_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRmv<2<1g>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vir0>0Pru0:?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7836:Zts:01^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=4=6f=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}Uhu181_sv1=>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vir0:0=c:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZe~4>4T~y<6;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f;078h7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{_b{?<;Yu|;k0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPxnp?4;4f3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSua}<0<1e>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1<12`9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYg{682?o4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\|jt;<78j7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{_ymq8085i2_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRv`r=4=6d=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}Usc28>3c8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx743f:W3+bta&{l$ka>!ws-ttkru'je~by2=>0d8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{<2<2b>S7'nxm"h gm2-sw)pxg~y#naznu>7:4`<]9%l~k }f.eo4+qu'~zex!lotlw8086n2_;#j|i.sd,ci6){%||cz}/bmvjq:168l0Y=!hrg,qb*ak8'}y#z~ats-`kphs4>4:j6[?/fpe*w`(oe:%{!xpovq+firf}632e:W3+bta&{l$ka>!ws-ttkru'je~byQ?1d9V4*aun'xm#jb?.vp,suhsz&idyczP10g8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_33f?P6(o{l%~k!hl1,tv*qwf}x$ob{at^12a>S7'nxm"h gm2-sw)pxg~y#naznu]75`=R8&myj#|i/fn3*rt(yd~"m`uov\14c<]9%l~k }f.eo4+qu'~zex!lotlw[37b3\:$kh!rg-dh5(pz&}{by| cnwmpZ16m2_;#j|i.sd,ci6){%||cz}/bmvjqY?9l1^<"i}f/pe+bj7&~x${}`{r.alqkrX1;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;7<3<=;T2,cw`)zo%l`= xr.usjqt(kfexRj><0<16>S7'nxm"h gm2-sw)pxg~y#naznu]g5949:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl8682?<4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?34?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f28085:2_;#j|i.sd,ci6){%||cz}/bmvjqYc95<5>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<28>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?<;453\:$kh!rg-dh5(pz&}{by| cnwmpZb64049=6[?/fpe*w`(oe:%{!xpovq+firf}Uo=R>=1:W3+bta&{l$ka>!ws-ttkru'je~byQk1^315>S7'nxm"h gm2-sw)pxg~y#naznu]g5Z4592_;#j|i.sd,ci6){%||cz}/bmvjqYc9V99=6[?/fpe*w`(oe:%{!xpovq+firf}Uo=R:=1:W3+bta&{l$ka>!ws-ttkru'je~byQk1^715>S7'nxm"h gm2-sw)pxg~y#naznu]g5Z0592_;#j|i.sd,ci6){%||cz}/bmvjqYc9V=9=6[?/fpe*w`(oe:%{!xpovq+firf}Uo=R6=1:W3+bta&{l$ka>!ws-ttkru'je~byQk1^;5b>S7'nxm"h mdo,cgk)okgl"jlbg`,mc`ed&kgl#obd_lgn[bcim{kc!yamkg*fusz&xjaaa`pZ2^*wgj&{%}8#|nm.QGT+UNFNFNS]\FM/QGT4d<]9%l~k }f.ofi*rjxVxjaR|k_dl2g>S7'nxm"h mdo,phvXzhgT~iQjn030?P6(o{l%~k!}al]tvZci9m1^<"i}f/pe+wusjea$~iQ}su]bwwc`:91^<"i}f/pe+wusjea$~iQ}su]bwwc`Wm;9<6[?/fpe*w`(zz~i`f!}d^pppZgtzlmTh??l;T2,cw`)zo%yylck.pg[wusWjefnd:W3+bta&{l$~~zmlj-q`Ztt|VxnkR>>d:W3+bta&{l$~~zmlj-q`Ztt|VxnkR<>d:W3+bta&{l$~~zmlj-tvZtt|Vkx~hi=0:W3+bta&{l$~~zmlj-tvZtt|Vkx~hiPd003?P6(o{l%~k!}su`oo*quW{ySl}}ef]g64e<]9%l~k }f.pppgjl'~xT~~zPcnoa5a=R8&myj#|i/sqwfim({UyyQlol`25`=R8&myj#|i/sqwfim({UyyQ}ef>2:4b<]9%l~k }f.pppgjl'~xT~~zPrde\5d=R[LXTMAGNSb9VW@TX^@YBNAK<;WA@=>PNM^U_U]K9;VGB85813^OJ0<09;VGB878?3^OJ0>4?>79TAD:46?1\IO2?>79TAG:66?1\IO2=>99TAG:4294=7ZKM<21S_YQHNE58\VRX^JIi7UQLOSG\MK@H991SSNA]E^KMBJYKAZ^=7Ujm_Hfe?]boWYxba[k}shmm55=_ldUFmga}Vdppmjh682RoaRCfnnpUawunggi0mac`su]fiur~j2kgab}{_gwoh3=eija~|i5mabivtZkfzboy?6mcke9geqgXkfex%>&d:fbpdYdg|d$<'k;ecweZeh}g~#>$j4d`vb[firf}"8%i5kauc\gjsi|!>"h6jnt`]`kphs <#o7io{a^alqkr/> n0hlzn_bmvjq.0!m1omyoPcnwmp->.l2njxlQlotlw,2:a=ci}kTob{at=0=`>bf|hUhcx`{<2e9geqgXkfex181d:fbpdYdg|d0:0k;ecweZeh}g~743h4d`vb[firf}626=0k;ecweZeh}g~75394dckwawt13mce$='9;ekm,4/03mce$<>&7:fjj-76!>1oec&>2(58`lh/9:#<7iga(06*3>bnf!;>%;5kio*1-3=cag"8%;5kio*7-3=cag">%;5kio*5-3=cag"<%;5kio*;-3=cag"2%;5kio>3:2=cag6:<394dhl?54803mce0<<17:fjj9746>1oec2>4?;8`lh;9<0;2:5kio>21;0bh}}":>$64dnww,45.02ndyy&>4(:8`jss 8?";6j`uu*1-2=cg|~#?$94dnww,1/03me~x%;&7:flqq.1!>1ocxz'7(58`jss 1#<7iazt);*3>bh}}6;255kotv?558?3me~x1?>>99gkpr;9;437iazt=30:==cg|~7=90n;emvp97229437iazt=36:2=cg|~7=394dnww87803me~x1=17:flqq:36>1ocxz35?58`jss4?4<7iazt=5=3>bh}}632:5kotv?=;>cik5:gntq502lbjbQheogqeqiuW>T>!.Losgdak&>&;$;8dQfp368bpjk?2cexRmck99mcfdraen37bxjrgnlsd=wzfmTi`~{y068twi`Wlg{xtQ{hsgpl-6.9=1{~biPelrw}Zrozlyc$<'>4:rqkbYbey~rSyf}erj+6,733yxdkRkbpu{\pmtb{a"8%<:4psmd[`kw|pUdk|h)6*51=wzfmTi`~{y^vkv`uo <#:86~}of]fiur~W}byi~f'6(37?uthoVof|ywPtipfwm.0!8>0|ah_dosp|Ys`{oxd%6&159svjaXmdzuRzgrdqk,2zycjQjmqvz[qnumzb757>11c9svjaXmdzuRzgrdqk[dutm{~#<$?m;qplcZcjx}sTxe|jsi]bwvcu|!;"=o5rne\ahvsqV~c~h}g_`qpawr/: ;i7}|`g^gntqX|axneQnsrgqp-5.9k1{~biPelrw}ZrozlycSl}|esv+0,7e3yxdkRkbpu{\pmtb{aUj~k}t)7*5g=wzfmTi`~{y^vkv`uoWhyxiz'6(3a?uthoVof|ywPtipfwmYf{zoyx%9&1c9svjaXmdzuRzgrdqk[dutm{~#4$?m;qplcZcjx}sTxe|jsi]bwvcu|!3"=i5rne\ahvsqV~c~h}g_`qpawr;13:5=o5rne\ahvsqV~c~h}g_ogdeqc/8 ;i7}|`g^gntqX|axneQaefcwa-7.9k1{~biPelrw}ZrozlycSckhaug+6,7e3yxdkRkbpu{\pmtb{aUeijo{e)1*5g=wzfmTi`~{y^vkv`uoWgolmyk'4(3a?uthoVof|ywPtipfwmYimnki%;&1c9svjaXmdzuRzgrdqk[kc`i}o#:$?m;qplcZcjx}sTxe|jsi]mabgsm!="=o5rne\ahvsqV~c~h}g_ogdeqc/0 ;i7}|`g^gntqX|axneQaefcwa-?.9m1{~biPelrw}ZrozlycSckhaug?=?6912zycjQiumn27>vugnUmyabPtipfwm.7!890|ah_gwohZrozlyc$<'>3:rqkbYa}efTxe|jsi*1-45vugnUmyabPtipfwm.?!890|ah_gwohZrozlyc$4'>5:rqkbYa}efTxe|jsi>:>586i2zycjQiumn\pmtb{aUj~k}t)2*5d=wzfmTjxbc_ujqavnXizyn~y&>)0c8twi`Wog`Rzgrdqk[dutm{~#>$?n;qplcZ`rdeUdk|h^cpw`ts :#:m6~}of]eqijX|axneQnsrgqp-2.9h1{~biPftno[qnumzbTm~}jru*6-4ga:rqkbYa}efTxe|jsi]bwvcu|!2"=l5rne\bpjkW}byi~fParqfvq.>!8i0|ah_gwohZrozlycSl}|esv?=?699h1{~biPftno[qnumzbTbhintd*3-4ga:rqkbYa}efTxe|jsi]mabgsm!9"=l5rne\bpjkW}byi~fPndebp`.3!8k0|ah_gwohZrozlycSckhaug+1,7f3yxdkRhzlm]wlwct`Vdnklzj(7+2e>vugnUmyabPtipfwmYimnki%9&1`9svjaXn|fgSyf}erj\j`af|l"3%4re]geqgXkfex%:&119q`Zbf|hUhcx`{(4+24>tcWmkmRm`uov+2,773{nThlzn_bmvjq.0!8:0~iQkauc\gjsi|!2"==5}d^fbpdYdg|d$4'>0:pg[agsiVidycz30?31?wbXlh~jSnaznu>:>5823{nTic84re]qwq5uu{}8;7yc/^ad+sou|lr?Skgio^35|465<'dlc45znegqbiip=2|j`dj>4:tjvqc6y33614b3cyxhv;_gkekZ71p8:98Rhffn]dakcui}eyS{:P2^zppZ713~xTmne9;vp\gim682}ySio{a^alqkr/8 ;;7z|Pd`vb[firf}":%<>4ws]geqgXkfex%<&119tvZbf|hUhcx`{(2+24>quWmkmRm`uov+0,773~xThlzn_bmvjq.2!8:0{Qkauc\gjsi|!<"==5xr^fbpdYdg|d$:'>0:uq[agsiVidycz'8(33?rtXlh~jSnaznu*:-44<{UomyoPcnwmp9?=87?0{Qjn79tvZtt|tJK|:69;AB{7fg=N3>1=v]:7;15`?3=9:8onho535;f`~h48l0:7c=?f;68 66d2::>7p]:6;15`?3=9:8onho535;f`>U6=?08;?4?:011`gcf2:>2ik5\578037<72899hokn:26:b5=c;jn1<7?51zQ63?51l3?1=>569U75b=:r:9k4>;t354?6;c1``?6=;8086>?tH3d0?_2e2:q:>7?>:b8~ 4d72:io7)=?a;15b>\48k09w>8i:24e>xi4kj0;66g>o4lj0;66a<7183>>i4>l0;66g<1583>>o4k>0;66a<5283>!7>m39=>6`>9e83?>i4=;0;6)?6e;156>h61m0:76a<5083>!7>m39=>6`>9e81?>i4=90;6)?6e;156>h61m0876a<4g83>!7>m39=>6`>9e87?>i4h61m0>76a<5c83>!7>m39=>6`>9e85?>i4=h0;6)?6e;156>h61m0<76a<5883>!7>m39=>6`>9e8;?>i4=10;6)?6e;156>h61m0276a<5683>!7>m39=>6`>9e8b?>i4=?0;6)?6e;156>h61m0i76a<5483>!7>m39=>6`>9e8`?>i4==0;6)?6e;156>h61m0o76a<4e83>!7>m39=>6`>9e8f?>i4h61m0m76g<3383>!7>m39?=6`>9e83?>o4;80;6)?6e;175>h61m0:76g<3183>!7>m39?=6`>9e81?>o4:o0;6)?6e;175>h61m0876g<2d83>!7>m39?=6`>9e87?>o4:m0;6)?6e;175>h61m0>76g<3`83>!7>m39?=6`>9e85?>o4;00;6)?6e;175>h61m0<76g<3983>!7>m39?=6`>9e8;?>o4;>0;6)?6e;175>h61m0276g<3783>!7>m39?=6`>9e8b?>o4;<0;6)?6e;175>h61m0i76g<3583>!7>m39?=6`>9e8`?>o4;:0;6)?6e;175>h61m0o76g<2b83>!7>m39?=6`>9e8f?>o4:k0;6)?6e;175>h61m0m76a<1d83>!7>m39946`>9e83?>i49m0;6)?6e;11<>h61m0:76a<1b83>!7>m39946`>9e81?>i49k0;6)?6e;11<>h61m0876a<1`83>!7>m39946`>9e87?>i4900;6)?6e;11<>h61m0>76a<1983>!7>m39946`>9e85?>i49>0;6)?6e;11<>h61m0<76a<1783>!7>m39946`>9e8;?>i49<0;6)?6e;11<>h61m0276l=f583>4<729qC>k=4$0`3>7`33f;2n7>5;|`245<7280;6=uG2g18 4d728:;7bhi:188yg2f2902>7mm:dgxL7`43S>i6<8t6;c9`?1=m331=?4>1;`9g?>=k3o1=?4k:6825?d=i3314785}%3a4?5dm2.:9>4ie:&04d<4>o1/=48518c8k6772900e>m9:188m61b290/=4k536d8j4?c2910e>9k:18'5l0b<7k:098m61d290/=4k536d8j4?c2;10e>9m:18'5l0b<7k:298m61f290/=4k536d8j4?c2=10e>96:18'5l0b<7k:498m61?290/=4k536d8j4?c2?10e>98:18'5l0b<7k:698m611290/=4k536d8j4?c2110e>9::18'5l0b<7k:898k6?12900e>m6:188k6ed2900e>om:18'5o6:18'5o8:18'5o::18'510e>o<:18'5m::188k6132900c>9<:188m6742900c>m=:18'50b<7k:198k6e6290/=4k53b68j4?c2810c>m?:18'50b<7k:398k6da290/=4k53b68j4?c2:10c>lj:18'50b<7k:598k6dc290/=4k53b68j4?c2<10c>ll:18'50b<7k:798k6de290/=4k53b68j4?c2>10c>ln:18'50b<7k:998k6d>290/=4k53b68j4?c2010e>66:18'5?290/=4k539c8j4?c2810e>68:18'51290/=4k539c8j4?c2:10e>6::18'53290/=4k539c8j4?c2<10e>6<:18'55290/=4k539c8j4?c2>10e>6>:18'57290/=4k539c8j4?c2010e>jl:188k6bf290/=4k53e`8j4?c2910c>j6:18'5j8:18'5j::18'5j<:18'5j>:18'58j:188m6b72900e>o?:18'57j:18'57l:18'57n:18'5290/=4k53`38j4?c2>10e>77:18'59>:188m6732900e>jk:188k6e?2900c>mi:188k6ee2900e>m8:188k634290/=4k53708j4?c2910c>;=:18'5;?:18'5:j:18'5;n:18'5290/=4k53708j4?c2110c>;7:18'5;9:18'5;;:18'5:l:18'5=>:18'5=6:18'5=8:18'5=::18'5=<:18'5?=:188m6d1290/=4k53c58j4?c2910e>l::18'5l<:18'5l>:18'5oi:18'5ok:18'5?k:18'5?m:18'5?6:18'5?8:18'5?::18'57;:18'57=:18'57?:18'5a290/=4k53878j4?c2<10e>6j:18'5c290/=4k53878j4?c2>10e>6l:18'5e290/=4k53878j4?c2010e>l7:188f66?290:6=4?{%3a4?7782B8<:5G2g18kc`=831vn>>6:182>5<7s-;i<750z&2f5<,8:o6<5f4b83>>o203:17b?n0;29?xd5mm0;6>4?:1y'5g6=n01C?=94H3d0?M2?3-;;h7?4i5a94?=n=10;66a>a183>>{e:l91<7=50;2x 4d72o30D>>8;I0e7>N302.:;h6`>5<5<7>55;294~"6j90mh6F<069K6c5<@=20(<>k:09j0f<722c>=7>5;h7;>5<5<54;294~"6j90mo6F<069K6c5<,8:o6<5f4b83>>o203:17d?6f;29?j7f83:17pl=e883>1<729q/=o>5fb9K751<@;l87)??d;38m1e=831b954?::k2=c<722e:m=4?::a6c7=83>1<7>t$0`3>ce<@::<7Eh6=44i4:94?=n90l1<75`1`294?=zj;;;6=4;:183!7e83lh7E=?7:J1b6=#99n186g;c;29?l3?2900e<7i:188k4g72900qo<>4;290?6=8r.:n=4ic:J042=O:o90(<>k:59j0f<722c>47>5;h3:b?6=3f;j<7>5;|`2f4<72=0;6=u+1c29bd=O;9=0D?h<;%33`?7>o203:17b?n0;29?xd50j0;694?:1y'5g6=nj1C?=94H3d0?!77l3;0e9m50;9j1=<722c:5k4?::m2e5<722wi>5j50;694?6|,8h;6km4H224?M4a;2.:5<5<3290;w)?m0;d`?M57?2B9j>5+11f95>o3k3:17d;7:188m4?a2900c50z&2f5<6=l1C?=94H3d0?l352900e8750;9j5d>=831d=4750;9~f4b529086=4?{%3a4?57>2B8<:5G2g18m04=831b=8:50;9l55<7s-;i<7?:e:J042=O:o90e8<50;9j1<<722c:m54?::m2=<<722wi=i=50;194?6|,8h;6>>9;I133>N5n:1b9?4?::k211<722e:544?::a5f7=83>1<7>t$0`3>43b3A9;;6F=f29j17<722c>57>5;h3b5;|`2`1<72:0;6=u+1c29750<@::<7E87>5;n3:=?6=3th:o?4?:583>5}#9k:1=8k4H224?M4a;2c>>7>5;h7:>5<5<53;294~"6j908<;5G3158L7`43`?96=44i077>5<b1821`=O;9=0D?h<;h71>5<5<4290;w)?m0;132>N48>1C>k=4i4094?=n9<>1<75`18;94?=zj8i?6=4;:183!7e83;>i6F<069K6c5>o6i10;66a>9883>>{e9m=1<7=50;2x 4d72::=7E=?7:J1b6=n=;0;66g>5583>>i6100;66sm1b794?2=83:p(5f5383>>o213:17d?n8;29?j7>13:17pl>d983>6<729q/=o>53148L6603A8m?6g:2;29?l72<3:17b?69;29?xd6k?0;694?:1y'5g6=9>8;I0e7>o2:3:17d;6:188m4g?2900c<76:188yg7c13:1?7>50z&2f5<48?1C?=94H3d0?l352900e<;;:188k4?>2900qo?l7;290?6=8r.:n=4>5d9K751<@;l87d;=:188m0?=831b=l650;9l55<7s-;i<7=?6:J042=O:o90e8<50;9j502=831d=4750;9~f4be29086=4?{%3a4?57>2B8<:5G2g18m04=831b=8:50;9l55<7s-;i<7hm;I133>N5n:1/==j51:k7g?6=3`?:6=44i4794?=n=10;66a>a183>>{e9mn1<7;50;2x 4d72oh0D>>8;I0e7>"68m0:7d:l:188m07=831b984?::k65;|`2``<72<0;6=u+1c29bg=O;9=0D?h<;%33`?7>o2=3:17d;7:188k4g72900qo?kf;291?6=8r.:n=4ib:J042=O:o90(<>k:09j0f<722c>=7>5;h76>5<t$0`3>cd<@::<7Eh6=44i4394?=n=<0;66g:8;29?j7f83:17pl>e383>0<729q/=o>5fc9K751<@;l87)??d;38m1e=831b9<4?::k61?6=3`?36=44o0c3>5<55;294~"6j90mn6F<069K6c5<,8:o6<5f4b83>>o293:17d;::188m0>=831d=l>50;9~f4c3290>6=4?{%3a4?`e3A9;;6F=f29'55b=92c?o7>5;h72>5<>i6i90;66sm1d794?3=83:p(0e82?l2d2900e8?50;9j10<722c>47>5;n3b4?6=3th:j=4?:583>5}#9k:1=8k4H224?M4a;2c>>7>5;h7:>5<5<54;294~"6j90:9h5G3158L7`43`?96=44i4;94?=n9h21<75`18;94?=zj8on6=4;:183!7e83;>i6F<069K6c5>o6i10;66a>9883>>{e9ln1<7:50;2x 4d728?n7E=?7:J1b6=n=;0;66g:9;29?l7f03:17b?69;29?xd6mj0;694?:1y'5g6=9>8;I0e7>o2:3:17d;6:188m4g?2900c<76:188yg47;3:187>50z&2f5<6=l1C?=94H3d0?l352900e8750;9j5d>=831d=4750;9~f765290?6=4?{%3a4?72m2B8<:5G2g18m04=831b944?::k2e=<722e:544?::a657=83>1<7>t$0`3>43b3A9;;6F=f29j17<722c>57>5;h3b5;|`145<72=0;6=u+1c2950c<@::<7E5<b1821`=O;9=0D?h<;h71>5<5<3290;w)?m0;36a>N48>1C>k=4i4094?=n=00;66g>a983>>i6100;66sm27a94?2=83:p(5f5383>>o213:17d?n8;29?j7>13:17pl=6c83>1<729q/=o>514g8L6603A8m?6g:2;29?l3>2900e2900qo<9a;290?6=8r.:n=4>5d9K751<@;l87d;=:188m0?=831b=l650;9l55<7s-;i<7?:e:J042=O:o90e8<50;9j1<<722c:m54?::m2=<<722wi>:850;694?6|,8h;6<;j;I133>N5n:1b9?4?::k6=?6=3`;j47>5;n3:=?6=3th9;84?:583>5}#9k:1=8k4H224?M4a;2c>>7>5;h7:>5<5<54;294~"6j90:9h5G3158L7`43`?96=44i4;94?=n9h21<75`18;94?=zj;=86=4;:183!7e83;>i6F<069K6c5>o6i10;66a>9883>>{e:>81<7:50;2x 4d728?n7E=?7:J1b6=n=;0;66g:9;29?l7f03:17b?69;29?xd5=90;684?:1y'5g6=nk1C?=94H3d0?!77l3;0e9m50;9j14<722c>97>5;h7;>5<b18ef>N48>1C>k=4$02g>4=n5<7s-;i<7hm;I133>N5n:1/==j51:k7g?6=3`?:6=44i4794?=n=10;66a>a183>>{e:=i1<7;50;2x 4d72oh0D>>8;I0e7>"68m0:7d:l:188m07=831b984?::k65;|`10`<72<0;6=u+1c29bg=O;9=0D?h<;%33`?7>o2=3:17d;7:188k4g72900qo<;b;291?6=8r.:n=4ib:J042=O:o90(<>k:09j0f<722c>=7>5;h76>5<j6=4::183!7e83li7E=?7:J1b6=#99n1=6g;c;29?l362900e8;50;9j1=<722e:m=4?::a61>=83?1<7>t$0`3>cd<@::<7Eh6=44i4394?=n=<0;66g:8;29?j7f83:17pl=4683>0<729q/=o>5fe9K751<@;l87)??d;68m1e=831b9<4?::k65;n3b4?6=3th9844?:483>5}#9k:1jo5G3158L7`43-;;h7?4i5a94?=n=80;66g:5;29?l3?2900c50z&2f5<48?1C?=94H3d0?l352900e<;;:188k4?>2900qo<50z&2f5<6=l1C?=94H3d0?l352900e8750;9j5d>=831d=4750;9~f75>29086=4?{%3a4?57>2B8<:5G2g18m04=831b=8:50;9l55<7s-;i<7?:e:J042=O:o90e8<50;9j1<<722c:m54?::m2=<<722wi>>650;194?6|,8h;6>>9;I133>N5n:1b9?4?::k211<722e:544?::a67e=83>1<7>t$0`3>43b3A9;;6F=f29j17<722c>57>5;h3b5;|`172<72:0;6=u+1c29750<@::<7E87>5;n3:=?6=3th9>l4?:583>5}#9k:1=8k4H224?M4a;2c>>7>5;h7:>5<5<53;294~"6j908<;5G3158L7`43`?96=44i077>5<b1821`=O;9=0D?h<;h71>5<5<4290;w)?m0;132>N48>1C>k=4i4094?=n9<>1<75`18;94?=zj;8=6=4;:183!7e83;>i6F<069K6c5>o6i10;66a>9883>>{e::>1<7=50;2x 4d72::=7E=?7:J1b6=n=;0;66g>5583>>i6100;66sm23694?2=83:p(5f5383>>o213:17d?n8;29?j7>13:17pl=3283>6<729q/=o>53148L6603A8m?6g:2;29?l72<3:17b?69;29?xd5:;0;694?:1y'5g6=9>8;I0e7>o2:3:17d;6:188m4g?2900c<76:188yg44:3:1?7>50z&2f5<48?1C?=94H3d0?l352900e<;;:188k4?>2900qo<=0;290?6=8r.:n=4>5d9K751<@;l87d;=:188m0?=831b=l650;9l55<7s-;i<7hm;I133>N5n:1/==j51:k7g?6=3`?:6=44i4794?=n=10;66a>a183>>{e:?91<7;50;2x 4d72oh0D>>8;I0e7>"68m0:7d:l:188m07=831b984?::k65;|`127<72<0;6=u+1c29bg=O;9=0D?h<;%33`?7>o2=3:17d;7:188k4g72900qo<91;291?6=8r.:n=4ib:J042=O:o90(<>k:09j0f<722c>=7>5;h76>5<t$0`3>cd<@::<7Eh6=44i4394?=n=<0;66g:8;29?j7f83:17pl=5d83>0<729q/=o>5fc9K751<@;l87)??d;38m1e=831b9<4?::k61?6=3`?36=44o0c3>5<h7>55;294~"6j90mn6F<069K6c5<,8:o6<5f4b83>>o293:17d;::188m0>=831d=l>50;9~f73d290>6=4?{%3a4?`e3A9;;6F=f29'55b=92c?o7>5;h72>5<>i6i90;66sm24`94?3=83:p(0e82?l2d2900e8?50;9j10<722c>47>5;n3b4?6=3th9o44?:483>5}#9k:1jo5G3158L7`43-;;h7?4i5a94?=n=80;66g:5;29?l3?2900c50z&2f56=44i4:94?=h9h:1<75rb3a5>5<2290;w)?m0;da?M57?2B9j>5+11f95>o3k3:17d;>:188m03=831b954?::m2e5<722wi>n;50;794?6|,8h;6kl4H224?M4a;2.:;h6`>5<>o203:17b?n0;29?xd5k>0;684?:1y'5g6=nk1C?=94H3d0?!77l3;0e9m50;9j14<722c>97>5;h7;>5<b18ef>N48>1C>k=4$02g>4=n5<7s-;i<7hm;I133>N5n:1/==j51:k7g?6=3`?:6=44i4794?=n=10;66a>a183>>{e:j;1<7;50;2x 4d72oh0D>>8;I0e7>"68m0:7d:l:188m07=831b984?::k65;|`1g5<72<0;6=u+1c29ba=O;9=0D?h<;%33`?2>o203:17d?6f;29?j7f83:17pl=c383>0<729q/=o>5fc9K751<@;l87)??d;38m1e=831b9<4?::k61?6=3`?36=44o0c3>5<53;294~"6j908<;5G3158L7`43`?96=44i077>5<b18043=O;9=0D?h<;h71>5<5<54;294~"6j90:9h5G3158L7`43`?96=44i4;94?=n9h21<75`18;94?=zj;h96=4<:183!7e839;:6F<069K6c55<3290;w)?m0;36a>N48>1C>k=4i4094?=n=00;66g>a983>>i6100;66sm2c394?5=83:p(5f5383>>o6==0;66a>9883>>{e:h?1<7:50;2x 4d728?n7E=?7:J1b6=n=;0;66g:9;29?l7f03:17b?69;29?xd5j90;6>4?:1y'5g6=;9<0D>>8;I0e7>o2:3:17d?:4;29?j7>13:17pl=a283>1<729q/=o>514g8L6603A8m?6g:2;29?l3>2900e2900qo50z&2f5<6=l1C?=94H3d0?l352900e8750;9j5d>=831d=4750;9~f7gb29086=4?{%3a4?57>2B8<:5G2g18m04=831b=8:50;9l55<7s-;i<7?:e:J042=O:o90e8<50;9j1<<722c:m54?::m2=<<722wi>lj50;194?6|,8h;6>>9;I133>N5n:1b9?4?::k211<722e:544?::a61<7>t$0`3>43b3A9;;6F=f29j17<722c>57>5;h3b5;|`1ef<72:0;6=u+1c29750<@::<7E87>5;n3:=?6=3th95o4?:583>5}#9k:1=8k4H224?M4a;2c>>7>5;h7:>5<5<53;294~"6j908<;5G3158L7`43`?96=44i077>5<b1821`=O;9=0D?h<;h71>5<5<2290;w)?m0;da?M57?2B9j>5+11f95>o3k3:17d;>:188m03=831b954?::m2e5<722wi>im50;794?6|,8h;6kl4H224?M4a;2.:;h6`>5<>o203:17b?n0;29?xd5lk0;684?:1y'5g6=nk1C?=94H3d0?!77l3;0e9m50;9j14<722c>97>5;h7;>5<b18ef>N48>1C>k=4$02g>4=n5<7s-;i<7hm;I133>N5n:1/==j51:k7g?6=3`?:6=44i4794?=n=10;66a>a183>>{e:m21<7;50;2x 4d72oh0D>>8;I0e7>"68m0:7d:l:188m07=831b984?::k65;|`1`2<72<0;6=u+1c29bg=O;9=0D?h<;%33`?7>o2=3:17d;7:188k4g72900qok:09j0f<722c>=7>5;h76>5<6=4::183!7e83li7E=?7:J1b6=#99n1=6g;c;29?l362900e8;50;9j1=<722e:m=4?::a6a2=83?1<7>t$0`3>cd<@::<7Eh6=44i4394?=n=<0;66g:8;29?j7f83:17pl=eg83>6<729q/=o>514;8L6603A8m?6*>0e82=>o6880;66g>0383>>i6100;66sm2d494?5=83:p(5+11f95<=n99;1<75f11094?=h9031<75rb0`0>5<4290;w)?m0;36=>N48>1C>k=4$02g>4?5<b1821a=O;9=0D?h<;%33`?423`;;=7>5;h336?6=3`;;?7>5;h330?6=3f;257>5;|`14a<72<0;6=u+1c2950b<@::<7E4?::k241<722e:544?::a62`=83?1<7>t$0`3>43c3A9;;6F=f29'55b=:<1b==?50;9j554=831b===50;9j552=831d=4750;9~f76d290>6=4?{%3a4?72l2B8<:5G2g18 46c2;?0e<>>:188m4652900e<><:188m4632900c<76:188yg40m3:197>50z&2f5<6=m1C?=94H3d0?!77l38>7d??1;29?l77:3:17d??3;29?l77<3:17b?69;29?xd58k0;684?:1y'5g6=9>8;I0e7>"68m0996g>0083>>o68;0;66g>0283>>o68=0;66a>9883>>{e:>n1<7;50;2x 4d728?o7E=?7:J1b6=#99n1>85f11394?=n9981<75f11194?=n99>1<75`18;94?=zj;:j6=4::183!7e83;>h6F<069K6c5<,8:o6?;4i022>5<5<5<53;294~"6j90:945G3158L7`43-;;h7?6;h335?6=3`;;>7>5;n3:=?6=3th9;n4?:483>5}#9k:1=8j4H224?M4a;2.:=750;794?6|,8h;6<;k;I133>N5n:1/==j5249j557=831b==<50;9j555=831b==:50;9l55<7s-;i<7?:d:J042=O:o90(<>k:378m4662900e<>=:188m4642900e<>;:188k4?>2900qo?i8;291?6=8r.:n=4>5e9K751<@;l87)??d;06?l7793:17d??2;29?l77;3:17d??4;29?j7>13:17pl>f783>0<729q/=o>514f8L6603A8m?6*>0e811>o6880;66g>0383>>o68:0;66g>0583>>i6100;66sm1g694?3=83:p(5+11f960=n99;1<75f11094?=n9991<75f11694?=h9031<75rb0d1>5<2290;w)?m0;36`>N48>1C>k=4$02g>735<5<b1821a=O;9=0D?h<;%33`?473`;;=7>5;h336?6=3`;;?7>5;h330?6=3f;257>5;|`1<1<72=0;6=u+1c2950d<@::<7E4?::m2=<<722wi>5850;794?6|,8h;6<;k;I133>N5n:1/==j5f69j557=831b==<50;9j555=831b==:50;9l55<7s-;i<7?:9:J042=O:o90(<>k:0;8m4662900e<>=:188k4?>2900qo<<1;296?6=8r.:n=4>599K751<@;l87)??d;30?l7793:17b?69;29?xd5:o0;6?4?:1y'5g6=9<20D>>8;I0e7>"68m0:?6g>0083>>i6100;66sm23f94?4=83:p(5+11f956=n99;1<75`18;94?=zj;8i6=4=:183!7e83;>46F<069K6c5<,8:o6<=4i022>5<b1821==O;9=0D?h<;%33`?743`;;=7>5;n3:=?6=3th9>:4?:383>5}#9k:1=864H224?M4a;2.:3:k244<722e:544?::a673=8381<7>t$0`3>43?3A9;;6F=f29'55b=9:1b==?50;9l55<7s-;i<7?:8:J042=O:o90(<>k:018m4662900c<76:188yg4593:1>7>50z&2f5<6=11C?=94H3d0?!77l3;87d??1;29?j7>13:17pl=a`83>7<729q/=o>514:8L6603A8m?6*>0e827>o6880;66a>9883>>{e:h21<7<50;2x 4d728?37E=?7:J1b6=#99n1=>5f11394?=h9031<75rb3c5>5<5290;w)?m0;36<>N48>1C>k=4$02g>455<52;294~"6j90:955G3158L7`43-;;h7?<;h335?6=3f;257>5;|`1e7<72;0;6=u+1c2950><@::<7El>50;094?6|,8h;6<;7;I133>N5n:1/==j5129j557=831d=4750;9~f7?b29096=4?{%3a4?7202B8<:5G2g18 46c2890e<>>:188k4?>2900qo<6c;296?6=8r.:n=4>599K751<@;l87)??d;30?l7793:17b?69;29?xd51h0;6?4?:1y'5g6=9<20D>>8;I0e7>"68m0:?6g>0083>>i6100;66sm22a94?4=83:p(5+11f956=n99;1<75`18;94?=zj;h>6=4=:183!7e83;>46F<069K6c5<,8:o6<=4i022>5<b1821g=O;9=0D?h<;%33`?453`;;=7>5;h336?6=3`;;?7>5;n3:=?6=3th:o44?:583>5}#9k:1=8l4H224?M4a;2.:1<7>t$0`3>43e3A9;;6F=f29'55b=:?1b==?50;9j554=831b===50;9l55<7s-;i<7?:b:J042=O:o90(<>k:348m4662900e<>=:188m4642900c<76:188yg7dk3:187>50z&2f5<6=k1C?=94H3d0?!77l38=7d??1;29?l77:3:17d??3;29?j7>13:17pl>ce83>1<729q/=o>514`8L6603A8m?6*>0e812>o6880;66g>0383>>o68:0;66a>9883>>{e9jo1<7:50;2x 4d728?i7E=?7:J1b6=#99n1>;5f11394?=n9981<75f11194?=h9031<75rb0ae>5<3290;w)?m0;36f>N48>1C>k=4$02g>705<5<54;294~"6j90:9o5G3158L7`43-;;h7<9;h335?6=3`;;>7>5;h337?6=3f;257>5;|`1a5<72=0;6=u+1c2950d<@::<7E4?::m2=<<722wi=i?50;694?6|,8h;6<;m;I133>N5n:1/==j5279j557=831b==<50;9j555=831d=4750;9~f7>2290>6=4?{%3a4?72l2B8<:5G2g18 46c28>0e<>>:188m4652900e<><:188m4632900c<76:188yg7b?3:197>50z&2f5<6=m1C?=94H3d0?!77l3887d??1;29?l77:3:17d??3;29?l77<3:17b?69;29?xd5ll0;6n<50;2x 4d728k:7E=?7:J1b6=]0;36>40=9h0:n7?l:0f952<603;n65+13097>"6::087)?=4;18 4422:1/=?853:&262<43-;947=4$00:>6=#9;k1?6*>2c80?!75k390(<k4<;%304?5<,89:6>5+12097>"6;:087)?<4;18 4522:1/=>853:&272<43-;847=4$01:>6=#9:k1?6*>3c80?!74k390(<=k:29'56c=;2.:?k4<;%374?5<,8>:6>5+15097>"6<:087)?;4;18 4222:1/=9853:&202<43-;?47=4$06:>6=#9=k1?6*>4c80?!73k390(<:k:29'506=9020(<:j:39'51`=:2.:<84<;%332?5<,8:<6>5+11:97>"680087)??a;18 4362o20(<;=:g:8 4g528337)?n3;3:<>h6i=0:>6`>a4826>"6ih0:555+11`97>hd?3:0bh750:&2e<5+10297>"698087)?>2;18 4742:1/=<:53:&250<43-;::7=4$034>6=#9821?6*>1880?!76i390(5+11a97>"48808<=5+310975644<,8ko6?5f4e83>>o3m3:17d;<:188m02=831bj94?::k2e3<722c:m:4?::ke1?6=3`;ji7>5;h3bb?6=3f>m6=44o4294?=n:l0;6)?6e;0g?k7>l3:07d!7>m38o7c?6d;68?l50290/=4k52e9m55<#90o1>i5a18f93>=n;=0;6)?6e;0g?k7>l3207d=<:18'5!7>m38o7c?6d;a8?l4a290/=4k52e9m554?:%3:a?4c3g;2h7k4;h1f>5<#90o1?i5a18f94>=n;j0;6)?6e;1g?k7>l3;07d=m:18'5!7>m39o7c?6d;78?l21290/=4k53e9m521b884?:%3:a?5c3g;2h794;h67>5<#90o1?i5a18f9<>=n<:0;6)?6e;1g?k7>l3307d:=:18'5;6=4+18g97a=i90n1o65f3g83>!7>m39o7c?6d;f8?l5?290/=4k53e9m54?:%3:a?153g;2h7>4;h52>5<#90o1;?5a18f95>=n>o0;6)?6e;51?k7>l3807d8j:18'5!7>m3=97c?6d;48?l0f290/=4k5739m55<#90o1;?5a18f9=>=n>>0;6)?6e;51?k7>l3k07d89:18'5!7>m3=97c?6d;g8?l06290/=4k5739m547<3`?n6=4+18g937=i90n1=?54i4f94?"61l0<>6`>9e827>=n=j0;6)?6e;51?k7>l3;?76g:b;29 4?b2>80b<7k:078?l1f290/=4k5739m57:9j3=<72-;2i79=;o3:`?7?32c<;7>5$0;f>245<#90o1;?5a18f95d=?1<7*>9d846>h61m0:n65f7583>!7>m3=97c?6d;3`?>o083:1(<7j:608j4?c28n07d8::18'54;h;1>5<#90o15>5a18f95>=n190;6)?6e;;0?k7>l3807d6i:18'5!7>m3387c?6d;48?l>e290/=4k5929m55<#90o15>5a18f9=>=n010;6)?6e;;0?k7>l3k07d68:18'5!7>m3387c?6d;g8?l>5290/=4k5929m547<3`=m6=4+18g9=6=i90n1=?54i6g94?"61l02?6`>9e827>=n?m0;6)?6e;;0?k7>l3;?76g8c;29 4?b2090b<7k:078?l?e290/=4k5929m5;2d:5i4>7:9j=<<72-;2i77<;o3:`?7?32c247>5$0;f><55<#90o15>5a18f95d=9d8:7>h61m0:n65f9483>!7>m3387c?6d;3`?>o>93:1(<7j:818j4?c28n07d69:18'54;h;f>5<#90o15k5a18f95>=n1m0;6)?6e;;e?k7>l3807d7l:18'5!7>m3k?7c?6d;08?lg6290/=4k5a59m5ko50;&2=`<5n01e=4j50:9j6c>=83.:5h4=f89m5k950;&2=`<5n01e=4j52:9j6c0=83.:5h4=f89m5kh50;&2=`<5nl1e=4j50:9j6cb=83.:5h4=fd9m5km50;&2=`<5nl1e=4j52:9j6cd=83.:5h4=fd9m54;n`g>5<#90o1nh5a18f95>=hjk0;6)?6e;`f?k7>l3807bln:18'5!7>m3hn7c?6d;48?jd1290/=4k5bd9m55<#90o1nh5a18f9=>=hj:0;6)?6e;`f?k7>l3k07bl=:18'5!7>m3hn7c?6d;g8?jgc290/=4k5bd9m547<3fkj6=4+18g9f`=i90n1=?54o`;94?"61l0ii6`>9e827>=hi10;6)?6e;`f?k7>l3;?76an7;29 4?b2ko0b<7k:078?je1290/=4k5bd9m57:9lg1<72-;2i7lj;o3:`?7?32eh?7>5$0;f>gc5<#90o1nh5a18f95d=9d8aa>h61m0:n65`c183>!7>m3hn7c?6d;3`?>iek3:1(<7j:cg8j4?c28n07bl>:18'54;nfe>5<#90o1i=5a18f95>=hlm0;6)?6e;g3?k7>l3807bjl:18'5!7>m3o;7c?6d;48?jb?290/=4k5e19m55<#90o1i=5a18f9=>=hl<0;6)?6e;g3?k7>l3k07bj;:18'5!7>m3o;7c?6d;g8?jea290/=4k5e19m54n0;g>47<3fih6=4+18g9a5=i90n1=?54ob`94?"61l0n<6`>9e827>=hkh0;6)?6e;g3?k7>l3;?76al9;29 4?b2l:0b<7k:078?jc?290/=4k5e19m57:9la3<72-;2i7k?;o3:`?7?32en97>5$0;f>`65<#90o1i=5a18f95d=9d8f4>h61m0:n65`e383>!7>m3o;7c?6d;3`?>icm3:1(<7j:d28j4?c28n07bj<:18'5=83.:5h4j0:l2=a<6n21dih4?:%3:a?cc3g;2h7>4;ng`>5<#90o1ii5a18f95>=hmk0;6)?6e;gg?k7>l3807bkn:18'5!7>m3l97c?6d;08?jca290/=4k5f39m55<7s-;i<7?:a:J042=O:o90(<>k:368m4662900e<>=:188k4322900qo<77;290?6=8r.:n=4>5b9K751<@;l87)??d;d5?l7793:17d??2;29?l77;3:17b?:5;29?xu49=0;69:t^237?84b<3>h70h70h70h70h70<>0;6`?846<3>h70?m1;6`?84?k3>h70<7d;6`?84?j3>h70?kc;6`?87cl3>h70?ke;6`?87cn3>h70?j0;6`?87b93>h70?j2;6`?87b;3>h70?j4;6`?87b=3>h70<:0;6`?843n3>h70<;d;6`?843k3>h70<;e;6`?843j3>h70<;a;6`?84303>h70<;7;6`?84313>h70<94;6`?841;3>h70<92;6`?84193>h70<90;6`?842n3>h70<:e;6`?842l3>h70<:c;6`?842j3>h70h70h70h70h70h70h70h70h703>h70h7044|V:i>70?m3;336>;59<0:<;<3`e?77;27:oo4>029>5fe=99901cg8246=:9m:1===4=3g3>46434;o=7??3:?1<0<68=16=h951118977428:970<77;335>{t;j91<77:{_11e>X4981U?nh4^2aa?[5682T8o55Q3618Z6133W92:6Pj;;_1g7>X4l;1U?i?4^2a1?[5d92T8o=5Q3cd8Z6db3W9ih6P4:9:?137<21279?=4:9:?16`<21279>n4:9:?16d<21279>54:9:?163<21279>94:9:?167<21279>=4:9:?1e<<21279m:4:9:?1e0<21279m>4:9:?1e4<212795k4:9:?1=a<212795o4:9:?1=<<21279hh4;d:?1``<3m279hh4>a79>6ac=9h=01?jj:0cf?84cm38n70:70707070km4=3ff>7`e3ty8o:4?:2y]7f1<5;oi6<7i;<0f6?7>n2wx?;k50;1xZ60b348:87?n0:?2f6<6881v>jl:187[5ck2794h4>039>6=3=999017}Y;>:01?6l:0c3?xu4:00;6>uQ30g894c228k;70?k1;335>{t;;=1<7:t^23g?87d?3?270?j4;3b4>;6l90:<<5rs205>5<3sW9:o63>c786=>;6m:0:m=521bd955754z\05g=:9j?194521d095d6<58in6<>>;|q061<72=qU?0?<58o:634;h?7;6;<3f4?7f827:on4>009~w645290?wS=>8:?2g7<2127:hk4>a19>5fd=99;0q~==1;290~X49>16=n?5589>5ac=9h:0170?mf;7:?87ck3;j<63>c98244=z{:<86=4={_167>;5ll0hi6s|37394?4|V:?97090;6?uQ343897bb2ji0q~=:f;296~X4=916>ik5cc9~w63b2909wS=;f:?1```>52z\01d=::mo1i:5rs24b>5<5sW9>563=dd8f2>{t;?31<77p}<6983>7}Y;<=01?jj:d68yv51?3:1>vP<579>6ac=m:1v>89:181[52=279hh4j2:p733=838pR>;;;<0ga?bb3ty8:94?:3y]71b<5;nn6i=4}r16g?6=:rT88n522eg9g==z{:>96=4={_106>;5ll0=<6s|35294?4|V:9:70ik55e9~w65c2909wS==e:?1``<2k2wx?>m50;0xZ64c348oi7;m;|q00g<72;qU?>o4=3ff>2g52z\07<=::mo1;45rs26:>5<5sW98463=dd84<>{t;=21<77}Y;:<01?jj:648yv53>3:1>vP<349>6ac=?<1v>:::181[54<279hh484:p712=838pR>=<;<0ga?173ty88>4?:3y]77e<5;nn6;;4}r10f?6=:rT8>o522eg91d=z{8<:6=4n{<13=?7>j27:in4:2:?2bc<2:279:44:2:?137<2:279??4:2:?165<2:279mo4:2:?1=<<2:279hh4i4:p6`5=839p1?k;:4:897c428k;70>;|q1af<72:q6>hj5599>6`d==816>hm51`28yv4bl3:1>v3=ee82e5=::ll1==?4}r0f6?6=;r79i>4:8:?1a7<6i916>h851108yv4bj3:1?v3=ec82e5=::li195522dd955453z?1ad<61o16>h7518d897c128327p}=e983>74|5;oj6n279=94>9g9>5g7==<16=im5549>5ab==<16=ik5549>5a`==<16=h>5549>5`7==<16=h<5549>5`5==<16=h:5549>5`3==<16>8>5549>61`==<16>9j5549>61e==<16>9k5549>61d==<16>9o5549>61>==<16>99518d8972>2k?518d897ca28327p}=f183>4?|5;l:6n2794i4>9g9>6=d=90l01?m6:47897e?2707070703?>7070<74;337>{t:8;1<7=t=333>0><5;;?6864=331>4?>3ty9==4?:03x977728k;70<>2;336>;59<0:<<521b:9554<58i26<>=;<3`e?77:27:oo4>039>5fe=9980163>cg8247=:9m:1==<4=3g3>46534;o=7??2:?1<0<68816=h95110897>028:87p}>b383>7}:9k;195521c19553z?1009>6=2=99;01?6::021?87b?3;;=6s|1c694?70s4;ij7;=;<3g6?35348><7;>;<07b?36348?h7;>;<07g?36348?i7;>;<07f?36348?m7;>;<07;<07=?36348=87;>;<057?36348=>7;>;<055?36348=<7;>;<06b?36348>i7;>;<06`?36348>o7;>;<06f?36348:97?69:p5=7=839p1863>c982=<=z{8hm6=4<{<3ab?7>127:o=4:2:?2`6<2:2wx=o;50;0x94b5283270?kc;7;?xu60=0;6>u21b295d><58n86<;;;<3`=?7>12wx=n>50;1x94e7283270?l1;71?87c<3?97p}>b683>7}:9m91=474=0fg>0>53z?2g4<6i116=i:5146894ef28327p}>c083>6}:9j;1=474=0a1>04<58n>68<4}r3a989>5ac==11v<69:18087d:3;j463>d48211=:9jh1=474}r3`6?6=;r7:o?4>989>5f5==;16=i85539~w4d>2909w0?k5;3:=>;6lo0>46s|19594?5|58i86989~w4e42908w0?l3;3:=>;6k=0>>63>d6866>{t9kk1<74?>34;n<7;7;|q2<=<72:q6=n:51`:894b028??70?ld;3:=>{t9j>1<7=t=0a7>4?>34;h97;=;<3g5a1=90301:4:8yv7?13:1?v3>c482e==:9m21=8:4=0af>4?>3ty:o84?:2y>5f3=903012<80q~?mc;296~;6l10:54521d091==z{82o6=4<{<3`2?7f027:h44>559>5f`=9030q~?l6;297~;6k?0:54521b5917=:9mk19?5rs0`g>5<5s4;o57?69:?2a6<202wx=;<50;1x94e028k370?ka;360>;6l90:545rs0a4>5<5s4;h;7?69:?2`g<2:2wx=ok50;0x94bf283270?j4;7;?xu6>m0;6?u21e`9502<58n:6<76;|q2f3<72;q6=il518;894c22<20q~?j6;29f~;6lj0>=63>de865>;6ll0>=63>dg865>;6m90>=63>e0865>;6m;0>=63>e2865>;6m=0>=63>e4865>;6m>0:545rs0ga>5<5s4;m<7;=;<3fb?7>12wx=k750;1x94`728k370<9d;3b<>;6nh0:545rs32f>5<5s4;m<7?69:?157<6881v{t9o=1<7=t=0ge>4g?348=o7?n8:?2b=<6101v{t9o?1<7=t=0gf>4g?348=n7?n8:?2b3<6101v{t9o91<7=t=0gg>4g?348=m7?n8:?2b1<6101v:18087bk3;j463=6882e==:9o81=474}r3ea?6=:r79<>4:2:?147<6101v?>7:181847;3;j463=0e82=<=z{;:m6=4={<037?7>1279=>4>009~w4`c2909w012wx=km50;0x97662<801?>?:0;:?xu58?0;6?u221395d><5;:i6<76;|q2bg<72;q6>=>5539>5c`=9030q~52z?2bc<6i116>=7518;8yv4103:1>v3=6e866>;5>j0:545rs3:2>5<5s48=h7?69:?1<2<68;1v?88:181841k3?970<9b;3:=>{t:?<1<704<5;;o5539>63?=9030q~<81;296~;5??0>>63=7482=<=z{;=i6=4={<042?7f02794=4>989~w7>52909w0<86;3:=>;50?0:<<5rs353>5<5s48<97;=;<040?7>12wx>:o50;0x971228k370<8f;3:=>{t:?l1<704<5;=86<76;|q13<<72;q6>::51`:8971b28327p}=6d83>7}::>919?522609552z?136<6i116>:j518;8yv40?3:1>v3=7382e==::>i1=474}r02b?6=:r799=4:8:?17g<6101v?:9:18784283;j<63=6586<>;58m0:<<5222a955752z?10c<20279?l4>989~w722290?w0<;f;3b4>;5>:0>463=0e8246=:::;1==?4}r02g?6=:r798i4:8:?17=<6101v?:<:187843l3;j<63=6086<>;58j0:<>5223f955752z?10f<20279?:4>989~w725290?w0<;c;3b4>;5>90>463=0c8244=::;h1==?4}r02`?6=:r798h4:8:?17<<6101v?:;:187843m3;j<63=6386<>;58j0:<<5223d955752z?10g<20279?;4>989~w726290?w0<;b;3b4>;5=o0>463=0c8246=::;31==?4}r02=?6=:r798l4:8:?170<6101v?:?:187843i3;j<63=5d86<>;58h0:<<52235955752z?10=<20279?>4>989~w75b290?w0<;8;3b4>;5=j0>463=088244=::;91==?4}r022?6=:r798:4:8:?177<6101v?=k:187843?3;j<63=5c86<>;5800:<>52233955752z?10<<20279?94>989~w75a290?w0<;9;3b4>;5=m0>463=0`8246=::;?1==?4}r004?6=:r79?o4:2:?175<6101v?=l:181844j3;>863=3b82=<=z{;8n6=4<{<00e?353488<7;=;<01a?7>12wx>>?50;1x975f28??70<<0;3b<>;5;80:545rs30`>5<4s48857;=;<01a?353489o7?69:p67`=839p1?=6:077?845m3;j463=2g82=<=z{;8j6=4<{<0012wx>?j50;1x975?28??70<=c;3b<>;5:m0:545rs30;>5<4s488;7;=;<01e?35348947?69:p67d=839p1?=8:077?845i3;j463=2c82=<=z{;8=6=4<{<002?35348947;=;<012?7>12wx>?750;1x975128??70<=8;3b<>;5:00:545rs307>5<4s48897;=;<012?35348987?69:p671=839p1?=::077?845>3;j463=2682=<=z{;896=4<{<000?35348987;=;<016?7>12wx>?;50;1x975328??70<=4;3b<>;5:<0:545rs303>5<4s488?7;=;<016?353489<7?69:p675=839p1?=<:077?845:3;j463=2282=<=z{;8:6=4<{<006?72<279>=4>a99>677=9030q~<:a;290~;5>=0:m=522929554<58lj6<>>;<0ga?5d3ty9944?:5y>635=9h:01?6?:027?87ai3;;?63=dd80f>{t:<21<7:t=341>4g7348ik53`9~w730290?w0<91;3b4>;5?o0:<9521g:9555<5;nn6>74}r062?6=a19>62c=99801<7p}=5483>1}::4=35f>46334;m:7??3:?1``<3>2wx>8:50;6x973b28k;70<8d;336>;6n=0:<<522eg900=z{;?86=4;{<06`?7f8279;i4>059>5c2=99901?jj:568yv42:3:18v3=5b82e5=::>i1==<4=0d1>466348oi7:<;|q114<72=q6>8l51`28971d28:?70?i2;337>;5ll0?>6s|2d394?7fs48h57;>;<0`;<0`1?36348h;7;>;<0`0?36348h?7;>;<0`5?36348h<7;>;<0`6?36348oh7;>;<0gg?36348on7;>;<0ge?36348o57;>;<0g;<0g2?36348o97;>;<0g0?363483i7?69:?157<68:16>ik52gc897bb2;l370;5ll09j;5rs3;;>5<5s48h57;7;<0a0?7>12wx>oh50;6x97e>28k;70p1?m7:0c3?84ck3?370<70;337>;5ih0:<<5rs3;6>5<5s48h:7;7;<0a5?7>12wx>om50;6x97e128k;70p1?m::0c3?84c13?370<8e;335>;5i=0:<<5rs3;5>5<5s48h;7;7;<0a6?7>12wx>oj50;6x97e028k;70p1?m;:0c3?84c03?370<8e;337>;5i;0:<<5rs3;1>5<5s48h?7;7;<0ba?7>12wx>o750;6x97e428k;70p1?m>:0c3?84c=3?370<8c;335>;51j0:<<5rs3:e>5<5s48h<7;7;<0bf?7>12wx>o850;6x97e728k;70=83>p1?m=:0c3?84c>3?370<8d;337>;51l0:<<5rs3c:>5<5s48i87;=;<0b=?7>12wx>o;50;0x97d328??70{t:h=1<7=t=3`0>04<5;k268<4=3c4>4?>3ty9ml4?:2y>6g5=9<>01?o6:0c;?84fi3;256s|2`794?5|5;h968<4=3c4>04<5;k>6<76;|q1e=<72:q6>o<5146897g028k370{t:h91<7=t=3`2>04<5;k>68<4=3c0>4?>3ty9m;4?:2y>6g7=9<>01?o::0c;?84f>3;256s|2`394?5|5;h;68<4=3c0>04<5;k:6<76;|q1e1<72:q6>o>5146897g428k370{t:0l1<7=t=3ce>04<5;k:68<4=3;e>4?>3ty9m?4?:2y>6d`=9<>01?o>:0c;?84f:3;256s|28f94?5|5;kn68<4=3;e>04<5;3o6<76;|q1e5<72:q6>lk5146897?a28k370{t:0h1<7=t=3cg>04<5;3o68<4=3;a>4?>3ty95h4?:2y>6db=9<>01?7k:0c;?84>m3;256s|28;94?5|5;kh68<4=3;a>04<5;326<76;|q1=f<72:q6>lm5146897?e28k370<6c;3:=>{t:0k1<7=t=3ca>433348257?n8:?1=d<6101v?j<:18784cl3;j<63=0e8247=:9ok1==<4=3ff>7e7>54z?1`f<6i916>=j5116894`f28:?70=;<3ep1?jn:0c3?847k3;;863>f98241=::mo1>45rs3ae>5<3s48o57?n0:?14g<68;16=k85110897bb2:=0q~;;<0ga?513ty9oi4?:5y>6a1=9h:01?>n:021?87a<3;;>63=dd801>{t:ji1<7:t=3f5>4g7348;m7??4:?2b1<68=16>ik5359~w7ee290?w0;5800:=4}r0`e?6=a19>65?=99>018283>7}::881==:4=330>4323ty94l4?:3y>6=2=90301?69:027?xu5010;6?u22949554<5;2>6<76;|q1<<<72;q6>585111897>028?>7p}=dg83>7}::l:1=474=3ff>c34>63ty88?4?:3y]764<5=k1?><4$3d1>4>03ty88=4?:3y]767<5=k1?>?4$3d1>4>?3ty8?k4?:3y]766<5=k1?>>4$3d1>4>>3ty8?h4?:3y]77`<5=k1??h4$3d1>4>c3ty8?i4?:3y]77c<5=k1??k4$3d1>4053ty8?n4?:3y]77b<5=k1??j4$3d1>40c3ty88o4?:3y]76g<5=k1?>o4$3d1>41?3ty88l4?:3y]76?<5=k1?>74$3d1>41f3ty8844?:3y]76><5=k1?>64$3d1>41e3ty8854?:3y]761<5=k1?>94$3d1>41d3ty88:4?:3y]760<5=k1?>84$3d1>41c3ty88;4?:3y]763<5=k1?>;4$3d1>41b3ty8884?:3y]762<5=k1?>:4$3d1>41a3ty8894?:3y]765<5=k1?>=4$3d1>4>73ty88>4?:3y]77e<5=k1??m4$3d1>4>53ty8?o4?:3y]77d<5=k1??l4$3d1>4>43ty8o84?:3y]7f3<5=k1?n;4$3d1>4>f3ty8o:4?:3y]7f1<5=k1?n94$3d1>4>e3ty8hn4?:3y]7ae<5=k1?im4$3d1>4>d3ty8>44?:3y]74c<5=k1?4>b3ty8>:4?:3y]74b<5=k1?4>a3ty8>;4?:3y]74e<5=k1?4?73ty8>84?:3y]74d<5=k1?4?63ty8>94?:3y]74g<5=k1?4?53ty8>>4?:3y]74?<5=k1?<74$3d1>4?43ty8>?4?:3y]74><5=k1?<64$3d1>4?33ty8><4?:3y]741<5=k1?<94$3d1>4?23ty8>=4?:3y]740<5=k1?<84$3d1>4043ty8=k4?:3y]743<5=k1?<;4$3d1>4033ty8:>4?:3y]705<5=k1?8=4$3d1>4023ty8:<4?:3y]704<5=k1?8<4$3d1>4013ty8:=4?:3y]707<5=k1?8?4$3d1>4003ty89k4?:3y]706<5=k1?8>4$3d1>40?3ty89h4?:3y]71`<5=k1?9h4$3d1>40>3ty89i4?:3y]71c<5=k1?9k4$3d1>40f3ty8:n4?:3y]70d<5=k1?8l4$3d1>40e3ty8:o4?:3y]70g<5=k1?8o4$3d1>40d3ty8:l4?:3y]70?<5=k1?874$3d1>40b3ty8:44?:3y]70><5=k1?864$3d1>40a3ty8:54?:3y]701<5=k1?894$3d1>4173ty8::4?:3y]700<5=k1?884$3d1>4163ty8:;4?:3y]703<5=k1?8;4$3d1>4153ty8:84?:3y]702<5=k1?8:4$3d1>4143ty8:94?:3y]71b<5=k1?9j4$3d1>4133ty89n4?:3y]71e<5=k1?9m4$3d1>4123ty8:h4?:3y]73c<5=k1?;k4$3d1>4113ty8;=4?:3y]726<5=k1?:>4$3d1>4103ty8on4?:3y]7fe<5=k1?nm4$3d1>41>3twe:;950;0xL7`43td=:54?:3yK6c552zJ1b6=zf?{i>?h1<7j0;6?uG2g18yk01l3:1>vF=f29~j30b2909wEk=4}o445?6=:rB9j>5rn751>5<5sA8m?6sa66194?4|@;l87p`97583>7}O:o90qc885;296~N5n:1vb;99:181M4a;2we::950;0xL7`43td=;54?:3yK6c552zJ1b6=zf?=j6=4={I0e7>{i>>h1<7vF=f29~j31b2909wEk=4}o4;5?6=:rB9j>5rn7:1>5<5sA8m?6sa69194?4|@;l87p`98583>7}O:o90qc875;296~N5n:1vb;69:181M4a;2we:5950;0xL7`43td=454?:3yK6c552zJ1b6=zf?2j6=4={I0e7>{i>1h1<7vF=f29~j3>b2909wEk=4}o4:5?6=:rB9j>5rn7;1>5<5sA8m?6sa68194?4|@;l87p`99583>7}O:o90qc865;296~N5n:1vb;79:181M4a;2we:4950;0xL7`43td>;o4?:0yK6c551zJ1b6=zf{I0e7>{i=hn1<7?tH3d0?xh2il0;6k=4}o7a7?6=9rB9j>5rn4`7>5<6sA8m?6sa5c794?7|@;l87p`:b783>4}O:o90qc;m7;295~N5n:1vb8l7:182M4a;2we9o750;3xL7`43td>nl4?:0yK6c551zJ1b6=zf{I0e7>{i=kn1<7?tH3d0?xh2jl0;6k=4}o7`7?6=9rB9j>5rn4a7>5<6sA8m?6sa5b794?7|@;l87p`:c783>4}O:o90qc;l7;295~N5n:1vb8m7:182M4a;2we9n750;3xL7`43td>ol4?:0yK6c551zJ1b6=zf{I0e7>{i=jn1<7?tH3d0?xh2kl0;6k=4}o7g7?6=9rB9j>5rn4f7>5<6sA8m?6sa5e794?7|@;l87p`:d783>4}O:o90qc;k7;295~N5n:1vb8j7:182M4a;2we9i750;3xL7`43td>hl4?:0yK6c551zJ1b6=zf{I0e7>{i=mn1<7?tH3d0?xh2ll0;6k=4}o7f7?6=9rB9j>5rn4g7>5<6sA8m?6sa5d794?7|@;l87p`:e783>4}O:o90qc;j7;295~N5n:1vb8k7:182M4a;2we9h750;3xL7`43td>il4?:0yK6c551zJ1b6=zf{I0e7>{i=ln1<7?tH3d0?xh2ml0;6k=4}o7e7?6=9rB9j>5rn4d7>5<6sA8m?6sa5g794?7|@;l87p`:f783>4}O:o90qc;i7;295~N5n:1vb8h7:182M4a;2we9k750;3xL7`43td>jl4?:0yK6c551zJ1b6=zf{I0e7>{i=on1<7?tH3d0?xh2nl0;6k=4}o437?6=9rB9j>5rn727>5<6sA8m?6sa61794?7|@;l87p`90783>4}O:o90qc8?7;295~N5n:1vb;>7:182M4a;2we:=750;3xL7`43td=51zJ1b6=zf?:h6=4>{I0e7>{i>9n1<7?tH3d0?xh18l0;6k=4}o427?6=9rB9j>5rn737>5<6sA8m?6sa60794?7|@;l87p`91783>4}O:o90qc8>7;295~N5n:1vb;?7:182M4a;2we:<750;3xL7`43td==l4?:0yK6c551zJ1b6=zf?;h6=4>{I0e7>{i>8n1<7?tH3d0?xh19l0;6k=4}o417?6=9rB9j>5rn707>5<6sA8m?6sa63794?7|@;l87p`92783>4}O:o90qc8=7;295~N5n:1vb;<7:182M4a;2we:?750;3xL7`43td=>l4?:0yK6c551zJ1b6=zf?8h6=4>{I0e7>{i>;n1<7?tH3d0?xh1:l0;6k=4}o407?6=9rB9j>5rn717>5<6sA8m?6sa62794?7|@;l87p`93783>4}O:o90qc8<7;295~N5n:1vb;=7:182M4a;2we:>750;3xL7`43td=?l4?:0yK6c551zJ1b6=zf?9h6=4>{I0e7>{i>:n1<7?tH3d0?xh1;l0;6k=4}o477?6=9rB9j>5rn767>5<6sA8m?6sa65794?7|@;l87p`94783>4}O:o90qc8;7;295~N5n:1vb;:7:182M4a;2we:9750;3xL7`43td=8l4?:0yK6c551zJ1b6=zf?>h6=4>{I0e7>{i>=n1<7?tH3d0?xh1k=4}o467?6=9rB9j>5rn777>5<6sA8m?6sa64794?7|@;l87p`95783>4}O:o90qc8:7;295~N5n:1vb;;7:182M4a;2we:8750;3xL7`43td=9l4?:0yK6c5n7>51zJ1b6=zf??h6=4>{I0e7>{i>k=4}o457?6=9rB9j>5rn747>5<6sA8m?6sa67794?7|@;l87p`96783>4}O:o90qpsr@AAx3=0=nhk9o;<<}ABA5{GHYqvLM \ No newline at end of file diff --git a/monitor/fifos/virtex4_fifo_16x1024.vhd b/monitor/fifos/virtex4_fifo_16x1024.vhd new file mode 100644 index 0000000..372728b --- /dev/null +++ b/monitor/fifos/virtex4_fifo_16x1024.vhd @@ -0,0 +1,152 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used -- +-- solely for design, simulation, implementation and creation of -- +-- design files limited to Xilinx devices or technologies. Use -- +-- with non-Xilinx devices or technologies is expressly prohibited -- +-- and immediately terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" -- +-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR -- +-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION -- +-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION -- +-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS -- +-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, -- +-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE -- +-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY -- +-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -- +-- FOR A PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support -- +-- appliances, devices, or systems. Use in such applications are -- +-- expressly prohibited. -- +-- -- +-- (c) Copyright 1995-2007 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file virtex4_fifo_16x1024.vhd when simulating +-- the core, virtex4_fifo_16x1024. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +Library XilinxCoreLib; +-- synthesis translate_on +ENTITY virtex4_fifo_16x1024 IS + port ( + clk: IN std_logic; + din: IN std_logic_VECTOR(15 downto 0); + rd_en: IN std_logic; + rst: IN std_logic; + wr_en: IN std_logic; + data_count: OUT std_logic_VECTOR(9 downto 0); + dout: OUT std_logic_VECTOR(15 downto 0); + empty: OUT std_logic; + full: OUT std_logic; + valid: OUT std_logic); +END virtex4_fifo_16x1024; + +ARCHITECTURE virtex4_fifo_16x1024_a OF virtex4_fifo_16x1024 IS +-- synthesis translate_off +component wrapped_virtex4_fifo_16x1024 + port ( + clk: IN std_logic; + din: IN std_logic_VECTOR(15 downto 0); + rd_en: IN std_logic; + rst: IN std_logic; + wr_en: IN std_logic; + data_count: OUT std_logic_VECTOR(9 downto 0); + dout: OUT std_logic_VECTOR(15 downto 0); + empty: OUT std_logic; + full: OUT std_logic; + valid: OUT std_logic); +end component; + +-- Configuration specification + for all : wrapped_virtex4_fifo_16x1024 use entity XilinxCoreLib.fifo_generator_v4_2(behavioral) + generic map( + c_has_int_clk => 0, + c_rd_freq => 1, + c_wr_response_latency => 1, + c_has_srst => 0, + c_has_rd_data_count => 0, + c_din_width => 16, + c_has_wr_data_count => 0, + c_full_flags_rst_val => 1, + c_implementation_type => 0, + c_family => "virtex4", + c_use_embedded_reg => 0, + c_has_wr_rst => 0, + c_wr_freq => 1, + c_use_dout_rst => 1, + c_underflow_low => 0, + c_has_meminit_file => 0, + c_has_overflow => 0, + c_preload_latency => 1, + c_dout_width => 16, + c_rd_depth => 1024, + c_default_value => "BlankString", + c_mif_file_name => "BlankString", + c_has_underflow => 0, + c_has_rd_rst => 0, + c_has_almost_full => 0, + c_has_rst => 1, + c_data_count_width => 10, + c_has_wr_ack => 0, + c_use_ecc => 0, + c_wr_ack_low => 0, + c_common_clock => 1, + c_rd_pntr_width => 10, + c_use_fwft_data_count => 0, + c_has_almost_empty => 0, + c_rd_data_count_width => 10, + c_enable_rlocs => 0, + c_wr_pntr_width => 10, + c_overflow_low => 0, + c_prog_empty_type => 0, + c_optimization_mode => 0, + c_wr_data_count_width => 10, + c_preload_regs => 0, + c_dout_rst_val => "0", + c_has_data_count => 1, + c_prog_full_thresh_negate_val => 1021, + c_wr_depth => 1024, + c_prog_empty_thresh_negate_val => 3, + c_prog_empty_thresh_assert_val => 2, + c_has_valid => 1, + c_init_wr_pntr_val => 0, + c_prog_full_thresh_assert_val => 1022, + c_use_fifo16_flags => 0, + c_has_backup => 0, + c_valid_low => 0, + c_prim_fifo_type => "1kx18", + c_count_type => 0, + c_prog_full_type => 0, + c_memory_type => 1); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_virtex4_fifo_16x1024 + port map ( + clk => clk, + din => din, + rd_en => rd_en, + rst => rst, + wr_en => wr_en, + data_count => data_count, + dout => dout, + empty => empty, + full => full, + valid => valid); +-- synthesis translate_on + +END virtex4_fifo_16x1024_a; + diff --git a/monitor/fifos/virtex4_fifo_16x1024.xco b/monitor/fifos/virtex4_fifo_16x1024.xco new file mode 100644 index 0000000..6f512fb --- /dev/null +++ b/monitor/fifos/virtex4_fifo_16x1024.xco @@ -0,0 +1,81 @@ +############################################################## +# +# Xilinx Core Generator version J.40 +# Date: Mon Mar 14 21:55:36 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = False +SET asysymbol = True +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = False +SET designentry = VHDL +SET device = xc4vlx40 +SET devicefamily = virtex4 +SET flowvendor = Foundation_iSE +SET formalverification = False +SET foundationsym = False +SET implementationfiletype = Ngc +SET package = ff1148 +SET removerpms = False +SET simulationfiles = Behavioral +SET speedgrade = -10 +SET verilogsim = True +SET vhdlsim = True +# END Project Options +# BEGIN Select +SELECT Fifo_Generator family Xilinx,_Inc. 4.2 +# END Select +# BEGIN Parameters +CSET almost_empty_flag=false +CSET almost_full_flag=false +CSET component_name=virtex4_fifo_16x1024 +CSET data_count=true +CSET data_count_width=10 +CSET dout_reset_value=0 +CSET empty_threshold_assert_value=2 +CSET empty_threshold_negate_value=3 +CSET enable_ecc=false +CSET enable_int_clk=false +CSET fifo_implementation=Common_Clock_Block_RAM +CSET full_flags_reset_value=1 +CSET full_threshold_assert_value=1022 +CSET full_threshold_negate_value=1021 +CSET input_data_width=16 +CSET input_depth=1024 +CSET output_data_width=16 +CSET output_depth=1024 +CSET overflow_flag=false +CSET overflow_sense=Active_High +CSET performance_options=Standard_FIFO +CSET programmable_empty_type=No_Programmable_Empty_Threshold +CSET programmable_full_type=No_Programmable_Full_Threshold +CSET read_clock_frequency=1 +CSET read_data_count=false +CSET read_data_count_width=10 +CSET reset_pin=true +CSET reset_type=Asynchronous_Reset +CSET underflow_flag=false +CSET underflow_sense=Active_High +CSET use_dout_reset=true +CSET use_embedded_registers=false +CSET use_extra_logic=false +CSET valid_flag=true +CSET valid_sense=Active_High +CSET write_acknowledge_flag=false +CSET write_acknowledge_sense=Active_High +CSET write_clock_frequency=1 +CSET write_data_count=false +CSET write_data_count_width=10 +# END Parameters +GENERATE +# CRC: 29ee2935 + diff --git a/monitor/fifos/virtex4_fifo_32x512.ngc b/monitor/fifos/virtex4_fifo_32x512.ngc new file mode 100644 index 0000000..c96c296 --- /dev/null +++ b/monitor/fifos/virtex4_fifo_32x512.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.4e +$53b41<,[o}e~g`n;"2*447&;:%>-*>;1;8456789:;<9>40123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?1:30?4(79=1:97GAPTV9EABUI5;?6=0>4:36>LHW]]0JHI\M<0694;7<:=19<>>>2:11>LHW]]0OEL2<1;2=57=4:3CE\XZ5DH@?74<76880??4FNQWW>aoi4:;1<3?<;209KPRW]]0OCL2<1;2=56=4:3E^X][[:EMA867=87;?7><5OTVSQQ09754=32@D[YY4KIQC?7?69981?6D@_UU8GMUD;;3:5==5;:HLSQQ0:69MKVR\3]NN1=50?31?10>586:2>1CXZ_UU8GKUD;;3:586:I4Bd80sj<9lm=<:7-021?3333??8<<571:;7?<6718o057GAPTV9twi`Wlg{xtQ{hsgpl9>=878>744FNQWW>uthoVof|ywPtipfwmYf{zoyx1650?06?<=87;o744FNQWW>uthoVl~`aQ{hsgpl9>=878?744FNQWW>uthoVl~`aQ{hsgplZgt{lx054?>368=?OIX\^1|ah_gwohZrozlycSckhaug??=G\^[YY4}d^fbpdYdg|d054?>0`8=?IR\Y__6z|Pd`vb[firf}636=0=;8C1?D4?3HNO^L2?>89B@ATF48:556OKDSC?548>3HNO^L2>2?;8EABUI5;82o5NDEPB842=8730MIJ]A=37:==FLMXJ0<07;@FGVD:5611JHI\N<2<;?DBCZH6?255NDEPB808?3HNO^L29>99B@ATF4>437LJKR@>;:==FLMXJ0407;@FGVG:7601JHI\M<02==>GCL[H7=<06;@FGVG:6:730MIJ]B=30:g=FLMXI0<:50?;8EABUJ5;?255NDEPA848?3HNO^O2=>99B@ATE4:437LJKRC>7:==FLMXI0807;@FGVG:1611JHI\M<6<;?DBCZK63255NDEPA8<8>3HYRBNQ]EF18FP4?3K_XSD@IO09@e>EF[JKOID@Na:ABWFGCM@DIn6MNSBCGAJSSIk1HM^MNDDMVPG4EKCK90OA\6;BMNILRSMM=0O_KNTDF2?A4BNI5;92:5KI@>27;169GMD:6?7=0HDO319<4?AOF4835:6JFA=3=3>BNI58;2:5KI@>15;1?08;EKB8759?2NBM1<;>69GMD:5=7=0HDO327<4?AOF4;=5;6JFA=0;:2=CAH695384DHC?6;14=7IGN<9<5?AOF404=7IGM<1<4?AOE48:5;6JFB=32:2=CAK6:>394DH@?56803MCI0<:17:FJF9726>1OEO2>6?58@LD;9>4<7IGM<0:=3>BNJ5;22;5KIC>2:2=CAK69<394DH@?64803MCI0?<17:FJF9446>1OEO2=4?58@LD;:<4<7IGM<34=3>BNJ58<2:5KIC>1<;1409;EKA87803MCI0>>19:FJF956294<7IGM<23=2>BNJ595:6JFB=6=2>BNJ5?5:6JFB=4=2>BNJ5=5:6JFB=:=2>BNJ535;6JFP@>3:2=CAYK7=394DHRB878>3MC[M1=50?58@LVF4:4<7IG_B=2=3>BNXK6:2:5KIQ@?6;?4?>69GMUD;;7<0HBO30?58@JG;994<7IAN<03=3>BHI5;92:5KO@>27;169GKD:6?7=0HBO319<4?AIF4835:6J@A=3=3>BHI58;2:5KO@>15;1?08;EMB8759?2NDM1<;>69GKD:5=7=0HBO327<4?AIF4;=5;6J@A=0;:2=CGH695384DNC?6;14=7IAN<9<5?AIF404<7IAN_SGD2>BHJ5:5;6J@B=33:2=CGK6:=394DN@?57803MEI0<=17:FLF9736>1OCO2>5?58@JD;9?4<7IAM<05=3>BHJ5;32:5KOC>2=;01OCO2=3?58@JD;:=4<7IAM<37=3>BHJ58=2:5KOC>13;1508;EMA87?9>2NDN1<17:FLF957601OCO2<1;2=3>BHJ59:2;5KOC>0:3=CGK6?2;5KOC>6:3=CGK6=2;5KOC>4:3=CGK632;5KOC>::2=CGKUYIJ94DNRB85803ME[M1?17:FLTD:5601OC]O33;2=3>BHXH682:5KOQ@?4;1>0J5675:DBHVC53ON87KJL4:DGG@5O6:2C9>6G<8:KMMQVX8920ECG[P^22<>OIA]ZT46GAIUR\43>89:KMMQUSI]O<7D@FT^233>OIA]U;=:5FNHV\471L7:KMMQY7L>1BBDZP0D58MKOSW9L<7D@FT^333>OIA]U:=:5FNHV\571569JJLRX9?=0ECG[_054?LHN\V;3;6GAIU]2=2=NF@^T=L94IOKW[4D03@DBXR?L7:KMMQY6L>1BBDZP1D58MKOSW8L<7D@FT^033>OIA]U9=:5FNHV\671L94IOKW[7D03@DBXR1BBDZP2D58MKOSW;L<7D@FT^133>OIA]U8=:5FNHV\771=8;HLJPZ53?2CEEYQ<569JJLRX;?=0ECG[_254?LHN\V93;6GAIU]0=2=NF@^T?L94IOKW[6D03@DBXR=L7:KMMQY4L>1BBDZP3D58MKOSW:L=7D@FT^C5?LHN\VH27D@FT^DJH@753@D]I_ZPCMI\@JGXZLM:>6GAVDPW[FJLWMEIS_KH3:KLF7=KA;1GC;5CO@FF@2=KGNCHMA:4LTV20>JR\;<0@XZ=_M68HPR4>2F^X>QC4:NVP130268J463<2D:<8:4N0250>H68>>0B<>74:L24<5059M54733G;:>95A1017?K76<=1E=<;;;O3221=I98=?7C?>859M54?43G;986@>2168J446<2D:>?:4N0000>H6:=>0B<<:4:L26322968J44>;2D:?95A1227?K749=1E=><;;O3071=I9:>?7C?<559M56033G;8;95A12:7?K741:1E=9:4N0630>H6<8>0B<:=4:L2062?86@>4918J4343G;=?6@>729M5=5H59:1E>?=4N310?K43;2D99>5A2718J7143G83?6@=939M76=I;990B>?<;O117>H4;:1E?9=4N270?K51;2D8;?5A439M17=I>;1E;?5A839M=6=I1:90B4;<;O;;b>HEWK_X\D@PPSMSW2=IM]]D^F:4NNLF5>I53FA:7]:4P@PWe>VNFVH^_DJWb:RJJZDR[GKFI>5_RD38U3=UIDH::k5]AL]F\QCI[@EESLh4R@O\A]RBFZCDBRLl;SGB@ZQNL]BTMn5]E@F\SLBS@VH=7_KHCDC5?WC@KLH:7^64S@TF@DRF9:1XE@QLOMNJWLIIWJBNOF84SNWQG@1<[[\J@RO8;RPUEIYE<2YX^L:4SRPA0>R^XL8=7X> gsd-vc)`d9$yh"i}hg,qlc)uidU}magk_e31a>S7'nxm"h gm2-va)`zal%~eh r`o\rdjnlVn:Sl`k01236c=R8&myj#|i/fn3*wb(o{bm"fi/scn[sgkamUo=Road123444d3\:$kh!rg-dh5(ul&my~ hdb,gg*bd'DidyczPcnwmp7b<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw57b<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw67b<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw77b<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw07b<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw17b<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw27b<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw37b<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw<7b<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw=64<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[f;87997X> gsd-vc)`d9$yh"i}sr,d`f(ck&nh#@m`uov\gjsi|Vir0<0<2:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQly=0=77=R8&myj#|i/fn3*wb(o{yx"jjl.ea,`f)JkfexRm`uov\g|:46:80Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$Anaznu]`kphsWjs783==;T2,cw`)zo%l`= }d.eqwv(`lj$oo"jl/LalqkrXkfexRmv<4<06>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]`}909;;1^<"i}f/pe+bj7&{n$k}|.ff`*ae(lj%Fob{at^alqkrXkp6<2>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSa{{<1<07>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]oqq:66:90Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$Anaznu]`kphsWe0?0<3:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQcuu>0:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[iss4=48?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Ugyy2:>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_mww8384;2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYk}}6<2>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSa{{<9<07>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]{kw:76:90Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$Anaznu]`kphsWqey0<0<3:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.O`kphsWje~byQwos>1:65<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(Eje~byQlotlw[}iu4:48?6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"Clotlw[firf}Usc2;>218Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,Ifirf}Uhcx`{_ymq8084;2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&Ghcx`{_bmvjqYg{6=2>=4U1-dvc(un&mg<#|k/fppw+ack'nh#im MbmvjqYdg|dSua}<6<07>S7'nxm"h gm2-va)`zzy%kim!db-gg*Kdg|dSnaznu]{kw:?6;=0Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$ob{at^213>S7'nxm"h gm2-va)`zzy%kim!db-gg*eh}g~T=?94U1-dvc(un&mg<#|k/fppw+ack'nh#im cnwmpZ45?2_;#j|i.sd,ci6)zm%l~~}!gea-`f)ck&idyczP3358Q5)`zo$yj"ic0/pg+btt{'moo#jl/ea,gjsi|V>9;6[?/fpe*w`(oe:%~i!hrrq-cae)lj%oo"m`uov\171<]9%l~k }f.eo4+tc'nxx#ikc/f`+ae(kfexR8=7:W3+bta&{l$ka>!re-dvvu)omi%hn!kc.alqkrX?;=0Y=!hrg,qb*ak8'xo#j||s/egg+bd'mi$ob{at^:1`>S7'nxm"h gm2-va)`zzy%kim!db-gg*eh}g~Tbbz?0131a>S7'nxm"h gm2-va)`zzy%kim!db-gg*eh}g~Tbbz?01326<=R8&myj#|i/fn3*wb(o{yx"}{s.a2+fguzpdnx1>1289V4*aun'xm#jb?.sf,cwut&{y"m>/bcqv|hb|5;5>45Z0.eqb+ta'nf;"j gsqp*wus{&i:#no}rxlfp949:01^<"i}f/pe+bj7&{n$k}|.sqww*e6'jky~t`jt=1=6c=R8&myj#|i/fn3*wb(o{yx"}{s.a2+bkrp'mfW=S!gl3-i44a3\:$kh!rg-dh5(ul&my~ }suq,g4)`e|r%k`U>]/enw+kt:o1^<"i}f/pe+bj7&{n$k}|.sqww*e6'ng~t#ib[3_-chu)ez8m7X> gsd-vc)`d9$yh"i}sr,qwqu(k8%laxv!glY0Y+aj{'gx>k5Z0.eqb+ta'nf;"j gsqp*wus{&i:#jczx/en_1[)ody%a~<<;T2,cw`)zo%l`= }d.eqwv(u{}y$o>368Q5)`zo$yj"ic0/pg+btt{'xxx~!l1.t28486::1^<"i}f/pe+bj7&{n$k}|.sqww*e6';7>3<;;T2,cw`)zo%l`= }d.eqwv(u{}y$o000?P6(o{l%~k!hl1,q`*au{z$yy} c0-u5929:=1^<"i}f/pe+bj7&{n$k}|.sqww*e6';783?=9:W3+bta&{l$ka>!re-dvvu)zz~x#n< c`pq}kcs494956[?/fpe*w`(oe:%~i!hrrq-vvrt'j8$ol|}yogw848512_;#j|i.sd,ci6)zm%l~~}!rrvp+f4(khxyuck{<3<1=>S7'nxm"h gm2-va)`zzy%~~z|/b0,gdtuqgo0>0=f:W3+bta&{l$ka>!re-dvvu)zz~x#n< glw{*bk\8T$la< b13d8Q5)`zo$yj"ic0/pg+btt{'xxx~!l2.enq}(`eR;V"jc|.lq1b>S7'nxm"h gm2-va)`zzy%~~z|/b0,chs&ngP>P hmr,nw7`<]9%l~k }f.eo4+tc'nxx#||tr-`6*aj}q$laV=R.fop*hu5n2_;#j|i.sd,ci6)zm%l~~}!rrvp+f4(ods"jcT4\,div(j{;90Y=!hrg,qb*ak8'xo#j||s/pppv)d:&|:0=0=3:W3+bta&{l$ka>!re-dvvu)zz~x#n< v0>2:75<]9%l~k }f.eo4+tc'nxx#||tr-`6*p64;49?6[?/fpe*w`(oe:%~i!hrrq-vvrt'j8$z<2<>318Q5)`zo$yj"ic0/pg+btt{'xxx~!l2.t28185j2_;#j|i.sd,ci6)zm%l~~}!rrvp+f4(~8U;Sl`k012357d<]9%l~k }f.eo4+tc'nxx#||tr-`6*p6W8Ujbi>?0131f>S7'nxm"h gm2-va)`zzy%~~z|/b0,r4Y5Whdo<=>?13`8Q5)`zo$yj"ic0/pg+btt{'xxx~!l2.t2[6Yffm:;<=?=b:W3+bta&{l$ka>!re-dvvu)zz~x#n< v0]7[kis89:;=?>4U1-dvc(un&mg<#|k/fppw+tt|z%hc`~?219V4*aun'xm#jb?.sf,cwut&{y"m`mq31=>S7'nxm"h gm2-va)`zzy%~~z|/scn[`kw|pUmnRg<1:W3+bta&{l$ka>!re-dvvu)zz~x#ob_dosp|YajVcTaxv?01204>S7'nxm"h gm2-va)`zzy%~~z|/scn[`kw|pUmnRgPos2345533\:$kh!rg-dh5(ul&my~ }suq,vdkXmdzuRhm_h]lv5678VY\95Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu310>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|;8?7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{3368Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkr3:=1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~by;=4:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmp3433\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|d;?:4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov;6<=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Uhu1>12b9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5:5Sz=9:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZe~4849o6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az848Xz}827X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_b{?6;4d3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw32?]qp7?<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Tot2<>3a8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp682R|{289V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5>5>n5Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]`}929W{~956[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az8085k2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRmv<4<\vq4>3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw36?0`?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs7:3Q}t3;8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp6<2?m4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\g|:06Vx>l5Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]{kw:76;k0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPxnp?5;4f3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSua}<3<1e>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vrd~1=12`9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYg{6?2?o4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\|jt;=78j7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_ymq8385i2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRv`r=5=6d=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Usc27>3f8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXpfx743Q}t0d8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<1<2b>S7'nxm"h gm2-va)uxg~y#naznu>2:4`<]9%l~k }f.eo4+tc'{zex!lotlw8786n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:468l0Y=!hrg,qb*ak8'xo#~ats-`kphs4=4:j6[?/fpe*w`(oe:%~i!}povq+firf}6>2f:W3+bta&{l$ka>!re-qtkru'je~by28>0d8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<9<2a>S7'nxm"h gm2-va)uxg~y#naznu]35`=R8&myj#|i/fn3*wb(zyd~"m`uov\54c<]9%l~k }f.eo4+tc'{zex!lotlw[77b3\:$kh!rg-dh5(ul&x{by| cnwmpZ56m2_;#j|i.sd,ci6)zm%y|cz}/bmvjqY39l1^<"i}f/pe+bj7&{n$~}`{r.alqkrX=8o0Y=!hrg,qb*ak8'xo#~ats-`kphsW?;n7X> gsd-vc)`d9$yh"|nup,gjsi|V=:i6[?/fpe*w`(oe:%~i!}povq+firf}U3>?5Z0.eqb+ta'nf;"j rqlwv*eh}g~Th<2?>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?5;453\:$kh!rg-dh5(ul&x{by| cnwmpZb64;49>6[?/fpe*w`(oe:%~i!}povq+firf}Uo=1=1239V4*aun'xm#jb?.sf,vuhsz&idyczPd0>7:74<]9%l~k }f.eo4+tc'{zex!lotlw[a7;=7897X> gsd-vc)`d9$yh"|nup,gjsi|Vn:0;0=2:W3+bta&{l$ka>!re-qtkru'je~byQk1=5=67=R8&myj#|i/fn3*wb(zyd~"m`uov\`4:?6;;0Y=!hrg,qb*ak8'xo#~ats-`kphsWm;T2:7?<]9%l~k }f.eo4+qu'n}x#y|tr-`4*efz{seiy2=>3;8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l0.abvwim}682?h4U1-dvc(un&mg<#y}/fupw+qt|z%h<"ibuy,di^6Z&ng:"`?=f:W3+bta&{l$ka>!ws-dsvu)z~x#n> glw{*bk\9T$la~ bs3d8Q5)`zo$yj"ic0/uq+bqt{'}xx~!l0.enq}(`eR8V"jc|.lq1b>S7'nxm"h gm2-sw)`zy%{~z|/b2,chs&ngP?P hmr,nw7`<]9%l~k }f.eo4+qu'n}x#y|tr-`4*aj}q$laV:R.fop*hu512_;#j|i.sd,ci6){%l{~}!wrvp+f7(khxyuck{<1<1=>S7'nxm"h gm2-sw)`zy%{~z|/b3,gdtuqgo0<0=9:W3+bta&{l$ka>!ws-dsvu)z~x#n? c`pq}kcs4;4956[?/fpe*w`(oe:%{!hwrq-svrt'j;$ol|}yogw8685n2_;#j|i.sd,ci6){%l{~}!wrvp+f7(ods"jcT0\,di4(j9;l0Y=!hrg,qb*ak8'}y#jy|s/uppv)d9&mfyu hmZ3^*bkt&dy9j6[?/fpe*w`(oe:%{!hwrq-svrt'j;$k`{w.foX6X(`ez$f?h4U1-dvc(un&mg<#y}/fupw+qt|z%h="ibuy,di^5Z&ngx"`}=f:W3+bta&{l$ka>!ws-dsvu)z~x#n? glw{*bk\<3<17>S7'nxm"h gm2-sw)`zy%{~z|/b3,r4:46;90Y=!hrg,qb*ak8'}y#jy|s/uppv)d9&|:090=b:W3+bta&{l$ka>!ws-dsvu)z~x#n? v0]3[dhc89:;=?l4U1-dvc(un&mg<#y}/fupw+qt|z%h="x>_0]bja6789;9n6[?/fpe*w`(oe:%{!hwrq-svrt'j;$zQnne234575j2_;#j|i.sd,ci6){%l{~}!wrvp+f7(~8U?Sca{0123576<]9%l~k }f.eo4+qu'n}x#y|tr-`khv7:91^<"i}f/pe+bj7&~x$kz}|.vqww*ehey;946[?/fpe*w`(oe:%{!hwrq-svrt'{kfSk{cl^alig4f3\:$kh!rg-dh5(pz&m|~ xsuq,vdkXn|fgSnabb071=>S7'nxm"h gm2-sw)`zy%{~z|/scn[cskdVidao<=a:W3+bta&{l$ka>!ws-dsvu)z~x#ob_gwohZehek8?>45Z0.eqb+ta'nf;"z| gvqp*rus{&xjaRhzlm]`khd>:m1^<"i}f/pe+bj7&~x$kz}|.vqww*tfeVl~`aQlol`\idv6:m1^<"i}f/pe+bj7&~x$kz}|.vqww*tfeVl~`aQlol`\idv2:m1^<"i}f/pe+bj7&~x$kz}|.vqww*tfeVl~`aQlol`\idv?:11^<"i}f/pe+bj7&~x$kz}|.vqww*tfeVl~`aQib^k11>S7'nxm"h gm2-sw)`zy%{~z|/scn[cskdVc986[?/fpe*w`(oe:%{!hwrq-svrt'~xT~~zPd03g?P6(o{l%~k!hl1,tv*tfeV}ySh`Pi000?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphs:=1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by?=4:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmp7433\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|d??:4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov761=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}?986[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at707?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphs?;>0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|Vidycz7289V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYdq5:5>n5Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]`}969W{~956[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at^az8485k2_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRmv<0<\vq4>3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSnw32?0`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7>3Q}t3;8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp682?m4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\g|:46Vx>45Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]`}929:j1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=6=[wr512_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRmv<4<1g>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vir080Pru0:?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7:37Uyx?74U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\g|:06;i0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPcx>4:Zts:h1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQwos>3:7g<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~Ttb|31?0b?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWqey0?0=a:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZ~hz595>l5Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]{kw:36;k0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPxnp?1;4f3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSua}<7<1e>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1912`9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYg{632?j4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\|jt;07Uyxf:W3+bta&{l$ka>!ws-ttkru'je~by2>>0d8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{<3<2b>S7'nxm"h gm2-sw)pxg~y#naznu>0:4`<]9%l~k }f.eo4+qu'~zex!lotlw8186n2_;#j|i.sd,ci6){%||cz}/bmvjq:268l0Y=!hrg,qb*ak8'}y#z~ats-`kphs4?4:j6[?/fpe*w`(oe:%{!xpovq+firf}6<2e:W3+bta&{l$ka>!ws-ttkru'je~byQ?1d9V4*aun'xm#jb?.vp,suhsz&idyczP10g8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_33f?P6(o{l%~k!hl1,tv*qwf}x$ob{at^12a>S7'nxm"h gm2-sw)pxg~y#naznu]75`=R8&myj#|i/fn3*rt(yd~"m`uov\14c<]9%l~k }f.eo4+qu'~zex!lotlw[37b3\:$kh!rg-dh5(pz&}{by| cnwmpZ16m2_;#j|i.sd,ci6){%||cz}/bmvjqY?:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl86;2?<4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?31?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f28785:2_;#j|i.sd,ci6){%||cz}/bmvjqYc9595>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<2;>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?1;453\:$kh!rg-dh5(pz&}{by| cnwmpZb64?49>6[?/fpe*w`(oe:%{!xpovq+firf}Uo=191239V4*aun'xm#jb?.vp,suhsz&idyczPd0>;:77<]9%l~k }f.eo4+qu'~zex!lotlw[a7X8;;0Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;T=??4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?P2338Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3\777<]9%l~k }f.eo4+qu'~zex!lotlw[a7X<;;0Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;T9??4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?P6338Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3\377<]9%l~k }f.eo4+qu'~zex!lotlw[a7X0?l0Y=!hrg,qb*kbe&mia#immf,dfhaf&gmnon mmf-ahnYjmdUlick}aumq+sgkam$hy| r`ookjv\8T$ym` }/w6-vdk([MZ%_D@HLD]SVLK)[MZ:?6[?/fpe*w`(zhgT{Qjn0f8Q5)`zo$yj"||tcnh+wbXzz~Tm~|jg328Q5)`zo$yj"||tcnh+wbXzz~Tm~|jg^f265=R8&myj#|i/sqwfim(zmUyyQnssgd[a46k2_;#j|i.sd,vvredb%yhR||t^alig7c3\:$kh!rg-qwqdkc&xoS}{_bmnf47b3\:$kh!rg-qwqdkc&xoS}{_sgd8786l2_;#j|i.sd,vvredb%yhR||t^pfcZ46l2_;#j|i.sd,vvredb%|~R||t^cpv`a582_;#j|i.sd,vvredb%|~R||t^cpv`aXl88;7X> gsd-vc)u{}hgg"y}_sqw[duumnUo>79TAG:76?1\IO2>>79TAG:5611\IO2<:1<5?RCE4:4i7Z\FTD]EMWUSk2]YEYKPMNFF[De<_[C_IRC@DD]A`>QUA]OT[DJ[H^Cg?RTN\LU\EIZG_C3g?]OKAGR&TIL/0/3#WQSE(9$:,L]LIH78\JTDQ?1S_YBFB69[WQY@FM=0T^ZPVBAa?]YDG[OTECH@119[[FIUMVCEJBQCIRV5?]beW@nm7Ujg_QpjiScu{`ee==5Wdl]Neoiu^lxxeb`>0:ZgiZKnffx]i}fooa8eikh{}Una}zvb:coijusWog`;5mabivta=eija~|Rcnrjgq7>ekcm1omyoPcnwmp-6.l2njxlQlotlw,4/c3mkmRm`uov+6,bbf|hUhcx`{(4+g?agsiVidycz'6(f8`drfWje~by&8)e9geqgXkfex%6&d:fbpdYdg|d0=0k;ecweZeh}g~7=3j4d`vb[firf}692i5kauc\gjsi|595h6jnt`]`kphs4=4o7io{a^alqkr;=7n0hlzn_bmvjq:16m1omyoPcnwmp919n2njxlQlotlw8=<76m1omyoPcnwmp9>9?2nieyk}r79gmk.7!?1oec&>)69gmk.68 =0hd`'10+4?aoi 88";6jfn)30-2=cag":8$94dhl+50/03mce$<8&7:fjj-70!>1oec&>8(58`lh/90#=7iga(3+4?aoi ;:";6jfn)02-2=cag"9>$94dhl+66/03mce$?:&7:fjj-42!>1oec&=6(58`lh/:>#<7iga(3:*3>bnf!82%;5kio*0-2=cag"8<$94dhl+74/13mce$9'9;ekm,0/13mce$;'9;ekm,2/13mce$5'9;ekm,>69gmk:6:7=0hd`312<4?aoi48>5;6jfn=36:2=cag6::394dhl?52803mce0<617:fjj97>6?1oec2>>69gmk:587=0hd`320<4?aoi4;85;6jfn=00:2=cag698394dhl?60803mce0?817:fjj9406>1oec2=8?58`lh;:04=7iga<3<4?aoi4::556jfn=12>5803mce0>?16:fjj959>2nbb1:16:fjj939>2nbb1816:fjj919>2nbb1616:fjj9?9?2ndyy&?)69gkpr/9 20hb{{(02*<>bh}}":=$64dnww,44.02ndyy&>3(:8`jss 8>"46j`uu*21,>bh}}":5$94dnww,7/?3me~x%>'7;emvp-43!11ocxz'24+;?air|!8=%55kotv+62/?3me~x%<7)99gkpr/:0#<7iazt)1*<>bh}}"8<$64dnww,67.?2ndyy&;)69gkpr/= =0hb{{(7+4?air|!=";6j`uu*;-2=cg|~#5$94dnww858?3me~x1??>99gkpr;98437iazt=31:==cg|~7=>07;emvp973611ocxz314<;?air|5;=255kotv?528?3me~x1?7>99gkpr;904<7iazt=3=<>bh}}69<364dnww877902ndyy2=2?:8`jss4;9546j`uu>10;>720hb{{<35=<>bh}}694364dnww87?9?2ndyy2=>99gkpr;;94j7iazt=12>58?3me~x1=>>69gkpr;;7=0hb{{<5<4?air|5?5;6j`uu>5:2=cg|~7;394dnww8=803me~x1718:ggmc4iom?0i`~{y3:8bl`hWnoeio{os]u0Z4+(Jeyijka 8,1*52nW`z986hzlm58mkrXkea37cilbtko`==h~lxm`byn;qplcZcjx}s:86~}of]fiur~W}byi~f'0(37?uthoVof|ywPtipfwm.6!8>0|ah_dosp|Ys`{oxd%<&159svjaXmdzuRzgrdqk,6/6<2zycjQjmqvz[qnumzb#8$?;;qplcZcjx}sTxe|jsi*6-42vugnUna}zv_ujqavn/0 ;=7}|`g^gntqX|axne27:1<2f>vugnUna}zv_ujqavnXizyn~y&?)0`8twi`Wlg{xtQ{hsgplZgt{lx$<'>b:rqkbYbey~rSyf}erj\evubz}"9%vugnUna}zv_ujqavnXizyn~y&7)0f8twi`Wlg{xtQ{hsgplZgt{lx054?>0`8twi`Wlg{xtQ{hsgplZhboh~n$='>b:rqkbYbey~rSyf}erj\j`af|l":%vugnUna}zv_ujqavnXflmjxh&8)0`8twi`Wlg{xtQ{hsgplZhboh~n$5'>d:rqkbYbey~rSyf}erj\j`af|l636=06;qplcZ`rde;87}|`g^dvhiYs`{oxd%>&129svjaXn|fgSyf}erj+5,743yxdkRhzlm]wlwct`!8"=>5rne\bpjkW}byi~f'3(30?uthoVl~`aQ{hsgpl-2.9:1{~biPftno[qnumzb#9$?<;qplcZ`rdeUdk|h)4*56=wzfmTjxbc_ujqavn/? ;87}|`g^dvhiYs`{oxd%6&149svjaXn|fgSyf}erj?a:rqkbYa}efTxe|jsi]bwvcu|!9"=l5rne\bpjkW}byi~fParqfvq.3!8k0|ah_gwohZrozlycSl}|esv+1,7f3yxdkRhzlm]wlwct`Vkxh|{(7+2e>vugnUmyabPtipfwmYf{zoyx%9&1`9svjaXn|fgSyf}erj\evubz}"3%vugnUmyabPtipfwmYimnki%=&1`9svjaXn|fgSyf}erj\j`af|l"?%16:pg[fjl991yhRjnt`]`kphs 9#:<6|k_ecweZeh}g~#=$??;sf\`drfWje~by&=)028vaYci}kTob{at)1*55=ulVnjxlQlotlw,1/682xoSio{a^alqkr/= ;;7jPd`vb[firf}"=%<>4re]geqgXkfex%9&119q`Zbf|hUhcx`{(9+24>tcWmkmRm`uov?4;753{nThlzn_bmvjq:?294>7jPeo48vaYu{}90~~z8;r`jp`tu<2yyy?i;uos+Ze`'cyxhv;_gkekZ55p<;9"ci`9:wm``tadf}>7{ocie30?sou|lr?Skgio^11|075:m1}ezjx5]emciX;;r>=?Qiigm\c`hbzh~d~Rx;_3]{wqY6>2}ySlmd6:uq[fjl991|~Rjnt`]`kphs 9#:<6y}_ecweZeh}g~#=$??;vp\`drfWje~by&=)028swYci}kTob{at)1*55=pzVnjxlQlotlw,1/682}ySio{a^alqkr/= ;;7z|Pd`vb[firf}"=%<>4ws]geqgXkfex%9&119tvZbf|hUhcx`{(9+26>quWmkmRm`uov?33faad<4<1::7^;9:2`5>5<6;;niil4<4920?a27i3:1=7?tS4597g7==3;8>ilja;17<56<,:;;6>l<;wV2gd<7280:6kktS4597g7==3;8>ilja;17<56<,;li6<;8;W127?4|}8?m6<5z17294>{#9kh1=55m41c94?372:0>=831d?o:50;9l7g4=831b?=83.:ni450;&2fa<4i11e=om58:9l72`=83.:ni4=83.:ni4i4?=0;6)?md;1b<>h6jj0:?65`36194?"6jm08m55a1ca951=o7;o3ag?7132e84h4?:%3a`?5f02d:nn4>7:9l7=b=83.:ni46l:18'5gb=;h20b!7el39j46`>bb82f>=h;1=1<7*>be80e==i9ki1=n54o25`>5<#9kn1?l64n0``>4b<3f9<=7>5$0`g>6g?3g;io7?j;:m035<72-;ih7=n8:l2ff<6n21b?9650;&2fa<4>>1e=om50:9j711=83.:ni4<669m5ge=921b?9;50;&2fa<4>>1e=om52:9j712=83.:ni4<669m5ge=;21b?9=50;&2fa<4>>1e=om54:9j714=83.:ni4<669m5ge==21b?9?50;&2fa<4>>1e=om56:9j716=83.:ni4<669m5ge=?21b?>h50;&2fa<4>>1e=om58:9j76c=83.:ni4<669m5ge=121b?>j50;&2fa<4>>1e=om5a:9j76e=83.:ni4<669m5ge=j21b?>o50;&2fa<4>>1e=om5c:9j76?=83.:ni4<669m5ge=l21b?>650;&2fa<4>>1e=om5e:9j761=83.:ni4<669m5ge=n21b?>850;&2fa<4>>1e=om51198m652290/=oj53758j4dd28;07d=<4;29 4dc2:<<7c?mc;31?>o4;:0;6)?md;153>h6jj0:?65f32094?"6jm08::5a1ca951=88;o3ag?7132c88i4?:%3a`?51?2d:nn4>7:9j71e=83.:ni4<669m5ge=9110e>:m:18'5gb=;?=0b!7el39=;6`>bb82f>=n;=<1<7*>be8022=i9ki1=n54i21a>5<#9kn1?;94n0``>4b<3`98<7>5$0`g>6003g;io7?j;:k06c<72-;ih7=97:l2ff<6n21d??=50;&2fa<4:j1e=om50:9l774=83.:ni4<2b9m5ge=921d???50;&2fa<4:j1e=om52:9l776=83.:ni4<2b9m5ge=;21d?tH3d:?!7dn38mm6a>b`83>>{e99:1<7?50;2xL7`>3-;hj7??0:meb?6=3th?m7>5a88af?`bsA8m56T;b;354c=:;0997?i:349643l1>84>f;a966<5:38:6?>51d8~ 4ea2=:i7)?:3;df?!56839i?6*>b482f<=h;8<1<75f41194?=n;j;1<7*>be80g7=i9ki1<65f3b294?"6jm08o?5a1ca95>=n;kl1<7*>be80g7=i9ki1>65f3cg94?"6jm08o?5a1ca97>=n;kn1<7*>be80g7=i9ki1865f3ca94?"6jm08o?5a1ca91>=n;kh1<7*>be80g7=i9ki1:65f3cc94?"6jm08o?5a1ca93>=n;k31<7*>be80g7=i9ki1465`3e594?=n<9<1<75`41;94?=n;lk1<7*>be80ag=i9ki1<65f3d;94?"6jm08io5a1ca95>=n;l21<7*>be80ag=i9ki1>65f3d594?"6jm08io5a1ca97>=n;l<1<7*>be80ag=i9ki1865f3d794?"6jm08io5a1ca91>=n;l>1<7*>be80ag=i9ki1:65f3d194?"6jm08io5a1ca93>=n;l81<7*>be80ag=i9ki1465f41094?=h;k21<75`3c594?=n;831<75`3gd94?"6jm0?<<5a1ca94>=h;oo1<7*>be8744=i9ki1=65`3gf94?"6jm0?<<5a1ca96>=h;oi1<7*>be8744=i9ki1?65`3g`94?"6jm0?<<5a1ca90>=h;ok1<7*>be8744=i9ki1965`3g;94?"6jm0?<<5a1ca92>=h;o21<7*>be8744=i9ki1;65`3g594?"6jm0?<<5a1ca9<>=n;jh1<7*>be80gf=i9ki1<65f3bc94?"6jm08on5a1ca95>=n;j31<7*>be80gf=i9ki1>65f3b:94?"6jm08on5a1ca97>=n;j=1<7*>be80gf=i9ki1865f3b494?"6jm08on5a1ca91>=n;j?1<7*>be80gf=i9ki1:65f3b694?"6jm08on5a1ca93>=n;j91<7*>be80gf=i9ki1465f40:94?=h<8<1<7*>be8752=i9ki1<65`40794?"6jm0?=:5a1ca95>=h<8>1<7*>be8752=i9ki1>65`40194?"6jm0?=:5a1ca97>=h<881<7*>be8752=i9ki1865`40394?"6jm0?=:5a1ca91>=h<8:1<7*>be8752=i9ki1:65`41d94?"6jm0?=:5a1ca93>=h<9o1<7*>be8752=i9ki1465`3c694?=h;k81<75f41f94?=n;l:1<7*>be80a4=i9ki1<65f3ed94?"6jm08i<5a1ca95>=n;mo1<7*>be80a4=i9ki1>65f3ef94?"6jm08i<5a1ca97>=n;mi1<7*>be80a4=i9ki1865f3e`94?"6jm08i<5a1ca91>=n;mk1<7*>be80a4=i9ki1:65f3e;94?"6jm08i<5a1ca93>=n;m21<7*>be80a4=i9ki1465f3c794?=n;8k1<75f40;94?=h<9?1<75`41a94?=h<921<75f41694?=h;131<7*>be80e==i9ki1<65`39:94?"6jm08m55a1ca95>=h;1<1<7*>be80e==i9ki1>65`39794?"6jm08m55a1ca97>=h;1>1<7*>be80e==i9ki1865`39194?"6jm08m55a1ca91>=h;181<7*>be80e==i9ki1:65`39394?"6jm08m55a1ca93>=h;1:1<7*>be80e==i9ki1465`36d94?"6jm08m55a1ca9=>=h;>o1<7*>be80e==i9ki1m65`36f94?"6jm08m55a1ca9f>=h;>h1<7*>be80e==i9ki1o65`36c94?"6jm08m55a1ca9`>=h;>31<7*>be80e==i9ki1i65`36:94?"6jm08m55a1ca9b>=h;>=1<7*>be80e==i9ki1==54o255>5<#9kn1?l64n0``>47<3f9<97>5$0`g>6g?3g;io7?=;:m031<72-;ih7=n8:l2ff<6;21d?:=50;&2fa<4i11e=om51598k615290/=oj53`:8j4dd28?07b=7f;29 4dc2:k37c?mc;35?>i40l0;6)?md;1b<>h6jj0:;65`39f94?"6jm08m55a1ca95==o7;o3ag?7f32e84l4?:%3a`?5f02d:nn4>b:9l7=1=83.:ni49l:18'5gb=;h20b!7el39j46`>bb82b>=n;=21<7*>be8022=i9ki1<65f35594?"6jm08::5a1ca95>=n;=?1<7*>be8022=i9ki1>65f35694?"6jm08::5a1ca97>=n;=91<7*>be8022=i9ki1865f35094?"6jm08::5a1ca91>=n;=;1<7*>be8022=i9ki1:65f35294?"6jm08::5a1ca93>=n;:l1<7*>be8022=i9ki1465f32g94?"6jm08::5a1ca9=>=n;:n1<7*>be8022=i9ki1m65f32a94?"6jm08::5a1ca9f>=n;:k1<7*>be8022=i9ki1o65f32;94?"6jm08::5a1ca9`>=n;:21<7*>be8022=i9ki1i65f32594?"6jm08::5a1ca9b>=n;:<1<7*>be8022=i9ki1==54i216>5<#9kn1?;94n0``>47<3`9887>5$0`g>6003g;io7?=;:k076<72-;ih7=97:l2ff<6;21b?><50;&2fa<4>>1e=om51598m656290/=oj53758j4dd28?07d=;e;29 4dc2:<<7c?mc;35?>o4h6jj0:;65f35a94?"6jm08::5a1ca95==i6=4+1cf973188;o3ag?7f32c8844?:%3a`?51?2d:nn4>b:9j710=83.:ni4<669m5ge=9j10e>=m:18'5gb=;?=0b!7el39=;6`>bb82b>=h;8=1<75f30:94?=n;o>1<7*>be80b0=i9ki1<65f3g194?"6jm08j85a1ca95>=n;o81<7*>be80b0=i9ki1>65f3g394?"6jm08j85a1ca97>=n;o:1<7*>be80b0=i9ki1865f3dd94?"6jm08j85a1ca91>=n;lo1<7*>be80b0=i9ki1:65f3df94?"6jm08j85a1ca93>=n;li1<7*>be80b0=i9ki1465`33194?"6jm08>n5a1ca94>=h;;81<7*>be806f=i9ki1=65`33394?"6jm08>n5a1ca96>=h;;:1<7*>be806f=i9ki1?65`30d94?"6jm08>n5a1ca90>=h;8o1<7*>be806f=i9ki1965`30f94?"6jm08>n5a1ca92>=h;8i1<7*>be806f=i9ki1;65`30`94?"6jm08>n5a1ca9<>=h;;o1<75f3e794?"6jm08h;5a1ca94>=n;m>1<7*>be80`3=i9ki1=65f3e194?"6jm08h;5a1ca96>=n;m81<7*>be80`3=i9ki1?65f3e394?"6jm08h;5a1ca90>=n;m:1<7*>be80`3=i9ki1965f3bd94?"6jm08h;5a1ca92>=n;jo1<7*>be80`3=i9ki1;65f3bf94?"6jm08h;5a1ca9<>=n;o<1<75m31g94?7=83:p(>{e;9l1<7?50;2x 4ea2;lj7E=?d:J1b<=h9kk1<75rb3g`>5<4290;w)?lf;d:?M57l2B9j45G489'55b=92c?o7>5;h7;>5<cg8e=>N48m1C>k74H5;8 46c281b8n4?::k65;|`1ag<72:0;6=u+1bd9b<=O;9n0D?h6;I6:?!77l3;0e9m50;9j1=<722e:nk4?::a6c7=83?1<7>t$0ae>cb<@::o7E"68m0:7d:l:188m07=831b954?::k2f`<722e:nk4?::a6c4=8391<7>t$0ae>c?<@::o7E"68m0:7d:l:188m0>=831d=oh50;9~f7cf290>6=4?{%3`b?`c3A9;h6F=f89K0<=#99n1=6g;c;29?l362900e8650;9j5gc=831d=oh50;9~f7`7290?6=4?{%3`b?`d3A9;h6F=f89'55b=92c?o7>5;h7;>5<5<54;294~"6ko0mo6F<0e9K6c?<,8:o6<5f4b83>>o203:17d?me;29?j7en3:17pl=2`83>1<729q/=nh5fb9K75b<@;l27)??d;68m1e=831b954?::k2f`<722e:nk4?::a67c=83>1<7>t$0ae>ce<@::o7Eh6=44i4:94?=n9ko1<75`1cd94?=zj8n;6=4;:183!7dn3lj7E=?d:J1b<=#99n1=6g;c;29?l322900e8650;9l5g`=831vn?7j:187>5<7s-;hj7hl;I13`>N5n01/==j51:k7g?6=3`?36=44i0`f>5<cg8eg>N48m1C>k74$02g>1=nN5n01b9?4?::k6=?6=3`;h;7>5;n3a5}#9jl1?=m4H22g?M4a12c>>7>5;h360?6=3f;i47>5;|`2``<72=0;6=u+1bd950c<@::o7E5<cg804f=O;9n0D?h6;h71>5<5<54;294~"6ko0:9h5G31f8L7`>3`?96=44i4;94?=n9j=1<75`1c:94?=zj8l;6=4<:183!7dn39;o6F<0e9K6c?5<3290;w)?lf;36a>N48m1C>k74i4094?=n=00;66g>c683>>i6j10;66sm1g394?5=83:p(>o6==0;66a>b983>>{e9l;1<7:50;2x 4ea28?n7E=?d:J1b<=n=;0;66g:9;29?l7d?3:17b?m8;29?xd6n;0;6>4?:1y'5f`=;9i0D>>k;I0e=>o2:3:17d?:4;29?j7e03:17pl>e383>1<729q/=nh514g8L66c3A8m56g:2;29?l3>2900e50z&2gc<6=l1C?=j4H3d:?l352900e8750;9j5f1=831d=o650;9~f4`329086=4?{%3`b?57k2B8=831vn5<7s-;hj7?:e:J04a=O:o30e8<50;9j1<<722c:o:4?::m2f=<722wi=k;50;194?6|,8im6>>l;I13`>N5n01b9?4?::k211<722e:n54?::a5c0=8391<7>t$0ae>66d3A9;h6F=f89j17<722c:994?::m2f=<722wi=k950;794?6|,8im6kl4H22g?M4a12.:;h6`>5<>o203:17b?mf;29?xd6n10;684?:1y'5f`=nk1C?=j4H3d:?!77l3;0e9m50;9j14<722c>97>5;h7;>5<cg8ef>N48m1C>k74$02g>4=n5<7s-;hj7hm;I13`>N5n01/==j51:k7g?6=3`?:6=44i4794?=n=10;66a>bg83>>{e9oh1<7;50;2x 4ea2oh0D>>k;I0e=>"68m0:7d:l:188m07=831b984?::k65;|`2bf<72<0;6=u+1bd9bg=O;9n0D?h6;%33`?7>o2=3:17d;7:188k4da2900qo?id;291?6=8r.:ok4ib:J04a=O:o30(<>k:09j0f<722c>=7>5;h76>5<t$0ae>cd<@::o7Eh6=44i4394?=n=<0;66g:8;29?j7en3:17pl=0`83>1<729q/=nh514g8L66c3A8m56g:2;29?l3>2900e5d9K75b<@;l27d;=:188m0?=831b=n950;9l5g>=831vn?>7:187>5<7s-;hj7?:e:J04a=O:o30e8<50;9j1<<722c:o:4?::m2f=<722wi>=950;694?6|,8im6<;j;I13`>N5n01b9?4?::k6=?6=3`;h;7>5;n3a5}#9jl1=8k4H22g?M4a12c>>7>5;h7:>5<5<54;294~"6ko0:9h5G31f8L7`>3`?96=44i4;94?=n9j=1<75`1c:94?=zj;;h6=4;:183!7dn3;>i6F<0e9K6c?>o6k>0;66a>b983>>{e:8h1<7:50;2x 4ea28?n7E=?d:J1b<=n=;0;66g:9;29?l7d?3:17b?m8;29?xd59h0;694?:1y'5f`=9>k;I0e=>o2:3:17d;6:188m4e02900c50z&2gc<6=l1C?=j4H3d:?l352900e8750;9j5f1=831d=o650;9~f71a290?6=4?{%3`b?72m2B81<7>t$0ae>43b3A9;h6F=f89j17<722c>57>5;h3`3?6=3f;i47>5;|`13a<72=0;6=u+1bd950c<@::o7E5<cg821`=O;9n0D?h6;h71>5<5<3290;w)?lf;36a>N48m1C>k74i4094?=n=00;66g>c683>>i6j10;66sm29:94?2=83:p(>o213:17d?l7;29?j7e03:17pl=8683>1<729q/=nh514g8L66c3A8m56g:2;29?l3>2900e5d9K75b<@;l27d;=:188m0?=831b=n950;9l5g>=831vn?6::187>5<7s-;hj7?:e:J04a=O:o30e8<50;9j1<<722c:o:4?::m2f=<722wi>5:50;694?6|,8im6<;j;I13`>N5n01b9?4?::k6=?6=3`;h;7>5;n3a5}#9jl1jo5G31f8L7`>3-;;h7?4i5a94?=n=80;66g:5;29?l3?2900c50z&2gc6=44i4:94?=h9kl1<75rb341>5<2290;w)?lf;da?M57l2B9j45+11f95>o3k3:17d;>:188m03=831b954?::m2fc<722wi>;?50;794?6|,8im6kl4H22g?M4a12.:;h6`>5<>o203:17b?mf;29?xd5>90;684?:1y'5f`=nk1C?=j4H3d:?!77l3;0e9m50;9j14<722c>97>5;h7;>5<cg8ef>N48m1C>k74$02g>4=n5<7s-;hj7hm;I13`>N5n01/==j51:k7g?6=3`?:6=44i4794?=n=10;66a>bg83>>{e:>k;I0e=>"68m0?7d:l:188m07=831b954?::k2f`<722e:nk4?::a60c=83?1<7>t$0ae>cd<@::o7Eh6=44i4394?=n=<0;66g:8;29?j7en3:17pl=5083>6<729q/=nh531a8L66c3A8m56g:2;29?l72<3:17b?m8;29?xd5=90;6>4?:1y'5f`=;9i0D>>k;I0e=>o2:3:17d?:4;29?j7e03:17pl=4683>1<729q/=nh514g8L66c3A8m56g:2;29?l3>2900e50z&2gc<6=l1C?=j4H3d:?l352900e8750;9j5f1=831d=o650;9~f72b29086=4?{%3`b?57k2B8=831vn?:<:187>5<7s-;hj7?:e:J04a=O:o30e8<50;9j1<<722c:o:4?::m2f=<722wi>9j50;194?6|,8im6>>l;I13`>N5n01b9?4?::k211<722e:n54?::a617=83>1<7>t$0ae>43b3A9;h6F=f89j17<722c>57>5;h3`3?6=3f;i47>5;|`10f<72:0;6=u+1bd975e<@::o7E87>5;n3a5}#9jl1=8k4H22g?M4a12c>>7>5;h7:>5<5<53;294~"6ko083`?96=44i077>5<cg821`=O;9n0D?h6;h71>5<5<4290;w)?lf;13g>N48m1C>k74i4094?=n9<>1<75`1c:94?=zj;9i6=4;:183!7dn3;>i6F<0e9K6c?>o6k>0;66a>b983>>{e:=31<7=50;2x 4ea2::h7E=?d:J1b<=n=;0;66g>5583>>i6j10;66sm22;94?2=83:p(>o213:17d?l7;29?j7e03:17pl=7783>0<729q/=nh5fc9K75b<@;l27)??d;38m1e=831b9<4?::k61?6=3`?36=44o0`e>5<55;294~"6ko0mn6F<0e9K6c?<,8:o6<5f4b83>>o293:17d;::188m0>=831d=oh50;9~f713290>6=4?{%3`b?`e3A9;h6F=f89'55b=92c?o7>5;h72>5<>i6jo0;66sm26194?3=83:p(0e82?l2d2900e8?50;9j10<722c>47>5;n3ab?6=3th9;?4?:483>5}#9jl1jo5G31f8L7`>3-;;h7?4i5a94?=n=80;66g:5;29?l3?2900c50z&2gc6=44i4:94?=h9kl1<75rb353>5<2290;w)?lf;da?M57l2B9j45+11f95>o3k3:17d;>:188m03=831b954?::m2fc<722wi>;h50;794?6|,8im6kl4H22g?M4a12.:;h6`>5<>o203:17b?mf;29?xd5>l0;684?:1y'5f`=nk1C?=j4H3d:?!77l3;0e9m50;9j14<722c>97>5;h7;>5<cg8ef>N48m1C>k74$02g>4=n5<7s-;hj7hm;I13`>N5n01/==j51:k7g?6=3`?:6=44i4794?=n=10;66a>bg83>>{e:m91<7;50;2x 4ea2oh0D>>k;I0e=>"68m0:7d:l:188m07=831b984?::k65;|`1`7<72<0;6=u+1bd9bg=O;9n0D?h6;%33`?7>o2=3:17d;7:188k4da2900qok:09j0f<722c>=7>5;h76>5<t$0ae>cd<@::o7Eh6=44i4394?=n=<0;66g:8;29?j7en3:17pl=ce83>0<729q/=nh5fe9K75b<@;l27)??d;68m1e=831b9<4?::k65;n3ab?6=3th9ok4?:483>5}#9jl1jo5G31f8L7`>3-;;h7?4i5a94?=n=80;66g:5;29?l3?2900c50z&2gc<48j1C?=j4H3d:?l352900e<;;:188k4d?2900qo50z&2gc<6=l1C?=j4H3d:?l352900e8750;9j5f1=831d=o650;9~f7e729086=4?{%3`b?57k2B8=831vn?l9:187>5<7s-;hj7?:e:J04a=O:o30e8<50;9j1<<722c:o:4?::m2f=<722wi>oh50;194?6|,8im6>>l;I13`>N5n01b9?4?::k211<722e:n54?::a6g2=83>1<7>t$0ae>43b3A9;h6F=f89j17<722c>57>5;h3`3?6=3f;i47>5;|`1f`<72:0;6=u+1bd975e<@::o7E87>5;n3a5}#9jl1=8k4H22g?M4a12c>>7>5;h7:>5<5<53;294~"6ko083`?96=44i077>5<cg821`=O;9n0D?h6;h71>5<5<4290;w)?lf;13g>N48m1C>k74i4094?=n9<>1<75`1c:94?=zj;kn6=4;:183!7dn3;>i6F<0e9K6c?>o6k>0;66a>b983>>{e:kh1<7=50;2x 4ea2::h7E=?d:J1b<=n=;0;66g>5583>>i6j10;66sm2`a94?2=83:p(>o213:17d?l7;29?j7e03:17pl=b`83>6<729q/=nh531a8L66c3A8m56g:2;29?l72<3:17b?m8;29?xd5ih0;694?:1y'5f`=9>k;I0e=>o2:3:17d;6:188m4e02900c50z&2gc6=44i4:94?=h9kl1<75rb3g5>5<2290;w)?lf;da?M57l2B9j45+11f95>o3k3:17d;>:188m03=831b954?::m2fc<722wi>h;50;794?6|,8im6kl4H22g?M4a12.:;h6`>5<>o203:17b?mf;29?xd5m=0;684?:1y'5f`=nk1C?=j4H3d:?!77l3;0e9m50;9j14<722c>97>5;h7;>5<cg8ef>N48m1C>k74$02g>4=n5<7s-;hj7hm;I13`>N5n01/==j51:k7g?6=3`?:6=44i4794?=n=10;66a>bg83>>{e:l;1<7;50;2x 4ea2oh0D>>k;I0e=>"68m0:7d:l:188m07=831b984?::k65;|`1a5<72<0;6=u+1bd9bg=O;9n0D?h6;%33`?7>o2=3:17d;7:188k4da2900qok:09j0f<722c>=7>5;h76>5<6=4<:183!7dn3;>56F<0e9K6c?<,8:o6<>4i022>5<5<53;294~"6ko0:945G31f8L7`>3-;;h7??;h335?6=3`;;>7>5;n3a5}#9jl1=874H22g?M4a12.:0:k244<722c:4<50;194?6|,8im6<;6;I13`>N5n01/==j51b9j557=831b==<50;9l5g>=831vn?<8:180>5<7s-;hj7?:9:J04a=O:o30(<>k:0a8m4662900e<>=:188k4d?2900qo<61;291?6=8r.:ok4>5e9K75b<@;l27)??d;3g?l7793:17d??2;29?l77;3:17d??4;29?j7e03:17pl=2783>0<729q/=nh514f8L66c3A8m56*>0e82`>o6880;66g>0383>>o68:0;66g>0583>>i6j10;66sm28294?3=83:p(5<2290;w)?lf;36`>N48m1C>k74$02g>4b5<5<cg821a=O;9n0D?h6;%33`?7c3`;;=7>5;h336?6=3`;;?7>5;h330?6=3f;i47>5;|`161<72<0;6=u+1bd950b<@::o7E4?::k241<722e:n54?::a6d6=8391<7>t$0ae>43>3A9;h6F=f89'55b=991b==?50;9j554=831d=o650;9~f7>b290>6=4?{%3`b?72l2B8>:188m4652900e<><:188m4632900c50z&2gc<6=m1C?=j4H3d:?!77l3;o7d??1;29?l77:3:17d??3;29?l77<3:17b?m8;29?xd59=0;6>4?:1y'5f`=9<30D>>k;I0e=>"68m0:o6g>0083>>o68;0;66a>b983>>{e:881<7;50;2x 4ea28?o7E=?d:J1b<=#99n1=i5f11394?=n9981<75f11194?=n99>1<75`1c:94?=zj;;;6=4::183!7dn3;>h6F<0e9K6c?<,8:o65<5<5<55;294~"6ko0:9i5G31f8L7`>3-;;h7?k;h335?6=3`;;>7>5;h337?6=3`;;87>5;n3a5}#9jl1=8j4H22g?M4a12.:d:k244<722c:?m50;794?6|,8im6<;k;I13`>N5n01/==j5169j557=831b==<50;9j555=831b==:50;9l5g>=831vn?79:187>5<7s-;hj7?:b:J04a=O:o30(<>k:3:8m4662900e<>=:188m4642900c03:197>50z&2gc<6=m1C?=j4H3d:?!77l3l<7d??1;29?l77:3:17d??3;29?l77<3:17b?m8;29?xd5:o0;6>4?:1y'5f`=9<30D>>k;I0e=>"68m0:<6g>0083>>o68;0;66a>b983>>{e:=21<7<50;2x 4ea28?37E=?d:J1b<=#99n146g>0083>>i6j10;66sm25494?4=83:p(o6880;66a>b983>>{e:=>1<7<50;2x 4ea28?37E=?d:J1b<=#99n146g>0083>>i6j10;66sm25094?4=83:p(o6880;66a>b983>>{e:=:1<7<50;2x 4ea28?37E=?d:J1b<=#99n146g>0083>>i6j10;66sm22g94?4=83:p(o6880;66a>b983>>{e::i1<7<50;2x 4ea28?37E=?d:J1b<=#99n146g>0083>>i6j10;66sm22c94?4=83:p(o6880;66a>b983>>{e:k31<7<50;2x 4ea28?37E=?d:J1b<=#99n146g>0083>>i6j10;66sm2c594?4=83:p(o6880;66a>b983>>{e:k?1<7<50;2x 4ea28?37E=?d:J1b<=#99n146g>0083>>i6j10;66sm2c194?4=83:p(o6880;66a>b983>>{e:k;1<7<50;2x 4ea28?37E=?d:J1b<=#99n146g>0083>>i6j10;66sm2`d94?4=83:p(o6880;66a>b983>>{e:hn1<7<50;2x 4ea28?37E=?d:J1b<=#99n146g>0083>>i6j10;66sm2``94?4=83:p(o6880;66a>b983>>{e:<81<7<50;2x 4ea28?37E=?d:J1b<=#99n146g>0083>>i6j10;66sm2b194?4=83:p(o6880;66a>b983>>{e9l?1<7:50;2x 4ea28?i7E=?d:J1b<=#99n1=45f11394?=n9981<75f11194?=h9k21<75rb0g5>5<3290;w)?lf;36f>N48m1C>k74$02g>715<5<54;294~"6ko0:9o5G31f8L7`>3-;;h7<8;h335?6=3`;;>7>5;h337?6=3f;i47>5;|`2a=<72=0;6=u+1bd950d<@::o7E4?::m2f=<722wi=h750;694?6|,8im6<;m;I13`>N5n01/==j5269j557=831b==<50;9j555=831d=o650;9~f4cf290?6=4?{%3`b?72j2B8>:188m4652900e<><:188k4d?2900qo?jb;290?6=8r.:ok4>5c9K75b<@;l27)??d;04?l7793:17d??2;29?l77;3:17b?m8;29?xd6mj0;694?:1y'5f`=9>k;I0e=>"68m09;6g>0083>>o68;0;66g>0283>>i6j10;66sm1df94?2=83:p(h6F<0e9K6c?<,8:o645f11394?=n9981<75f11194?=n99>1<75`1c:94?=zj;::6=4::183!7dn3;>h6F<0e9K6c?<,8:o65<5<5<5c383>5}#9jl1=n>4H22g?M4a12P?n7mt6;59e?d=980:>7?<:069`?c=9<0::7sac683?kc>291/=n65f99'5fd=:2.:5+10397>"69;087)?>3;18 4732:1/=<;53:&253<43-;:;7=4$03;>6=#9831?6*>1`80?!76j390(5+13397>"6:;087)?=3;18 4432:1/=?;53:&263<43-;9;7=4$00;>6=#9;31?6*>2`80?!75j390(<h4<;%31b?5<,89;6>5+12397>"6;;087)?<3;18 4532:1/=>;53:&273<43-;8;7=4$01;>6=#9:31?6*>3`80?!74j390(<=l:29'56b=;2.:?h4<;%30b?5<,8>;6>5+15397>"6<;087)?;3;18 4232:1/=9;53:&203<43-;?;7=4$06;>6=#9=31?6*>4`80?!73j390(<:l:29'51b=;2.:9=4>b69'51c=:2.:8k4=;%331?5<,8:=6>5+11597>"681087)??9;18 46f2:1/=8?5f99'504=n11/=n?51c58 4e528h<7c?l3;07?k7d<38?7)?l9;3a3>"68k087)??c;18 6602::=7)=?8;132>h4800986`<0`810>"6kj097d:k:188m1c=831b9>4?::k60?6=3`l?6=44i0a6>5<i4?:%3a`?4b3g;io7?4;h0`>5<#9kn1>h5a1ca96>=n:k0;6)?md;0f?k7ek3907d!7el38n7c?mc;58?l52290/=oj52d9m5ge=021b?94?:%3a`?4b3g;io774;h10>5<#9kn1>h5a1ca9e>=n;;0;6)?md;0f?k7ek3h07d=>:18'5gb=:l1e=om5c:9j75<72-;ih7!7el39n7c?mc;28?l5c290/=oj53d9m5ge=921b?n4?:%3a`?5b3g;io7<4;h1a>5<#9kn1?h5a1ca97>=n;h0;6)?md;1f?k7ek3>07d:7:18'5gb=;l1e=om55:9j02<72-;ih7=j;o3ag?0<3`>=6=4+1cf97`=i9ki1;65f4483>!7el39n7c?mc;:8?l23290/=oj53d9m5ge=121b8>4?:%3a`?5b3g;io7o4;h61>5<#9kn1?h5a1ca9f>=n<80;6)?md;1f?k7ek3i07d:?:18'5gb=;l1e=om5d:9j7<<72-;ih7=j;o3ag?c<3`=86=4+1cf937=i9ki1<65f7083>!7el3=97c?mc;38?l0a290/=oj5739m5ge=:21b:h4?:%3a`?153g;io7=4;h4g>5<#9kn1;?5a1ca90>=n>j0;6)?md;51?k7ek3?07d8m:18'5gb=?;1e=om56:9j2d<72-;ih79=;o3ag?1<3`<26=4+1cf937=i9ki1465f6983>!7el3=97c?mc;;8?l00290/=oj5739m5ge=i21b:;4?:%3a`?153g;io7l4;h47>5<#9kn1;?5a1ca9g>=n>:0;6)?md;51?k7ek3n07d8=:18'5gb=?;1e=om5e:9j24<72-;ih79=;o3ag?`<3`<;6=4+1cf937=i9ki1==54i4d94?"6jm0<>6`>bb825>=n=l0;6)?md;51?k7ek3;976g:d;29 4dc2>80b5:9j3d<72-;ih79=;o3ag?7132c<57>5$0`g>245<#9kn1;?5a1ca95===1<7*>be846>h6jj0:565f7783>!7el3=97c?mc;3b?>o0=3:1(4`<3`3?6=4+1cf9=6=i9ki1<65f9383>!7el3387c?mc;38?l?7290/=oj5929m5ge=:21b4k4?:%3a`??43g;io7=4;h:f>5<#9kn15>5a1ca90>=n0m0;6)?md;;0?k7ek3?07d6l:18'5gb=1:1e=om56:9j!7el3387c?mc;;8?l>?290/=oj5929m5ge=i21b4:4?:%3a`??43g;io7l4;h:6>5<#9kn15>5a1ca9g>=n0=0;6)?md;;0?k7ek3n07d6<:18'5gb=1:1e=om5e:9j<7<72-;ih77<;o3ag?`<3`2:6=4+1cf9=6=i9ki1==54i9294?"6jm02?6`>bb825>=n?o0;6)?md;;0?k7ek3;976g8e;29 4dc2090b;2d:nn4>5:9j=g<72-;ih77<;o3ag?7132c2m7>5$0`g><55<#9kn15>5a1ca95==be8:7>h6jj0:565f9683>!7el3387c?mc;3b?>o>>3:1(4`<3`k;6=4+1cf9=c=i9ki1<65f9d83>!7el33m7c?mc;38?l?c290/=oj59g9m5ge=:21b5n4?:%3a`??a3g;io7=4;hc6>5<#9kn1m95a1ca94>=ni:0;6)?md;c7?k7ek3;07do=:18'5gb=i=1e=om52:9je4<72-;ih7o;;o3ag?5<3`9;<7>5$0`g>7`a3g;io7>4;h0ea?6=,8ho6?hi;o3ag?7<3`8mh7>5$0`g>7`a3g;io7<4;h0eg?6=,8ho6?hi;o3ag?5<3`9;97>5$0`g>6633g;io7>4;h137?6=,8ho6>>;;o3ag?7<3`9;>7>5$0`g>6633g;io7<4;h135?6=,8ho6>>;;o3ag?5<3fhm6=4+1cf9f`=i9ki1<65`be83>!7el3hn7c?mc;38?jde290/=oj5bd9m5ge=:21dnl4?:%3a`?db3g;io7=4;n`:>5<#9kn1nh5a1ca90>=hj10;6)?md;`f?k7ek3?07bl8:18'5gb=jl1e=om56:9lf3<72-;ih7lj;o3ag?1<3fh>6=4+1cf9f`=i9ki1465`b583>!7el3hn7c?mc;;8?jd4290/=oj5bd9m5ge=i21dn?4?:%3a`?db3g;io7l4;n`3>5<#9kn1nh5a1ca9g>=hio0;6)?md;`f?k7ek3n07boj:18'5gb=jl1e=om5e:9lea<72-;ih7lj;o3ag?`<3fkh6=4+1cf9f`=i9ki1==54o``94?"6jm0ii6`>bb825>=hih0;6)?md;`f?k7ek3;976an9;29 4dc2ko0b5:9lg3<72-;ih7lj;o3ag?7132eh97>5$0`g>gc5<#9kn1nh5a1ca95==be8aa>h6jj0:565`c383>!7el3hn7c?mc;3b?>id93:1(4`<3fo:6=4+1cf9a5=i9ki1<65`dg83>!7el3o;7c?mc;38?jbc290/=oj5e19m5ge=:21dhn4?:%3a`?c73g;io7=4;nfa>5<#9kn1i=5a1ca90>=hlh0;6)?md;g3?k7ek3?07bj6:18'5gb=m91e=om56:9l`=<72-;ih7k?;o3ag?1<3fn<6=4+1cf9a5=i9ki1465`d783>!7el3o;7c?mc;;8?jb2290/=oj5e19m5ge=i21dh94?:%3a`?c73g;io7l4;nf1>5<#9kn1i=5a1ca9g>=hl80;6)?md;g3?k7ek3n07bj?:18'5gb=m91e=om5e:9lgc<72-;ih7k?;o3ag?`<3fin6=4+1cf9a5=i9ki1==54obf94?"6jm0n<6`>bb825>=hkj0;6)?md;g3?k7ek3;976alb;29 4dc2l:0b5:9la=<72-;ih7k?;o3ag?7132en;7>5$0`g>`65<#9kn1i=5a1ca95==be8f4>h6jj0:565`e583>!7el3o;7c?mc;3b?>ib;3:1(4?:%3a`?c73g;io7?j;:m`4n0``>4`<3fon6=4+1cf9aa=i9ki1<65`eb83>!7el3oo7c?mc;38?jce290/=oj5ee9m5ge=:21dil4?:%3a`?cc3g;io7=4;nd0>5<#9kn1j?5a1ca94>=hn80;6)?md;d1?k7ek3;07bh?:18'5gb=n;1e=om52:9lac<72-;ih7h=;o3ag?5<3th9>i4?:283>5}#9jl1=8o4H22g?M4a12.:b:k244<722c:4750;694?6|,8im6<;l;I13`>N5n01/==j5f79j557=831b==<50;9j555=831d=8;50;9~w67f2908ivP<1`9>6`e=k=54b9>6`d=k?54b9>6c4=ho54b9>6c6=k954b9>67g=?k54b9>5a6=4k54b9>6<`=4j54b9>5c1=5c?=5cd=5cb=5c`=;:54b9>635=;<54b9>637=;>54b9>60`=8j54b9>60e=8k54b9>620=:;54b9>622=:=54b9>624=:?54b9>626=;h54b9>63c=i;54b9>6a2=i=54b9>6a4=i?54b9>6a6=nk54b9>6fb=nh54b9>6`1=h854b9>6`3=h:54b9>6`5=h<54b9>6`7=h>54b9>6a`=h65529>6`>===1v9>=:1824~X38;16=i<51108974a28:970?j5;337>;6m?0:<>521d59555<58o36<><;<3f=?77;27:il4>029>5`d=99901465348257??1:p056=8328wS==e:\052=Y<9i0R9>7;_122>X38<1U?o94^2`;?[5c?2T?=;5Q4078Z1733W>:?6P;139]047hj;_1e`>X4nj1U?kl4^2db?[5a12T8j55Q3g58966b2ol01?h>:4:897cf2<201?h?:4:897`02<201?7i:4:8976f2<301?>6:4;8976?2<301?>8:4;897612<301??k:4;8977d2<301??m:4;8977f2<301??6:4;8971a2<301?9j:4;8971c2<301?9l:4;8971e2<301?67:4;897>02<301?69:4;897>22<301?6;:4;897202<301?:::4;897242<301?:>:4;8975a2<301?=k:4;8975e2<301?=6:4;897d?2<301?l9:4;897d32<301?l=:4;897d72<301?oj:4;897gd2<301?on:4;897c?2=n01?k7:5g897c?28i>70;5m10:oi522d:95fc<5;o36?h4=3g;>65<5;o36><4=3g;>67<5;o36>>4=3g;>7?<5;o36>h4=3g;>15<5;o369<4=3g;>17<5;o369>4=3g;>6?<5;o364:4=3g;><4<5;o364>4=3g;>=`<5;o365k4=3g;>=b<5;o365m4=3g;>=d<5;o365o4=3g;>=?<5;o36564=3g;>=1<5;o365;4=3g;>=2<5;o365=4=3g;>=4<5;o365?4=3g;>=6<5;o36:h4=3g;>2c<5;o36:j4=3g;>2e<5;o364l4=3g;><><5;o36494=3g;><0<5;o364;4=3g;><7<5;o36584=3g;>2d<5;o36l>4=3g;>d5<5;o36l<4=3g;>d7<5;o36>>:;<0f6`>=;9;0q~:?4;297~X38=16>k?51cg897cf28hn7p}6}Y;k801?;51>0:<>522139552;57>52z\74<=:9m:1=oh4}r1a0?6=:rT8n95228g95g`53z\066=:9ol1=oh4=0gg>4663ty8>o4?:5y]774<58o?6874=0df>4da34;no7??1:p77g=83>pR><>;<3f7?3>34;mh7?mf:?2ag<6881v><6:187[55827:i?4:9:?2bf<6jo16=ho51138yv5503:18vP<1g9>5`7==016=kl51cd894c>28::7p}<2683>1}Y;8o01{t;;<1<7:t^23g?87cn3?270?i9;3ab>;6m>0:<<5rs206>5<3sW9:o63>dd86=>;6n10:nk521d4955754z\05g=:9mn194521g595g`<58o>6<>>;|q0e<<72;qU?574=3g;>`752z\0<==::l21hk5rs2c6>5<5sW93:63=e98g`>{t;h>1<77}Y;1>01?k7:e`8yv5f:3:1>vP<829>6`>=lh1v>o>:181[5?:279i54k9:p7d6=838pR>6>;<0f;5m10o96s|38a94?4|V:=o70h65d09~w6??2909wS=89:?1a=fc52z\033=::l21oi5rs2;7>5<5sW9<963=e98`g>{t;091<77}Y;>901?k7:bc8yv5>93:1>vP<739>6`>=k01v>l?:181[5?n279i54j8:p7d`=838pR>6j;<0f;5m10n86s|3``94?4|V:2j70h65dd9~w6?e2909wS=81:?1a=50;0xZ617348n47m7;|q02=<72;qU?964=3g;>2552z\002=::l21;<5rs247>5<5sW9?963=e985b>{t;?91<77}Y;=901?k7:7f8yv5193:1>vP<439>6`>=>j1v>8?:181[539279i549b:p70`=838pR>:?;<0f;5m10=;6s|34`94?4|V:9h700q~=:8;296~X4;016>h65629~w6302909wS=<8:?1a=<1:2wx?8850;0xZ650348n478>;|q010<72;qU?>84=3g;>3687>52z\070=::l219k5rs270>5<5sW98863=e986a>{t;<81<77}Y;:801?k7:4a8yv5283:1>vP<309>6`>==k1v>8i:181[53m279i548a:p73c=838pR>:k;<0f3ty8:i4?:3y]71e<5;o36:64}r15g?6=:rT88o522d:932=z{:;5m10<:6s|37c94?4|V:>27000;6?uQ354897c?2>>0q~=95;296~X4;k16>h65719~w63f2909wS=<0:?1a=<1=2wx?9h50;0xZ64a348n47;n;|q224<72hq6?=h51cc897612<801??6:408971e2<801?6;:408972>2<801?=6:40897df2<801?on:40897c?2o>0q~463=ec82fc=::lk19<5rs3g`>5<5s48no7?mf:?1a`<6881v?h=:18084a;3?370ho50;1x97ce2<201?kn:0`e?84bm3;;>6s|2g394?5|5;l:6?k51cg894b72:4789707270<86;76?840=3?>70<84;76?840;3?>70<82;76?84093?>70<80;76?841n3?>70<9e;76?xu5n=0;6?u22g595gc<5;l>6m3;ii63=9g82f`=::0n1=ok4=3f6>03<5;n?68;4=3f0>03<5;n968;4=3f2>03<5;n;68;4=3af>03<5;io6?l50;1x974f2<201?c}::;k1=oh4=30`>4653489j7??1:?2a0<68;16=h85110894c028:970?j8;336>;6m00:=;<3fg?77:27:ii4>039>6<1=99;01?>>:021?84>13;;?6s|1e394?4|58n;6864=0f1>4d?3ty9584?:2y>64j5599>6<>=9k20q~<6f;296~;51o0:nk52284955455z?1=a<6jo16>l>5113897?128::70<67;336>;5880:<<5rs0f0>5<6>r7:hi4:2:?2a`<2:279:94:1:?126<29279:?4:1:?124<29279:=4:1:?11c<292799i4:1:?11f<292799h4:1:?133<29279;84:1:?131<29279;>4:1:?137<29279;<4:1:?135<29279:k4:1:?12`<29279>k4>b99>6`>=n<1v<77:18087cl3;h;63>ed8211=:9l?1=o64}r3g`?6=;r7:hi4>b99>5ac==;16=hh5539~w4b32909w0?je;3a<>;6n>0>46s|1`194?5|58nn6b99~w4bb2908w0?ke;3a<>;6lo0>>63>f1866>{t9m?1<74d?34;m47;7;|q2ef<72:q6=ih51b5894`728??70?j7;3a<>{t9ml1<7=t=0fe>4d?34;n<7;=;<3e5?353ty:h;4?:3y>5c6=9k201e182g2=:9o;1=8:4=0g;>4d?3ty:i=4?:2y>5`6=9k201:40894`52<80q~?k7;296~;6n80:n5521gc91==z{8kn6=4<{<3f5?7d?27:j?4>559>5`?=9k20q~?j1;297~;6m80:n5521d0917=:9o919?5rs0f;>5<5s4;m>7?m8:?2bg<202wx=lh50;1x94c528i<70?i3;360>;6mh0:n55rs0g1>5<4s4;n>7?m8:?2a6<2:27:j94:2:p5a?=838p1b183>6}:9l91=n94=0d7>43334;nn7?m8:p5`5=839p1<58lo6864}r3a5?6=;r7:i94>c69>5c3=9<>01<58l=68<4}r3gf?6=:r7:j84>b99>5cc==11v<8=:18187a>3;>863>ee82f==z{8nh6=4={<3e2?7e027:jk4:8:p656=83kp17}::9k19?5221;95g>53z?14d<6k>16>:h51b58977328h37p}=2983>7}::9k1=o64=30`>4663ty9<94?:3y>65?==;16>=651c:8yv4693:1?v3=0882g2=::>o1=n94=331>4d?3ty9<>4?:3y>65>==;16>=951c:8yv47n3:1?v3=0982g2=::>n1=n94=333>4d?3ty9651==;16>=851c:8yv47l3:1?v3=0682g2=::>i1=n94=32f>4d?3ty9650=9j=01?9m:0a4?847k3;i46s|20:94?4|5;;o68<4=33`>4d?3ty9>?4?:3y>64b=9j=01?<8:0`;?xu5:00;6?u220f95g><5;8o6<>>;|q152<72;q6>64d=9k20q~<=1;296~;59j0:o:5223495g>52z?15g<2:279=l4>b99~w7472909w0<>b;3`3>;5:<0:n55rs336>5<5s48:m7;=;<02=?7e02wx>{t:8o1<74e03489?7?m8:p62g=838p1?9i:408971b28h37p}=9283>7}::>l1=o64=3;:>4653ty9;44?:3y>62c==;16>:j51c:8yv4003:1>v3=7e866>;5?j0:n55rs354>5<5s485=50;0x97>?2<801?68:0`;?xu50m0;6?u229:95f1<5;3965651c:897??28::7p}=8383>7}::1=19?5229495g>52z?1<2<6k>16>4?51c:8yv4?93:1>v3=87866>;50<0:n55rs3:a>5<5s483:7?l7:?1=5<6j11v?6?:18184?=3?970<74;3a<>{t:1k1<74e03483j7?m8:p6=?=838p1?6;:0a4?84?m3;i46s|22:94?4|5;4d?3ty99o4?:5y>632=9kl01?99:4:8974028:970<:2;335>{t::=1<70><5;?;6;=51cd897122<201?<9:022?84303;;=6s|22494?4|5;<96864=36e>4d?3ty9944?:5y>634=9kl01?9;:4:8974128:870<;6;335>{t::?1<70><5;>n6;?51cd897142<201?<::022?843<3;;=6s|22694?4|5;<;6864=36g>4d?3ty99:4?:5y>636=9kl01?9=:4:8974228:870<;2;335>{t::91<70><5;>h68h51cd897162<201?<;:022?84383;;=6s|22394?4|5;?o6864=36b>4d?3ty9994?:5y>60b=9kl01?8i:4:8974428::70<{t:::1<70><5;>268m51cd8970b2<201?<<:020?844i3;;=6s|22094?4|5;?n6864=36a>4d?3ty9984?:5y>60c=9kl01?9?:4:8974328:870<{t:==1<704<5;><68?51468973528h37p}=4483>6}::<:19?52255917=::=?1=o64}r07559>611=9j=01?:7:0`;?xu5<:0;6>u225d917=::=?19?5225195g>53z?10c<6==16>9;51b58972128h37p}=4083>6}::=o19?52251917=::=;1=o64}r070?6=;r798h4>559>615=9j=01?:;:0`;?xu5;o0;6>u225f917=::=;19?5222d95g>7>53z?10a<6==16>9?51b58972528h37p}=3e83>6}::=i19?5222d917=:::n1=o64}r074?6=;r798n4>559>66`=9j=01?:?:0`;?xu5;k0;6>u225`917=:::n19?5222`95g>53z?10g<6==16>>j51b58975b28h37p}=3883>6}::=k19?5222`917=:::31=o64}r00g?6=;r798l4>559>66d=9j=01?=l:0`;?xu5;h0;6>u225;9502<5;926;j50;6x971128hm70<62;336>;59=0:039>644=99;01?k7:2a8yv41j3:18v3=7582fc=::0;1==:4=331>464348n47=m;|q12d<72=q6>:=51cd897?728:970<>0;335>;5m108m6s|27;94?2|5;=96029>6`>=<11v?87:18784093;ij63=8g8247=::9o1==?4=3g;>1154z?135<6jo16>5h51168976b28:870?0;69u227d95g`<5;2n6<>=;<03g?779279i54;5:p633=83>p1?8j:0`e?84?m3;;863=0b8246=::l21895rs3g:>5<60r79h84:1:?1`1<29279h>4:1:?1`7<29279h<4:1:?1`5<29279oh4:1:?1ga<29279ok4:1:?1a2<29279i;4:1:?1a0<29279i94:1:?1a6<29279i?4:1:?1a4<29279i=4:1:?1`c<29279m=4>b99>67e=99901?k7:223?84b038mi63=e981ba=::l21>km4}r0b=?6=:r79h84:8:?1g7<6j11v?ml:18784c=3;ij63=e686<>;51;0:<<522b1955752z?1`1<20279o<4>b99~w7ee290?w0;5m?0>463=908244=::k31==?4}r0b3?6=:r79h>4:8:?1g5<6j11v?mn:18784c;3;ij63=e486<>;5180:<>522c5955752z?1`7<20279nk4>b99~w7e>290?w0;5m=0>463=918244=::k?1==?4}r0b1?6=:r79h<4:8:?1f`<6j11v?m7:18784c93;ij63=e286<>;5190:<>522c1955752z?1`5<20279ni4>b99~w7e0290?w0;5m;0>463=8g8244=::k;1==?4}r0b6?6=:r79oh4:8:?1fg<6j11v?m::18784dm3;ij63=e186<>;50l0:<<522`f955752z?1ga<20279nl4>b99~w7e3290?w0;5lo0>463=8d8246=::hh1==?4}r0b7?6=:r79ok4:8:?1ff<6j11v?m9:18784dn3;ij63=e086<>;50o0:<>522`d955752z?1g7<2:279n54>b99~w7e42909w0;5k:0:n55rs3`5>5<4s48h=7;=;<0a:077?84e03;h;63=b882f==z{;h?6=4<{<0`4?35348i:7;=;<0a0?7e02wx>o950;1x97e728??70;5j>0:n55rs3`1>5<4s48ij7;=;<0a0?35348i>7?m8:p6g3=839p1?li:077?84e<3;h;63=b482f==z{;h;6=4<{<0aa?35348i>7;=;<0a4?7e02wx>o=50;1x97db28??70;5j:0:n55rs3cf>5<4s48ih7;=;<0a4?35348ji7?m8:p6g7=839p1?lk:077?84e83;h;63=b082f==z{;kh6=4<{<0ag?35348ji7;=;<0bg?7e02wx>lh50;1x97dd28??70;5io0:n55rs3cb>5<4s48in7;=;<0bg?35348jm7?m8:p6db=839p1?lm:077?84fk3;h;63=ae82f==z{;ki6=4<{<0ae?72<279ml4>c69>6dd=9k20q~0:nk522359557<5;;?6<>>;<0f6`0=9kl01?<9:021?846:3;;>63=e981g>{t:mi1<7:t=3g6>4da3489:7??4:?157<68=16>h652c9~w7be290?w0;5:<0:4>bg9>673=99>01???:027?84b03937p}=d883>1}::l81=oh4=307>465348;i7??2:?1a=<4?2wx>i650;6x97c628hm70<=4;330>;58l0:<9522d:973=z{;n<6=4;{<0f4?7en279>>4>039>65e=99801?k7:278yv4c>3:18v3=dg82fc=::;91==:4=32`>463348n47=;;|q2=<<72;q6>?m51168974c28?>7p}=9b83>7}::0<1=o64=3;;>4633ty95l4?:3y>6<>=99801?78:0`;?xu51k0;6?u228:9555<5;326<;:;|p74g=838pR>?n;<6b>67f3-8m47?68:p73>=838pR>:7;<6b>62?3-8m47?ne:p730=838pR>:8;<6b>6203-8m47?nf:p732=838pR>::;<6b>6223-8m47?m0:p735=838pR>:;;<6b>6233-8m47?m1:p734=838pR>:<;<6b>6243-8m47?92:p737=838pR>:=;<6b>6253-8m47?9b:p736=838pR>:>;<6b>6263-8m47?86:p70`=838pR>:?;<6b>6273-8m47?71:p70c=838pR>=i;<6b>65a3-8m47?7c:p70b=838pR>=j;<6b>65b3-8m47?63:p70e=838pR>=k;<6b>65c3-8m47?64:p70d=838pR>=l;<6b>65d3-8m47?65:p70?=838pR>=n;<6b>65f3-8m47?66:p70>=838pR>=6;<6b>65>3-8m47?67:p701=838pR>=7;<6b>65?3-8m47?69:p700=838pR>=8;<6b>6503-8m47?6a:p703=838pR>=9;<6b>6513-8m47?6b:p702=838pR>=:;<6b>6523-8m47?6c:p705=838pR>=;;<6b>6533-8m47?6d:p704=838pR>=<;<6b>6543-8m47?6e:p707=838pR>==;<6b>6553-8m47?6f:p706=838pR>=>;<6b>6563-8m47?n0:p73`=838pR>:j;<6b>62b3-8m47?n1:p73c=838pR>:k;<6b>62c3-8m47?n2:p73b=838pR>:l;<6b>62d3-8m47?n4:p73e=838pR>:m;<6b>62e3-8m47?n5:p73d=838pR>:n;<6b>62f3-8m47?n6:p73g=838pR>:6;<6b>62>3-8m47?n7:p73?=838pR>:9;<6b>6213-8m47?n8:p733=838pR>=m;<6b>65e3-8m47?n9:p70g=838pR>=?;<6b>6573-8m47?na:p71`=838pR>64a3-8m47?nb:p054=838pR9>=;<6b>1653-8m47?m2:p052=838pR9>;;<6b>1633-8m47?m3:p04>=838pR9?7;<6b>17?3-8m47?m4:p77b=838pR><<;<6b>6443-8m47?93:p77d=838pR><=;<6b>6453-8m47?94:p77g=838pR><>;<6b>6463-8m47?95:p77?=838pR>6473-8m47?96:p77>=838pR>?i;<6b>67a3-8m47?97:p771=838pR>?j;<6b>67b3-8m47?98:p770=838pR>?k;<6b>67c3-8m47?99:p773=838pR>?l;<6b>67d3-8m47?9a:p772=838pR>?m;<6b>67e3-8m47?9c:p7d?=838pR>66;<6b>6>>3-8m47?9d:p7d1=838pR>67;<6b>6>?3-8m47?9e:p7d3=838pR>69;<6b>6>13-8m47?9f:p7d2=838pR>6:;<6b>6>23-8m47?80:p7d5=838pR>6;;<6b>6>33-8m47?81:p7d4=838pR>6<;<6b>6>43-8m47?82:p7d7=838pR>6=;<6b>6>53-8m47?83:p7d6=838pR>6>;<6b>6>63-8m47?84:p7<`=838pR>6?;<6b>6>73-8m47?85:p79i;<6b>61a3-8m47?87:p79j;<6b>61b3-8m47?88:p79k;<6b>61c3-8m47?89:p79m;<6b>61e3-8m47?8a:p79n;<6b>61f3-8m47?8b:p7<>=838pR>96;<6b>61>3-8m47?8c:p7<1=838pR>97;<6b>61?3-8m47?8d:p7<0=838pR>98;<6b>6103-8m47?8e:p7<3=838pR>99;<6b>6113-8m47?8f:p7<2=838pR>9:;<6b>6123-8m47?70:p7<5=838pR>9;;<6b>6133-8m47?72:p7<4=838pR>9<;<6b>6143-8m47?73:p7<7=838pR>9=;<6b>6153-8m47?74:p7g6=838pR>6i;<6b>6>a3-8m47?75:p7d`=838pR>6j;<6b>6>b3-8m47?76:p7dc=838pR>6k;<6b>6>c3-8m47?77:p7db=838pR>6l;<6b>6>d3-8m47?78:p7de=838pR>6m;<6b>6>e3-8m47?79:p7dd=838pR>6n;<6b>6>f3-8m47?7a:p7dg=838pR>68;<6b>6>03-8m47?7b:p7d0=838pR>9l;<6b>61d3-8m47?7d:p79>;<6b>6163-8m47?7e:p7<6=838pR>9?;<6b>6173-8m47?7f:p7g4=838pR>l=;<6b>6d53-8m47?60:p7g2=838pR>l;;<6b>6d33-8m47?61:p05?=838pR9>6;<6b>16>3-8m47?62:~j33>2909wEk74}o46g?6=:rB9j45rn77g>5<5sA8m56sa64g94?4|@;l27p`95g83>7}O:o30qc890;296~N5n01vb;8>:181M4a12we:;<50;0xL7`>3td=:>4?:3yK6c?52zJ1b<=zf?<>6=4={I0e=>{i>?<1<7>0;6?uG2g;8yk0103:1>vF=f89~j30>2909wEk74}o45g?6=:rB9j45rn74g>5<5sA8m56sa67g94?4|@;l27p`96g83>7}O:o30qc880;296~N5n01vb;9>:181M4a12we::<50;0xL7`>3td=;>4?:3yK6c?52zJ1b<=zf?=>6=4={I0e=>{i>><1<70;6?uG2g;8yk0003:1>vF=f89~j31>2909wEk74}o44g?6=:rB9j45rn75g>5<5sA8m56sa66g94?4|@;l27p`97g83>7}O:o30qc870;296~N5n01vb;6>:181M4a12we:5<50;0xL7`>3td=4>4?:3yK6c?52zJ1b<=zf?2>6=4={I0e=>{i>1<1<70;6?uG2g;8yk0?03:1>vF=f89~j3>>2909wEk74}o4;g?6=:rB9j45rn7:g>5<5sA8m56sa69g94?4|@;l27p`98g83>7}O:o30qc860;296~N5n01vb;7>:181M4a12we:4<50;0xL7`>3td=5>4?:3yK6c?52zJ1b<=zf?3>6=4={I0e=>{i>0<1<70;6?uG2g;8yk0>03:1>vF=f89~j3?>2909wEk74}o4:g?6=:rB9j45rn7;g>5<5sA8m56sa68g94?4|@;l27p`99g83>7}O:o30qc8n0;296~N5n01vb;o>:181M4a12we:l<50;0xL7`>3td=m>4?:3yK6c?52zJ1b<=zf?k>6=4={I0e=>{i>h<1<70;6?uG2g;8yk0f03:1>vF=f89~j03c290:wEk74}o7ba?6=9rB9j45rn4ce>5<6sA8m56sa5c294?7|@;l27p`:b083>4}O:o30qc;m2;295~N5n01vb8l<:182M4a12we9o:50;3xL7`>3td>n84?:0yK6c?51zJ1b<=zf{I0e=>{i=k21<7?tH3d:?xh2j00;6k74}o7aa?6=9rB9j45rn4`e>5<6sA8m56sa5b294?7|@;l27p`:c083>4}O:o30qc;l2;295~N5n01vb8m<:182M4a12we9n:50;3xL7`>3td>o84?:0yK6c?51zJ1b<=zf{I0e=>{i=j21<7?tH3d:?xh2k00;6k74}o7`a?6=9rB9j45rn4ae>5<6sA8m56sa5e294?7|@;l27p`:d083>4}O:o30qc;k2;295~N5n01vb8j<:182M4a12we9i:50;3xL7`>3td>h84?:0yK6c?51zJ1b<=zf{I0e=>{i=m21<7?tH3d:?xh2l00;6k74}o7ga?6=9rB9j45rn4fe>5<6sA8m56sa5d294?7|@;l27p`:e083>4}O:o30qc;j2;295~N5n01vb8k<:182M4a12we9h:50;3xL7`>3td>i84?:0yK6c?51zJ1b<=zf{I0e=>{i=l21<7?tH3d:?xh2m00;6k74}o7fa?6=9rB9j45rn4ge>5<6sA8m56sa5g294?7|@;l27p`:f083>4}O:o30qc;i2;295~N5n01vb8h<:182M4a12we9k:50;3xL7`>3td>j84?:0yK6c?51zJ1b<=zf{I0e=>{i=o21<7?tH3d:?xh2n00;6k74}o7ea?6=9rB9j45rn4de>5<6sA8m56sa61294?7|@;l27p`90083>4}O:o30qc8?2;295~N5n01vb;><:182M4a12we:=:50;3xL7`>3td=<84?:0yK6c?51zJ1b<=zf?:<6=4>{I0e=>{i>921<7?tH3d:?xh1800;6k74}o43a?6=9rB9j45rn72e>5<6sA8m56sa60294?7|@;l27p`91083>4}O:o30qc8>2;295~N5n01vb;?<:182M4a12we:<:50;3xL7`>3td==84?:0yK6c?51zJ1b<=zf?;<6=4>{I0e=>{i>821<7?tH3d:?xh1900;6k74}o42a?6=9rB9j45rn73e>5<6sA8m56sa63294?7|@;l27p`92083>4}O:o30qc8=2;295~N5n01vb;<<:182M4a12we:?:50;3xL7`>3td=>84?:0yK6c?51zJ1b<=zf?8<6=4>{I0e=>{i>;21<7?tH3d:?xh1:00;6k74}o41a?6=9rB9j45rn70e>5<6sA8m56sa62294?7|@;l27p`93083>4}O:o30qc8<2;295~N5n01vb;=<:182M4a12we:>:50;3xL7`>3td=?84?:0yK6c?51zJ1b<=zf?9<6=4>{I0e=>{i>:21<7?tH3d:?xh1;00;6k74}o40a?6=9rB9j45rn71e>5<6sA8m56sa65294?7|@;l27p`94083>4}O:o30qc8;2;295~N5n01vb;:<:182M4a12we:9:50;3xL7`>3td=884?:0yK6c?51zJ1b<=zf?><6=4>{I0e=>{i>=21<7?tH3d:?xh1<00;6k74}o47a?6=9rB9j45rn76e>5<6sA8m56sa64294?7|@;l27p`95083>4}O:o30qc8:2;295~N5n01vb;;<:182M4a12we:8:50;3xL7`>3td=984?:0yK6c?:7>51zJ1b<=zf??<6=4>{I0e=>{i><21<7?tH3d:?x{zuIJHw:o8:`63e2560tJKNv>r@ARxyEF \ No newline at end of file diff --git a/monitor/fifos/virtex4_fifo_32x512.vhd b/monitor/fifos/virtex4_fifo_32x512.vhd new file mode 100644 index 0000000..f9d10ca --- /dev/null +++ b/monitor/fifos/virtex4_fifo_32x512.vhd @@ -0,0 +1,152 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used -- +-- solely for design, simulation, implementation and creation of -- +-- design files limited to Xilinx devices or technologies. Use -- +-- with non-Xilinx devices or technologies is expressly prohibited -- +-- and immediately terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" -- +-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR -- +-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION -- +-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION -- +-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS -- +-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, -- +-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE -- +-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY -- +-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -- +-- FOR A PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support -- +-- appliances, devices, or systems. Use in such applications are -- +-- expressly prohibited. -- +-- -- +-- (c) Copyright 1995-2007 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file virtex4_fifo_32x512.vhd when simulating +-- the core, virtex4_fifo_32x512. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +Library XilinxCoreLib; +-- synthesis translate_on +ENTITY virtex4_fifo_32x512 IS + port ( + clk: IN std_logic; + din: IN std_logic_VECTOR(31 downto 0); + rd_en: IN std_logic; + rst: IN std_logic; + wr_en: IN std_logic; + data_count: OUT std_logic_VECTOR(8 downto 0); + dout: OUT std_logic_VECTOR(31 downto 0); + empty: OUT std_logic; + full: OUT std_logic; + valid: OUT std_logic); +END virtex4_fifo_32x512; + +ARCHITECTURE virtex4_fifo_32x512_a OF virtex4_fifo_32x512 IS +-- synthesis translate_off +component wrapped_virtex4_fifo_32x512 + port ( + clk: IN std_logic; + din: IN std_logic_VECTOR(31 downto 0); + rd_en: IN std_logic; + rst: IN std_logic; + wr_en: IN std_logic; + data_count: OUT std_logic_VECTOR(8 downto 0); + dout: OUT std_logic_VECTOR(31 downto 0); + empty: OUT std_logic; + full: OUT std_logic; + valid: OUT std_logic); +end component; + +-- Configuration specification + for all : wrapped_virtex4_fifo_32x512 use entity XilinxCoreLib.fifo_generator_v4_2(behavioral) + generic map( + c_has_int_clk => 0, + c_rd_freq => 1, + c_wr_response_latency => 1, + c_has_srst => 0, + c_has_rd_data_count => 0, + c_din_width => 32, + c_has_wr_data_count => 0, + c_full_flags_rst_val => 1, + c_implementation_type => 0, + c_family => "virtex4", + c_use_embedded_reg => 0, + c_has_wr_rst => 0, + c_wr_freq => 1, + c_use_dout_rst => 0, + c_underflow_low => 0, + c_has_meminit_file => 0, + c_has_overflow => 0, + c_preload_latency => 1, + c_dout_width => 32, + c_rd_depth => 512, + c_default_value => "BlankString", + c_mif_file_name => "BlankString", + c_has_underflow => 0, + c_has_rd_rst => 0, + c_has_almost_full => 0, + c_has_rst => 1, + c_data_count_width => 9, + c_has_wr_ack => 0, + c_use_ecc => 0, + c_wr_ack_low => 0, + c_common_clock => 1, + c_rd_pntr_width => 9, + c_use_fwft_data_count => 0, + c_has_almost_empty => 0, + c_rd_data_count_width => 9, + c_enable_rlocs => 0, + c_wr_pntr_width => 9, + c_overflow_low => 0, + c_prog_empty_type => 0, + c_optimization_mode => 0, + c_wr_data_count_width => 9, + c_preload_regs => 0, + c_dout_rst_val => "0", + c_has_data_count => 1, + c_prog_full_thresh_negate_val => 509, + c_wr_depth => 512, + c_prog_empty_thresh_negate_val => 3, + c_prog_empty_thresh_assert_val => 2, + c_has_valid => 1, + c_init_wr_pntr_val => 0, + c_prog_full_thresh_assert_val => 510, + c_use_fifo16_flags => 0, + c_has_backup => 0, + c_valid_low => 0, + c_prim_fifo_type => "512x36", + c_count_type => 0, + c_prog_full_type => 0, + c_memory_type => 1); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_virtex4_fifo_32x512 + port map ( + clk => clk, + din => din, + rd_en => rd_en, + rst => rst, + wr_en => wr_en, + data_count => data_count, + dout => dout, + empty => empty, + full => full, + valid => valid); +-- synthesis translate_on + +END virtex4_fifo_32x512_a; + diff --git a/monitor/fifos/virtex4_fifo_32x512.xco b/monitor/fifos/virtex4_fifo_32x512.xco new file mode 100644 index 0000000..64007e5 --- /dev/null +++ b/monitor/fifos/virtex4_fifo_32x512.xco @@ -0,0 +1,81 @@ +############################################################## +# +# Xilinx Core Generator version J.40 +# Date: Mon Mar 14 21:50:44 2011 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = False +SET asysymbol = True +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = False +SET designentry = VHDL +SET device = xc4vlx40 +SET devicefamily = virtex4 +SET flowvendor = Foundation_iSE +SET formalverification = False +SET foundationsym = False +SET implementationfiletype = Ngc +SET package = ff1148 +SET removerpms = False +SET simulationfiles = Behavioral +SET speedgrade = -10 +SET verilogsim = True +SET vhdlsim = True +# END Project Options +# BEGIN Select +SELECT Fifo_Generator family Xilinx,_Inc. 4.2 +# END Select +# BEGIN Parameters +CSET almost_empty_flag=false +CSET almost_full_flag=false +CSET component_name=virtex4_fifo_32x512 +CSET data_count=true +CSET data_count_width=9 +CSET dout_reset_value=0 +CSET empty_threshold_assert_value=2 +CSET empty_threshold_negate_value=3 +CSET enable_ecc=false +CSET enable_int_clk=false +CSET fifo_implementation=Common_Clock_Block_RAM +CSET full_flags_reset_value=1 +CSET full_threshold_assert_value=510 +CSET full_threshold_negate_value=509 +CSET input_data_width=32 +CSET input_depth=512 +CSET output_data_width=32 +CSET output_depth=512 +CSET overflow_flag=false +CSET overflow_sense=Active_High +CSET performance_options=Standard_FIFO +CSET programmable_empty_type=No_Programmable_Empty_Threshold +CSET programmable_full_type=No_Programmable_Full_Threshold +CSET read_clock_frequency=1 +CSET read_data_count=false +CSET read_data_count_width=9 +CSET reset_pin=true +CSET reset_type=Asynchronous_Reset +CSET underflow_flag=false +CSET underflow_sense=Active_High +CSET use_dout_reset=false +CSET use_embedded_registers=false +CSET use_extra_logic=false +CSET valid_flag=true +CSET valid_sense=Active_High +CSET write_acknowledge_flag=false +CSET write_acknowledge_sense=Active_High +CSET write_clock_frequency=1 +CSET write_data_count=false +CSET write_data_count_width=9 +# END Parameters +GENERATE +# CRC: dde0f5a5 + diff --git a/monitor/monitor.vhd b/monitor/monitor.vhd new file mode 100644 index 0000000..22883a2 --- /dev/null +++ b/monitor/monitor.vhd @@ -0,0 +1,455 @@ +-- *********************************************************************************** +-- *********************************************************************************** +-- +-- Borislav Milanovic +-- +-- Version: 4.0 +-- ------------- +-- +-- *********************************************************************************** +-- *********************************************************************************** + + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; + +library work; +use work.monitor_config.all; + + + +entity monitor is + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + ADDR_IN : in std_logic_vector(9 downto 0); -- ADDR> bit 9,8 for selection, bits 7 - 0 for the cell address + READ_IN : in std_logic; -- READ a cell + WRITE_IN : in std_logic; -- WRITE CFG (FIFO control register) + DATA_IN : in std_logic_vector(7 downto 0); -- CFG data + + DATA_OUT : out std_logic_vector(EXT_BUS-1 downto 0) := (others => '0'); -- Monitoring cell contents + VALID_OUT : out std_logic := '0'; -- Valid signal + + STATUS_OUT : out std_logic_vector(7 downto 0) := "00000000"; -- Bits: 0-Unknown_Address, 1-EMPTY, 2-ACK, 5-Wrong_Address_Scope + + -- DATA Connections + FIFO_DATA_IN : in std_logic_vector( (FIFO_BUS*FIFO_NUM)-1 downto 0 ); -- combined FIFO data + FIFO_WRITE_IN : in std_logic_vector( FIFO_NUM-1 downto 0 ); -- combined FIFO valid + REG_DATA_IN : in std_logic_vector( (REG_BUS*REG_NUM)-1 downto 0 ); -- combined RED data + + -- TIMERS + TIMER0_IN : in std_logic_vector(31 downto 0); + TIMER1_IN : in std_logic_vector( 7 downto 0); + TIMER2_IN : in std_logic_vector(31 downto 0); + + EXTERNAL_STAMP_IN : in std_logic_vector(7 downto 0); -- additional data marker (in addition to timestamp) + + DEBUG_OUT : out std_logic_vector(31 downto 0) -- Status, tests, etc + ); +end entity; + + + +architecture basic of monitor is + + component REG_cell is + generic( + width : integer range 1 to 32 := 32 + ); + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + DATA_IN : in std_logic_vector(REG_BUS-1 downto 0); + DATA_OUT : out std_logic_vector(REG_BUS-1 downto 0) + ); + end component; + + component FIFO_cell is + generic( + fifo_type : String; -- The FIFO cell identifier, e.g. "32x512" or "8x16" + f_low : integer range 0 to 255; -- from 10 ns to 2560 ns, the automatic strobe signal + f_high : integer range 0 to 30; -- 10*2**2**f_high ns if this is set, f_low is ignored + t_res : integer range 0 to 31; -- from which bit on the timer will be taken + t_size : integer range 0 to 32; -- size of the timestamp in the package + d_size : integer range 0 to 32; -- size of data in the package + i_size : integer range 0 to 32 -- size of additional information from the external port in the package + ); + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + DATA_IN : in std_logic_vector(FIFO_BUS-1 downto 0); + WRITE_IN : in std_logic; + READ_IN : in std_logic; + DATA_OUT : out std_logic_vector(FIFO_BUS-1 downto 0) := (others => '0'); + VALID_OUT : out std_logic := '0'; + STATUS_OUT : out std_logic_vector(7 downto 0) := (others => '0'); + + CFG_IN : in std_logic_vector(7 downto 0); + TIME_IN : in std_logic_vector(31 downto 0); + EXTERNAL_IN : in std_logic_vector(7 downto 0) + ); + end component; + + component CFG_cell is + generic( + init : std_logic_vector(7 downto 0) + ); + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + DATA_IN : in std_logic_vector(7 downto 0); + WRITE_IN : in std_logic; + DATA_OUT : out std_logic_vector(7 downto 0) + ); + end component; + + component rom_32x113 is + port( + CLK: IN std_logic; + ADDR_IN: IN std_logic_VECTOR(8 downto 0); + DATA_OUT: OUT std_logic_VECTOR(31 downto 0) + ); + end component; + + component reg_mux is + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + READ_IN : in std_logic; + ADDR_IN : in std_logic_vector(7 downto 0); + + DATA_OUT : out std_logic_vector(REG_BUS-1 downto 0); + VALID_OUT : out std_logic; + STATUS_OUT : out std_logic_vector(7 downto 0) := "00000000"; + + DATA_IN : in std_logic_vector( (REG_NUM*REG_BUS)-1 downto 0) + ); + end component; + + component cfg_mux is + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + WRITE_IN : in std_logic; + DATA_IN : in std_logic_vector(7 downto 0); + ADDR_IN : in std_logic_vector(7 downto 0); + + DATA_OUT : out std_logic_vector(8*FIFO_NUM-1 downto 0); + WRITE_OUT : out std_logic_vector( FIFO_NUM-1 downto 0); + + STATUS_OUT : out std_logic_vector(7 downto 0) := "00000000" + ); + end component; + + component fifo_mux is + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + READ_IN : in std_logic; -- Slow Control READ + ADDR_IN : in std_logic_vector(7 downto 0); -- Slow Control ADDR + + READ_OUT : out std_logic_vector(FIFO_NUM-1 downto 0); -- MUX-to-FIFO READ + + DATA_IN : in std_logic_vector(FIFO_NUM*FIFO_BUS-1 downto 0); -- FIFO data + VALID_IN : in std_logic_vector(FIFO_NUM-1 downto 0); -- FIFO valid + STATUS_IN : in std_logic_vector(8*FIFO_NUM-1 downto 0); -- FIFO stats + + DATA_OUT : out std_logic_vector(FIFO_BUS-1 downto 0); -- MUX Data as received from the FIFO + VALID_OUT : out std_logic; -- MUX Valid + STATUS_OUT : out std_logic_vector(7 downto 0) := "00000000" -- MUX status bits + ); + end component; + + component etrax_controls is + port( + + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + MODE_IN : in std_logic; -- either store all 7 subsequent outputs on trigger (repeater mode), or only when trigger occurs (trigger mode) + DATA_IN : in std_logic_vector(31 downto 0); -- the data that should be written to etrax registers 0-7 + + CTRL_IN : in std_logic_vector(31 downto 0); -- specific trigger pattern to trigger at + ETRAX_OUT : out std_logic_vector(8*32-1 downto 0) -- the output is written to ETRAX Regs + + ); + end component; + + + +-- General drivers +signal combined_fifo_read : std_logic_vector(FIFO_NUM-1 downto 0) := (others => '0'); +signal combined_fifo_data : std_logic_vector(FIFO_NUM*FIFO_BUS-1 downto 0) := (others => '0'); +signal combined_fifo_val : std_logic_vector(FIFO_NUM-1 downto 0) := (others => '0'); +signal combined_fifo_status : std_logic_vector(8*FIFO_NUM-1 downto 0) := (others => '0'); +signal combined_reg_data : std_logic_vector(REG_NUM*REG_BUS-1 downto 0) := (others => '0'); +signal combined_cfg_data_in, combined_cfg_data_out : std_logic_vector(8*FIFO_NUM-1 downto 0) := (others => '0'); +signal combined_cfg_write : std_logic_vector (FIFO_NUM-1 downto 0) := (others => '0'); +signal fifo_timer_bus : std_logic_vector(FIFO_NUM*32-1 downto 0 ) := (others => '0'); +signal main_status, next_main_status, cfg_status, reg_status, fifo_status : std_logic_vector (7 downto 0) := "00000000"; +signal s_cfg, s_fifo, s_reg, s_rom : std_logic := '0'; +signal reg_data, fifo_data : std_logic_vector(EXT_BUS-1 downto 0) := (others => '0'); +signal reg_valid, fifo_valid : std_logic := '0'; + +-- TODO (fix these) +-- handle correct ROM access +-- signal rom_read, rom_dataready : std_logic := '0'; +-- signal rom_addr : std_logic_vector(8 downto 0); +-- signal rom_data : std_logic_vector(31 downto 0); +-- -- The multiplexer signals (CFG,FIFO,REG) +-- signal mux_read_2,mux_read_3, mux_write_1, mux_timeout_2, mux_dataready_2, mux_dataready_3, mux_ack_1, mux_nomore_2, mux_unknown_1, mux_unknown_2, mux_unknown_3 : std_logic := '0'; +-- signal mux_data_out_2,mux_data_out_3 : std_logic_vector(31 downto 0); +-- signal mux_addr_1,mux_addr_2,mux_addr_3 : std_logic_vector(15 downto 0); +-- signal mux_data_in_1 : std_logic_vector(CFG_WIDTH-1 downto 0); +-- --DUMMY +-- signal dummy_cfg : std_logic_vector(32-CFG_WIDTH-1 downto 0) := (others => '0'); +-- signal dummy_input_bit, rom_dummy_bit, bus_timeout_dummy, fifo_write_dummy : std_logic := '0'; +-- signal dummy_input_vector, bus_data_dummy, reg_data_dummy, cfg_data_dummy, fifo_data_dummy, dummy_stats : std_logic_vector(31 downto 0) := (others => '0'); +-- signal bus_addr_dummy : std_logic_vector(6 downto 0) := (others => '0'); +-- signal reg_write_dummy, reg_ack_dummy, reg_nomore_dummy, reg_timeout_dummy : std_logic := '0'; +-- signal cfg_read_dummy, cfg_timeout_dummy, cfg_rdy_dummy, cfg_nomore_dummy : std_logic := '0'; +-- signal dummy24 : std_logic_vector(23 downto 0) := (others => '0'); +--signal test_bus : std_logic_vector(32*(SIGNAL_NUM+1)-1 downto 0); + + +begin + + + +-- proc_rom_ctrl : process(CLK) +-- begin +-- if rising_edge(CLK) then +-- rom_dataready <= rom_read; +-- end if; +-- end process; + + + gen_fifos : for i in 0 to FIFO_NUM-1 generate + the_FIFO : FIFO_cell + generic map( + fifo_type => fifos(i).fifo_type, + f_low => fifos(i).f_low, + f_high => fifos(i).f_high, + t_res => fifos(i).t_res, + t_size => fifos(i).t_size, + d_size => fifos(i).d_size, + i_size => fifos(i).i_size + ) + port map( + CLK => CLK, + RESET => RESET, + CLK_EN => CLK_EN, + + DATA_IN => FIFO_DATA_IN(FIFO_BUS*(i+1)-1 downto FIFO_BUS*i), + WRITE_IN => FIFO_WRITE_IN(i), + READ_IN => combined_fifo_read(i), + DATA_OUT => combined_fifo_data(FIFO_BUS*(i+1)-1 downto FIFO_BUS*i), + VALID_OUT => combined_fifo_val(i), + STATUS_OUT => combined_fifo_status(8*(i+1)-1 downto 8*i), + + CFG_IN => combined_cfg_data_out(8*(i+1)-1 downto 8*i), + TIME_IN => fifo_timer_bus(32*(i+1)-1 downto 32*i), + EXTERNAL_IN => EXTERNAL_STAMP_IN + ); + end generate; + + gen_fifo_timer_bus : for i in 0 to FIFO_NUM-1 generate + gen_ftimertype1 : if fifos(i).timer = 0 generate + fifo_timer_bus(32*(i+1)-1 downto 32*i) <= TIMER0_IN; + end generate; + gen_ftimertype2 : if fifos(i).timer = 1 generate + fifo_timer_bus(32*(i+1)-1 downto 32*i+8) <= (others => '0'); + fifo_timer_bus(32*(i)+7 downto 32*i) <= TIMER1_IN; + end generate; + gen_ftimertype3 : if fifos(i).timer = 2 generate + fifo_timer_bus(32*(i+1)-1 downto 32*i) <= TIMER2_IN; + end generate; + end generate; + + gen_registers : for i in 0 to REG_NUM-1 generate + the_REG : REG_cell + generic map( + width => regs(i).width + ) + port map( + CLK => CLK, + RESET => RESET, + CLK_EN => CLK_EN, + + DATA_IN => REG_DATA_IN(REG_BUS*(i+1)-1 downto REG_BUS*i), + DATA_OUT => combined_reg_data(REG_BUS*(i+1)-1 downto REG_BUS*i) + ); + end generate; + + gen_cfg_cells : for i in 0 to FIFO_NUM-1 generate + the_CFG : CFG_cell + generic map( + init => cfgs(i).init + ) + port map( + CLK => CLK, + RESET => RESET, + CLK_EN => CLK_EN, + + DATA_IN => combined_cfg_data_in(8*(i+1)-1 downto 8*i), + WRITE_IN => combined_cfg_write(i), + DATA_OUT => combined_cfg_data_out(8*(i+1)-1 downto 8*i) + ); + end generate; + +-- the_ROM : rom_32x113 +-- port map( +-- CLK => CLK, +-- ADDR_IN => rom_addr, +-- DATA_OUT => rom_data +-- ); + + the_cfg_mux : cfg_mux + port map( + CLK => CLK, + RESET => RESET, + CLK_EN => CLK_EN, + + WRITE_IN => s_cfg, + DATA_IN => DATA_IN, + ADDR_IN => ADDR_IN(7 downto 0), + + DATA_OUT => combined_cfg_data_in, + WRITE_OUT => combined_cfg_write, + + STATUS_OUT => cfg_status + ); + + the_reg_mux : reg_mux + port map( + CLK => CLK, + RESET => RESET, + CLK_EN => CLK_EN, + + READ_IN => s_reg, + ADDR_IN => ADDR_IN(7 downto 0), + DATA_IN => combined_reg_data, + + DATA_OUT => reg_data, + VALID_OUT => reg_valid, + + STATUS_OUT => reg_status + ); + + the_fifo_mux : fifo_mux + port map( + CLK => CLK, + RESET => RESET, + CLK_EN => CLK_EN, + + READ_IN => s_fifo, + ADDR_IN => ADDR_IN(7 downto 0), + + READ_OUT => combined_fifo_read, + + DATA_IN => combined_fifo_data, + VALID_IN => combined_fifo_val, + STATUS_IN => combined_fifo_status, + + DATA_OUT => fifo_data, + VALID_OUT => fifo_valid, + STATUS_OUT => fifo_status + ); + + p_MUX_RW:process(ADDR_IN, READ_IN, WRITE_IN) + begin + next_main_status(5) <= '0'; -- Wrong Address Range for the Read/Write + if READ_IN = '1' then + if ADDR_IN(9 downto 8) = "00" then + s_rom <= '1'; + s_cfg <= '0'; + s_fifo <= '0'; + s_reg <= '0'; + elsif ADDR_IN(9 downto 8) = "10" then + s_rom <= '0'; + s_cfg <= '0'; + s_fifo <= '1'; + s_reg <= '0'; + elsif ADDR_IN(9 downto 8) = "11" then + s_rom <= '0'; + s_cfg <= '0'; + s_fifo <= '0'; + s_reg <= '1'; + else + s_rom <= '0'; + s_cfg <= '0'; + s_fifo <= '0'; + s_reg <= '0'; + next_main_status(5) <= '1'; + end if; + elsif WRITE_IN = '1' then + if ADDR_IN(9 downto 8) = "01" then + s_rom <= '0'; + s_cfg <= '1'; + s_fifo <= '0'; + s_reg <= '0'; + else + s_rom <= '0'; + s_cfg <= '0'; + s_fifo <= '0'; + s_reg <= '0'; + next_main_status(5) <= '1'; + end if; + else + s_rom <= '0'; + s_cfg <= '0'; + s_fifo <= '0'; + s_reg <= '0'; + end if; + end process; + + p_register: process(CLK) + begin + if rising_edge(CLK) then + main_status <= next_main_status; + end if; + end process; + + p_handle_data:process(reg_valid, fifo_valid, reg_data, fifo_data) + begin + VALID_OUT <= fifo_valid or reg_valid; + DATA_OUT <= (others => '0'); + if fifo_valid = '1' then + DATA_OUT(FIFO_BUS-1 downto 0) <= fifo_data; + elsif reg_valid = '1' then + DATA_OUT(REG_BUS-1 downto 0) <= reg_data; + end if; + end process; + + next_main_status(0) <= fifo_status(0) or reg_status(0) or cfg_status(0); -- Unknown Cell Address + next_main_status(1) <= fifo_status(1); -- FIFO empty + next_main_status(2) <= cfg_status(1); -- ACK + + STATUS_OUT <= main_status; + + + DEBUG_OUT(7 downto 0) <= combined_fifo_status(7 downto 0); + DEBUG_OUT(15 downto 8) <= combined_fifo_status(15 downto 8); + DEBUG_OUT(23 downto 16) <= main_status; + DEBUG_OUT(31 downto 24) <= "00" & combined_fifo_read(1) & combined_fifo_read(0) & s_rom & s_cfg & s_fifo & s_reg; + +-- DEBUG_OUT(31 downto 0) <= (others => '0'); +-- DEBUG_OUT(31 downto 0) <= FIFO_DATA_IN(31 downto 0); + +end architecture; \ No newline at end of file diff --git a/monitor/monitor_config.vhd b/monitor/monitor_config.vhd new file mode 100644 index 0000000..f9c8544 --- /dev/null +++ b/monitor/monitor_config.vhd @@ -0,0 +1,254 @@ +-- *********************************************************************************** +-- *********************************************************************************** +-- +-- MONITOR config file +-- ------------------- +-- +-- This file sets up the monitoring system +-- +-- +-- +-- +-- +-- +-- *********************************************************************************** +-- *********************************************************************************** + + +library ieee; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; + + + +package monitor_config is + + +constant FIFO_NUM : integer range 2 to 30 := 16; -- How many FIFOs do we need? +constant FIFO_BUS : integer range 16 to 32 := 32; -- Width of the widest FIFO (the effective port width, hence the bus) + +constant REG_NUM : integer range 2 to 40 := 4; -- Amount of simple Register cells +constant REG_BUS : integer range 2 to 32 := 32; -- The width of the biggest Register, hence the reg bus + +constant EXT_BUS : integer range 32 to 32 := 32; -- The extrenal bus width to which the monitor will be connected +constant ARCH : string(1 to 8) := "_virtex4"; + + +type fifo_generic is record + fifo_type : string(1 to 12); -- The FIFO cell identifier, e.g. "32x512" or "8x16" + f_low : integer range 0 to 255; -- from 10 ns to 2560 ns, the automatic strobe signal + f_high : integer range 0 to 30; -- 10*2**2**f_high ns if this is set, f_low is ignored + timer : integer range 0 to 2; -- timer input port + t_res : integer range 0 to 31; -- from which bit on the timer will be taken + t_size : integer range 0 to 32; -- size of the timestamp in the package + d_size : integer range 0 to 32; -- size of data in the package + i_size : integer range 0 to 32; -- size of additional information from the external port in the package + ref : integer range 0 to 65535; -- the global monitoring signal reference +end record; + +type fifo_generics is array(0 to 29) of fifo_generic; + + + +type reg_generic is record + id : integer range 0 to 39; + width : integer range 1 to 32; +end record; + +type reg_generics is array(0 to 39) of reg_generic; + + + + +type cfg_generic is record + id : integer range 0 to 29; + init : std_logic_vector(7 downto 0); +end record; + +type cfg_generics is array(0 to 29) of cfg_generic; + + + +-- FIFO cells implemented for the VIRTEX4 +-- +-- +-- 32x512 : virtex4_fifo_32x512 +-- 16x1024 : virtex4_fifo_16x1024 +-- +-- + + + +constant fifo_16x1024 : string := "fifo_16x1024"; +constant fifo_32x512 : string := "fifo_32x512 "; + + + +constant fifos : fifo_generics := + ( + -- type f_low f_high timer t_res t_size d_size i_size ref + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 0 ), + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 1 ), + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 2 ), + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 3 ), + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 4 ), + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 5 ), + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 6 ), + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 7 ), + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 8 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 9 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 10 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 11 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 12 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 13 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 14 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 16 , 16 , 0 , 15 ), + + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ), + ( fifo_32x512 , 0 , 0 , 0 , 0 , 0 , 32 , 0 , 2 ) + + + + ); + + + + -- SIZE SIZE + +constant reg0: reg_generic := ( 0 , 32 ); constant reg20: reg_generic := ( 20 , 32 ); +constant reg1: reg_generic := ( 1 , 32 ); constant reg21: reg_generic := ( 21 , 32 ); +constant reg2: reg_generic := ( 2 , 32 ); constant reg22: reg_generic := ( 22 , 32 ); +constant reg3: reg_generic := ( 3 , 32 ); constant reg23: reg_generic := ( 23 , 32 ); +constant reg4: reg_generic := ( 4 , 32 ); constant reg24: reg_generic := ( 24 , 32 ); +constant reg5: reg_generic := ( 5 , 32 ); constant reg25: reg_generic := ( 25 , 32 ); +constant reg6: reg_generic := ( 6 , 32 ); constant reg26: reg_generic := ( 26 , 32 ); +constant reg7: reg_generic := ( 7 , 32 ); constant reg27: reg_generic := ( 27 , 32 ); +constant reg8: reg_generic := ( 8 , 32 ); constant reg28: reg_generic := ( 28 , 32 ); +constant reg9: reg_generic := ( 9 , 32 ); constant reg29: reg_generic := ( 29 , 32 ); +constant reg10: reg_generic := ( 10 , 32 ); constant reg30: reg_generic := ( 30 , 32 ); +constant reg11: reg_generic := ( 11 , 32 ); constant reg31: reg_generic := ( 31 , 32 ); +constant reg12: reg_generic := ( 12 , 32 ); constant reg32: reg_generic := ( 32 , 32 ); +constant reg13: reg_generic := ( 13 , 32 ); constant reg33: reg_generic := ( 33 , 32 ); +constant reg14: reg_generic := ( 14 , 32 ); constant reg34: reg_generic := ( 34 , 32 ); +constant reg15: reg_generic := ( 15 , 32 ); constant reg35: reg_generic := ( 35 , 32 ); +constant reg16: reg_generic := ( 16 , 32 ); constant reg36: reg_generic := ( 36 , 32 ); +constant reg17: reg_generic := ( 17 , 32 ); constant reg37: reg_generic := ( 37 , 32 ); +constant reg18: reg_generic := ( 18 , 32 ); constant reg38: reg_generic := ( 38 , 32 ); +constant reg19: reg_generic := ( 19 , 32 ); constant reg39: reg_generic := ( 39 , 32 ); + + + + + +-- Init value: - , - , - , automatic , pause , diff , ringbuffer , reset + +constant cfg0 : cfg_generic := ( 0 , "00010100" ); +constant cfg1 : cfg_generic := ( 1 , "00010100" ); +constant cfg2 : cfg_generic := ( 2 , "00010100" ); +constant cfg3 : cfg_generic := ( 3 , "00010100" ); +constant cfg4 : cfg_generic := ( 4 , "00010100" ); +constant cfg5 : cfg_generic := ( 5 , "00010100" ); +constant cfg6 : cfg_generic := ( 6 , "00010100" ); +constant cfg7 : cfg_generic := ( 7 , "00010100" ); +constant cfg8 : cfg_generic := ( 8 , "00010100" ); +constant cfg9 : cfg_generic := ( 9 , "00010100" ); +constant cfg10 : cfg_generic := ( 10 , "00010100" ); +constant cfg11 : cfg_generic := ( 11 , "00010100" ); +constant cfg12 : cfg_generic := ( 12 , "00010100" ); +constant cfg13 : cfg_generic := ( 13 , "00010100" ); +constant cfg14 : cfg_generic := ( 14 , "00010100" ); +constant cfg15 : cfg_generic := ( 15 , "00010100" ); +constant cfg16 : cfg_generic := ( 16 , "00000000" ); +constant cfg17 : cfg_generic := ( 17 , "00000000" ); +constant cfg18 : cfg_generic := ( 18 , "00000000" ); +constant cfg19 : cfg_generic := ( 19 , "00000000" ); +constant cfg20 : cfg_generic := ( 20 , "00000000" ); +constant cfg21 : cfg_generic := ( 21 , "00000000" ); +constant cfg22 : cfg_generic := ( 22 , "00000000" ); +constant cfg23 : cfg_generic := ( 23 , "00000000" ); +constant cfg24 : cfg_generic := ( 24 , "00000000" ); +constant cfg25 : cfg_generic := ( 25 , "00000000" ); +constant cfg26 : cfg_generic := ( 26 , "00000000" ); +constant cfg27 : cfg_generic := ( 27 , "00000000" ); +constant cfg28 : cfg_generic := ( 28 , "00000000" ); +constant cfg29 : cfg_generic := ( 29 , "00000000" ); + + + + + + + + + + + +constant regs : reg_generics := + ( + reg0, reg1, reg2, reg3, reg4, reg5, reg6, reg7, reg8, reg9, reg10, reg11, reg12, reg13, reg14, + reg15, reg16, reg17, reg18, reg19, reg20, reg21, reg22, reg23, reg24, reg25, reg26, reg27, + reg28, reg29, reg30, reg31, reg32, reg33, reg34, reg35, reg36, reg37, reg38, reg39 + ); + + + +constant cfgs : cfg_generics := + ( + cfg0, cfg1, cfg2, cfg3, cfg4, cfg5, cfg6, cfg7, cfg8, cfg9, cfg10, cfg11, cfg12, cfg13, cfg14, + cfg15, cfg16, cfg17, cfg18, cfg19, cfg20, cfg21, cfg22, cfg23, cfg24, cfg25, cfg26, cfg27, + cfg28, cfg29 + ); + + + + +function Log2_monitor( input:integer ) return integer; + + + +end package monitor_config; + + + + + + +package body monitor_config is + + + function Log2_monitor( input:integer ) return integer is + variable temp,log:integer; + begin + temp:=input; + log:=0; + while (temp /= 0) loop + temp:=temp/2; + log:=log+1; + end loop; + return log; + end function Log2_monitor; + + + +end package body monitor_config; \ No newline at end of file diff --git a/monitor/mux_cfg.vhd b/monitor/mux_cfg.vhd new file mode 100644 index 0000000..844417f --- /dev/null +++ b/monitor/mux_cfg.vhd @@ -0,0 +1,84 @@ +-- *********************************************************************************** +-- *********************************************************************************** +-- +-- CFG cell DEMUX +-- -------------- +-- +-- +-- *********************************************************************************** +-- *********************************************************************************** + + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; + +library work; +use work.monitor_config.all; + + +entity cfg_mux is + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + WRITE_IN : in std_logic; + DATA_IN : in std_logic_vector(7 downto 0); + ADDR_IN : in std_logic_vector(7 downto 0); + + DATA_OUT : out std_logic_vector(8*FIFO_NUM-1 downto 0); + WRITE_OUT : out std_logic_vector( FIFO_NUM-1 downto 0); + + STATUS_OUT : out std_logic_vector(7 downto 0) := "00000000" + ); +end entity; + +architecture basic of cfg_mux is + +signal stat, next_stat : std_logic_vector(7 downto 0) := (others => '0'); +signal buf_data_out, next_buf_data_out : std_logic_vector(8*FIFO_NUM-1 downto 0) := (others => '0'); +signal buf_write_out, next_buf_write_out : std_logic_vector(FIFO_NUM-1 downto 0) := (others => '0'); + +begin + + STATUS_OUT <= stat; + DATA_OUT <= buf_data_out; + WRITE_OUT <= buf_write_out; + + proc_register : process(CLK) + begin + if rising_edge(CLK) then + buf_data_out <= next_buf_data_out; + buf_write_out <= next_buf_write_out; + stat <= next_stat; + end if; + end process; + + proc_MUX : process(ADDR_IN, WRITE_IN, DATA_IN, RESET) + variable handle : integer range 0 to 255:= 0; + begin + handle := to_integer(unsigned(ADDR_IN)); + next_buf_write_out <= (others => '0'); + next_stat(0) <= '0'; -- UNKNOWN ADDRESS + next_stat(1) <= '0'; -- ACK + next_buf_data_out <= (others => '0'); + if WRITE_IN = '1' then + if handle < FIFO_NUM then + next_buf_data_out(8*(handle+1)-1 downto 8*handle) <= DATA_IN; + next_buf_write_out <= (others => '0'); + next_buf_write_out(handle) <= '1'; + next_stat(1) <= '1'; + else + next_stat(0) <= '1'; + end if; + end if; + if RESET = '1' then + next_stat(0) <= '0'; + next_stat(1) <= '0'; + next_buf_data_out <= (others => '0'); + next_buf_write_out <= (others => '0'); + end if; + end process; + +end architecture; \ No newline at end of file diff --git a/monitor/mux_fifo.vhd b/monitor/mux_fifo.vhd new file mode 100644 index 0000000..b6dbd02 --- /dev/null +++ b/monitor/mux_fifo.vhd @@ -0,0 +1,122 @@ +-- *********************************************************************************** +-- *********************************************************************************** +-- +-- The FIFO MUX +-- ------------ +-- +-- +-- +-- +-- +-- *********************************************************************************** +-- *********************************************************************************** + + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; + +library work; +use work.monitor_config.all; + + +entity fifo_mux is + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + READ_IN : in std_logic; -- Slow Control READ + ADDR_IN : in std_logic_vector(7 downto 0); -- Slow Control ADDR + + READ_OUT : out std_logic_vector(FIFO_NUM-1 downto 0); -- MUX-to-FIFO READ + + DATA_IN : in std_logic_vector(FIFO_NUM*FIFO_BUS-1 downto 0); -- FIFO data + VALID_IN : in std_logic_vector(FIFO_NUM-1 downto 0); -- FIFO valid + STATUS_IN : in std_logic_vector(8*FIFO_NUM-1 downto 0); -- FIFO stats + + DATA_OUT : out std_logic_vector(FIFO_BUS-1 downto 0); -- MUX Data as received from the FIFO + VALID_OUT : out std_logic; -- MUX Valid + STATUS_OUT : out std_logic_vector(7 downto 0) := "00000000" -- MUX status bits + ); +end entity; + +architecture basic of fifo_mux is + +type STATES is (IDLE, MONITOR, INIT); +signal state,next_state : STATES := IDLE; + +signal buf_read_out, next_buf_read_out : std_logic_vector(FIFO_NUM-1 downto 0) := (others => '0'); +signal stat, next_stat : std_logic_vector(7 downto 0) := "00000000"; +signal buf_data_out, next_buf_data_out : std_logic_vector(31 downto 0) := (others => '0'); +signal val, next_val : std_logic := '0'; +signal handle, next_handle : integer range 0 to 255 := 0; + +begin + + READ_OUT <= buf_read_out; + DATA_OUT <= buf_data_out; + VALID_OUT <= val; + STATUS_OUT <= stat; + + proc_register : process(CLK) + begin + if rising_edge(CLK) then + state <= next_state; + buf_data_out <= next_buf_data_out; + buf_read_out <= next_buf_read_out; + stat <= next_stat; + val <= next_val; + handle <= next_handle; + end if; + end process; + + proc_MUX : process(state, ADDR_IN, RESET, READ_IN, DATA_IN, VALID_IN, STATUS_IN, handle) + begin + next_state <= state; + next_buf_read_out <= (others => '0'); + next_stat(0) <= '0'; -- UNKNOWN ADDRESS + next_stat(1) <= '0'; -- FIFO_EMPTY + next_stat(2) <= '0'; -- FIFO_FULL + next_buf_data_out <= (others => '0'); + next_val <= '0'; + next_handle <= handle; + + case state is + when IDLE => + if READ_IN = '1' then + next_state <= INIT; + next_handle <= to_integer(unsigned(ADDR_IN)); + end if; + when INIT => + if handle < FIFO_NUM then + next_buf_read_out(handle) <= '1'; + next_state <= MONITOR; + else + next_stat(0) <= '1'; + next_state <= IDLE; + end if; + when MONITOR => + if VALID_IN(handle) = '1' then + next_buf_data_out <= DATA_IN( FIFO_BUS*handle+FIFO_BUS-1 downto FIFO_BUS*handle ); + next_val <= '1'; + next_state <= IDLE; + elsif STATUS_IN(8*handle+1) = '1' then + next_stat(1) <= '1'; + next_state <= IDLE; + end if; + when others => + end case; + if RESET = '1' then + next_stat(0) <= '0'; + next_stat(1) <= '0'; + next_stat(2) <= '0'; + next_buf_data_out <= (others => '0'); + next_buf_read_out <= (others => '0'); + next_val <= '0'; + next_state <= IDLE; + next_handle <= 0; + end if; + end process; + +end architecture; diff --git a/monitor/mux_reg.vhd b/monitor/mux_reg.vhd new file mode 100644 index 0000000..b3c2759 --- /dev/null +++ b/monitor/mux_reg.vhd @@ -0,0 +1,81 @@ +-- *********************************************************************************** +-- *********************************************************************************** +-- +-- The REG MUX +-- ----------- +-- +-- +-- +-- *********************************************************************************** +-- *********************************************************************************** + + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; + +library work; +use work.monitor_config.all; + + +entity reg_mux is + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + READ_IN : in std_logic; + ADDR_IN : in std_logic_vector(7 downto 0); + DATA_IN : in std_logic_vector( (REG_NUM*REG_BUS)-1 downto 0); + + DATA_OUT : out std_logic_vector(REG_BUS-1 downto 0); + VALID_OUT : out std_logic; + + STATUS_OUT : out std_logic_vector(7 downto 0) := "00000000" + ); +end entity; + +architecture basic of reg_mux is + +signal buf_reg, next_buf_reg : std_logic_vector(REG_BUS-1 downto 0) := (others => '0'); +signal val, next_val : std_logic := '0'; +signal stat, next_stat : std_logic_vector(7 downto 0) := (others => '0'); + +begin + + DATA_OUT <= buf_reg; + VALID_OUT <= val; + STATUS_OUT <= stat; + + p_register:process(CLK) + begin + if rising_edge(CLK) then + buf_reg <= next_buf_reg; + val <= next_val; + stat <= next_stat; + end if; + end process; + + proc_MUX : process(ADDR_IN, READ_IN, DATA_IN, RESET, buf_reg) + variable handle : integer range 0 to 255 := 0; + begin + handle := to_integer(unsigned(ADDR_IN)); + next_stat(0) <= '0'; -- UNKNOWN ADDRESS + next_val <= '0'; + next_buf_reg <= buf_reg; + if READ_IN = '1' then + if handle < REG_NUM then + next_buf_reg <= DATA_IN(REG_BUS*handle+REG_BUS-1 downto REG_BUS*handle); + next_val <= '1'; + else + next_stat(0) <= '1'; -- UNKNOWN ADDRESS True + end if; + end if; + if RESET = '1' then + next_stat(0) <= '0'; + next_val <= '0'; + next_buf_reg <= (others => '0'); + end if; + end process; + +end architecture; \ No newline at end of file diff --git a/monitor/readme.txt b/monitor/readme.txt new file mode 100644 index 0000000..c90bb98 --- /dev/null +++ b/monitor/readme.txt @@ -0,0 +1,34 @@ +The FEE monitor: + +1) Include all files into your project. +2) Rewrite monitor_config.vhd +3) Assign all signals to be monitored to the FIFO input port and REG input port. +4) Read values out via trbcmd or slowcontrol + +Attach the monitor to the regio bus handler entity with a designated address range. +In case of 0xb000 address space, the cells would be: + + 0xb100 - 0xb1xx configuration cells, use writes to set FIFO parameter + write 0x1 - FIFO RESET + write 0x2 - Ring Buffer Mode + write 0x4 - Diff, check if successive inputs differ, + writes only new and changed values into the FIFO + write 0x8 - HALT the FIFO writes + write 0x10 - Automatic monitoring with predefined frequency + The frequency is set by freq_low which sais + how many clock cycles should be skipped and + freq_high which sais how many clock cycles + as a power of 2 should be skipped. + If freq_high is set, freq_low will be ignored. + + If no automatic scanning is specified, use + FIFO_WRITE_IN port to set HW write triggers. + One bit per FIFO, if it is set then a write occurs. + Any combination of these is also possible. + 0xb200 - 0xb2xx FIFO cell address range, one address per FIFO + 0xb300 - 0xb3xx REG cell address range, one address per Register + +In the current version, the ROM is not implemented. + + +Borislav Milanovic diff --git a/monitor/reg_cell.vhd b/monitor/reg_cell.vhd new file mode 100644 index 0000000..ba7ad69 --- /dev/null +++ b/monitor/reg_cell.vhd @@ -0,0 +1,63 @@ +-- *********************************************************************************** +-- *********************************************************************************** +-- +-- REG storage cell +-- ----------------- +-- +-- *********************************************************************************** +-- *********************************************************************************** + + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; + +-- Import monitor_config.vhd +-- with all its constants and components +library work; +use work.monitor_config.all; + + + +entity REG_cell is + generic( + width : integer range 1 to 32 := 32 -- only 32 bit in the current version due to the readout bus + ); + port( + CLK : in std_logic; + RESET : in std_logic; + CLK_EN : in std_logic; + + DATA_IN : in std_logic_vector(REG_BUS-1 downto 0); -- REG_BUS is currently a constant set to 32 + DATA_OUT : out std_logic_vector(REG_BUS-1 downto 0) := (others => '0') -- it is defined in monitor_config.vhd which is imported + ); +end entity; + +architecture basic of REG_cell is + +signal data, next_data : std_logic_vector(width-1 downto 0) := (others => '0'); + +begin + + -- Define the output port + DATA_OUT(width-1 downto 0) <= data; + + -- Calculate the cell contents based on RESET and input port + p_input:process(DATA_IN, RESET) + begin + if RESET = '0' then + next_data <= DATA_IN(width-1 downto 0); + else + next_data <= (others => '0'); + end if; + end process; + + -- Take the input into the D flipflop at rising clock edge + p_register : process(CLK) + begin + if rising_edge(CLK) then + data <= next_data; + end if; + end process; + +end architecture; \ No newline at end of file diff --git a/monitor/rom.vhd b/monitor/rom.vhd new file mode 100644 index 0000000..75c6035 --- /dev/null +++ b/monitor/rom.vhd @@ -0,0 +1,175 @@ +-- +-- +-- 2DO: +-- FIT TO VERSION 4.0 +-- +-- +-- + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; +--USE IEEE.std_logic_UNSIGNED.ALL; + +library work; +use work.trb_net_std.all; +use work.monitor_config.all; + +entity rom_32x113 is + generic( + INITX : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(FIFO_NUM,8)) & std_logic_vector(to_unsigned(REG_NUM,16)) & std_logic_vector(to_unsigned(CFG_WIDTH, 8)); + INIT0 : std_logic_vector(31 downto 0) := fifo_generics(1).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(1).width,8)) & std_logic_vector(to_unsigned(fifo_generics(1).depth,16)); + INIT1 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(1).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(1).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(1).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(1).time_size,8)); + INIT2 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(1).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(1).event_size,8)) & "0000000000000000"; + INIT3 : std_logic_vector(31 downto 0) := cfgs(1).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT4 : std_logic_vector(31 downto 0) := fifo_generics(2).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(2).width,8)) & std_logic_vector(to_unsigned(fifo_generics(2).depth,16)); + INIT5 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(2).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(2).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(2).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(2).time_size,8)); + INIT6 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(2).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(2).event_size,8)) & "0000000000000000"; + INIT7 : std_logic_vector(31 downto 0) := cfgs(2).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT8 : std_logic_vector(31 downto 0) := fifo_generics(3).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(3).width,8)) & std_logic_vector(to_unsigned(fifo_generics(3).depth,16)); + INIT9 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(3).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(3).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(3).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(3).time_size,8)); + INIT10 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(3).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(3).event_size,8)) & "0000000000000000"; + INIT11 : std_logic_vector(31 downto 0) := cfgs(3).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT12 : std_logic_vector(31 downto 0) := fifo_generics(4).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(4).width,8)) & std_logic_vector(to_unsigned(fifo_generics(4).depth,16)); + INIT13 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(4).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(4).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(4).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(4).time_size,8)); + INIT14 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(4).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(4).event_size,8)) & "0000000000000000"; + INIT15 : std_logic_vector(31 downto 0) := cfgs(4).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT16 : std_logic_vector(31 downto 0) := fifo_generics(5).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(5).width,8)) & std_logic_vector(to_unsigned(fifo_generics(5).depth,16)); + INIT17 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(5).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(5).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(5).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(5).time_size,8)); + INIT18 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(5).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(5).event_size,8)) & "0000000000000000"; + INIT19 : std_logic_vector(31 downto 0) := cfgs(5).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT20 : std_logic_vector(31 downto 0) := fifo_generics(6).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(6).width,8)) & std_logic_vector(to_unsigned(fifo_generics(6).depth,16)); + INIT21 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(6).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(6).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(6).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(6).time_size,8)); + INIT22 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(6).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(6).event_size,8)) & "0000000000000000"; + INIT23 : std_logic_vector(31 downto 0) := cfgs(6).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT24 : std_logic_vector(31 downto 0) := fifo_generics(7).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(7).width,8)) & std_logic_vector(to_unsigned(fifo_generics(7).depth,16)); + INIT25 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(7).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(7).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(7).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(7).time_size,8)); + INIT26 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(7).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(7).event_size,8)) & "0000000000000000"; + INIT27 : std_logic_vector(31 downto 0) := cfgs(7).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT28 : std_logic_vector(31 downto 0) := fifo_generics(8).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(8).width,8)) & std_logic_vector(to_unsigned(fifo_generics(8).depth,16)); + INIT29 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(8).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(8).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(8).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(8).time_size,8)); + INIT30 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(8).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(8).event_size,8)) & "0000000000000000"; + INIT31 : std_logic_vector(31 downto 0) := cfgs(8).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT32 : std_logic_vector(31 downto 0) := fifo_generics(9).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(9).width,8)) & std_logic_vector(to_unsigned(fifo_generics(9).depth,16)); + INIT33 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(9).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(9).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(9).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(9).time_size,8)); + INIT34 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(9).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(9).event_size,8)) & "0000000000000000"; + INIT35 : std_logic_vector(31 downto 0) := cfgs(9).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT36 : std_logic_vector(31 downto 0) := fifo_generics(10).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(10).width,8)) & std_logic_vector(to_unsigned(fifo_generics(10).depth,16)); + INIT37 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(10).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(10).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(10).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(10).time_size,8)); + INIT38 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(10).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(10).event_size,8)) & "0000000000000000"; + INIT39 : std_logic_vector(31 downto 0) := cfgs(10).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT40 : std_logic_vector(31 downto 0) := fifo_generics(11).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(11).width,8)) & std_logic_vector(to_unsigned(fifo_generics(11).depth,16)); + INIT41 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(11).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(11).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(11).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(11).time_size,8)); + INIT42 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(11).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(11).event_size,8)) & "0000000000000000"; + INIT43 : std_logic_vector(31 downto 0) := cfgs(11).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT44 : std_logic_vector(31 downto 0) := fifo_generics(12).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(12).width,8)) & std_logic_vector(to_unsigned(fifo_generics(12).depth,16)); + INIT45 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(12).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(12).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(12).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(12).time_size,8)); + INIT46 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(12).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(12).event_size,8)) & "0000000000000000"; + INIT47 : std_logic_vector(31 downto 0) := cfgs(12).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT48 : std_logic_vector(31 downto 0) := fifo_generics(13).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(13).width,8)) & std_logic_vector(to_unsigned(fifo_generics(13).depth,16)); + INIT49 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(13).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(13).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(13).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(13).time_size,8)); + INIT50 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(13).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(13).event_size,8)) & "0000000000000000"; + INIT51 : std_logic_vector(31 downto 0) := cfgs(13).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT52 : std_logic_vector(31 downto 0) := fifo_generics(14).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(14).width,8)) & std_logic_vector(to_unsigned(fifo_generics(14).depth,16)); + INIT53 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(14).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(14).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(14).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(14).time_size,8)); + INIT54 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(14).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(14).event_size,8)) & "0000000000000000"; + INIT55 : std_logic_vector(31 downto 0) := cfgs(14).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT56 : std_logic_vector(31 downto 0) := fifo_generics(15).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(15).width,8)) & std_logic_vector(to_unsigned(fifo_generics(15).depth,16)); + INIT57 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(15).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(15).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(15).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(15).time_size,8)); + INIT58 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(15).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(15).event_size,8)) & "0000000000000000"; + INIT59 : std_logic_vector(31 downto 0) := cfgs(15).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT60 : std_logic_vector(31 downto 0) := fifo_generics(16).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(16).width,8)) & std_logic_vector(to_unsigned(fifo_generics(16).depth,16)); + INIT61 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(16).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(16).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(16).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(16).time_size,8)); + INIT62 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(16).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(16).event_size,8)) & "0000000000000000"; + INIT63 : std_logic_vector(31 downto 0) := cfgs(16).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT64 : std_logic_vector(31 downto 0) := fifo_generics(17).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(17).width,8)) & std_logic_vector(to_unsigned(fifo_generics(17).depth,16)); + INIT65 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(17).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(17).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(17).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(17).time_size,8)); + INIT66 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(17).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(17).event_size,8)) & "0000000000000000"; + INIT67 : std_logic_vector(31 downto 0) := cfgs(17).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT68 : std_logic_vector(31 downto 0) := fifo_generics(18).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(18).width,8)) & std_logic_vector(to_unsigned(fifo_generics(18).depth,16)); + INIT69 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(18).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(18).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(18).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(18).time_size,8)); + INIT70 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(18).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(18).event_size,8)) & "0000000000000000"; + INIT71 : std_logic_vector(31 downto 0) := cfgs(18).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT72 : std_logic_vector(31 downto 0) := fifo_generics(19).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(19).width,8)) & std_logic_vector(to_unsigned(fifo_generics(19).depth,16)); + INIT73 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(19).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(19).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(19).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(19).time_size,8)); + INIT74 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(19).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(19).event_size,8)) & "0000000000000000"; + INIT75 : std_logic_vector(31 downto 0) := cfgs(19).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT76 : std_logic_vector(31 downto 0) := fifo_generics(20).monitoring_type & std_logic_vector(to_unsigned(fifo_generics(20).width,8)) & std_logic_vector(to_unsigned(fifo_generics(20).depth,16)); + INIT77 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(20).frequency,8)) & std_logic_vector(to_unsigned(fifo_generics(20).timer_type,8)) & std_logic_vector(to_unsigned(fifo_generics(20).timer_resolution,8)) & std_logic_vector(to_unsigned(fifo_generics(20).time_size,8)); + INIT78 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(fifo_generics(20).data_size,8)) & std_logic_vector(to_unsigned(fifo_generics(20).event_size,8)) & "0000000000000000"; + INIT79 : std_logic_vector(31 downto 0) := cfgs(20).init & std_logic_vector(to_unsigned(fifo_generics(1).descriptor,16)); + INIT80 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(1).width,8)) & x"0000" & "00000000"; + INIT81 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(2).width,8)) & x"0000" & "00000000"; + INIT82 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(3).width,8)) & x"0000" & "00000000"; + INIT83 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(4).width,8)) & x"0000" & "00000000"; + INIT84 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(5).width,8)) & x"0000" & "00000000"; + INIT85 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(6).width,8)) & x"0000" & "00000000"; + INIT86 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(7).width,8)) & x"0000" & "00000000"; + INIT87 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(8).width,8)) & x"0000" & "00000000"; + INIT88 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(9).width,8)) & x"0000" & "00000000"; + INIT89 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(10).width,8)) & x"0000" & "00000000"; + INIT90 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(11).width,8)) & x"0000" & "00000000"; + INIT91 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(12).width,8)) & x"0000" & "00000000"; + INIT92 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(13).width,8)) & x"0000" & "00000000"; + INIT93 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(14).width,8)) & x"0000" & "00000000"; + INIT94 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(15).width,8)) & x"0000" & "00000000"; + INIT95 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(16).width,8)) & x"0000" & "00000000"; + INIT96 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(17).width,8)) & x"0000" & "00000000"; + INIT97 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(18).width,8)) & x"0000" & "00000000"; + INIT98 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(19).width,8)) & x"0000" & "00000000"; + INIT99 : std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(20).width,8)) & x"0000" & "00000000"; + INIT100: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(21).width,8)) & x"0000" & "00000000"; + INIT101: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(22).width,8)) & x"0000" & "00000000"; + INIT102: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(23).width,8)) & x"0000" & "00000000"; + INIT103: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(24).width,8)) & x"0000" & "00000000"; + INIT104: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(25).width,8)) & x"0000" & "00000000"; + INIT105: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(26).width,8)) & x"0000" & "00000000"; + INIT106: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(27).width,8)) & x"0000" & "00000000"; + INIT107: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(28).width,8)) & x"0000" & "00000000"; + INIT108: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(29).width,8)) & x"0000" & "00000000"; + INIT109: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(30).width,8)) & x"0000" & "00000000"; + INIT110: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(31).width,8)) & x"0000" & "00000000"; + INIT111: std_logic_vector(31 downto 0) := std_logic_vector(to_unsigned(reg_generics(32).width,8)) & x"0000" & "00000000" + + ); + port( + CLK : in std_logic; + ADDR_IN : in std_logic_vector(8 downto 0); + DATA_OUT : out std_logic_vector(31 downto 0) + ); +end entity; + +architecture rom_32x113_arch of rom_32x113 is + type ram_t is array(0 to 112) of std_logic_vector(31 downto 0); + SIGNAL rom : ram_t := (INITX, INIT0, INIT1, INIT2, INIT3, INIT4, INIT5, INIT6, INIT7, INIT8, + INIT9, INIT10, INIT11, INIT12, INIT13, INIT14, INIT15, INIT16, + INIT17, INIT18, INIT19, INIT20, INIT21, INIT22, INIT23, INIT24, + INIT25, INIT26, INIT27, INIT28, INIT29, INIT30, INIT31, + INIT32, INIT33, INIT34, INIT35, INIT36, INIT37, INIT38, INIT39, INIT40, + INIT41, INIT42, INIT43, INIT44, INIT45, INIT46, INIT47, INIT48, + INIT49, INIT50, INIT51, INIT52, INIT53, INIT54, INIT55, INIT56, + INIT57, INIT58, INIT59, INIT60, INIT61, INIT62, INIT63, + INIT64, INIT65, INIT66, INIT67, INIT68, INIT69, INIT70, INIT71, + INIT72, INIT73, INIT74, INIT75, INIT76, INIT77, INIT78, INIT79, + INIT80, INIT81, INIT82, INIT83, INIT84, INIT85, INIT86, INIT87, + INIT88, INIT89, INIT90, INIT91, INIT92, INIT93, INIT94, INIT95, + INIT96, INIT97, INIT98, INIT99, INIT100, INIT101, INIT102, INIT103, + INIT104, INIT105, INIT106, INIT107, INIT108, INIT109, INIT110, INIT111 +-- INIT112, INIT113, INIT114, INIT115, INIT116, INIT117, INIT118, INIT119, +-- INIT120, INIT121, INIT122, INIT123, INIT124, INIT125, INIT126, INIT127, +-- INIT128, INIT129, INIT130, INIT131, INIT132, INIT133, INIT134, INIT135, +-- INIT136, INIT137, INIT138, INIT139, INIT140, INIT141, INIT142, INIT143 + ); + +begin + + + + process(CLK) + begin + if rising_edge(CLK) then + DATA_OUT <= rom(to_integer(unsigned(ADDR_IN))); + end if; + end process; + +end architecture; \ No newline at end of file -- 2.43.0