Merge commit 'origin' into new_eth
authorMatt Ettus <matt@ettus.com>
Fri, 25 Sep 2009 05:34:06 +0000 (22:34 -0700)
committerMatt Ettus <matt@ettus.com>
Fri, 25 Sep 2009 05:34:06 +0000 (22:34 -0700)
Conflicts:
.gitignore

166 files changed:
usrp2/firmware/apps/.gitignore
usrp2/firmware/apps/app_common_v2.c
usrp2/firmware/apps/app_passthru_v2.c
usrp2/firmware/apps/factory_test.c
usrp2/firmware/apps/gen_eth_packets.c
usrp2/firmware/apps/gen_pause_frames.c
usrp2/firmware/apps/mimo_app_common_v2.c
usrp2/firmware/apps/mimo_tx.c
usrp2/firmware/apps/mimo_tx_slave.c
usrp2/firmware/apps/rcv_eth_packets.c
usrp2/firmware/apps/serdes_txrx.c
usrp2/firmware/apps/tx_standalone.c
usrp2/firmware/apps/txrx.c
usrp2/firmware/lib/.gitignore
usrp2/firmware/lib/dbsm.c
usrp2/firmware/lib/eth_mac.c
usrp2/firmware/lib/eth_mac_regs.h
usrp2/firmware/lib/ethernet.c
usrp2/fpga/.gitignore [new file with mode: 0644]
usrp2/fpga/control_lib/buffer_int.v [deleted file]
usrp2/fpga/control_lib/buffer_int_tb.v [deleted file]
usrp2/fpga/control_lib/buffer_pool.v [deleted file]
usrp2/fpga/control_lib/buffer_pool_tb.v [deleted file]
usrp2/fpga/control_lib/cascadefifo.v [deleted file]
usrp2/fpga/control_lib/cascadefifo2.v [deleted file]
usrp2/fpga/control_lib/fifo_2clock.v [deleted file]
usrp2/fpga/control_lib/fifo_2clock_casc.v [deleted file]
usrp2/fpga/control_lib/fifo_reader.v [deleted file]
usrp2/fpga/control_lib/fifo_tb.v
usrp2/fpga/control_lib/fifo_writer.v [deleted file]
usrp2/fpga/control_lib/giantfifo.v [deleted file]
usrp2/fpga/control_lib/giantfifo_tb.v [deleted file]
usrp2/fpga/control_lib/newfifo/.gitignore [new file with mode: 0644]
usrp2/fpga/control_lib/newfifo/fifo18_to_ll8.v [deleted file]
usrp2/fpga/control_lib/newfifo/fifo36_to_ll8.v
usrp2/fpga/control_lib/newfifo/fifo_2clock.v
usrp2/fpga/control_lib/newfifo/fifo_2clock_casc.v [deleted file]
usrp2/fpga/control_lib/newfifo/fifo_2clock_cascade.v [new file with mode: 0644]
usrp2/fpga/control_lib/newfifo/fifo_new_tb.v [deleted file]
usrp2/fpga/control_lib/newfifo/fifo_tb.v
usrp2/fpga/control_lib/newfifo/ll8_shortfifo.v [new file with mode: 0644]
usrp2/fpga/coregen/coregen.cgp
usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.ngc [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.v [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.veo [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.xco [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.lso [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_flist.txt [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_readme.txt [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_xmdf.tcl [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk.asy
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk.ngc
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk.sym
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk.v
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk.veo
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk.vhd
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk.vho
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk.xco
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
usrp2/fpga/coregen/fifo_xlnx_2Kx36_2clk_readme.txt
usrp2/fpga/coregen/fifo_xlnx_512x36_2clk.ngc
usrp2/fpga/coregen/fifo_xlnx_512x36_2clk.v
usrp2/fpga/coregen/fifo_xlnx_512x36_2clk.veo
usrp2/fpga/coregen/fifo_xlnx_512x36_2clk.xco
usrp2/fpga/coregen/fifo_xlnx_512x36_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
usrp2/fpga/coregen/fifo_xlnx_512x36_2clk_flist.txt
usrp2/fpga/coregen/fifo_xlnx_512x36_2clk_readme.txt
usrp2/fpga/coregen/fifo_xlnx_512x36_2clk_xmdf.tcl
usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.ngc [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.v [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.veo [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.xco [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.lso [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_flist.txt [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_readme.txt [new file with mode: 0644]
usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_xmdf.tcl [new file with mode: 0644]
usrp2/fpga/eth/bench/verilog/.gitignore [deleted file]
usrp2/fpga/eth/bench/verilog/100m.scr [deleted file]
usrp2/fpga/eth/bench/verilog/Phy_sim.v [deleted file]
usrp2/fpga/eth/bench/verilog/User_int_sim.v [deleted file]
usrp2/fpga/eth/bench/verilog/error.scr [deleted file]
usrp2/fpga/eth/bench/verilog/files.lst [deleted file]
usrp2/fpga/eth/bench/verilog/host_sim.v [deleted file]
usrp2/fpga/eth/bench/verilog/icomp.bat [deleted file]
usrp2/fpga/eth/bench/verilog/isim.bat [deleted file]
usrp2/fpga/eth/bench/verilog/jumbo_err.scr [deleted file]
usrp2/fpga/eth/bench/verilog/jumbos.scr [deleted file]
usrp2/fpga/eth/bench/verilog/mdio.scr [deleted file]
usrp2/fpga/eth/bench/verilog/miim_model.v [deleted file]
usrp2/fpga/eth/bench/verilog/misc.scr [deleted file]
usrp2/fpga/eth/bench/verilog/pause.scr [deleted file]
usrp2/fpga/eth/bench/verilog/tb_top.v [deleted file]
usrp2/fpga/eth/bench/verilog/test.scr [deleted file]
usrp2/fpga/eth/bench/verilog/txmac.scr [deleted file]
usrp2/fpga/eth/bench/verilog/xlnx_glbl.v [deleted file]
usrp2/fpga/eth/demo/verilog/RAMB16_S1_S2.v [deleted file]
usrp2/fpga/eth/demo/verilog/demo.ucf [deleted file]
usrp2/fpga/eth/demo/verilog/demo.v [deleted file]
usrp2/fpga/eth/demo/verilog/demo_packet_descriptor_memory.v [deleted file]
usrp2/fpga/eth/demo/verilog/demo_packet_generator.v [deleted file]
usrp2/fpga/eth/demo/verilog/demo_uart.v [deleted file]
usrp2/fpga/eth/demo/verilog/demo_wishbone_master.v [deleted file]
usrp2/fpga/eth/demo/verilog/tb_demo.v [deleted file]
usrp2/fpga/eth/header_ram.v [deleted file]
usrp2/fpga/eth/mac_rxfifo_int.v [deleted file]
usrp2/fpga/eth/mac_txfifo_int.v [deleted file]
usrp2/fpga/eth/rtl/verilog/Clk_ctrl.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_rx.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_rx/Broadcast_filter.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_rx/CRC_chk.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_rx/MAC_rx_FF.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_rx/MAC_rx_add_chk.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_rx/MAC_rx_ctrl.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_top.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_tx.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_tx/CRC_gen.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_tx/MAC_tx_FF.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_tx/MAC_tx_addr_add.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_tx/MAC_tx_ctrl.v [deleted file]
usrp2/fpga/eth/rtl/verilog/MAC_tx/Random_gen.v [deleted file]
usrp2/fpga/eth/rtl/verilog/Phy_int.v [deleted file]
usrp2/fpga/eth/rtl/verilog/RMON.v [deleted file]
usrp2/fpga/eth/rtl/verilog/RMON/RMON_addr_gen.v [deleted file]
usrp2/fpga/eth/rtl/verilog/RMON/RMON_ctrl.v [deleted file]
usrp2/fpga/eth/rtl/verilog/Reg_int.v [deleted file]
usrp2/fpga/eth/rtl/verilog/TECH/eth_clk_div2.v [deleted file]
usrp2/fpga/eth/rtl/verilog/TECH/eth_clk_switch.v [deleted file]
usrp2/fpga/eth/rtl/verilog/TECH/xilinx/BUFGMUX.v [deleted file]
usrp2/fpga/eth/rtl/verilog/TECH/xilinx/RAMB16_S36_S36.v [deleted file]
usrp2/fpga/eth/rtl/verilog/elastic_buffer.v [deleted file]
usrp2/fpga/eth/rtl/verilog/elastic_buffer_tb.v [deleted file]
usrp2/fpga/eth/rtl/verilog/eth_miim.v [deleted file]
usrp2/fpga/eth/rtl/verilog/flow_ctrl_rx.v [deleted file]
usrp2/fpga/eth/rtl/verilog/flow_ctrl_tx.v [deleted file]
usrp2/fpga/eth/rtl/verilog/header.vh [deleted file]
usrp2/fpga/eth/rtl/verilog/miim/eth_clockgen.v [deleted file]
usrp2/fpga/eth/rtl/verilog/miim/eth_outputcontrol.v [deleted file]
usrp2/fpga/eth/rtl/verilog/miim/eth_shiftreg.v [deleted file]
usrp2/fpga/eth/rx_prot_engine.v [deleted file]
usrp2/fpga/eth/tx_prot_engine.v [deleted file]
usrp2/fpga/models/adc_model.v
usrp2/fpga/sdr_lib/rx_control.v
usrp2/fpga/sdr_lib/tx_control.v
usrp2/fpga/serdes/serdes.v
usrp2/fpga/serdes/serdes_rx.v
usrp2/fpga/serdes/serdes_tx.v
usrp2/fpga/simple_gemac/.gitignore
usrp2/fpga/simple_gemac/delay_line.v
usrp2/fpga/simple_gemac/eth_tasks_f36.v [new file with mode: 0644]
usrp2/fpga/simple_gemac/flow_ctrl_rx.v
usrp2/fpga/simple_gemac/ll8_shortfifo.v
usrp2/fpga/simple_gemac/rxmac_to_ll8.v
usrp2/fpga/simple_gemac/simple_gemac.v
usrp2/fpga/simple_gemac/simple_gemac_rx.v
usrp2/fpga/simple_gemac/simple_gemac_tx.v
usrp2/fpga/simple_gemac/simple_gemac_wb.v
usrp2/fpga/simple_gemac/simple_gemac_wrapper.build [new file with mode: 0755]
usrp2/fpga/simple_gemac/simple_gemac_wrapper.v
usrp2/fpga/simple_gemac/simple_gemac_wrapper_f36_tb.v [new file with mode: 0644]
usrp2/fpga/simple_gemac/simple_gemac_wrapper_tb.v
usrp2/fpga/testbench/cmdfile
usrp2/fpga/top/u2_core/.gitignore
usrp2/fpga/top/u2_core/u2_core.v
usrp2/fpga/top/u2_rev3/Makefile

index b8ab0dc8d00dc1714dc846e53366e9717a9bd147..ea27c9fb4b04ea188e10c07f1f7a13f971968462 100644 (file)
@@ -1,5 +1,6 @@
 /*-stamp
 /*.a
+/*.o
 /*.bin
 /*.dump
 /*.log
index 6d9606d45e980f9eafebb2d1b3bd6ad1debb629f..67cccd53b43131bc0ef6acad563963634231cef9 100644 (file)
@@ -70,6 +70,7 @@ void
 set_reply_hdr(u2_eth_packet_t *reply_pkt, u2_eth_packet_t const *cmd_pkt)
 {
   reply_pkt->ehdr.dst = cmd_pkt->ehdr.src;
+  reply_pkt->ehdr.src = *ethernet_mac_addr();
   reply_pkt->ehdr.ethertype = U2_ETHERTYPE;
   reply_pkt->thdr.flags = 0;
   reply_pkt->thdr.fifo_status = 0;     // written by protocol engine
@@ -599,7 +600,7 @@ bool
 eth_pkt_inspector(dbsm_t *sm, int bufno)
 {
   u2_eth_packet_t *pkt = (u2_eth_packet_t *) buffer_ram(bufno);
-  size_t byte_len = (buffer_pool_status->last_line[bufno] - 3) * 4;
+  size_t byte_len = (buffer_pool_status->last_line[bufno] - 1) * 4;
 
   //static size_t last_len = 0;
 
index 660bcd774fafeb4a6992386c21f12b047cb6a607..406c56b3b8f460d38f1d88937f43485e1a5669b6 100644 (file)
@@ -42,6 +42,7 @@ void
 set_reply_hdr(u2_eth_packet_t *reply_pkt, u2_eth_packet_t const *cmd_pkt)
 {
   reply_pkt->ehdr.dst = cmd_pkt->ehdr.src;
+  reply_pkt->ehdr.src = *ethernet_mac_addr();
   reply_pkt->ehdr.ethertype = U2_ETHERTYPE;
   reply_pkt->thdr.flags = 0;
   reply_pkt->thdr.fifo_status = 0;     // written by protocol engine
index b4b44dbdb99fef34c44c67eb15262cef8cf7aa48..a4bc06d58cf5cc523e4c3b171ca314dc5f635998 100644 (file)
@@ -170,6 +170,7 @@ start_rx_streaming_cmd(const u2_mac_addr_t *host, op_start_rx_streaming_t *p)
   u2_eth_packet_t      pkt;
   memset(&pkt, 0, sizeof(pkt));
   pkt.ehdr.dst = *host;
+  pkt.ehdr.src = *ethernet_mac_addr();
   pkt.ehdr.ethertype = U2_ETHERTYPE;
   u2p_set_word0(&pkt.fixed, 0, 0);
   // DSP RX will fill in timestamp
index ce1e8160bb41509e385ab4e0599e5f5c83a7ab90..5cda5bb8eca67f9d0f632c0c1a3b177316da8116 100644 (file)
@@ -104,8 +104,7 @@ init_packets(void)
   memset(&pkt, 0, sizeof(pkt));
 
   pkt.ehdr.dst = dst_mac_addr;
-  // src address filled in by mac
-
+  pkt.ehdr.src = *ethernet_mac_addr();
   pkt.ehdr.ethertype = U2_ETHERTYPE;
   pkt.fixed.word0 = 0x01234567;
   pkt.fixed.timestamp = 0xffffffff;
@@ -141,10 +140,12 @@ main(void)
   ethernet_register_link_changed_callback(link_changed_callback);
   ethernet_init();
 
+  /*
   if (hwconfig_simulation_p()){
     eth_mac->speed = 4;        // hardcode mac speed to 1000
     link_is_up = true;
   }
+  */
 
   // fire off a receive from the ethernet
   bp_receive_to_buf(CPU_RX_BUF, PORT_ETH, 1, 0, BP_LAST_LINE);
@@ -159,10 +160,15 @@ main(void)
     }
 
     if (status & (BPS_DONE(CPU_TX_BUF) | BPS_ERROR(CPU_TX_BUF))){
+      if (status & BPS_ERROR(CPU_TX_BUF)){
+       putchar('E');
+      }
       bp_clear_buf(CPU_TX_BUF);
       npackets_sent++;
-      if ((npackets_sent & 0xF) == 0)  // print after every 16 packets
-       print_rmon_regs();
+      if ((npackets_sent & 0xF) == 0){ // print after every 16 packets
+       //print_rmon_regs();
+       putchar('.');
+      }
     }
 
     if (link_is_up && send_packet_now && (status & BPS_IDLE(CPU_TX_BUF))){
index 4eaebcc4aa3a0b6cd5de7ee9aaad0be37933f67d..8f2b2df0389ee964192a2e1090d1b8a649ce948f 100644 (file)
@@ -132,9 +132,9 @@ init_packets(void)
   u2_eth_packet_t      pkt __attribute__((aligned (4)));
 
   for (i = 0; i < 6; i++){
-    pkt.ehdr.dst_addr[i] = dst_mac_addr[i];
-    pkt.ehdr.src_addr[i] = 0;                  // filled in by mac
+    pkt.ehdr.dst.addr[i] = dst_mac_addr[i];
   }
+  pkt.ehdr.src = *ethernet_mac_addr();
   pkt.ehdr.ethertype = U2_ETHERTYPE;
 
   // fill ALL buffers for debugging
index e5ab55fac6513e50c387f7399d840ce7aad13e2a..5dbecb0d0112ae900868038ae8668b40084b6e13 100644 (file)
@@ -67,6 +67,7 @@ void
 set_reply_hdr(u2_eth_packet_t *reply_pkt, u2_eth_packet_t const *cmd_pkt)
 {
   reply_pkt->ehdr.dst = cmd_pkt->ehdr.src;
+  reply_pkt->ehdr.src = *ethernet_mac_addr();
   reply_pkt->ehdr.ethertype = U2_ETHERTYPE;
   reply_pkt->thdr.flags = 0;
   reply_pkt->thdr.fifo_status = 0;     // written by protocol engine
index 730433bf4ff5982febb5e679edea19e18788c1b0..7fc7b486f8ef7b5850c1c02e32a7170e52eace75 100644 (file)
@@ -179,6 +179,7 @@ start_rx_streaming_cmd(const u2_mac_addr_t *host, op_start_rx_streaming_t *p)
   u2_eth_packet_t      pkt;
   memset(&pkt, 0, sizeof(pkt));
   pkt.ehdr.dst = *host;
+  pkt.ehdr.src = *ethernet_mac_addr();
   pkt.ehdr.ethertype = U2_ETHERTYPE;
   u2p_set_word0(&pkt.fixed, 0, 0);
   // DSP RX will fill in timestamp
index df7ddf9c43c4177d2308ec067c29e4c5c088c4dc..e7da984c5e2d1218a1c7ed319faa15b212a986af 100644 (file)
@@ -176,6 +176,7 @@ start_rx_streaming_cmd(const u2_mac_addr_t *host, op_start_rx_streaming_t *p)
   u2_eth_packet_t      pkt;
   memset(&pkt, 0, sizeof(pkt));
   pkt.ehdr.dst = *host;
+  pkt.ehdr.src = *ethernet_mac_addr();
   pkt.ehdr.ethertype = U2_ETHERTYPE;
   u2p_set_word0(&pkt.fixed, 0, 0);
   // DSP RX will fill in timestamp
index 92e41d92b8c381b0dd5172cbbfb4b2adf3122ff6..ec772ca753d847e643c12828b13944b60396be27 100644 (file)
@@ -135,7 +135,7 @@ init_packets(void)
   u2_eth_packet_t      pkt __attribute__((aligned (4)));
 
   pkt.ehdr.dst = dst_mac_addr;
-  // src filled in by mac
+  pkt.ehdr.src = *ethernet_mac_addr();
   pkt.ehdr.ethertype = U2_ETHERTYPE;
 
   // fill ALL buffers for debugging
index 1becc205ec52809ad604fa9502c73230936b69af..7816f7a653e5fc28a071a8e128d0ba527748a214 100644 (file)
@@ -168,6 +168,7 @@ start_rx_streaming_cmd(const u2_mac_addr_t *host, op_start_rx_streaming_t *p)
   u2_eth_packet_t      pkt;
   memset(&pkt, 0, sizeof(pkt));
   pkt.ehdr.dst = *host;
+  pkt.ehdr.src = *ethernet_mac_addr();
   pkt.ehdr.ethertype = U2_ETHERTYPE;
   u2p_set_word0(&pkt.fixed, 0, 0);
   // DSP RX will fill in timestamp
index 25ba8fd40aed8cba2b3ea0d0f5f9570f8afaac2d..6350a69566cd06f68eff6465f9dd3b16edee2796 100644 (file)
@@ -195,6 +195,7 @@ start_tx_transfers(void)
   u2_eth_packet_t      pkt;
   memset(&pkt, 0, sizeof(pkt));
   //pkt.ehdr.dst = *host;
+  pkt.ehdr.src = *ethernet_mac_addr();
   pkt.ehdr.ethertype = U2_ETHERTYPE;
   u2p_set_word0(&pkt.fixed,
                U2P_TX_IMMEDIATE | U2P_TX_START_OF_BURST, 0);
index 730ee66c59fee791ebaf4c17fca805d6ff22347e..fc2f8a49eb50a8c52f058f3fd07016ce91f9bf33 100644 (file)
@@ -168,6 +168,7 @@ start_rx_streaming_cmd(const u2_mac_addr_t *host, op_start_rx_streaming_t *p)
   u2_eth_packet_t      pkt;
   memset(&pkt, 0, sizeof(pkt));
   pkt.ehdr.dst = *host;
+  pkt.ehdr.src = *ethernet_mac_addr();
   pkt.ehdr.ethertype = U2_ETHERTYPE;
   u2p_set_word0(&pkt.fixed, 0, 0);
   // DSP RX will fill in timestamp
@@ -257,12 +258,14 @@ main(void)
 {
   u2_init();
 
-  putstr("\nTxRx\n");
+  putstr("\nTxRx-NEWETH\n");
   print_mac_addr(ethernet_mac_addr()->addr);
   newline();
 
   ethernet_register_link_changed_callback(link_changed_callback);
+  putstr("Before ethernet_init()\n");
   ethernet_init();
+  putstr("After ethernet_init()\n");
 
 
 #if 0
index f1cc2bf7370a8515854cf7c816a59ed50ce37eeb..08e44c141c8b40de7c08a8f4dc8211f82ec9cc91 100644 (file)
@@ -1,5 +1,7 @@
+*~
 /*-stamp
 /*.a
+/*.o
 /*.bin
 /*.dump
 /*.log
index 8f774d9162bfe090b6ceaf380b76d35fb2c9268b..96484d577bd36a901dfb8a5a1a08d7e6dfc26c0b 100644 (file)
@@ -62,7 +62,8 @@ dbsm_init(dbsm_t *sm, int buf0,
 
   // How much to adjust the last_line register.
   // It's 1 for everything but the ethernet.
-  sm->last_line_adj = recv->port == PORT_ETH ? 3 : 1;
+  //sm->last_line_adj = recv->port == PORT_ETH ? 3 : 1;
+  sm->last_line_adj = 1;
 
   buffer_state[sm->buf0] = BS_EMPTY;
   buffer_state[sm->buf0 ^ 1] = BS_EMPTY;
index 5fadaf40bd987dcd957a3913a56ec5e968d52c6d..2ef1f73f4c8e9879e68821eb6e37869a49f5c1bc 100644 (file)
 #include "bool.h"
 #include "eth_phy.h"   // for simulation constants
 #include "mdelay.h"
-
+#include "stdio.h"
 
 #define PHY_ADDR 1
 
 void
 eth_mac_set_addr(const u2_mac_addr_t *src)
 {
-  int i;
-
-  // tell mac our source address and enable automatic insertion on Tx.
-  eth_mac->mac_tx_add_prom_wr = 0;     // just in case
-  for (i = 0; i < 6; i++){
-    eth_mac->mac_tx_add_prom_add = i;
-    eth_mac->mac_tx_add_prom_data = src->addr[i];
-    eth_mac->mac_tx_add_prom_wr = 1;
-    mdelay(1);
-    eth_mac->mac_tx_add_prom_wr = 0;
-    mdelay(1);
-  }
-  eth_mac->mac_tx_add_en = 1;  // overwrite pkt src addr field with this stuff
-
-  // set up receive destination address filter
-  eth_mac->mac_rx_add_prom_wr = 0;     // just in case
-  for (i = 0; i < 6; i++){
-    eth_mac->mac_rx_add_prom_add = i;
-    eth_mac->mac_rx_add_prom_data = src->addr[i];
-    eth_mac->mac_rx_add_prom_wr = 1;
-    mdelay(1);
-    eth_mac->mac_rx_add_prom_wr = 0;
-    mdelay(1);
-  }
-  // eth_mac->mac_rx_add_chk_en = 1;  // FIXME enable when everything's working
+  eth_mac->ucast_hi = 
+    (((unsigned int)src->addr[0])<<8) + 
+    ((unsigned int)src->addr[1]);
+  eth_mac->ucast_lo = 
+    (((unsigned int)src->addr[2])<<24) + 
+    (((unsigned int)src->addr[3])<<16) +
+    (((unsigned int)src->addr[4])<<8) +
+    (((unsigned int)src->addr[5]));
+  printf("RDBK %x:%x\n",eth_mac->ucast_hi,eth_mac->ucast_lo);
 }
 
 
@@ -62,14 +46,18 @@ eth_mac_init(const u2_mac_addr_t *src)
   eth_mac->miimoder = 25;      // divider from CPU clock (50MHz/25 = 2MHz)
 
   eth_mac_set_addr(src);
+  eth_mac->settings = MAC_SET_PAUSE_EN | MAC_SET_PASS_BCAST | MAC_SET_PASS_UCAST | MAC_SET_PAUSE_SEND_EN; 
+
+  eth_mac->pause_time = 38;
+  eth_mac->pause_thresh = 1200;
 
   // set rx flow control high and low water marks
   // unsigned int lwmark = (2*2048 + 64)/4; // 2 * 2048-byte frames + 1 * 64-byte pause frame
   // eth_mac->fc_hwmark = lwmark + 2048/4;  // plus a 2048-byte frame
 
-  eth_mac->fc_lwmark = 600;            // there are currently 2047 lines in the fifo
-  eth_mac->fc_hwmark = 1200;
-  eth_mac->fc_padtime = 1700;           // how long before flow control runs out do we 
+  //  eth_mac->fc_lwmark = 600;                // there are currently 2047 lines in the fifo
+  // eth_mac->fc_hwmark = 1200;
+  //eth_mac->fc_padtime = 1700;           // how long before flow control runs out do we 
                                         // request a re-pause.  Units of 8ns (bytes)
 
   //eth_mac->tx_pause_en = 0;          // pay attn to pause frames sent to us
@@ -80,8 +68,8 @@ eth_mac_init(const u2_mac_addr_t *src)
 int
 eth_mac_read_rmon(int addr)
 {
-  int t;
-  
+  int t = 0;
+  /*  
   eth_mac->rmon_rd_addr = addr;
   eth_mac->rmon_rd_apply = 1;
   while(eth_mac->rmon_rd_grant == 0)
@@ -89,6 +77,7 @@ eth_mac_read_rmon(int addr)
 
   t = eth_mac->rmon_rd_dout;
   eth_mac->rmon_rd_apply = 0;
+  */
   return t;
 }
 
@@ -111,7 +100,9 @@ eth_mac_miim_read(int addr)
   while((eth_mac->miistatus & MIIS_BUSY) != 0)
     ;
 
-  return eth_mac->miirx_data;
+  int r = eth_mac->miirx_data;
+  //printf("MIIM-READ ADDR 0x%x DATA 0x%x\n",addr, r);
+  return r;
 }
 
 void
@@ -122,6 +113,7 @@ eth_mac_miim_write(int addr, int value)
   eth_mac->miitx_data = value;
   eth_mac->miicommand = MIIC_WCTRLDATA;
 
+  //printf("MIIM-WRITE ADDR 0x%x VAL 0x%x\n",addr,value);
   while((eth_mac->miistatus & MIIS_BUSY) != 0)
     ;
 }
index 8daab937d4fb760dd2283212e289f5b065c5ab12..d680f8de0bb2a7b715f0171799ab611e91869269 100644 (file)
 #define INCLUDED_ETH_MAC_REGS_H
 
 /*
- * See opencores.org 10_100_1000 Mbps Tri-mode Ethernet MAC Specification
+ * Simple GEMAC
  *
- * In reality, these are 16-bit regs, but are assigned
- * on 32-bit boundaries.  Because we're little endian,
- * declaring them "int" works.
  */
 typedef struct {
-  volatile int tx_hwmark;
-  volatile int tx_lwmark;
-
-  //! if set, send pause frames automatically
-  volatile int pause_frame_send_en;
-
-  //! quanta value for pause frame in units of 512 bit times.
-  volatile int pause_quanta_set;
-
-  volatile int ifg_set;
-  volatile int full_duplex;
-  volatile int max_retry;
-  volatile int mac_tx_add_en;
-  volatile int mac_tx_add_prom_data;
-  volatile int mac_tx_add_prom_add;
-  volatile int mac_tx_add_prom_wr;
-
-  //! if set, other end can pause us (i.e., we pay attention to pause frames)
-  volatile int tx_pause_en;
-
-  // Flow Control high and low water marks
-  //! when space available (in 32-bit lines) > hwmark, send un-pause frame
-  volatile int fc_hwmark;      
-
-  //! when space avail (in 32-bit lines) < lwmark, send pause frame
-  volatile int fc_lwmark;      
-
-  volatile int mac_rx_add_chk_en;
-  volatile int mac_rx_add_prom_data;
-  volatile int mac_rx_add_prom_add;
-  volatile int mac_rx_add_prom_wr;
-  volatile int broadcast_filter_en;
-  volatile int broadcast_bucket_depth;
-  volatile int broadcast_bucket_interval;
-  volatile int rx_append_crc;
-  volatile int rx_hwmark;
-  volatile int rx_lwmark;
-  volatile int crc_chk_en;
-  volatile int rx_ifg_set;
-  volatile int rx_max_length;
-  volatile int rx_min_length;
-  volatile int rmon_rd_addr;           // performance counter access
-  volatile int rmon_rd_apply;          
-  volatile int rmon_rd_grant;          // READONLY
-  volatile int rmon_rd_dout;           // READONLY
-  volatile int dummy;  // READONLY
-  volatile int line_loop_en;
-  volatile int speed;
-  volatile int miimoder;
-  volatile int miicommand;
-  volatile int miiaddress;
-  volatile int miitx_data;
-  volatile int miirx_data;
-  volatile int miistatus;
-  volatile int fc_padtime;
+  volatile int settings;
+  volatile int ucast_hi;
+  volatile int ucast_lo;
+  volatile int mcast_hi;
+  volatile int mcast_lo;
+  volatile int miimoder;
+  volatile int miiaddress;
+  volatile int miitx_data;
+  volatile int miicommand;
+  volatile int miistatus;
+  volatile int miirx_data;
+  volatile int pause_time;
+  volatile int pause_thresh;
 } eth_mac_regs_t;
 
+// settings register
+#define MAC_SET_PAUSE_EN  (1 << 0)   // Makes us respect received pause frames (normally on)
+#define MAC_SET_PASS_ALL  (1 << 1)   // Enables promiscuous mode, currently broken
+#define MAC_SET_PASS_PAUSE (1 << 2)  // Sends pause frames through (normally off)
+#define MAC_SET_PASS_BCAST (1 << 3)  // Sends broadcast frames through (normally on)
+#define MAC_SET_PASS_MCAST (1 << 4)  // Sends multicast frames that match mcast addr (normally off)
+#define MAC_SET_PASS_UCAST (1 << 5)  // Sends unicast (normal) frames through if they hit in address filter (normally on)
+#define MAC_SET_PAUSE_SEND_EN (1 << 6) // Enables sending pause frames
+
 // miicommand register
 #define MIIC_SCANSSTAT (1 << 0)        // Scan status
 #define MIIC_RSTAT      (1 << 1)       // Read status
index d19287044b5bdea518e97d974988594b40e09422..f554e0179cabbf9e47ea52b667e27a6223c51ebb 100644 (file)
@@ -43,6 +43,8 @@ ethernet_register_link_changed_callback(ethernet_link_changed_callback_t new_cal
 static void
 ed_set_mac_speed(int speed)
 {
+  printf("Speed set to %d\n",speed);
+  /*
   switch(speed){
   case 10:
     eth_mac->speed = 1;
@@ -56,6 +58,7 @@ ed_set_mac_speed(int speed)
   default:
     break;
   }
+  */
 }
 
 static void
@@ -196,17 +199,17 @@ ethernet_init(void)
   ed_state.link_speed = S_UNKNOWN;
 
   // initialize MAC registers
-  eth_mac->tx_hwmark = 0x1e;
-  eth_mac->tx_lwmark = 0x19;
+  //  eth_mac->tx_hwmark = 0x1e;
+  //eth_mac->tx_lwmark = 0x19;
 
-  eth_mac->crc_chk_en = 1;
-  eth_mac->rx_max_length = 2048;
+  //eth_mac->crc_chk_en = 1;
+  //eth_mac->rx_max_length = 2048;
 
   // configure PAUSE frame stuff
-  eth_mac->tx_pause_en = 1;            // pay attn to pause frames sent to us
+  //eth_mac->tx_pause_en = 1;          // pay attn to pause frames sent to us
 
-  eth_mac->pause_quanta_set = 38;      // a bit more than 1 max frame 16kb/512 + fudge
-  eth_mac->pause_frame_send_en = 1;    // enable sending pause frames
+  //eth_mac->pause_quanta_set = 38;    // a bit more than 1 max frame 16kb/512 + fudge
+  //eth_mac->pause_frame_send_en = 1;  // enable sending pause frames
 
 
   // setup PHY to interrupt on changes
@@ -256,6 +259,10 @@ ethernet_init(void)
   t &= ~(NWAY_AR_10T_HD_CAPS | NWAY_AR_10T_FD_CAPS | NWAY_AR_100TX_HD_CAPS | NWAY_AR_100TX_FD_CAPS);
 
   eth_mac_miim_write(PHY_AUTONEG_ADV, t);
+  int r = eth_mac_miim_read(PHY_AUTONEG_ADV);                  // DEBUG, read back
+  if (t != r){
+    printf("PHY_AUTONEG_ADV: wrote 0x%x, got 0x%x\n", t, r);
+  }
 
   // Restart autonegotation.  
   // We want to ensure that we're advertising our PAUSE capabilities.
@@ -322,6 +329,7 @@ ethernet_check_errors(void)
   // these registers are reset when read
   
   int  r = 0;
+  /*
   if (eth_mac_read_rmon(0x05) != 0)
     r |= RME_RX_CRC;
   if (eth_mac_read_rmon(0x06) != 0)
@@ -335,6 +343,6 @@ ethernet_check_errors(void)
     r |= RME_TX_FIFO_UNDER;
   if (eth_mac_read_rmon(0x27) != 0)
     r |= RME_TX_FIFO_OVER;
-
+  */
   return r;
 }
diff --git a/usrp2/fpga/.gitignore b/usrp2/fpga/.gitignore
new file mode 100644 (file)
index 0000000..a12cca7
--- /dev/null
@@ -0,0 +1,2 @@
+xlnx_auto_*
+*.log
diff --git a/usrp2/fpga/control_lib/buffer_int.v b/usrp2/fpga/control_lib/buffer_int.v
deleted file mode 100644 (file)
index c33f277..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-
-// FIFO Interface to the 2K buffer RAMs
-// Read port is read-acknowledge
-// FIXME do we want to be able to interleave reads and writes?
-
-module buffer_int
-  #(parameter BUFF_NUM = 0)
-    (// Control Interface
-     input clk,
-     input rst,
-     input [31:0] ctrl_word,
-     input go,
-     output done,
-     output error,
-     output idle,
-     
-     // Buffer Interface
-     output en_o,
-     output we_o,
-     output reg [8:0] addr_o,
-     output [31:0] dat_to_buf,
-     input [31:0] dat_from_buf,
-     
-     // Write FIFO Interface
-     input [31:0] wr_dat_i,
-     input wr_write_i,
-     input wr_done_i,
-     input wr_error_i,
-     output reg wr_ready_o,
-     output reg wr_full_o,
-     
-     // Read FIFO Interface
-     output [31:0] rd_dat_o,
-     input rd_read_i,
-     input rd_done_i,
-     input rd_error_i,
-     output reg rd_sop_o,
-     output reg rd_eop_o
-     );
-   
-   reg [31:0] ctrl_reg;
-   reg               go_reg;
-   
-   always @(posedge clk)
-     go_reg <= go;
-   
-   always @(posedge clk)
-     if(rst)
-       ctrl_reg <= 0;
-     else
-       if(go & (ctrl_word[31:28] == BUFF_NUM))
-        ctrl_reg <= ctrl_word;
-   
-   wire [8:0] firstline = ctrl_reg[8:0];
-   wire [8:0] lastline = ctrl_reg[17:9];
-   wire [3:0] step = ctrl_reg[21:18];
-   wire       read = ctrl_reg[22];
-   wire       write = ctrl_reg[23];
-   wire       clear = ctrl_reg[24];
-   //wire [2:0] port = ctrl_reg[27:25];  // Ignored in this block
-   //wire [3:0] buff_num = ctrl_reg[31:28];  // Ignored here ?
-   
-   assign     dat_to_buf = wr_dat_i;
-   assign     rd_dat_o = dat_from_buf;
-   
-   localparam IDLE = 3'd0;
-   localparam PRE_READ = 3'd1;
-   localparam READING = 3'd2;
-   localparam WRITING = 3'd3;
-   localparam ERROR = 3'd4;
-   localparam DONE = 3'd5;
-   
-   reg [2:0]  state;
-   
-   always @(posedge clk)
-     if(rst)
-       begin
-         state <= IDLE;
-         rd_sop_o <= 0;
-         rd_eop_o <= 0;
-         wr_ready_o <= 0;
-         wr_full_o <= 0;
-       end
-     else
-       if(clear)
-        begin
-           state <= IDLE;
-           rd_sop_o <= 0;
-           rd_eop_o <= 0;
-           wr_ready_o <= 0;
-           wr_full_o <= 0;
-        end
-       else 
-        case(state)
-          IDLE :
-            if(go_reg & read)
-              begin
-                 addr_o <= firstline;
-                 state <= PRE_READ;
-              end
-            else if(go_reg & write)
-              begin
-                 addr_o <= firstline;
-                 state <= WRITING;
-                 wr_ready_o <= 1;
-              end
-          
-          PRE_READ :
-            begin
-               state <= READING;
-               addr_o <= addr_o + 1;
-               rd_sop_o <= 1;
-            end
-          
-          READING :
-            if(rd_error_i)
-              state <= ERROR;
-            else if(rd_done_i)
-              state <= DONE;
-            else if(rd_read_i)
-              begin
-                 rd_sop_o <= 0;
-                 addr_o <= addr_o + 1;
-                 if(addr_o == lastline)
-                   rd_eop_o <= 1;
-                 else
-                   rd_eop_o <= 0;
-                 if(rd_eop_o)
-                   state <= DONE;
-              end
-          
-          WRITING :
-            begin
-               if(wr_write_i)
-                 addr_o <= addr_o + 1;  // This was the timing problem, so now it doesn't depend on wr_error_i
-               if(wr_error_i)
-                 begin
-                    state <= ERROR;
-                    wr_ready_o <= 0;
-                 end
-               else
-                 begin
-                    if(wr_write_i)
-                      begin
-                         wr_ready_o <= 0;
-                         if(addr_o == (lastline-1))
-                           wr_full_o <= 1;
-                         if(addr_o == lastline)
-                           state <= DONE;
-                      end
-                    if(wr_done_i)
-                      begin
-                         state <= DONE;
-                         wr_ready_o <= 0;
-                      end
-                 end // else: !if(wr_error_i)
-            end // case: WRITING
-
-          DONE :
-            begin
-               rd_eop_o <= 0;
-               rd_sop_o <= 0;
-               wr_ready_o <= 0;
-               wr_full_o <= 0;
-            end
-          
-        endcase // case(state)
-   
-   // FIXME ignores step for now
-
-   assign     we_o = (state == WRITING) && wr_write_i;  // FIXME potential critical path
-                   // IF this is a timing problem, we could always write when in this state
-   assign     en_o = ~((state==READING)& ~rd_read_i);   // FIXME potential critical path
-   
-   assign     done = (state == DONE);
-   assign     error = (state == ERROR);
-   assign     idle = (state == IDLE);
-endmodule // buffer_int
-
-
-
-// These are 2 other ways for doing the WRITING state, both work.  First one is faster, but confusing
-/*
-            begin
-               // Gen 4 values -- state, wr_ready_o, addr_o, wr_full_o
-               if(~wr_error_i & wr_write_i & (addr_o == (lastline-1)))
-                 wr_full_o <= 1;
-               if(wr_error_i | wr_write_i | wr_done_i)
-                 wr_ready_o <= 0;
-               if(wr_error_i)
-                 state <= ERROR;
-               else if(wr_done_i | (wr_write_i & (addr_o == lastline)))
-                 state <= DONE;
-               // This one was the timing problem...  now we increment addr_o even if there is an error
-               if(wr_write_i)
-                 addr_o <= addr_o + 1;
-            end // case: WRITING
-*/        
-               
-/*      begin
-               if(wr_error_i)
-                 begin
-                    state <= ERROR;
-                    wr_ready_o <= 0;
-                 end
-               else
-                 begin
-                    if(wr_write_i)
-                      begin
-                         wr_ready_o <= 0;
-                         addr_o <= addr_o + 1;
-                         if(addr_o == (lastline-1))
-                           wr_full_o <= 1;
-                         if(addr_o == lastline)
-                           state <= DONE;
-                      end
-                    if(wr_done_i)
-                      begin
-                         state <= DONE;
-                         wr_ready_o <= 0;
-                      end
-                 end // else: !if(wr_error_i)
-            end // case: WRITING
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Unused old code
-   //assign     rd_empty_o = (state != READING); // && (state != PRE_READ);
-   //assign     rd_empty_o = rd_empty_reg;         // timing fix?
-   //assign     rd_ready_o = (state == READING);
-   //assign     rd_ready_o = ~rd_empty_reg;        // timing fix?
-   
-   //wire       rd_en = (state == PRE_READ) || ((state == READING) && rd_read_i);
-   //wire       wr_en = (state == WRITING) && wr_write_i;  // IF this is a timing problem, we could always enable when in this state
-   //assign     en_o = rd_en | wr_en;   
-   
-   // assign     wr_full_o = (state != WRITING);
-   // assign     wr_ready_o = (state == WRITING);
-   
diff --git a/usrp2/fpga/control_lib/buffer_int_tb.v b/usrp2/fpga/control_lib/buffer_int_tb.v
deleted file mode 100644 (file)
index 4fb5c67..0000000
+++ /dev/null
@@ -1,447 +0,0 @@
-
-module buffer_int_tb ();
-
-   reg clk = 0;
-   reg rst = 1;
-
-   initial #100 rst = 0;
-   always #5 clk = ~clk;
-
-   wire en, we;
-   wire [8:0] addr;
-   wire [31:0] fifo2buf, buf2fifo;
-   
-   wire [31:0] rd_dat_o;
-   wire        rd_sop_o, rd_eop_o;
-   reg                rd_done_i = 0, rd_error_i = 0, rd_read_i = 0;
-   
-   reg [31:0]  wr_dat_i = 0;
-   reg                wr_write_i=0, wr_done_i = 0, wr_error_i = 0;
-   wire        wr_ready_o, wr_full_o;
-   
-   reg                clear = 0, write = 0, read = 0;
-   reg [8:0]   firstline = 0, lastline = 0;
-   wire [3:0]  step = 1;
-   wire [31:0] ctrl_word = {4'b0,3'b0,clear,write,read,step,lastline,firstline};
-   reg                go = 0;
-   wire        done, error;
-   
-   buffer_int buffer_int
-     (.clk(clk),.rst(rst),
-      .ctrl_word(ctrl_word),.go(go),
-      .done(done),.error(error),
-      
-      // Buffer Interface
-      .en_o(en),.we_o(we),.addr_o(addr),
-      .dat_to_buf(fifo2buf),.dat_from_buf(buf2fifo),
-
-      // Write FIFO Interface
-      .wr_dat_i(wr_dat_i), .wr_write_i(wr_write_i), .wr_done_i(wr_done_i), .wr_error_i(wr_error_i), 
-      .wr_ready_o(wr_ready_o), .wr_full_o(wr_full_o),
-   
-      // Read FIFO Interface
-      .rd_dat_o(rd_dat_o), .rd_read_i(rd_read_i), .rd_done_i(rd_done_i), .rd_error_i(rd_error_i),
-      .rd_sop_o(rd_sop_o), .rd_eop_o(rd_eop_o)
-      );
-   
-   reg                ram_en = 0, ram_we = 0;
-   reg [8:0]   ram_addr = 0;
-   reg [31:0]  ram_data = 0;
-   
-   ram_2port #(.DWIDTH(32),.AWIDTH(9)) ram_2port
-     (.clka(clk), .ena(ram_en), .wea(ram_we), .addra(ram_addr), .dia(ram_data), .doa(),
-      .clkb(clk), .enb(en), .web(we), .addrb(addr), .dib(fifo2buf), .dob(buf2fifo) );
-   
-   initial
-     begin
-       @(negedge rst);
-       @(posedge clk);
-       FillRAM;
-
-       ResetBuffer;
-       SetBufferRead(5,10);
-       $display("Testing full read, no wait states.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(6,0);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferRead(5,10);
-       $display("Testing full read, 2 wait states.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(6,2);
-       repeat (10)
-         @(posedge clk);
-
-       ResetBuffer;
-       SetBufferRead(5,10);
-       $display("Testing full read, done ON the last.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(5,2);
-       rd_done_i <= 1;
-       ReadALine;
-       rd_done_i <= 0;
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferRead(5,10);
-       $display("Testing partial read, 0 wait states, then nothing after last.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(3,0);
-       repeat (10)
-         @(posedge clk);
-
-       ResetBuffer;
-       SetBufferRead(5,10);
-       $display("Testing partial read, 0 wait states, then done after last.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(3,0);
-       rd_done_i <= 1;
-       @(posedge clk);
-       rd_done_i <= 0;
-       repeat (10)
-         @(posedge clk);
-
-       ResetBuffer;
-       SetBufferRead(5,10);
-       $display("Testing partial read, 0 wait states, then done at same time as last.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(2,0);
-       rd_done_i <= 1;
-       ReadALine;
-       rd_done_i <= 0;
-       repeat (10)
-         @(posedge clk);
-
-       ResetBuffer;
-       SetBufferRead(5,10);
-       $display("Testing partial read, 3 wait states, then error at same time as last.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(2,3);
-       rd_error_i <= 1;
-       ReadALine;
-       rd_error_i <= 0;
-       repeat (10)
-         @(posedge clk);
-
-       ResetBuffer;
-       SetBufferRead(5,10);
-       $display("Testing Reading too much, 3 wait states.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(9,3);
-       repeat (10)
-         @(posedge clk);
-
-       ResetBuffer;
-       SetBufferRead(500,511);
-       $display("Testing full read, to the end of the buffer.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(12,0);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferRead(0,511);
-       $display("Testing full read, start to end of the buffer.");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(512,0);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferRead(505,3);
-       $display("Testing full read, wraparound");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(11,0);
-       repeat (10)
-         @(posedge clk);
-
-       ResetBuffer;
-       SetBufferWrite(10,15);
-       $display("Testing Full Write, no wait states");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(6,0,72);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferWrite(18,23);
-       $display("Testing Full Write, 1 wait states");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(6,0,101);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferWrite(27,40);
-       $display("Testing Partial Write, 0 wait states");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(6,0,201);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferWrite(35,200);
-       $display("Testing Partial Write, 0 wait states, then done");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(6,0,301);
-       wr_done_i <= 1;
-       @(posedge clk);
-       wr_done_i <= 0;
-       repeat (10)
-         @(posedge clk);
-
-       ResetBuffer;
-       SetBufferWrite(45,200);
-       $display("Testing Partial Write, 0 wait states, then done and write simultaneously");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(6,0,301);
-       wr_done_i <= 1;
-       WriteALine(400);
-       wr_done_i <= 0;
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferWrite(55,200);
-       $display("Testing Partial Write, 0 wait states, then error");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(6,0,501);
-       wr_error_i <= 1;
-       @(posedge clk);
-       wr_error_i <= 0;
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferRead(0,82);
-       $display("Testing read after all the writes");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(83,0);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferWrite(508,4);
-       $display("Testing wraparound write");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(9,0,601);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferRead(506,10);
-       $display("Reading wraparound write");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(17,0);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferWrite(0,511);
-       $display("Testing Whole Buffer write");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(512,0,1000);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferRead(0,511);
-       $display("Reading Whole Buffer write");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(512,0);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferWrite(5,10);
-       $display("Testing Write Too Many");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(12,0,2000);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferRead(0,15);
-       $display("Reading back Write Too Many");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(16,0);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferWrite(15,20);
-       $display("Testing Write One Less Than Full");
-       while(!wr_ready_o)
-         @(posedge clk);
-       WriteLines(5,0,2000);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       SetBufferRead(13,22);
-       $display("Reading back Write One Less Than Full");
-       while(!rd_sop_o)
-         @(posedge clk);
-       ReadLines(10,0);
-       repeat (10)
-         @(posedge clk);
-       
-       ResetBuffer;
-       repeat(100)
-         @(posedge clk);
-       $finish;
-     end
-   
-   always @(posedge clk)
-     if(rd_read_i == 1'd1)
-       $display("READ Buffer %d, rd_sop_o %d, rd_eop_o %d", rd_dat_o, rd_sop_o, rd_eop_o);
-
-   always @(posedge clk)
-     if(wr_write_i == 1'd1)
-       $display("WRITE Buffer %d,  wr_ready_o %d, wr_full_o %d", wr_dat_i, wr_ready_o, wr_full_o);
-          
-   initial begin
-      $dumpfile("buffer_int_tb.vcd");
-      $dumpvars(0,buffer_int_tb);
-   end
-
-   task FillRAM;
-      begin
-        ram_addr <= 0;
-        ram_data <= 0;
-        @(posedge clk);
-        ram_en <= 1;
-        ram_we <= 1;
-        @(posedge clk);
-        repeat (511)
-          begin
-             ram_addr <= ram_addr + 1;
-             ram_data <= ram_data + 1;
-             ram_en <= 1;
-             ram_we <= 1;
-             @(posedge clk);
-          end
-        ram_en <= 0;
-        ram_we <= 0;
-        @(posedge clk);
-        $display("Filled the RAM");
-      end
-   endtask // FillRAM
-
-   task ResetBuffer;
-      begin
-        clear <= 1; read <= 0; write <= 0;
-        go <= 1;
-        @(posedge clk);
-        go <= 0;
-        @(posedge clk);
-        $display("Buffer Reset");
-      end
-   endtask // ClearBuffer
-   
-   task SetBufferWrite;
-      input [8:0] start;
-      input [8:0] stop;
-      begin
-        clear <= 0; read <= 0; write <= 1;
-        firstline <= start;
-        lastline <= stop;
-        go <= 1;
-        @(posedge clk);
-        go <= 0;
-        @(posedge clk);
-        $display("Buffer Set for Write");
-      end
-   endtask // SetBufferWrite
-   
-   task SetBufferRead;
-      input [8:0] start;
-      input [8:0] stop;
-      begin
-        clear <= 0; read <= 1; write <= 0;
-        firstline <= start;
-        lastline <= stop;
-        go <= 1;
-        @(posedge clk);
-        go <= 0;
-        @(posedge clk);
-        $display("Buffer Set for Read");
-      end
-   endtask // SetBufferRead
-
-   task ReadALine;
-      begin
-        #1 rd_read_i <= 1;
-        @(posedge clk);
-        rd_read_i <= 0;
-      end
-   endtask // ReadALine
-
-   task ReadLines;
-      input [9:0] lines;
-      input [7:0] wait_states;
-      begin
-        $display("Read Lines: Number %d, Wait States %d",lines,wait_states);
-        repeat (lines)
-          begin
-             ReadALine;
-             repeat (wait_states)
-               @(posedge clk);
-          end
-      end
-   endtask // ReadLines
-   
-   task WriteALine;
-      input [31:0] value;
-      begin
-        #1 wr_write_i <= 1;
-        wr_dat_i <= value;
-        @(posedge clk);
-        wr_write_i <= 0;
-      end
-   endtask // WriteALine
-   
-   task WriteLines;
-      input [9:0] lines;
-      input [7:0] wait_states;
-      input [31:0] value;
-      begin
-        $display("Write Lines: Number %d, Wait States %d",lines,wait_states);
-        repeat(lines)
-          begin
-             value <= value + 1;
-             WriteALine(value);
-             repeat(wait_states)
-               @(posedge clk);
-          end
-      end
-   endtask // WriteLines
-   
-endmodule // buffer_int_tb
diff --git a/usrp2/fpga/control_lib/buffer_pool.v b/usrp2/fpga/control_lib/buffer_pool.v
deleted file mode 100644 (file)
index 9692962..0000000
+++ /dev/null
@@ -1,323 +0,0 @@
-
-// Buffer pool.  Contains 8 buffers, each 2K (512 by 32).  Each buffer
-// is a dual-ported RAM.  Port A on each of them is indirectly connected 
-// to the wishbone bus by a bridge.  Port B may be connected any one of the
-// 8 (4 rd, 4 wr) FIFO-like streaming interaces, or disconnected.  The wishbone bus
-// provides access to all 8 buffers, and also controls the connections
-// between the ports and the buffers, allocating them as needed.
-
-// wb_adr is 16 bits -- 
-//  bits 13:11 select which buffer
-//  bits 10:2 select line in buffer
-//  bits 1:0 are unused (32-bit access only)
-
-module buffer_pool
-  (input wb_clk_i,
-   input wb_rst_i,
-   input wb_we_i,
-   input wb_stb_i,
-   input [15:0] wb_adr_i,
-   input [31:0] wb_dat_i,   
-   output [31:0] wb_dat_o,
-   output reg wb_ack_o,
-   output wb_err_o,
-   output wb_rty_o,
-   
-   input stream_clk,
-   input stream_rst,
-   
-   input set_stb, input [7:0] set_addr, input [31:0] set_data,
-   output [31:0] status,
-   output sys_int_o,
-
-   output [31:0] s0, output [31:0] s1, output [31:0] s2, output [31:0] s3,
-   output [31:0] s4, output [31:0] s5, output [31:0] s6, output [31:0] s7,
-   
-   // Write Interfaces
-   input [31:0] wr0_dat_i, input wr0_write_i, input wr0_done_i, input wr0_error_i, output wr0_ready_o, output wr0_full_o,
-   input [31:0] wr1_dat_i, input wr1_write_i, input wr1_done_i, input wr1_error_i, output wr1_ready_o, output wr1_full_o,
-   input [31:0] wr2_dat_i, input wr2_write_i, input wr2_done_i, input wr2_error_i, output wr2_ready_o, output wr2_full_o,
-   input [31:0] wr3_dat_i, input wr3_write_i, input wr3_done_i, input wr3_error_i, output wr3_ready_o, output wr3_full_o,
-   
-   // Read Interfaces
-   output [31:0] rd0_dat_o, input rd0_read_i, input rd0_done_i, input rd0_error_i, output rd0_sop_o, output rd0_eop_o,
-   output [31:0] rd1_dat_o, input rd1_read_i, input rd1_done_i, input rd1_error_i, output rd1_sop_o, output rd1_eop_o,
-   output [31:0] rd2_dat_o, input rd2_read_i, input rd2_done_i, input rd2_error_i, output rd2_sop_o, output rd2_eop_o,
-   output [31:0] rd3_dat_o, input rd3_read_i, input rd3_done_i, input rd3_error_i, output rd3_sop_o, output rd3_eop_o
-   );
-
-   wire [7:0]   sel_a;
-   
-   wire [2:0]   which_buf = wb_adr_i[13:11];   // address 15:14 selects the buffer pool
-   wire [8:0]   buf_addra = wb_adr_i[10:2];     // ignore address 1:0, 32-bit access only
-   
-   decoder_3_8 dec(.sel(which_buf),.res(sel_a));
-   
-   genvar       i;
-   
-   wire         go;
-
-   reg [2:0]    port[0:7];      
-   reg [3:0]    read_src[0:3];
-   reg [3:0]    write_src[0:3];
-   
-   wire [7:0]   done;
-   wire [7:0]   error;
-   wire [7:0]   idle;
-   
-   wire [31:0]          buf_doa[0:7];
-   
-   wire [7:0]   buf_enb;
-   wire [7:0]   buf_web;
-   wire [8:0]   buf_addrb[0:7];
-   wire [31:0]          buf_dib[0:7];
-   wire [31:0]          buf_dob[0:7];
-   
-   wire [31:0]          wr_dat_i[0:7];
-   wire [7:0]   wr_write_i;
-   wire [7:0]   wr_done_i;
-   wire [7:0]   wr_error_i;
-   wire [7:0]   wr_ready_o;
-   wire [7:0]   wr_full_o;
-   
-   wire [31:0]          rd_dat_o[0:7];
-   wire [7:0]   rd_read_i;
-   wire [7:0]   rd_done_i;
-   wire [7:0]   rd_error_i;
-   wire [7:0]   rd_sop_o;
-   wire [7:0]   rd_eop_o;
-   
-   assign       status = {8'd0,idle[7:0],error[7:0],done[7:0]};
-
-   assign       s0 = {23'd0,buf_addrb[0]};
-   assign       s1 = {23'd0,buf_addrb[1]};
-   assign       s2 = {23'd0,buf_addrb[2]};
-   assign       s3 = {23'd0,buf_addrb[3]};
-   assign       s4 = {23'd0,buf_addrb[4]};
-   assign       s5 = {23'd0,buf_addrb[5]};
-   assign       s6 = {23'd0,buf_addrb[6]};
-   assign       s7 = {23'd0,buf_addrb[7]};
-   
-   wire [31:0]          fifo_ctrl;
-   setting_reg #(.my_addr(64)) 
-     sreg(.clk(stream_clk),.rst(stream_rst),.strobe(set_stb),.addr(set_addr),.in(set_data),
-         .out(fifo_ctrl),.changed(go));
-
-   integer      k;
-   always @(posedge stream_clk)
-     if(stream_rst)
-       for(k=0;k<8;k=k+1)
-        port[k] <= 4;   // disabled
-     else
-       for(k=0;k<8;k=k+1)
-        if(go & (fifo_ctrl[31:28]==k))
-          port[k] <= fifo_ctrl[27:25];
-
-   always @(posedge stream_clk)
-     if(stream_rst)
-       for(k=0;k<4;k=k+1)
-        read_src[k] <= 8;  // disabled
-     else
-       for(k=0;k<4;k=k+1)
-        if(go & fifo_ctrl[22] & (fifo_ctrl[27:25]==k))
-          read_src[k] <= fifo_ctrl[31:28];
-   
-   always @(posedge stream_clk)
-     if(stream_rst)
-       for(k=0;k<4;k=k+1)
-        write_src[k] <= 8;  // disabled
-     else
-       for(k=0;k<4;k=k+1)
-        if(go & fifo_ctrl[23] & (fifo_ctrl[27:25]==k))
-          write_src[k] <= fifo_ctrl[31:28];
-   
-   generate
-      for(i=0;i<8;i=i+1)
-       begin : gen_buffer
-          RAMB16_S36_S36 dpram
-            (.DOA(buf_doa[i]),.ADDRA(buf_addra),.CLKA(wb_clk_i),.DIA(wb_dat_i),.DIPA(4'h0),
-             .ENA(wb_stb_i & sel_a[i]),.SSRA(0),.WEA(wb_we_i),
-             .DOB(buf_dob[i]),.ADDRB(buf_addrb[i]),.CLKB(stream_clk),.DIB(buf_dib[i]),.DIPB(4'h0),
-             .ENB(buf_enb[i]),.SSRB(0),.WEB(buf_web[i]) );
-          
-          /* ram_2port #(.DWIDTH(32),.AWIDTH(9)) buffer
-            (.clka(wb_clk_i),.ena(wb_stb_i & sel_a[i]),.wea(wb_we_i),
-             .addra(buf_addra),.dia(wb_dat_i),.doa(buf_doa[i]),
-             .clkb(stream_clk),.enb(buf_enb[i]),.web(buf_web[i]),
-             .addrb(buf_addrb[i]),.dib(buf_dib[i]),.dob(buf_dob[i])); */
-
-          buffer_int #(.BUFF_NUM(i)) fifo_int
-            (.clk(stream_clk),.rst(stream_rst),
-             .ctrl_word(fifo_ctrl),.go(go & (fifo_ctrl[31:28]==i)),
-             .done(done[i]),.error(error[i]),.idle(idle[i]),
-             .en_o(buf_enb[i]),
-             .we_o(buf_web[i]),
-             .addr_o(buf_addrb[i]),
-             .dat_to_buf(buf_dib[i]),
-             .dat_from_buf(buf_dob[i]),
-             .wr_dat_i(wr_dat_i[i]),
-             .wr_write_i(wr_write_i[i]),
-             .wr_done_i(wr_done_i[i]),
-             .wr_error_i(wr_error_i[i]),
-             .wr_ready_o(wr_ready_o[i]),
-             .wr_full_o(wr_full_o[i]),
-             .rd_dat_o(rd_dat_o[i]),
-             .rd_read_i(rd_read_i[i]),
-             .rd_done_i(rd_done_i[i]),
-             .rd_error_i(rd_error_i[i]),
-             .rd_sop_o(rd_sop_o[i]),
-             .rd_eop_o(rd_eop_o[i]) 
-             );
-
-          // FIXME -- if it is a problem, maybe we don't need enables on these muxes
-          mux4 #(.WIDTH(32)) 
-            mux4_dat_i (.en(~port[i][2]),.sel(port[i][1:0]),.i0(wr0_dat_i),.i1(wr1_dat_i),
-                        .i2(wr2_dat_i),.i3(wr3_dat_i),.o(wr_dat_i[i]));
-          mux4 #(.WIDTH(1)) 
-            mux4_write_i (.en(~port[i][2]),.sel(port[i][1:0]),.i0(wr0_write_i),.i1(wr1_write_i),
-                          .i2(wr2_write_i),.i3(wr3_write_i),.o(wr_write_i[i]));
-          mux4 #(.WIDTH(1)) 
-            mux4_wrdone_i (.en(~port[i][2]),.sel(port[i][1:0]),.i0(wr0_done_i),.i1(wr1_done_i),
-                           .i2(wr2_done_i),.i3(wr3_done_i),.o(wr_done_i[i]));
-          mux4 #(.WIDTH(1)) 
-            mux4_wrerror_i (.en(~port[i][2]),.sel(port[i][1:0]),.i0(wr0_error_i),.i1(wr1_error_i),
-                            .i2(wr2_error_i),.i3(wr3_error_i),.o(wr_error_i[i]));
-          mux4 #(.WIDTH(1)) 
-            mux4_read_i (.en(~port[i][2]),.sel(port[i][1:0]),.i0(rd0_read_i),.i1(rd1_read_i),
-                         .i2(rd2_read_i),.i3(rd3_read_i),.o(rd_read_i[i]));
-          mux4 #(.WIDTH(1)) 
-            mux4_rddone_i (.en(~port[i][2]),.sel(port[i][1:0]),.i0(rd0_done_i),.i1(rd1_done_i),
-                           .i2(rd2_done_i),.i3(rd3_done_i),.o(rd_done_i[i]));
-          mux4 #(.WIDTH(1)) 
-            mux4_rderror_i (.en(~port[i][2]),.sel(port[i][1:0]),.i0(rd0_error_i),.i1(rd1_error_i),
-                            .i2(rd2_error_i),.i3(rd3_error_i),.o(rd_error_i[i]));
-       end // block: gen_buffer
-   endgenerate
-
-   //----------------------------------------------------------------------
-   // Wishbone Outputs
-
-   // Use the following lines if ram output and mux can be made fast enough
-
-   assign wb_err_o = 1'b0;  // Unused for now
-   assign wb_rty_o = 1'b0;  // Unused for now
-   
-   always @(posedge wb_clk_i)
-     wb_ack_o <= wb_stb_i & ~wb_ack_o;
-   assign wb_dat_o = buf_doa[which_buf];
-
-   // Use this if we can't make the RAM+MUX fast enough
-   // reg [31:0] wb_dat_o_reg;
-   // reg            stb_d1;
-
-   // always @(posedge wb_clk_i)
-   //  begin
-   //   wb_dat_o_reg <= buf_doa[which_buf];
-   //   stb_d1 <= wb_stb_i;
-   //   wb_ack_o <= (stb_d1 & ~wb_ack_o) | (wb_we_i & wb_stb_i);
-   //  end
-   //assign     wb_dat_o = wb_dat_o_reg;
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_wr_ready0(.en(~write_src[0][3]),.sel(write_src[0][2:0]), .i0(wr_ready_o[0]), .i1(wr_ready_o[1]),
-                   .i2(wr_ready_o[2]), .i3(wr_ready_o[3]), .i4(wr_ready_o[4]),
-                   .i5(wr_ready_o[5]), .i6(wr_ready_o[6]), .i7(wr_ready_o[7]),.o(wr0_ready_o));
-
-   mux8 #(.WIDTH(1)) 
-     mux8_wr_full0(.en(~write_src[0][3]),.sel(write_src[0][2:0]), .i0(wr_full_o[0]), .i1(wr_full_o[1]),
-                  .i2(wr_full_o[2]), .i3(wr_full_o[3]), .i4(wr_full_o[4]),
-                  .i5(wr_full_o[5]), .i6(wr_full_o[6]), .i7(wr_full_o[7]),.o(wr0_full_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_wr_ready1(.en(~write_src[1][3]),.sel(write_src[1][2:0]), .i0(wr_ready_o[0]), .i1(wr_ready_o[1]),
-                   .i2(wr_ready_o[2]), .i3(wr_ready_o[3]), .i4(wr_ready_o[4]),
-                   .i5(wr_ready_o[5]), .i6(wr_ready_o[6]), .i7(wr_ready_o[7]),.o(wr1_ready_o));
-
-   mux8 #(.WIDTH(1)) 
-     mux8_wr_full1(.en(~write_src[1][3]),.sel(write_src[1][2:0]), .i0(wr_full_o[0]), .i1(wr_full_o[1]),
-                  .i2(wr_full_o[2]), .i3(wr_full_o[3]), .i4(wr_full_o[4]),
-                  .i5(wr_full_o[5]), .i6(wr_full_o[6]), .i7(wr_full_o[7]),.o(wr1_full_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_wr_ready2(.en(~write_src[2][3]),.sel(write_src[2][2:0]), .i0(wr_ready_o[0]), .i1(wr_ready_o[1]),
-                   .i2(wr_ready_o[2]), .i3(wr_ready_o[3]), .i4(wr_ready_o[4]),
-                   .i5(wr_ready_o[5]), .i6(wr_ready_o[6]), .i7(wr_ready_o[7]),.o(wr2_ready_o));
-
-   mux8 #(.WIDTH(1)) 
-     mux8_wr_full2(.en(~write_src[2][3]),.sel(write_src[2][2:0]), .i0(wr_full_o[0]), .i1(wr_full_o[1]),
-                  .i2(wr_full_o[2]), .i3(wr_full_o[3]), .i4(wr_full_o[4]),
-                  .i5(wr_full_o[5]), .i6(wr_full_o[6]), .i7(wr_full_o[7]),.o(wr2_full_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_wr_ready3(.en(~write_src[3][3]),.sel(write_src[3][2:0]), .i0(wr_ready_o[0]), .i1(wr_ready_o[1]),
-                   .i2(wr_ready_o[2]), .i3(wr_ready_o[3]), .i4(wr_ready_o[4]),
-                   .i5(wr_ready_o[5]), .i6(wr_ready_o[6]), .i7(wr_ready_o[7]),.o(wr3_ready_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_wr_full3(.en(~write_src[3][3]),.sel(write_src[3][2:0]), .i0(wr_full_o[0]), .i1(wr_full_o[1]),
-                  .i2(wr_full_o[2]), .i3(wr_full_o[3]), .i4(wr_full_o[4]),
-                  .i5(wr_full_o[5]), .i6(wr_full_o[6]), .i7(wr_full_o[7]),.o(wr3_full_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_rd_sop0(.en(~read_src[0][3]),.sel(read_src[0][2:0]), .i0(rd_sop_o[0]), .i1(rd_sop_o[1]),
-                 .i2(rd_sop_o[2]), .i3(rd_sop_o[3]), .i4(rd_sop_o[4]),
-                 .i5(rd_sop_o[5]), .i6(rd_sop_o[6]), .i7(rd_sop_o[7]),.o(rd0_sop_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_rd_eop0(.en(~read_src[0][3]),.sel(read_src[0][2:0]), .i0(rd_eop_o[0]), .i1(rd_eop_o[1]),
-                 .i2(rd_eop_o[2]), .i3(rd_eop_o[3]), .i4(rd_eop_o[4]),
-                 .i5(rd_eop_o[5]), .i6(rd_eop_o[6]), .i7(rd_eop_o[7]),.o(rd0_eop_o));
-   
-   mux8 #(.WIDTH(32))
-     mux8_rd_dat_0 (.en(~read_src[0][3]),.sel(read_src[0][2:0]), .i0(rd_dat_o[0]), .i1(rd_dat_o[1]),
-                   .i2(rd_dat_o[2]), .i3(rd_dat_o[3]), .i4(rd_dat_o[4]),
-                   .i5(rd_dat_o[5]), .i6(rd_dat_o[6]), .i7(rd_dat_o[7]),.o(rd0_dat_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_rd_sop1(.en(~read_src[1][3]),.sel(read_src[1][2:0]), .i0(rd_sop_o[0]), .i1(rd_sop_o[1]),
-                 .i2(rd_sop_o[2]), .i3(rd_sop_o[3]), .i4(rd_sop_o[4]),
-                 .i5(rd_sop_o[5]), .i6(rd_sop_o[6]), .i7(rd_sop_o[7]),.o(rd1_sop_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_rd_eop1(.en(~read_src[1][3]),.sel(read_src[1][2:0]), .i0(rd_eop_o[0]), .i1(rd_eop_o[1]),
-                 .i2(rd_eop_o[2]), .i3(rd_eop_o[3]), .i4(rd_eop_o[4]),
-                 .i5(rd_eop_o[5]), .i6(rd_eop_o[6]), .i7(rd_eop_o[7]),.o(rd1_eop_o));
-   
-   mux8 #(.WIDTH(32))
-     mux8_rd_dat_1 (.en(~read_src[1][3]),.sel(read_src[1][2:0]), .i0(rd_dat_o[0]), .i1(rd_dat_o[1]),
-                   .i2(rd_dat_o[2]), .i3(rd_dat_o[3]), .i4(rd_dat_o[4]),
-                   .i5(rd_dat_o[5]), .i6(rd_dat_o[6]), .i7(rd_dat_o[7]),.o(rd1_dat_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_rd_sop2(.en(~read_src[2][3]),.sel(read_src[2][2:0]), .i0(rd_sop_o[0]), .i1(rd_sop_o[1]),
-                 .i2(rd_sop_o[2]), .i3(rd_sop_o[3]), .i4(rd_sop_o[4]),
-                 .i5(rd_sop_o[5]), .i6(rd_sop_o[6]), .i7(rd_sop_o[7]),.o(rd2_sop_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_rd_eop2(.en(~read_src[2][3]),.sel(read_src[2][2:0]), .i0(rd_eop_o[0]), .i1(rd_eop_o[1]),
-                 .i2(rd_eop_o[2]), .i3(rd_eop_o[3]), .i4(rd_eop_o[4]),
-                 .i5(rd_eop_o[5]), .i6(rd_eop_o[6]), .i7(rd_eop_o[7]),.o(rd2_eop_o));
-   
-   mux8 #(.WIDTH(32))
-     mux8_rd_dat_2 (.en(~read_src[2][3]),.sel(read_src[2][2:0]), .i0(rd_dat_o[0]), .i1(rd_dat_o[1]),
-                   .i2(rd_dat_o[2]), .i3(rd_dat_o[3]), .i4(rd_dat_o[4]),
-                   .i5(rd_dat_o[5]), .i6(rd_dat_o[6]), .i7(rd_dat_o[7]),.o(rd2_dat_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_rd_sop3(.en(~read_src[3][3]),.sel(read_src[3][2:0]), .i0(rd_sop_o[0]), .i1(rd_sop_o[1]),
-                 .i2(rd_sop_o[2]), .i3(rd_sop_o[3]), .i4(rd_sop_o[4]),
-                 .i5(rd_sop_o[5]), .i6(rd_sop_o[6]), .i7(rd_sop_o[7]),.o(rd3_sop_o));
-   
-   mux8 #(.WIDTH(1)) 
-     mux8_rd_eop3(.en(~read_src[3][3]),.sel(read_src[3][2:0]), .i0(rd_eop_o[0]), .i1(rd_eop_o[1]),
-                 .i2(rd_eop_o[2]), .i3(rd_eop_o[3]), .i4(rd_eop_o[4]),
-                 .i5(rd_eop_o[5]), .i6(rd_eop_o[6]), .i7(rd_eop_o[7]),.o(rd3_eop_o));
-   
-   mux8 #(.WIDTH(32))
-     mux8_rd_dat_3 (.en(~read_src[3][3]),.sel(read_src[3][2:0]), .i0(rd_dat_o[0]), .i1(rd_dat_o[1]),
-                   .i2(rd_dat_o[2]), .i3(rd_dat_o[3]), .i4(rd_dat_o[4]),
-                   .i5(rd_dat_o[5]), .i6(rd_dat_o[6]), .i7(rd_dat_o[7]),.o(rd3_dat_o));
-   
-   assign sys_int_o = (|error) | (|done);
-   
-endmodule // buffer_pool
diff --git a/usrp2/fpga/control_lib/buffer_pool_tb.v b/usrp2/fpga/control_lib/buffer_pool_tb.v
deleted file mode 100644 (file)
index 1674143..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-module buffer_pool_tb();
-   
-   wire wb_clk_i;
-   wire wb_rst_i;
-   wire wb_we_i;
-   wire wb_stb_i;
-   wire [15:0] wb_adr_i;
-   wire [31:0] wb_dat_i;   
-   wire [31:0] wb_dat_o;
-   wire wb_ack_o;
-   wire wb_err_o;
-   wire wb_rty_o;
-
-   wire stream_clk, stream_rst;
-
-   wire set_stb;
-   wire [7:0] set_addr;
-   wire [31:0] set_data;
-
-   wire [31:0] wr0_dat_i;
-   buffer_pool dut
-     (.wb_clk_i(wb_clk_i),
-      .wb_rst_i(wb_rst_i),
-      .wb_we_i(wb_we_i),
-      .wb_stb_i(wb_stb_i),
-      .wb_adr_i(wb_adr_i),
-      .wb_dat_i(wb_dat_i),   
-      .wb_dat_o(wb_dat_o),
-      .wb_ack_o(wb_ack_o),
-      .wb_err_o(wb_err_o),
-      .wb_rty_o(wb_rty_o),
-      
-      .stream_clk(stream_clk),
-      .stream_rst(stream_rst),
-      
-      .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
-      
-      .wr0_dat_i(wr0_dat_i), .wr0_write_i(), .wr0_done_i(), .wr0_error_i(), .wr0_ready_o(), .wr0_full_o(),
-      .wr1_dat_i(), .wr1_write_i(), .wr1_done_i(), .wr1_error_i(), .wr1_ready_o(), .wr1_full_o(),
-      .wr2_dat_i(), .wr2_write_i(), .wr2_done_i(), .wr2_error_i(), .wr2_ready_o(), .wr2_full_o(),
-      .wr3_dat_i(), .wr3_write_i(), .wr3_done_i(), .wr3_error_i(), .wr3_ready_o(), .wr3_full_o(),
-      
-      .rd0_dat_o(), .rd0_read_i(), .rd0_done_i(), .rd0_error_i(), .rd0_ready_o(), .rd0_empty_o(),
-      .rd1_dat_o(), .rd1_read_i(), .rd1_done_i(), .rd1_error_i(), .rd1_ready_o(), .rd1_empty_o(),
-      .rd2_dat_o(), .rd2_read_i(), .rd2_done_i(), .rd2_error_i(), .rd2_ready_o(), .rd2_empty_o(),
-      .rd3_dat_o(), .rd3_read_i(), .rd3_done_i(), .rd3_error_i(), .rd3_ready_o(), .rd3_empty_o()
-      );
-   
-endmodule // buffer_pool_tb
diff --git a/usrp2/fpga/control_lib/cascadefifo.v b/usrp2/fpga/control_lib/cascadefifo.v
deleted file mode 100644 (file)
index c1a4ab3..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-// This FIFO exists to provide an intermediate point for the data on its
-// long trek from one RAM (in the buffer pool) to another (in the longfifo)
-// The shortfifo is more flexible in its placement since it is based on
-// distributed RAM
-// This one should only be used on transmit side applications.  I.e. tx_mac, tx_dsp, etc.
-//   Spartan 3's have slow routing....
-// If we REALLY need to, we could also do this on the output side, 
-// with for the receive side stuff
-
-module cascadefifo
-  #(parameter WIDTH=32, SIZE=9)
-    (input clk, input rst,
-     input [WIDTH-1:0] datain,
-     output [WIDTH-1:0] dataout,
-     input read,
-     input write,
-     input clear,
-     output full,
-     output empty,
-     output [15:0] space,
-     output [15:0] occupied);
-
-   wire [WIDTH-1:0] data_int;
-   wire            empty_int, full_int, transfer;
-   wire [4:0]      short_space, short_occupied;
-   wire [15:0]             long_space, long_occupied;
-   
-   shortfifo #(.WIDTH(WIDTH)) shortfifo
-     (.clk(clk),.rst(rst),.clear(clear),
-      .datain(datain), .write(write), .full(full),
-      .dataout(data_int), .read(transfer), .empty(empty_int),
-      .space(short_space),.occupied(short_occupied) );
-
-   longfifo #(.WIDTH(WIDTH),.SIZE(SIZE)) longfifo
-     (.clk(clk),.rst(rst),.clear(clear),
-      .datain(data_int), .write(transfer), .full(full_int),
-      .dataout(dataout), .read(read), .empty(empty),
-      .space(long_space),.occupied(long_occupied) );
-
-   assign          transfer = ~empty_int & ~full_int;      
-
-   assign          space = {11'b0,short_space} + long_space;
-   assign          occupied = {11'b0,short_occupied} + long_occupied;
-   
-endmodule // cascadefifo
-
-
-
diff --git a/usrp2/fpga/control_lib/cascadefifo2.v b/usrp2/fpga/control_lib/cascadefifo2.v
deleted file mode 100644 (file)
index 984cc46..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-// This FIFO exists to provide an intermediate point for the data on its
-// long trek from one RAM (in the buffer pool) to another (in the longfifo)
-// The shortfifo is more flexible in its placement since it is based on
-// distributed RAM
-
-// This one has the shortfifo on both the in and out sides.
-module cascadefifo2
-  #(parameter WIDTH=32, SIZE=9)
-    (input clk, input rst,
-     input [WIDTH-1:0] datain,
-     output [WIDTH-1:0] dataout,
-     input read,
-     input write,
-     input clear,
-     output full,
-     output empty,
-     output [15:0] space,
-     output [15:0] occupied);
-
-   wire [WIDTH-1:0] data_int, data_int2;
-   wire            empty_int, full_int, transfer;
-   wire            empty_int2, full_int2, transfer2;
-   wire [4:0]      s1_space, s1_occupied, s2_space, s2_occupied;
-   wire [15:0]             l_space, l_occupied;
-   
-   shortfifo #(.WIDTH(WIDTH)) shortfifo
-     (.clk(clk),.rst(rst),.clear(clear),
-      .datain(datain), .write(write), .full(full),
-      .dataout(data_int), .read(transfer), .empty(empty_int),
-      .space(s1_space),.occupied(s1_occupied) );
-      
-   longfifo #(.WIDTH(WIDTH),.SIZE(SIZE)) longfifo
-     (.clk(clk),.rst(rst),.clear(clear),
-      .datain(data_int), .write(transfer), .full(full_int),
-      .dataout(data_int2), .read(transfer2), .empty(empty_int2),
-      .space(l_space),.occupied(l_occupied) );
-   
-   shortfifo #(.WIDTH(WIDTH)) shortfifo2
-     (.clk(clk),.rst(rst),.clear(clear),
-      .datain(data_int2), .write(transfer2), .full(full_int2),
-      .dataout(dataout), .read(read), .empty(empty),
-      .space(s2_space),.occupied(s2_occupied) );
-   
-   assign          transfer = ~empty_int & ~full_int;      
-   assign          transfer2 = ~empty_int2 & ~full_int2;           
-   
-   assign          space = {11'b0,s1_space} + {11'b0,s2_space} + l_space;
-   assign          occupied = {11'b0,s1_occupied} + {11'b0,s2_occupied} + l_occupied;
-      
-endmodule // cascadefifo2
-
-
-
-
diff --git a/usrp2/fpga/control_lib/fifo_2clock.v b/usrp2/fpga/control_lib/fifo_2clock.v
deleted file mode 100644 (file)
index 6b1eb60..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-
-module fifo_2clock
-  #(parameter DWIDTH=32, AWIDTH=9)
-    (input wclk, input [DWIDTH-1:0] datain, input write, output full, output reg [AWIDTH-1:0] level_wclk,
-     input rclk, output [DWIDTH-1:0] dataout, input read, output empty, output reg [AWIDTH-1:0] level_rclk,
-     input arst);
-
-   reg [AWIDTH-1:0] wr_addr, rd_addr;
-   wire [AWIDTH-1:0] wr_addr_rclk, rd_addr_wclk;
-   wire [AWIDTH-1:0] next_rd_addr;
-   wire            enb_read;
-   
-   // Write side management
-   wire [AWIDTH-1:0] next_wr_addr = wr_addr + 1;
-   always @(posedge wclk or posedge arst)
-     if(arst)
-       wr_addr <= 0;
-     else if(write)
-       wr_addr <= next_wr_addr;
-   assign          full = (next_wr_addr == rd_addr_wclk);
-
-   //  RAM for data storage.  Data out is registered, complicating the
-   //     read side logic
-   ram_2port #(.DWIDTH(DWIDTH),.AWIDTH(AWIDTH)) mac_rx_ff_ram
-     (.clka(wclk),.ena(1'b1),.wea(write),.addra(wr_addr),.dia(datain),.doa(),
-      .clkb(rclk),.enb(enb_read),.web(1'b0),.addrb(next_rd_addr),.dib(0),.dob(dataout) );
-
-   // Read side management
-   reg                     data_valid;
-   assign          empty = ~data_valid;
-   assign          next_rd_addr = rd_addr + data_valid;
-   assign          enb_read = read | ~data_valid;
-
-   always @(posedge rclk or posedge arst)
-     if(arst)
-       rd_addr <= 0;
-     else if(read)
-       rd_addr <= rd_addr + 1;
-
-   always @(posedge rclk or posedge arst)
-     if(arst)
-       data_valid <= 0;
-     else
-       if(read & (next_rd_addr == wr_addr_rclk))
-        data_valid <= 0;
-       else if(next_rd_addr != wr_addr_rclk)
-        data_valid <= 1;
-        
-   // Send pointers across clock domains via gray code
-   gray_send #(.WIDTH(AWIDTH)) send_wr_addr
-     (.clk_in(wclk),.addr_in(wr_addr),
-      .clk_out(rclk),.addr_out(wr_addr_rclk) );
-   
-   gray_send #(.WIDTH(AWIDTH)) send_rd_addr
-     (.clk_in(rclk),.addr_in(rd_addr),
-      .clk_out(wclk),.addr_out(rd_addr_wclk) );
-
-   // Generate fullness info, these are approximate and may be delayed 
-   // and are only for higher-level flow control.  
-   // Only full and empty are guaranteed exact.
-   always @(posedge wclk) 
-     level_wclk <= wr_addr - rd_addr_wclk;
-   always @(posedge rclk) 
-     level_rclk <= wr_addr_rclk - rd_addr;
-   
-endmodule // fifo_2clock
diff --git a/usrp2/fpga/control_lib/fifo_2clock_casc.v b/usrp2/fpga/control_lib/fifo_2clock_casc.v
deleted file mode 100644 (file)
index e9b0cfc..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-
-module fifo_2clock_casc
-  #(parameter DWIDTH=32, AWIDTH=9)
-    (input wclk, input [DWIDTH-1:0] datain, input write, output full, output [AWIDTH-1:0] level_wclk,
-     input rclk, output [DWIDTH-1:0] dataout, input read, output empty, output [AWIDTH-1:0] level_rclk,
-     input arst);
-
-   wire    full_int, empty_int, full_int2, empty_int2, transfer, transfer2;
-   wire [DWIDTH-1:0] data_int, data_int2;
-   
-   shortfifo #(.WIDTH(DWIDTH)) shortfifo
-     (.clk(wclk), .rst(arst), .clear(0),
-      .datain(datain), .write(write), .full(full),
-      .dataout(data_int), .read(transfer), .empty(empty_int) );
-
-   assign  transfer = ~full_int & ~empty_int;
-   
-   fifo_2clock #(.DWIDTH(DWIDTH),.AWIDTH(AWIDTH)) fifo_2clock
-     (.wclk(wclk), .datain(data_int), .write(transfer), .full(full_int), .level_wclk(level_wclk),
-      .rclk(rclk), .dataout(data_int2), .read(transfer2), .empty(empty_int2), .level_rclk(level_rclk),
-      .arst(arst) );
-
-   assign  transfer2 = ~full_int2 & ~empty_int2;
-
-   shortfifo #(.WIDTH(DWIDTH)) shortfifo2
-     (.clk(rclk), .rst(arst), .clear(0),
-      .datain(data_int2), .write(transfer2), .full(full_int2),
-      .dataout(dataout), .read(read), .empty(empty) );
-   
-endmodule // fifo_2clock_casc
-
diff --git a/usrp2/fpga/control_lib/fifo_reader.v b/usrp2/fpga/control_lib/fifo_reader.v
deleted file mode 100644 (file)
index 49d05b1..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-
-module fifo_reader
-  #(parameter rate=4)
-    (input clk,
-     input [31:0] data_in,
-     output read_o
-     input ready_i,
-     input done_i
-     );
-
-   reg [7:0] state = 0;
-   
-   always @(posedge clk)
-     if(ready)
-       if(state == rate)
-        state <= 0;
-       else
-        state <= state + 1;
-     else
-       state <= 0;
-
-   assign    read = (state == rate);
-
-   initial $monitor(data_in);
-   
-endmodule // fifo_reader
-
-   
index 98fd63f8d0666e311846eeb5ea86f918e9abf81e..616fe4ee77049ec21b9fbecbb954ede99d4bdc52 100644 (file)
@@ -2,11 +2,11 @@ module fifo_tb();
    
    reg clk, rst;
    wire short_full, short_empty, long_full, long_empty;
-   wire casc_full, casc_empty, casc2_full, casc2_empty;
+   wire casc2_full, casc2_empty;
    reg         read, write;
    
    wire [7:0] short_do, long_do;
-   wire [7:0] casc_do, casc2_do;
+   wire [7:0] casc2_do;
    reg [7:0]  di;
 
    reg               clear = 0;
@@ -19,10 +19,6 @@ module fifo_tb();
      (.clk(clk),.rst(rst),.datain(di),.dataout(long_do),.clear(clear),
       .read(read),.write(write),.full(long_full),.empty(long_empty));
    
-   cascadefifo #(.WIDTH(8), .SIZE(4)) cascadefifo
-     (.clk(clk),.rst(rst),.datain(di),.dataout(casc_do),.clear(clear),
-      .read(read),.write(write),.full(casc_full),.empty(casc_empty));
-   
    cascadefifo2 #(.WIDTH(8), .SIZE(4)) cascadefifo2
      (.clk(clk),.rst(rst),.datain(di),.dataout(casc2_do),.clear(clear),
       .read(read),.write(write),.full(casc2_full),.empty(casc2_empty));
diff --git a/usrp2/fpga/control_lib/fifo_writer.v b/usrp2/fpga/control_lib/fifo_writer.v
deleted file mode 100644 (file)
index 064ad3c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-
-module fifo_writer
-  #(parameter rate=4)
-    (input clk,
-     output [31:0] data_out,
-     output write_o,
-     input ready_i,
-     input done_i
-     );
-   
-   reg [7:0] state = 0;
-
-
-   // FIXME change this to write
-   always @(posedge clk)
-     if(ready)
-       if(state == rate)
-        state <= 0;
-       else
-        state <= state + 1;
-     else
-       state <= 0;
-
-   assign    read = (state == rate);
-
-   initial $monitor(data_in);
-   
-endmodule // fifo_writer
-
-
-   
diff --git a/usrp2/fpga/control_lib/giantfifo.v b/usrp2/fpga/control_lib/giantfifo.v
deleted file mode 100644 (file)
index dba330b..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-
-
-
-module giantfifo
-  #(parameter WIDTH=36)
-    (input clk, input rst,
-     input [WIDTH-1:0] datain,
-     output [WIDTH-1:0] dataout,
-     input read,
-     input write,
-     input clear,
-     output full,
-     output empty,
-     output [15:0] space,
-     output [15:0] occupied,
-     
-     // External RAM
-     inout [17:0] RAM_D,
-     output reg [18:0] RAM_A,
-     output RAM_CE1n,
-     output RAM_CENn,
-     output reg RAM_CLK,
-     output reg RAM_WEn,
-     output RAM_OEn,
-     output RAM_LDn
-     );
-
-   wire [4:0] path1_occ, path2_space;
-   wire [35:0] path1_dat, path2_dat;
-   
-   shortfifo #(.WIDTH(WIDTH)) sf1
-     (.clk(clk),.rst(rst),.clear(clear),
-      .datain(datain),.write(write),.full(full),
-      .dataout(path1_dat),.read(path1_read),.empty(path1_empty),
-      .space(),.occupied(path1_occ) );
-   wire       path1_almost_empty = (path1_occ == 5'd1);
-   
-   shortfifo #(.WIDTH(WIDTH)) sf2
-     (.clk(clk),.rst(rst),.clear(clear),
-      .datain(path2_dat),.write(path2_write),.full(path2_full),
-      .dataout(dataout),.read(read),.empty(empty),
-      .space(path2_space),.occupied() );
-   wire       path2_almost_full = (path2_space == 5'd1);
-       
-   assign     RAM_CE1n = 1'b0;
-   assign     RAM_CENn = 1'b0;
-   always @(clk)
-     RAM_CLK <= #2 clk;
-   assign     RAM_LDn = 1'b0;
-
-   // State machine
-   wire       write_now, read_now, idle, phase;
-   reg               ram_full, ram_empty;
-   
-   reg [17:0] read_ptr, write_ptr;
-   reg [2:0]  zbt_state;
-
-   localparam ZBT_IDLE = 0;
-   localparam ZBT_WRITE_UPPER = 2;
-   localparam ZBT_WRITE_LOWER = 3;
-   localparam ZBT_READ_UPPER = 4;
-   localparam ZBT_READ_LOWER = 5;
-
-   wire       can_write = ~ram_full & ~path1_empty;
-   wire       can_write_chain = can_write & ~path1_almost_empty;
-
-   wire       can_read = ~ram_empty & ~path2_full;
-   wire       can_read_chain = can_read & ~path2_almost_full;
-   
-   assign     phase = zbt_state[0];
-
-   reg [17:0] ram_occupied;
-   wire       ram_almost_empty = (write_ptr == (read_ptr+1'b1));
-   wire       ram_almost_full = ((write_ptr+1'b1) == read_ptr);
-
-   always @(posedge clk)
-     if(rst | clear)
-       begin
-         zbt_state <= ZBT_IDLE;
-         write_ptr <= 0;
-         read_ptr <= 0;
-         ram_full <= 0;
-         ram_empty <= 1;
-         ram_occupied <= 0;
-       end
-     else
-       case(zbt_state)
-        ZBT_IDLE : 
-          if(can_read) 
-            zbt_state <= ZBT_READ_UPPER;
-          else if(can_write)
-            zbt_state <= ZBT_WRITE_UPPER;
-        
-        ZBT_WRITE_UPPER : 
-          begin
-             zbt_state <= ZBT_WRITE_LOWER;
-             ram_occupied <= ram_occupied + 1;
-             ram_empty <= 0;
-             if(ram_occupied == 18'd10)
-               ram_full <= 1;
-          end
-        ZBT_WRITE_LOWER : 
-          begin
-             write_ptr <= write_ptr + 1;
-             if(can_read_chain) 
-               zbt_state <= ZBT_READ_UPPER;
-             else if(can_write_chain)
-               zbt_state <= ZBT_WRITE_UPPER;
-             else
-               zbt_state <= ZBT_IDLE;
-          end
-        ZBT_READ_UPPER : 
-          begin
-             zbt_state <= ZBT_READ_LOWER;
-             ram_occupied <= ram_occupied - 1;
-             ram_full <= 0;
-             if(ram_occupied == 18'd1)
-               ram_empty <= 1;
-          end
-        ZBT_READ_LOWER :
-          begin
-             read_ptr <= read_ptr + 1;
-             if(can_read_chain) 
-               zbt_state <= ZBT_READ_UPPER;
-             else if(can_write_chain)
-               zbt_state <= ZBT_WRITE_UPPER;
-             else
-               zbt_state <= ZBT_IDLE;
-          end
-        default :
-          zbt_state <= ZBT_IDLE;
-       endcase // case(zbt_state)
-
-   // Need to generate RAM_WEn, RAM_OEn, RAM_D, RAM_A;
-   assign path1_read = (zbt_state == ZBT_WRITE_LOWER);
-   reg           path2_write, delayed_read_upper, delayed_read_lower, delayed_write;
-
-   always @(posedge clk)
-     if(delayed_read_upper)
-       path2_dat[35:18] <= RAM_D;
-   always @(posedge clk)
-     if(delayed_read_lower)
-       path2_dat[17:0] <= RAM_D;
-
-   always @(posedge clk)
-     if(rst)
-       begin
-         delayed_read_upper <= 0;
-         delayed_read_lower <= 0;
-         path2_write <= 0;
-       end
-     else 
-       begin
-         delayed_read_upper <= (zbt_state == ZBT_READ_LOWER);
-         delayed_read_lower <= delayed_read_upper;
-         path2_write <= delayed_read_lower;
-       end
-   
-   reg [17:0] RAM_D_pre2, RAM_D_pre1, RAM_D_out;
-   
-   always @(posedge clk)
-     RAM_D_pre2 <= phase ? path1_dat[17:0] : path1_dat[35:18];
-
-   always @(posedge clk)  RAM_D_pre1 <= RAM_D_pre2;
-   always @(posedge clk)  RAM_D_out <= RAM_D_pre1;
-   reg               wr_del_1, wr_del_2;             
-   always @(posedge clk)
-     if(rst)
-       begin
-         wr_del_1 <= 0;          
-         wr_del_2 <= 0;
-         delayed_write <= 0;
-       end
-     else
-       begin
-         delayed_write <= wr_del_2;
-         wr_del_2 <= wr_del_1;
-         wr_del_1 <= write_now;
-       end
-
-   reg delayed_read, rd_del_1, rd_del_2;
-   always @(posedge clk)
-     if(rst)
-       begin
-         rd_del_1 <= 0;          
-         rd_del_2 <= 0;
-         delayed_read <= 0;
-       end
-     else
-       begin
-         delayed_read <= rd_del_2;
-         rd_del_2 <= rd_del_1;
-         rd_del_1 <= read_now;
-       end
-         
-   assign     RAM_D = delayed_write ? RAM_D_out : 18'bzzzzzzzzzzzzzzzzzz;
-   assign     write_now = (zbt_state == ZBT_WRITE_UPPER) || (zbt_state == ZBT_WRITE_LOWER);
-   assign     read_now =  (zbt_state == ZBT_READ_UPPER) || (zbt_state == ZBT_READ_LOWER);
-   
-   always @(posedge clk)
-     RAM_A <= write_now ? {write_ptr,phase} : {read_ptr,phase};
-
-   always @(posedge clk)
-     RAM_WEn <= ~write_now;
-
-   assign     RAM_OEn = ~delayed_read;
-   assign     RAM_OEn = 0;
-   
-endmodule // giantfifo
diff --git a/usrp2/fpga/control_lib/giantfifo_tb.v b/usrp2/fpga/control_lib/giantfifo_tb.v
deleted file mode 100644 (file)
index 87ecd97..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-module fifo_tb();
-
-   localparam WIDTH = 36;
-   reg clk, rst;
-   wire short_full, short_empty, long_full, long_empty, giant_full, giant_empty;
-   wire casc_full, casc_empty, casc2_full, casc2_empty;
-   reg         read, write;
-   
-   wire [WIDTH-1:0] short_do, long_do, casc_do, casc2_do, giant_do;
-   reg [WIDTH-1:0]  di;
-
-   reg               clear = 0;
-   
-   shortfifo #(.WIDTH(WIDTH)) shortfifo
-     (.clk(clk),.rst(rst),.datain(di),.dataout(short_do),.clear(clear),
-      .read(read),.write(write),.full(short_full),.empty(short_empty));
-   
-   longfifo #(.WIDTH(WIDTH), .SIZE(4)) longfifo
-     (.clk(clk),.rst(rst),.datain(di),.dataout(long_do),.clear(clear),
-      .read(read),.write(write),.full(long_full),.empty(long_empty));
-   
-   cascadefifo #(.WIDTH(WIDTH), .SIZE(4)) cascadefifo
-     (.clk(clk),.rst(rst),.datain(di),.dataout(casc_do),.clear(clear),
-      .read(read),.write(write),.full(casc_full),.empty(casc_empty));
-   
-   cascadefifo2 #(.WIDTH(WIDTH), .SIZE(4)) cascadefifo2
-     (.clk(clk),.rst(rst),.datain(di),.dataout(casc2_do),.clear(clear),
-      .read(read),.write(write),.full(casc2_full),.empty(casc2_empty));
-
-   wire [17:0] RAM_D;
-   wire [18:0] RAM_A;
-   wire        RAM_CLK, RAM_WEn, RAM_LDn, RAM_CE1n, RAM_OEn, RAM_CENn;
-   
-   giantfifo #(.WIDTH(WIDTH)) giantfifo
-     (.clk(clk),.rst(rst),.datain(di),.dataout(giant_do),.clear(clear),
-      .read(read),.write(write),.full(giant_full),.empty(giant_empty),
-      .RAM_D(RAM_D),.RAM_A(RAM_A),.RAM_CE1n(RAM_CE1n),.RAM_CENn(RAM_CENn),
-      .RAM_CLK(RAM_CLK),.RAM_WEn(RAM_WEn),.RAM_OEn(RAM_OEn),.RAM_LDn(RAM_LDn)
-      );
-
-   wire        MODE = 1'b0;
-   cy1356 ram_model(.d(RAM_D),.clk(RAM_CLK),.a(RAM_A),
-                   .bws(2'b00),.we_b(RAM_WEn),.adv_lb(RAM_LDn),
-                   .ce1b(RAM_CE1n),.ce2(1'b1),.ce3b(1'b0),
-                   .oeb(RAM_OEn),.cenb(RAM_CENn),.mode(MODE) 
-                   );
-   
-   initial rst = 1;
-   initial #1000 rst = 0;
-   initial clk = 0;
-   always #50 clk = ~clk;
-   
-   initial di = 36'h300AE;
-   initial read = 0;
-   initial write = 0;
-
-   always @(posedge clk)
-     if(write)
-       di <= di + 1;
-   
-   always @(posedge clk)
-     begin
-       if(short_full != long_full)
-         $display("Error: FULL mismatch");
-       if(short_empty != long_empty)
-         $display("Note: EMPTY mismatch, usually not a problem (longfifo has 2 cycle latency)");
-       if(read & (short_do != long_do))
-         $display("Error: DATA mismatch");
-     end
-   
-   initial $dumpfile("giantfifo_tb.vcd");
-   initial $dumpvars(0,fifo_tb);
-
-   initial
-     begin
-       @(negedge rst);
-       @(posedge clk);
-       repeat (10)
-         @(posedge clk);
-       write <= 1;
-       @(posedge clk);
-       write <= 0;
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       read <= 1;
-       @(posedge clk);
-       read <= 0;
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-
-       repeat(10)
-         begin
-            write <= 1;
-            @(posedge clk);
-            write <= 0;
-            @(posedge clk);
-            @(posedge clk);
-            @(posedge clk);
-            read <= 1;
-            @(posedge clk);
-            read <= 0;
-            @(posedge clk);
-            @(posedge clk);
-            @(posedge clk);
-            @(posedge clk);
-            @(posedge clk);
-         end // repeat (10)
-       
-       write <= 1;
-       repeat (4)
-         @(posedge clk);
-       write <= 0;
-       @(posedge clk);
-       read <= 1;
-       repeat (4)
-         @(posedge clk);
-       read <= 0;
-       @(posedge clk);
-
-
-       write <= 1;
-       repeat (4)
-         @(posedge clk);
-       write <= 0;
-       @(posedge clk);
-       repeat (4)
-         begin
-            read <= 1;
-            @(posedge clk);
-            read <= 0;
-            @(posedge clk);
-         end
-
-       write <= 1;
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       read <= 1;
-       repeat (5)
-         @(posedge clk);
-       write <= 0;
-         @(posedge clk);
-         @(posedge clk);
-       read <= 0;
-       @(posedge clk);
-
-       write <= 1;
-       repeat (16)
-         @(posedge clk);
-       write <= 0;
-       @(posedge clk);
-       
-       read <= 1;
-       repeat (16)
-         @(posedge clk);
-       read <= 0;
-       @(posedge clk);
-                
-       repeat (10)
-         @(posedge clk);
-       $finish;
-     end
-endmodule // longfifo_tb
diff --git a/usrp2/fpga/control_lib/newfifo/.gitignore b/usrp2/fpga/control_lib/newfifo/.gitignore
new file mode 100644 (file)
index 0000000..cba7efc
--- /dev/null
@@ -0,0 +1 @@
+a.out
diff --git a/usrp2/fpga/control_lib/newfifo/fifo18_to_ll8.v b/usrp2/fpga/control_lib/newfifo/fifo18_to_ll8.v
deleted file mode 100644 (file)
index 4653244..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-
-module fifo18_to_ll8
-  (input clk, input reset, input clear,
-   input [35:0] f18_data,
-   input f18_src_rdy_i,
-   output f18_dst_rdy_o,
-
-   output reg [7:0] ll_data,
-   output ll_sof_n,
-   output ll_eof_n,
-   output ll_src_rdy_n,
-   input ll_dst_rdy_n);
-
-   wire  ll_sof, ll_eof, ll_src_rdy;
-   assign ll_sof_n = ~ll_sof;
-   assign ll_eof_n = ~ll_eof;
-   assign ll_src_rdy_n = ~ll_src_rdy;
-   wire ll_dst_rdy = ~ll_dst_rdy_n;
-
-   wire   f18_sof = f18_data[32];
-   wire   f18_eof = f18_data[33];
-   wire   f18_occ = f18_data[35:34];
-   wire advance, end_early;
-   reg [1:0] state;
-   assign debug    = {29'b0,state};
-
-   always @(posedge clk)
-     if(reset)
-       state     <= 0;
-     else
-       if(advance)
-        if(ll_eof)
-          state  <= 0;
-        else
-          state  <= state + 1;
-
-   always @*
-     case(state)
-       0 : ll_data = f18_data[31:24];
-       1 : ll_data = f18_data[23:16];
-       2 : ll_data = f18_data[15:8];
-       3 : ll_data = f18_data[7:0];
-       default : ll_data = f18_data[31:24];
-       endcase // case (state)
-   
-   assign ll_sof        = (state==0) & f18_sof;
-   assign ll_eof        = f18_eof & (((state==0)&(f18_occ==1)) |
-                              ((state==1)&(f18_occ==2)) |
-                              ((state==2)&(f18_occ==3)) |
-                              (state==3));
-   
-   assign ll_src_rdy    = f18_src_rdy_i;
-
-   assign advance       = ll_src_rdy & ll_dst_rdy;
-   assign f18_dst_rdy_o  = advance & ((state==3)|ll_eof);
-   assign debug         = state;
-   
-endmodule // ll8_to_fifo36
index 1befb9e6eea12ffa7b036e008ad276d4fb47effe..0dee1dfc6ba5ef846b6e4d3cf25b9c7af92d199a 100644 (file)
@@ -1,6 +1,6 @@
 
 module fifo36_to_ll8
-  (input clk, reset,
+  (input clk, input reset, input clear,
    input [35:0] f36_data,
    input f36_src_rdy_i,
    output f36_dst_rdy_o,
index 6b1eb607edafebafafceb90d713a01983420af41..07ae090f2648b1598adc5db29f530287d14a8350 100644 (file)
@@ -1,9 +1,58 @@
 
+// FIXME ignores the AWIDTH (fifo size) parameter
+
 module fifo_2clock
-  #(parameter DWIDTH=32, AWIDTH=9)
-    (input wclk, input [DWIDTH-1:0] datain, input write, output full, output reg [AWIDTH-1:0] level_wclk,
-     input rclk, output [DWIDTH-1:0] dataout, input read, output empty, output reg [AWIDTH-1:0] level_rclk,
-     input arst);
+  #(parameter WIDTH=36, SIZE=6)
+   (input wclk, input [WIDTH-1:0] datain, input src_rdy_i, output dst_rdy_o, output [15:0] space,
+    input rclk, output [WIDTH-1:0] dataout, output src_rdy_o, input dst_rdy_i, output [15:0] occupied,
+    input arst);
+   
+   wire [SIZE:0] level_rclk, level_wclk; // xilinx adds an extra bit if you ask for accurate levels
+   wire         full, empty, write, read;
+
+   assign dst_rdy_o  = ~full;
+   assign src_rdy_o  = ~empty;
+   assign write      = src_rdy_i & dst_rdy_o;
+   assign read              = src_rdy_o & dst_rdy_i;
+
+   generate
+      if(WIDTH==36)
+       if(SIZE==9)
+         fifo_xlnx_512x36_2clk fifo_xlnx_512x36_2clk
+              (.rst(rst),
+               .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk),
+               .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) );
+       else if(SIZE==11)
+         fifo_xlnx_2Kx36_2clk fifo_xlnx_2Kx36_2clk 
+                    (.rst(rst),
+                     .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk),
+                     .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) );
+       else if(SIZE==6)
+         fifo_xlnx_64x36_2clk fifo_xlnx_64x36_2clk 
+                    (.rst(rst),
+                     .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk),
+                     .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) );
+       else
+         fifo_xlnx_512x36_2clk fifo_xlnx_512x36_2clk
+              (.rst(rst),
+               .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk),
+               .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) );
+      else if((WIDTH==19)|(WIDTH==18))
+       if(SIZE==4)
+         fifo_xlnx_16x19_2clk fifo_xlnx_16x19_2clk
+                    (.rst(rst),
+                     .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk),
+                     .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) );
+   endgenerate
+   
+   assign occupied  = {{(16-SIZE-1){1'b0}},level_rclk};
+   assign space     = ((1<<SIZE)+1)-level_wclk;
+   
+endmodule // fifo_2clock
+
+/*
+`else
+   // ISE sucks, so the following doesn't work properly
 
    reg [AWIDTH-1:0] wr_addr, rd_addr;
    wire [AWIDTH-1:0] wr_addr_rclk, rd_addr_wclk;
@@ -62,5 +111,7 @@ module fifo_2clock
      level_wclk <= wr_addr - rd_addr_wclk;
    always @(posedge rclk) 
      level_rclk <= wr_addr_rclk - rd_addr;
-   
+`endif
 endmodule // fifo_2clock
+
+*/
diff --git a/usrp2/fpga/control_lib/newfifo/fifo_2clock_casc.v b/usrp2/fpga/control_lib/newfifo/fifo_2clock_casc.v
deleted file mode 100644 (file)
index e9b0cfc..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-
-module fifo_2clock_casc
-  #(parameter DWIDTH=32, AWIDTH=9)
-    (input wclk, input [DWIDTH-1:0] datain, input write, output full, output [AWIDTH-1:0] level_wclk,
-     input rclk, output [DWIDTH-1:0] dataout, input read, output empty, output [AWIDTH-1:0] level_rclk,
-     input arst);
-
-   wire    full_int, empty_int, full_int2, empty_int2, transfer, transfer2;
-   wire [DWIDTH-1:0] data_int, data_int2;
-   
-   shortfifo #(.WIDTH(DWIDTH)) shortfifo
-     (.clk(wclk), .rst(arst), .clear(0),
-      .datain(datain), .write(write), .full(full),
-      .dataout(data_int), .read(transfer), .empty(empty_int) );
-
-   assign  transfer = ~full_int & ~empty_int;
-   
-   fifo_2clock #(.DWIDTH(DWIDTH),.AWIDTH(AWIDTH)) fifo_2clock
-     (.wclk(wclk), .datain(data_int), .write(transfer), .full(full_int), .level_wclk(level_wclk),
-      .rclk(rclk), .dataout(data_int2), .read(transfer2), .empty(empty_int2), .level_rclk(level_rclk),
-      .arst(arst) );
-
-   assign  transfer2 = ~full_int2 & ~empty_int2;
-
-   shortfifo #(.WIDTH(DWIDTH)) shortfifo2
-     (.clk(rclk), .rst(arst), .clear(0),
-      .datain(data_int2), .write(transfer2), .full(full_int2),
-      .dataout(dataout), .read(read), .empty(empty) );
-   
-endmodule // fifo_2clock_casc
-
diff --git a/usrp2/fpga/control_lib/newfifo/fifo_2clock_cascade.v b/usrp2/fpga/control_lib/newfifo/fifo_2clock_cascade.v
new file mode 100644 (file)
index 0000000..5ce7269
--- /dev/null
@@ -0,0 +1,35 @@
+
+module fifo_2clock_cascade
+  #(parameter WIDTH=32, SIZE=9)
+   (input wclk, input [WIDTH-1:0] datain, input src_rdy_i, output dst_rdy_o, output [15:0] space,
+    input rclk, output [WIDTH-1:0] dataout, output src_rdy_o, input dst_rdy_i, output [15:0] occupied,
+    input arst);
+   
+   wire [WIDTH-1:0] data_int1, data_int2;
+   wire            src_rdy_int1, src_rdy_int2, dst_rdy_int1, dst_rdy_int2;
+   wire [SIZE-1:0]  level_wclk, level_rclk;
+   wire [4:0]      s1_space, s1_occupied, s2_space, s2_occupied;
+   wire [15:0]             l_space, l_occupied;
+   
+   fifo_short #(.WIDTH(WIDTH)) shortfifo
+     (.clk(wclk), .reset(arst), .clear(0),
+      .datain(datain), .src_rdy_i(src_rdy_i), .dst_rdy_o(dst_rdy_o),
+      .dataout(data_int1), .src_rdy_o(src_rdy_int1), .dst_rdy_i(dst_rdy_int1),
+      .space(s1_space), .occupied(s1_occupied) );
+   
+   fifo_2clock #(.WIDTH(WIDTH),.SIZE(SIZE)) fifo_2clock
+     (.wclk(wclk), .datain(data_int1), .src_rdy_i(src_rdy_int1), .dst_rdy_o(dst_rdy_int1), .space(l_space),
+      .rclk(rclk), .dataout(data_int2), .src_rdy_o(src_rdy_int2), .dst_rdy_i(dst_rdy_int2), .occupied(l_occupied),
+      .arst(arst) );
+   
+   fifo_short #(.WIDTH(WIDTH)) shortfifo2
+     (.clk(rclk), .reset(arst), .clear(0),
+      .datain(data_int2), .src_rdy_i(src_rdy_int2), .dst_rdy_o(dst_rdy_int2),
+      .dataout(dataout), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i),
+      .space(s2_space), .occupied(s2_occupied));
+
+   // Be conservative -- Only advertise space from input side of fifo, occupied from output side
+   assign          space = {11'b0,s1_space} + l_space;
+   assign          occupied = {11'b0,s2_occupied} + l_occupied;
+   
+endmodule // fifo_2clock_cascade
diff --git a/usrp2/fpga/control_lib/newfifo/fifo_new_tb.v b/usrp2/fpga/control_lib/newfifo/fifo_new_tb.v
deleted file mode 100644 (file)
index f561df7..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-module fifo_new_tb();
-   
-   reg clk = 0;
-   reg rst = 1;
-   reg clear = 0;
-   initial #1000 rst = 0;
-   always #50 clk = ~clk;
-   
-   reg [31:0] f36_data = 0;
-   reg [1:0] f36_occ = 0;
-   reg f36_sof = 0, f36_eof = 0;
-   
-   wire [35:0] f36_in = {f36_occ,f36_eof,f36_sof,f36_data};
-   reg src_rdy_f36i  = 0;
-   wire dst_rdy_f36i;
-
-   wire [35:0] f36_out, f36_out2;
-   wire src_rdy_f36o;
-   reg dst_rdy_f36o  = 0;
-   
-   //fifo_cascade #(.WIDTH(36), .SIZE(4)) fifo_cascade36
-   //fifo_long #(.WIDTH(36), .SIZE(4)) fifo_cascade36
-
-   wire i1_sr, i1_dr;
-   wire i2_sr, i2_dr;
-   wire i3_sr, i3_dr;
-   reg i4_dr = 0;
-   wire i4_sr;
-      
-   wire [35:0] i1, i4;
-   wire [18:0] i2, i3;
-   
-   wire [7:0] ll_data;
-   wire ll_src_rdy_n, ll_dst_rdy_n, ll_sof_n, ll_eof_n;
-   
-   fifo_short #(.WIDTH(36)) fifo_short1
-     (.clk(clk),.reset(rst),.clear(clear),
-      .datain(f36_in),.src_rdy_i(src_rdy_f36i),.dst_rdy_o(dst_rdy_f36i),
-      .dataout(i1),.src_rdy_o(i1_sr),.dst_rdy_i(i1_dr) );
-
-   fifo36_to_fifo19 fifo36_to_fifo19
-     (.clk(clk),.reset(rst),.clear(clear),
-      .f36_datain(i1),.f36_src_rdy_i(i1_sr),.f36_dst_rdy_o(i1_dr),
-      .f19_dataout(i2),.f19_src_rdy_o(i2_sr),.f19_dst_rdy_i(i2_dr) );
-
-   fifo19_to_ll8 fifo19_to_ll8
-     (.clk(clk),.reset(rst),.clear(clear),
-      .f19_data(i2),.f19_src_rdy_i(i2_sr),.f19_dst_rdy_o(i2_dr),
-      .ll_data(ll_data),.ll_sof_n(ll_sof_n),.ll_eof_n(ll_eof_n),
-      .ll_src_rdy_n(ll_src_rdy_n),.ll_dst_rdy_n(ll_dst_rdy_n));
-
-   ll8_to_fifo19 ll8_to_fifo19
-     (.clk(clk),.reset(rst),.clear(clear),
-      .ll_data(ll_data),.ll_sof_n(ll_sof_n),.ll_eof_n(ll_eof_n),
-      .ll_src_rdy_n(ll_src_rdy_n),.ll_dst_rdy_n(ll_dst_rdy_n),
-      .f19_data(i3),.f19_src_rdy_o(i3_sr),.f19_dst_rdy_i(i3_dr) );
-
-   fifo19_to_fifo36 fifo19_to_fifo36
-     (.clk(clk),.reset(rst),.clear(clear),
-      .f19_datain(i3),.f19_src_rdy_i(i3_sr),.f19_dst_rdy_o(i3_dr),
-      .f36_dataout(i4),.f36_src_rdy_o(i4_sr),.f36_dst_rdy_i(i4_dr) );
-     
-   task ReadFromFIFO36;
-      begin
-        $display("Read from FIFO36");
-        #1 i4_dr <= 1;
-        while(1)
-          begin
-             while(~i4_sr)
-               @(posedge clk);
-             $display("Read: %h",i4);
-             @(posedge clk);
-          end
-      end
-   endtask // ReadFromFIFO36
-
-   reg [15:0] count;
-   task PutPacketInFIFO36;
-      input [31:0] data_start;
-      input [31:0] data_len;
-      begin
-        count        <= 4;
-        src_rdy_f36i <= 1;
-        f36_data     <= data_start;
-        f36_sof      <= 1;
-        f36_eof      <= 0;
-        f36_occ      <= 0;
-       
-        $display("Put Packet in FIFO36");
-        while(~dst_rdy_f36i)
-          @(posedge clk);
-        @(posedge clk);
-        $display("PPI_FIFO36: Entered First Line");
-        f36_sof <= 0;
-        while(count+4 < data_len)
-          begin
-             f36_data <= f36_data + 32'h01010101;
-             count    <= count + 4;
-             while(~dst_rdy_f36i)
-               @(posedge clk);
-             @(posedge clk);
-             $display("PPI_FIFO36: Entered New Line");
-          end
-        f36_data  <= f36_data + 32'h01010101;
-        f36_eof   <= 1;
-        if(count + 4 == data_len)
-          f36_occ <= 0;
-        else if(count + 3 == data_len)
-          f36_occ <= 3;
-        else if(count + 2 == data_len)
-          f36_occ <= 2;
-        else
-          f36_occ <= 1;
-        while(~dst_rdy_f36i)
-          @(posedge clk);
-        @(posedge clk);
-        f36_occ      <= 0;
-        f36_eof      <= 0;
-        f36_data     <= 0;
-        src_rdy_f36i <= 0;
-        $display("PPI_FIFO36: Entered Last Line");
-      end
-   endtask // PutPacketInFIFO36
-   
-   initial $dumpfile("fifo_new_tb.vcd");
-   initial $dumpvars(0,fifo_new_tb);
-
-   initial
-     begin
-       @(negedge rst);
-       //#10000;
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       ReadFromFIFO36;
-     end
-   
-   initial
-     begin
-       @(negedge rst);
-       @(posedge clk);
-       @(posedge clk);
-       PutPacketInFIFO36(32'hA0B0C0D0,12);
-       @(posedge clk);
-       @(posedge clk);
-       #10000;
-       @(posedge clk);
-       PutPacketInFIFO36(32'hE0F0A0B0,36);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-     end
-
-   initial #20000 $finish;
-endmodule // longfifo_tb
index 98fd63f8d0666e311846eeb5ea86f918e9abf81e..f561df7fa616accdca88aea3dc60712ac04d1d44 100644 (file)
-module fifo_tb();
+module fifo_new_tb();
    
-   reg clk, rst;
-   wire short_full, short_empty, long_full, long_empty;
-   wire casc_full, casc_empty, casc2_full, casc2_empty;
-   reg         read, write;
-   
-   wire [7:0] short_do, long_do;
-   wire [7:0] casc_do, casc2_do;
-   reg [7:0]  di;
-
-   reg               clear = 0;
-   
-   shortfifo #(.WIDTH(8)) shortfifo
-     (.clk(clk),.rst(rst),.datain(di),.dataout(short_do),.clear(clear),
-      .read(read),.write(write),.full(short_full),.empty(short_empty));
+   reg clk = 0;
+   reg rst = 1;
+   reg clear = 0;
+   initial #1000 rst = 0;
+   always #50 clk = ~clk;
    
-   longfifo #(.WIDTH(8), .SIZE(4)) longfifo
-     (.clk(clk),.rst(rst),.datain(di),.dataout(long_do),.clear(clear),
-      .read(read),.write(write),.full(long_full),.empty(long_empty));
+   reg [31:0] f36_data = 0;
+   reg [1:0] f36_occ = 0;
+   reg f36_sof = 0, f36_eof = 0;
    
-   cascadefifo #(.WIDTH(8), .SIZE(4)) cascadefifo
-     (.clk(clk),.rst(rst),.datain(di),.dataout(casc_do),.clear(clear),
-      .read(read),.write(write),.full(casc_full),.empty(casc_empty));
+   wire [35:0] f36_in = {f36_occ,f36_eof,f36_sof,f36_data};
+   reg src_rdy_f36i  = 0;
+   wire dst_rdy_f36i;
+
+   wire [35:0] f36_out, f36_out2;
+   wire src_rdy_f36o;
+   reg dst_rdy_f36o  = 0;
    
-   cascadefifo2 #(.WIDTH(8), .SIZE(4)) cascadefifo2
-     (.clk(clk),.rst(rst),.datain(di),.dataout(casc2_do),.clear(clear),
-      .read(read),.write(write),.full(casc2_full),.empty(casc2_empty));
+   //fifo_cascade #(.WIDTH(36), .SIZE(4)) fifo_cascade36
+   //fifo_long #(.WIDTH(36), .SIZE(4)) fifo_cascade36
+
+   wire i1_sr, i1_dr;
+   wire i2_sr, i2_dr;
+   wire i3_sr, i3_dr;
+   reg i4_dr = 0;
+   wire i4_sr;
+      
+   wire [35:0] i1, i4;
+   wire [18:0] i2, i3;
    
-   initial rst = 1;
-   initial #1000 rst = 0;
-   initial clk = 0;
-   always #50 clk = ~clk;
+   wire [7:0] ll_data;
+   wire ll_src_rdy_n, ll_dst_rdy_n, ll_sof_n, ll_eof_n;
    
-   initial di = 8'hAE;
-   initial read = 0;
-   initial write = 0;
+   fifo_short #(.WIDTH(36)) fifo_short1
+     (.clk(clk),.reset(rst),.clear(clear),
+      .datain(f36_in),.src_rdy_i(src_rdy_f36i),.dst_rdy_o(dst_rdy_f36i),
+      .dataout(i1),.src_rdy_o(i1_sr),.dst_rdy_i(i1_dr) );
 
-   always @(posedge clk)
-     if(write)
-       di <= di + 1;
-   
-   always @(posedge clk)
-     begin
-       if(short_full != long_full)
-         $display("Error: FULL mismatch");
-       if(short_empty != long_empty)
-         $display("Note: EMPTY mismatch, usually not a problem (longfifo has 2 cycle latency)");
-       if(read & (short_do != long_do))
-         $display("Error: DATA mismatch");
-     end
+   fifo36_to_fifo19 fifo36_to_fifo19
+     (.clk(clk),.reset(rst),.clear(clear),
+      .f36_datain(i1),.f36_src_rdy_i(i1_sr),.f36_dst_rdy_o(i1_dr),
+      .f19_dataout(i2),.f19_src_rdy_o(i2_sr),.f19_dst_rdy_i(i2_dr) );
+
+   fifo19_to_ll8 fifo19_to_ll8
+     (.clk(clk),.reset(rst),.clear(clear),
+      .f19_data(i2),.f19_src_rdy_i(i2_sr),.f19_dst_rdy_o(i2_dr),
+      .ll_data(ll_data),.ll_sof_n(ll_sof_n),.ll_eof_n(ll_eof_n),
+      .ll_src_rdy_n(ll_src_rdy_n),.ll_dst_rdy_n(ll_dst_rdy_n));
+
+   ll8_to_fifo19 ll8_to_fifo19
+     (.clk(clk),.reset(rst),.clear(clear),
+      .ll_data(ll_data),.ll_sof_n(ll_sof_n),.ll_eof_n(ll_eof_n),
+      .ll_src_rdy_n(ll_src_rdy_n),.ll_dst_rdy_n(ll_dst_rdy_n),
+      .f19_data(i3),.f19_src_rdy_o(i3_sr),.f19_dst_rdy_i(i3_dr) );
+
+   fifo19_to_fifo36 fifo19_to_fifo36
+     (.clk(clk),.reset(rst),.clear(clear),
+      .f19_datain(i3),.f19_src_rdy_i(i3_sr),.f19_dst_rdy_o(i3_dr),
+      .f36_dataout(i4),.f36_src_rdy_o(i4_sr),.f36_dst_rdy_i(i4_dr) );
+     
+   task ReadFromFIFO36;
+      begin
+        $display("Read from FIFO36");
+        #1 i4_dr <= 1;
+        while(1)
+          begin
+             while(~i4_sr)
+               @(posedge clk);
+             $display("Read: %h",i4);
+             @(posedge clk);
+          end
+      end
+   endtask // ReadFromFIFO36
+
+   reg [15:0] count;
+   task PutPacketInFIFO36;
+      input [31:0] data_start;
+      input [31:0] data_len;
+      begin
+        count        <= 4;
+        src_rdy_f36i <= 1;
+        f36_data     <= data_start;
+        f36_sof      <= 1;
+        f36_eof      <= 0;
+        f36_occ      <= 0;
+       
+        $display("Put Packet in FIFO36");
+        while(~dst_rdy_f36i)
+          @(posedge clk);
+        @(posedge clk);
+        $display("PPI_FIFO36: Entered First Line");
+        f36_sof <= 0;
+        while(count+4 < data_len)
+          begin
+             f36_data <= f36_data + 32'h01010101;
+             count    <= count + 4;
+             while(~dst_rdy_f36i)
+               @(posedge clk);
+             @(posedge clk);
+             $display("PPI_FIFO36: Entered New Line");
+          end
+        f36_data  <= f36_data + 32'h01010101;
+        f36_eof   <= 1;
+        if(count + 4 == data_len)
+          f36_occ <= 0;
+        else if(count + 3 == data_len)
+          f36_occ <= 3;
+        else if(count + 2 == data_len)
+          f36_occ <= 2;
+        else
+          f36_occ <= 1;
+        while(~dst_rdy_f36i)
+          @(posedge clk);
+        @(posedge clk);
+        f36_occ      <= 0;
+        f36_eof      <= 0;
+        f36_data     <= 0;
+        src_rdy_f36i <= 0;
+        $display("PPI_FIFO36: Entered Last Line");
+      end
+   endtask // PutPacketInFIFO36
    
-   initial $dumpfile("fifo_tb.vcd");
-   initial $dumpvars(0,fifo_tb);
+   initial $dumpfile("fifo_new_tb.vcd");
+   initial $dumpvars(0,fifo_new_tb);
 
    initial
      begin
        @(negedge rst);
-       @(posedge clk);
-       repeat (10)
-         @(posedge clk);
-       write <= 1;
-       @(posedge clk);
-       write <= 0;
-       @(posedge clk);
-       @(posedge clk);
+       //#10000;
        @(posedge clk);
        @(posedge clk);
        @(posedge clk);
        @(posedge clk);
+       ReadFromFIFO36;
+     end
+   
+   initial
+     begin
+       @(negedge rst);
        @(posedge clk);
        @(posedge clk);
-       read <= 1;
-       @(posedge clk);
-       read <= 0;
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-       @(posedge clk);
-
-       repeat(10)
-         begin
-            write <= 1;
-            @(posedge clk);
-            write <= 0;
-            @(posedge clk);
-            @(posedge clk);
-            @(posedge clk);
-            read <= 1;
-            @(posedge clk);
-            read <= 0;
-            @(posedge clk);
-            @(posedge clk);
-            @(posedge clk);
-            @(posedge clk);
-            @(posedge clk);
-         end // repeat (10)
-       
-       write <= 1;
-       repeat (4)
-         @(posedge clk);
-       write <= 0;
-       @(posedge clk);
-       read <= 1;
-       repeat (4)
-         @(posedge clk);
-       read <= 0;
-       @(posedge clk);
-
-
-       write <= 1;
-       repeat (4)
-         @(posedge clk);
-       write <= 0;
+       PutPacketInFIFO36(32'hA0B0C0D0,12);
        @(posedge clk);
-       repeat (4)
-         begin
-            read <= 1;
-            @(posedge clk);
-            read <= 0;
-            @(posedge clk);
-         end
-
-       write <= 1;
        @(posedge clk);
+       #10000;
        @(posedge clk);
+       PutPacketInFIFO36(32'hE0F0A0B0,36);
        @(posedge clk);
        @(posedge clk);
-       read <= 1;
-       repeat (5)
-         @(posedge clk);
-       write <= 0;
-         @(posedge clk);
-         @(posedge clk);
-       read <= 0;
        @(posedge clk);
-
-       write <= 1;
-       repeat (16)
-         @(posedge clk);
-       write <= 0;
        @(posedge clk);
-       
-       read <= 1;
-       repeat (16)
-         @(posedge clk);
-       read <= 0;
        @(posedge clk);
-                
-       repeat (10)
-         @(posedge clk);
-       $finish;
      end
+
+   initial #20000 $finish;
 endmodule // longfifo_tb
diff --git a/usrp2/fpga/control_lib/newfifo/ll8_shortfifo.v b/usrp2/fpga/control_lib/newfifo/ll8_shortfifo.v
new file mode 100644 (file)
index 0000000..39ada9a
--- /dev/null
@@ -0,0 +1,13 @@
+
+
+module ll8_shortfifo
+  (input clk, input reset, input clear,
+   input [7:0] datain, input sof_i, input eof_i, input error_i, input src_rdy_i, output dst_rdy_o,
+   output [7:0] dataout, output sof_o, output eof_o, output error_o, output src_rdy_o, input dst_rdy_i);
+
+   fifo_short #(.WIDTH(11)) fifo_short
+     (.clk(clk), .reset(reset), .clear(clear),
+      .datain({error_i,eof_i,sof_i,datain}), .src_rdy_i(src_rdy_i), .dst_rdy_o(dst_rdy_o),
+      .dataout({error_o,eof_o,sof_o,dataout}), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i));
+
+endmodule // ll8_shortfifo
index 1ee75a7b6d14ac850f30bcb53a88494c3db30c6d..810d64dac12abb96a4e4c4e7e1ed584294f4a793 100644 (file)
@@ -1,10 +1,10 @@
-# Date: Mon Feb  4 20:12:22 2008
+# Date: Thu Sep  3 17:40:48 2009
 SET addpads = False
 SET asysymbol = False
 SET busformat = BusFormatAngleBracketNotRipped
 SET createndf = False
 SET designentry = Verilog
-SET device = xc3s1500
+SET device = xc3s2000
 SET devicefamily = spartan3
 SET flowvendor = Other
 SET formalverification = False
diff --git a/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.ngc b/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.ngc
new file mode 100644 (file)
index 0000000..b12d34d
--- /dev/null
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.4e
+$3f2\7f4g<,[o}e~g`n;"2*413&;$>"9 > %10?*nhel%fmyz cnpfc`h(|dz$Sni fhdl[}jipV;=t<7P2bnh*kah92:?7=>=0593477339:=<95?8122?45<9'::>6?6:HLSQQ<cag6:47>11592=?IR\Y__6iazt=3;>5863;80>=:432006>5?l29x>=>?ff662(363=;n794FNQWW>uthoVof|ywPtipfwm:4294996:5IORVP?vugnUna}zv_ujqavnXizyn~y2<:1<11>2=AGZ^X7~}of]fiur~W}byi~fPndebp`:4294:h6:5IORVP?vugnUmyabPtipfwm:4294986:5IORVP?vugnUmyabPtipfwmYf{zoyx1=50?07?1<NFY__6}|`g^dvhiYs`{oxdR`jg`vf86<76=1?NI<>8:79KPRW]]0omyoPcnwmp92=87;i784@UURVP?tcWmk\7fmRm`uov?0?699k1>6B[[PTV9swYci}kTob{at=694;2<=H3==68;;72:41=11<K?7;766595=D753?K?7;ONA395A7=0L=13>9?;;9CFB1=?MJL:74:491230>?780805;:497230>?1>0>054864:;EB<4<I980M<<4A308E62<I<<256O\YOA\V@A33K;9;>5MU3:8FPUXAGLD=6M;;BC;E7=DM880OEKLK^NJG@HTMV^R\H=4CMP:?FIJE@^_II?;;BMQAZABFLXJXDAA_HLEK2=DZLK_II?4D59GF3@33MHI>>5KPN78@UTF8<1O\_O>5:FSVD423MZYM>:4F9:;6>@C;2LOO95IDBG7?CBDX=1MHIH<;GFS0>@CXL>0JK6?5:Dbhvc63N90KCJ>;H08M54<A880E?<4I2;8MKOS[]K_I>5FNW18MJD53EE=7AANDDF4?II@AJKG86BZT348HPR5WE>0@XZ<4:NVP10<D\^?SI84LTV7[I3<EZMDBn5BakmqR`ttafdh7@gaosTfvvohf:1E==:4N0237>H69:1E=?=4N010?K73;2D:9>5A1718J4143G;3?6@>929M655<F;;87C<=3:L176=I:=90B?8<;O0;7>H4::1E?>=4N270?K50;2D85>5A4018J1243G>>?6@;629M0<5<F<:87C;=3:L606=I=<80B;=4N760?K02;2D=:>5A6618J3>43G<2>6@83:L446=I?890B:<<;O507>H0<:1E;8=4N640?K10;2D<4>5A7808J=5<F1:87C6>3:L;66=I0:90B5:<;O::6>H>;2D2<>5A9018J<443G38?6@6629M=25<F0287C76f:LA[GSTX@DT\_A_S69MAQQHZB;0C?5@K09S0>VFZ]k0\D@PBTQJ@]d<X@DTNX]AALG0?UTB92[37_OB17Z2@3=TG\XHI>5\PN68P\VB;:1^<"i}f/pe+be\7f&jf`t"Cwos]q`Zvi|{UiecQwos2345YUmz\7fgx<=<;T2,cw`)zo%lou lljz,I}iuW{nT|cz}_ckm[}iu89::S_k|umv276=R8&myj#|i/fa{*fjlp&Gsc\7fQ}d^rmpwYeagUsc\7f>?03]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[wbXxg~ySjmPxnp3456XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzVxoS}`{r^e`[}iu89::S_k|umv277=R8&myj#|i/fa{*fjlp&Gsc\7fQ}d^rmpwY`kVrd~=>?2^Pfwpjs9:90Y=!hrg,qb*adp'iggu!Bxnp\swYwf}xTnd`Pxnp3456XZly~`y?<3:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^`jjZ~hz9:;=R\jstnw565<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXj`dTtb|?010\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZquWyd\7f~Ril_ymq4567W[oxyaz>339V4*aun'xm#jmw.bnh|*K\7fg{U|~R~ats]dgZ~hz9:;=R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXojUsc\7f>?03]Qavsk|88:7X> gsd-vc)`kq$h`fv re]sjqtXj`d7<3<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`31?02?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?6;463\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flh;;78;7X> gsd-vc)`kq$h`fv re]sjqtXj`dT<?>4U1-dvc(un&mht#mcky-q`Zvi|{UiecQ>219V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn^014>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[6413\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flhXpfx;<=>=6:W3+bta&{l$knv!cmi{+wbXxg~ySoga_ymq4566:?1^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnfVrd~=>?2328Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc=2=65=R8&myj#|i/fa{*fjlp&xoS}`{r^e`848582_;#j|i.sd,cf~)keas#\7fjPpovq[be;:78;7X> gsd-vc)`kq$h`fv re]sjqtXoj682<h4U1-dvc(un&mht#mcky-q`Zvi|{UloR>>f:W3+bta&{l$knv!cmi{+wbXxg~ySjmP10d8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^02b>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\770<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlm7<3<9;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd8485>2_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnk1<1279V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqab:46;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP0378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aX9;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP2378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aX;;30Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0>3:7?<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<2>>3;8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aXl8692?74U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4:46;20Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0]36==R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=R?=8:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6W;837X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_e3\773<]9%l~k }f.e`|+ekcq%yhR~ats]dgZ~hz9:;<?;4U1-dvc(un&mht#mcky-q`Zvi|{UloRv`r123573<]9%l~k }f.e`|+ekcq%yhR~ats]dgZ~hz9:;>??4U1-dvc(un&mht#mcky-tvZvi|{Uiec2?>338Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio>2:77<]9%l~k }f.e`|+ekcq%|~R~ats]amk:56;;0Y=!hrg,qb*adp'iggu!xr^rmpwYeag682?>4U1-dvc(un&mht#mcky-tvZvi|{UiecQ?219V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn^314>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[7473\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flhX;;<0Y=!hrg,qb*adp'iggu!xr^rmpwYeagUsc\7f>?0105?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl\|jt789;9:6[?/fpe*w`(ojr%oaew/vp\tkruWkceSua}012165=R8&myj#|i/fa{*fjlp&}yS}`{r^e`858582_;#j|i.sd,cf~)keas#z|Ppovq[be;978;7X> gsd-vc)`kq$h`fv ws]sjqtXoj692?>4U1-dvc(un&mht#mcky-tvZvi|{Ulo1=11g9V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_13e?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]25c=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[77a3\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfY4:?1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyij2?>348Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc^cpv`a;978=7X> gsd-vc)`kq$h`fv ws]sjqtXojUj\7f\7fkh<3<12>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtbo595>85Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]360=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU:>85Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]160=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU8>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5969:01^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1=3=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=1<1289V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc9595>55Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5Z6502_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj>_00;?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]bwwc`Wm;T>?64U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\`4Y4:<1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWqey<=>?249V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_ymq4566:<1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWqey<=>=369V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.Ob`aYulVnhSdQndeqvf5678=9h7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$Aljk_sf\`fYnWhno\7fxl?012\g|:66:90Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%F\7fxlPdhde[rtXzmU\7fa}:<4:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos04543\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(Ez\7fiSigif^uq[wbX|dz=?95Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"C|uc]gmc`X\7f{UyhRzbp630<>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWjs7=3=n;T2,cw`)zo%l`= }d.eq5+aulj8%~im Mrwa[aoanV}yS\7fjPtlr\g|:668;8n6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc\7f_ymq84869:h0Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%F\7fxlPdhde[rtXzmU\7fa}Qwos>0:47502_;#j|i.sd,ci6)zm%l~< hrea1*wbd'{nThnQf_10;?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcT=?64U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lY5:11^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^11<>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+wbXljUbS9=>;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<30?16?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?4;YT_89:7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~78987=3=<;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<31?3277=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx1236979::;0Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;692><4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?2=>012?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?7;553\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;;7;8:6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#\7fjPdb]j[hs\7f89:90>0>_RU374=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx1236929;;1^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^ov|567:5>5=>84U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?2;>0]PS54f3\:$k\7fh!rg-dh5(ul&my=#|iwgv,VDKXZMUNBRHXFU31=>S7'nxm"\7fh gm2-va)`z8$yjzh{/SCN[WC@G\^TIC?=b:W3+bta&{l$ka>!re-dv4(un~l\7f#_OB_WCOMAYA_O^:=>=4U1-dvc(un&mg<#|k/fp2*w`pn}%hy\7f|Pfvdw[vrf|lUM_@QIFe302>S7'nxm"\7fh gm2-va)`z8$yjzh{/bwqvZ`pn}Uxxlzj_GQN[C@c9$Ce?55Z0.eqb+ta'nf;"\7fj gs3-vcqa|&i~~\7fQiwgv\wqgsmVLXARHId0/Jj474;2_;#j|i.sd,ci6)zm%l~< }fvdw+fsuzVl|jyQ|t`vf[CUJWOLo>>84U1-dvc(un&mg<#|k/fp2*w`pn}%hy\7f|Pfvdw[vrf|lUM_@QIFe0.Mk5?3\:$k\7fh!rg-dh5(ul&my=#|iwgv,gptuWo}mxR}{aug\BVKXNOn9!D`>13:8Q5)`zo$yj"ic0/pg+bt6&{l|jy!jmqvz[cqa|Vli>:5Z0.eqb+ta'nf;"\7fj gs3-vcqa|&of|ywPfvdw[l4b3\:$k\7fh!rg-dh5(ul&my=#|iwgv,ahvsqVl|jyQf_np34565n2_;#j|i.sd,ci6)zm%l~< }fvdw+`kw|pUm{kzPi^mq45679;?0Y=!hrg,qb*ak8'xo#j|>.sdtbq)r{lxTzlbfd3;8Q5)`zo$yj"ic0/pg+btf{'xxx~!}al]fiur~WohTe>>4U1-dvc(un&mg<#|k/fpbw+tt|z%ym`Qjmqvz[cdXaVey<=>?369V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"|nm^gntq\7fXnkUbSb|?012240YT_9987X> gsd-vc)`d9$yh"i}ar,qwqu(zhgTi`~{y^da[lYhz9:;<<?:369V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"|nm^gntq\7fXnkUbSb|?012250YT_9997X> gsd-vc)`d9$yh"i}ar,qwqu(zhgTi`~{y^da[lYhz9:;<?9<2:W3+bta&{l$ka>!re-dvdu)zz~x#\7fob_dosp|YajVcTc\7f>?01:;5c=R8&myj#|i/fn3*wb(zhgTzlbfd^dtbq443\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7f>95Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu110>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|?8?7X> gsd-vc)`d9$yh"|\7fnup,Ifirf}Uhcx`{9208Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXpfx7<3?>_HLU[54d3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSua}<0<257e<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~Ttb|32?326f=R8&myj#|i/fn3*wb(zyd\7f~"Clotlw[firf}Usc\7f2<>032b>S7'nxm"\7fh gm2-va)uxg~y#naznu>3:4`<]9%l~k }f.eo4+tc'{zex\7f!lotlw8486n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:568l0Y=!hrg,qb*ak8'xo#\7f~ats-`kphs4:4:i6[?/fpe*w`(oe:%~i!}povq+firf}U;=h5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~T=<k4U1-dvc(un&mg<#|k/srmpw)dg|d\7fS??j;T2,cw`)zo%l`= }d.psjqt(kf\7fexR==2:W3+bta&{l$ka>!re-qtkru'je~byQk1=2=67=R8&myj#|i/fn3*wb(zyd\7f~"m`uov\`4:66;80Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;7>3<=;T2,cw`)zo%l`= }d.psjqt(kf\7fexRj><2<15>S7'nxm"\7fh gm2-va)uxg~y#naznu]g5Z65;2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V:T=??4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?P1318Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\5Z7592_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V89?6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R<P1338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\775<]9%l~k }f.eo4+tc'{zex\7f!lotlw[a7X;V;986[?/fpe*w`(oe:%~i!}povq+firf}Uecy>?000;?P6(o{l%~k!hl1,tv*apiz$|\7fy} r`o\bpjkWohTe?;4U1-dvc(un&mg<#y}/fubw+qt|z%ym`Qiumn\m7e<]9%l~k }f.eo4+qu'n}j\7f#y|tr-qehYa}efTeRa}01236c=R8&myj#|i/fn3*rt(o~kx"z}{s.pbiZ`rdeUbSb|?01225=543\:$k\7fh!rg-dh5(pz&m|m~ xsuq,vdkXn|fgSdQ`r123447?WZ];>k5Z0.eqb+ta'nf;"z| gvcp*rus{&xjaRhzlm]j[jt789::8<<j;T2,cw`)zo%l`= xr.etev(p{}y$~lcPftno[lYhz9:;<?8=e:W3+bta&{l$ka>!ws-dsdu)\7fz~x#\7fob_gwohZoXg{:;<=;<2d9V4*aun'xm#jb?.vp,crgt&~y\7f\7f"|nm^dvhiYnWfx;<=>63528Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=Qly=3=05=R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HgclV}ySio{a^alqkrXaVkoh=>?0^az8683:2_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(EhnoSz|Pd`vb[firf}UbSljk0123[f\7f;;7;:8;5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@okd^uq[agsiVidyczPi^cg`5678Vir0>0>1^QT415<]9%l~k }f.eo4+qu'n}oo< xdbg{p*KflmU|~Rjnt`]`kphsW`Ujhi>?01]{kw:668;??6[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~$Aljk_vp\`drfWje~byQf_`fg4567Wqey0?0>1518Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=Qwos>0:473?2_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(EhnoSz|Pd`vb[firf}UbSljk0123[}iu4:4:=R]X1558Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=Qwos>0:47X[^88>6[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~$A~{m_ekebZquW{nTx`~9329V4*aun'xm#jb?.vp,crbd9'}oohv{/LqvfZbnnoU|~R|k_uos34503\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)J{|hThdhi_vp\vaYseyUhu1?1389V4*aun'xm#jb?.vp,crbd9'}oohv{/LqvfZbnnoU|~R|k_uos[f\7f;97;:?l5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@}zb^fjbcYpzVxoSyc\7f_ymq85869:k0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GxyoQkigd\swYulV~f|Rv`r=3=544a3\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)caolT{\7fQ}d^vnt969:o1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'~xThlzn_bmvjqYnW98m7X> gsd-vc)`d9$|~"ixdb3-saebp}%|~Rjnt`]`kphsW`U:>k5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#z|Pd`vb[firf}UbS?<i;T2,cw`)zo%l`= xr.et`f7)\7fminty!xr^fbpdYdg|d\7fSdQ<2g9V4*aun'xm#jb?.vp,crbd9'}oohv{/vp\`drfWje~byQf_51;?P6(o{l%~k!hl1,tv*aplj;%{imjxu-tvZbf|hUhcx`{_h]b`a67896:2>64U1-dvc(un&mg<#y}/fugg4(pljosx"y}_ecweZeh}g~TeRokd1234949;11^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'~xThlzn_bmvjqYnWhno<=>?<2<2`>S7'nxm"\7fh gm2-sw)uidU|~Rka_h317>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|;>0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|Vidycz<259V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjq05<2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fex4==;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[}iu494:=RGAV^21g>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1?1100`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWqey0?0>13a8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx7?3?>1g9V4*aun'xm#jb?.vp,suhsz&idycz30?3e?P6(o{l%~k!hl1,tv*qwf}x$ob{at=3=5c=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov?6;7a3\:$k\7fh!rg-dh5(pz&}{by| cnwmp9599l1^<"i}f/pe+bj7&~x${}`{r.alqkrX88o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW8;n7X> gsd-vc)`d9$|~"y\7fnup,gjsi|V8:i6[?/fpe*w`(oe:%{\7f!xpovq+firf}U8>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<2?>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?5;453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb64;49>6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo=1=1209V4*aun'xm#jb?.vp,suhsz&idyczPd0]364=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`4Y6:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl8U9><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<Q<239V4*aun'xm#jb?.vp,suhsz&idyczPd3>3:74<]9%l~k }f.eo4+qu'~zex\7f!lotlw[a4;97897X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn90?0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk2=1=64=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`7Y7::1^<"i}f/pe+bj7&~x${}`{r.alqkrXl;U;S<<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj=_000?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[4Y6:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl;U9><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th?Q<229V4*aun'xm#jb?.vp,suhsz&idyczPd3]0[4433\:$k\7fh!rg-dh5(pz&}{by| cnwmpZhh|9:;=<84U1-dvc(un&gna"j`uu]j[5713\:$k\7fh!rg-nah)cg|~TeR?>7:W3+bta&{l$ahc dnww[lY688=0Y=!hrg,qb*kbe&ndyyQf_0323>S7'nxm"\7fh mdo,`jssW`U:><94U1-dvc(un&gna"j`uu]j[456?2_;#j|i.sd,i`k(lf\7f\7fSdQ>4058Q5)`zo$yj"cjm.flqqYnW8?:;6[?/fpe*w`(elg$hb{{_h]2241<]9%l~k }f.ofi*bh}}UbS<9>7:W3+bta&{l$ahc dnww[lY608<0Y=!hrg,qb*kbe&ndyyQf_335?P6(o{l%~k!bel-gkprXaV9::6[?/fpe*w`(elg$hb{{_h]753=R8&myj#|i/lgn+air|VcT9<84U1-dvc(un&gna"j`uu]j[3713\:$k\7fh!rg-nah)cg|~TeR9>6:W3+bta&{l$ahc dnww[lY?9?1^<"i}f/pe+hcj'me~xRgP90g8Q5)`zo$yj"cjm.egi+bj'DxjaR\NM03e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL335c=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN547a3\:$k\7fh!rg-nah)`ld$oa"C}al]QEH759o1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ9:;m7X> gsd-vc)jmd%lh` km.OqehYUID;?=k5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF=8?i;T2,cw`)zo%fi`!hdl,gi*KuidUYM@?91g9V4*aun'xm#`kb/ffn*ak(E{kfS_OB163e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL3;5c=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN5<7b3\:$k\7fh!rg-nah)`ld$oa"C}al]QEH46m2_;#j|i.sd,i`k(omg%h`!Br`o\VDK49l1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ<8o0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE<;n7X> gsd-vc)jmd%lh` km.OqehYUID<:i6[?/fpe*w`(elg$kic!dl-NvdkXZHG<=h5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF4<k4U1-dvc(un&gna"ikm/fn+HtfeVXJA4<:;T2,cw`)zo%fi`!hdl,gi*Yqi{cehhv?012?4;413\:$k\7fh!rg-nah)`ld$oa"Qyaskm``~789:7==0=6:W3+bta&{l$ahc geo-`h)X~hxbbikw01238479:?1^<"i}f/pe+hcj'nnf"ic _wcqmkbbp9:;<1?=>348Q5)`zo$yj"cjm.egi+bj'V|j~d`key2345:6;78=7X> gsd-vc)jmd%lh` km.]uewoillr;<=>315<12>S7'nxm"\7fh mdo,cak)ld%Tzl|fneg{456748?5>;5Z0.eqb+ta'dof#jjb.eo,[sguagnnt=>?0=35:70<]9%l~k }f.ofi*ace'nf#Rxnrhlga}67896:;3<9;T2,cw`)zo%fi`!hdl,gi*Yqi{cehhv?012?5=85=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac\7f89:;0<0=5:W3+bta&{l$ahc geo-`h)X~hxbbikw01238785=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac\7f89:;0>0=5:W3+bta&{l$ahc geo-`h)X~hxbbikw01238185=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac\7f89:;080=5:W3+bta&{l$ahc geo-`h)X~hxbbikw01238385=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac\7f89:;0:0=5:W3+bta&{l$ahc geo-`h)X~hxbbikw01238=85=2_;#j|i.sd,i`k(omg%h`!Pv`pjjac\7f89:;040>e:W3+bta&{l$ahc geo-`h)cg|~Te1>11g9V4*aun'xm#`kb/ffn*ak(lf\7f\7fSd2>0?3e?P6(o{l%~k!bel-d`h(ce&ndyyQf<03=5c=R8&myj#|i/lgn+bbj&mg$hb{{_h>26;7a3\:$k\7fh!rg-nah)`ld$oa"j`uu]j84599o1^<"i}f/pe+hcj'nnf"ic dnww[l:6<7;m7X> gsd-vc)jmd%lh` km.flqqYn48?5=k5Z0.eqb+ta'dof#jjb.eo,`jssW`6::3?i;T2,cw`)zo%fi`!hdl,gi*bh}}Ub0<911g9V4*aun'xm#`kb/ffn*ak(lf\7f\7fSd2>8?3f?P6(o{l%~k!bel-d`h(ce&ndyyQf<0<2a>S7'nxm"\7fh mdo,cak)ld%ocxzPi=0=5`=R8&myj#|i/lgn+bbj&mg$hb{{_h>0:4c<]9%l~k }f.ofi*ace'nf#iazt^k?0;7b3\:$k\7fh!rg-nah)`ld$oa"j`uu]j8086m2_;#j|i.sd,i`k(omg%h`!kotv\m9099l1^<"i}f/pe+hcj'nnf"ic dnww[l:068o0Y=!hrg,qb*kbe&moa#jb/emvpZo;07;n7X> gsd-vc)jmd%lh` km.flqqYn404:h6[?/fpe*w`(elg$kic!dl-gkprXaV::h6[?/fpe*w`(elg$kic!dl-gkprXaV;:i6[?/fpe*w`(elg$kic!dl-gkprXaV;;=h5Z0.eqb+ta'dof#jjb.eo,`jssW`U:=<k4U1-dvc(un&gna"ikm/fn+air|VcT=??j;T2,cw`)zo%fi`!hdl,gi*bh}}UbS<=>e:W3+bta&{l$ahc geo-`h)cg|~TeR?;1d9V4*aun'xm#`kb/ffn*ak(lf\7f\7fSdQ>50g8Q5)`zo$yj"cjm.egi+bj'me~xRgP173f?P6(o{l%~k!bel-d`h(ce&ndyyQf_052a>S7'nxm"\7fh mdo,cak)ld%ocxzPi^3;5a=R8&myj#|i/lgn+bbj&mg$hb{{_h]15a=R8&myj#|i/lgn+bbj&mg$hb{{_h]05a=R8&myj#|i/lgn+bbj&mg$hb{{_h]75a=R8&myj#|i/lgn+bbj&mg$hb{{_h]65a=R8&myj#|i/lgn+bbj&mg$hb{{_h]55a=R8&myj#|i/lgn+bbj&mg$hb{{_h]45a=R8&myj#|i/lgn+bbj&mg$hb{{_h];5a=R8&myj#|i/lgn+bbj&mg$hb{{_h]:52=R8&myj#|i/scn[wc`g|~Tic?k;T2,cw`)zo%y\7fylck.pg[wusWhyyij<?;T2,cw`)zo%y\7fylck.pg[wusWhyyijQk1328Q5)`zo$yj"||tcnh+wbXzz~Tm~|jg^f15f=R8&myj#|i/sqwfim(zmUy\7fyQlol`2`>S7'nxm"\7fh rrvahn)ulVxxxRm`mc32a>S7'nxm"\7fh rrvahn)ulVxxxR|jg=2=5`=R8&myj#|i/sqwfim(zmUy\7fyQ}ef>2:4c<]9%l~k }f.pppgjl'{nT~~zPrde?6;7c3\:$k\7fh!rg-qwqdkc&xoS\7f}{_sgd[57c3\:$k\7fh!rg-qwqdkc&xoS\7f}{_sgd[47c3\:$k\7fh!rg-qwqdkc&xoS\7f}{_sgd[77c3\:$k\7fh!rg-qwqdkc&}yS\7f}{_`qqab473\:$k\7fh!rg-qwqdkc&}yS\7f}{_`qqabYc9;:0Y=!hrg,qb*tt|kf`#z|Prrv\evtboVn9=n5Z0.eqb+ta'{y\7fnae ws]qwqYdgdh:h6[?/fpe*w`(zz~i`f!xr^pppZehek;:i6[?/fpe*w`(zz~i`f!xr^pppZtbo5:5=h5Z0.eqb+ta'{y\7fnae ws]qwqYumn6:2<j4U1-dvc(un&xxxobd/vp\vvrXzlmT<<j4U1-dvc(un&xxxobd/vp\vvrXzlmT=l5ZSDP\EIOF[j1^_H\PVHQJFIC43_IH56XFEV]W]UC33^IGG?5XE0f8\LJNFQ'SHO.?.0"PPPD'8';+M^MFI79[WQJNJ>1S_YQHNE`8\ZEHZLUBBKA9;Yfa[Lba3QncS]|fmWgqwlii991Sh`QBakmqR`ttafd:<6Vkm^OjjjtQm{ybccm4amolwqYbey~rn6ocmnqw[cskd?1imnezpe9aefmrxVgj~fk}3:aooa=ci}kTob{at)2*`>bf|hUhcx`{(0+g?agsiVidycz'2(f8`drfWje~by&<)e9geqgXkf\7fex%:&d:fbpdYdg|d\7f0=0i;ecweZeh}g~787>17:famqcuz?1oec&?)79gmk.6!>1oec&>0(58`lh/98#<7iga(00*3>bnf!;8%:5kio*20,1<l`d#=8'8;ekm,40.?2nbb%?8)69gmk.60 <0hd`'2(48`lh/; <0hd`'4(48`lh/= <0hd`'6(48`lh/? <0hd`'8(48`lh/1 <0hd`30?58`lh;994<7iga<03=3>bnf5;92:5kio>27;1<l`d7=908;ekm8439?2nbb1?9>69gmk:6?730hd`31983:2=cag6:4384dhl?5;0<l`d7>384dhl?7;0<l`d78384dhl?1;0<l`d7:384dhl?3;0<l`d74384dhl?=;1<lf\7f\7f$='8;emvp-7.02ndyy&>0(:8`jss 8;"46j`uu*26,><lf\7f\7f$<=&8:flqq.6< 20hb{{(07*<>bh}}"::$64dnww,41.02ndyy&>8(58`jss ;#<7iazt)1*3>bh}}"?%:5kotv+1,1<lf\7f\7f$;'8;emvp-1.?2ndyy&7)69gkpr/1 =0hb{{<1<;?air|5;;255kotv?548?3me~x1?=>99gkpr;9:437iazt=37:==cg|~7=807;emvp971611ocxz316<b?air|5;36=07;emvp97?6>1ocxz31?58`jss4;4<7iazt=1=3>bh}}6?2:5kotv?1;1<lf\7f\7f0;08;emvp919?2ndyy27>69gkpr;1720iigi2oeg1>cjx}s8>6hffn]dakcui}eyS{:P3-"[mioip)ID^H.Heogqeqiu(8:%=#><159emciXpedsS<8w18]1gim4:2lbjbQwloz\53~61V8h`f"iigm\c`hbzh~d~Rx;_2.MKKC+FFDN?oj4fhdl[}jipV;=t<7P2bnh(coagVmnbh|ntnp\r1Y4$riTdl}Piov\gim:8%iTdl}Pssqw95*dW{nTj\7fk~=0.`[mgtW{nThlzn_bmvjq;6$jUoecQxievk94?+kVbj\7fRy}_ecweZeh}g~6=!mPftno[cjfozUy\7fyQyam?2(fYneyfnah`{aukljZr~xl79 nQzsd]figccllnT~hi20-a\swYazl{6=!mPurg\`jssW{y\7f1<"l_tlgaw`kg~Ugcz3?,b]kevYh~lxm`by20-a\twckghnT`lzjnb{>4)eXlf\7f\7fSzgkti?2=)eXezmdbRxnl<3/gZtcWmo{xe3>6-a\lduX}gnn~kb`w<2/gZnf{Vkgab}{_gwoh86+kVbj\7fR||t<3/gZbf|hUhcx`{_vkgpm;2$jUcm~Qxr^c`o86+kV\7fxiRklc<2/gZehedeeSnb`cj?3(fYpzVkhgRb`w<2/gZtcWyd\7f~Ryfduj>0)eX}zoTjzh{_ecweZeh}g~6=!mPh`q\eikh{}Una}zv=1.`[wbXlh~jSnaznu]tmaro5<&hSbxjrgnlsZjh\7f4:'oRy}_qlwvZqnl}b68!mPpsmd[`kw|pU\7fu}k20-a\swYci}kTob{at^uj`qn:=%iT|\7fkco`f\v`at58&hSiazt^pppZpfd4:'oRfns^fbpdYdg|d\7f1="l_qplcZ`rdeU\7fd\7fk|h^lfcdrbW\7fkg1<:#c^uq[acw|a7::!mPpsmd[`kw|pU\7fd\7fk|h^lfcdrbW\7fkg18"l_qplcZcjx}sTxe|jsi]bwvcu|V|j`0:#c^jbwZpfd`n6<!mPpsmd[cskdV~c~h}g_`qpawrX~hf6=8"lolrlj`hsWgkfi0hffn]{hk~X9?r:5R<llj.`[sgkamUgcz3?,b]svlkXn`ldSyw\7fe<726}51$jU{~biPftno[q\7fwm4:'oRcjmnpz[q\7fwm48'q?k4fhdl[}jipV;=t<7P2bnh[coagVmnbh|ntnp\r1Y4Wqy\7fS<:4ftno3>oi|Vigg55agb`vmib?3f|n~kb`w`9svjaXmdz\7fu<:4psmd[`kw|pU\7fd\7fk|h)2*51=wzfmTi`~{y^vkv`uo 8#:86~}of]fiur~W}byi~f'2(37?uthoVof|ywPtipfwm.4!8<0|\7fah_dosp|Ys`{oxd1=50?3a?uthoVof|ywPtipfwmYf{zoyx%>&1c9svjaXmdz\7fuRzgrdqk[dutm{~#=$?m;qplcZcjx}sTxe|jsi]bwvcu|!8"=o5\7frne\ahvsqV~c~h}g_`qpawr/; ;o7}|`g^gntq\7fX|axn\7feQnsrgqp95=87;i7}|`g^gntq\7fX|axn\7feQaefcwa-6.9k1{~biPelrw}ZrozlycSckhaug+5,7e3yxdkRkbpu{\pmtb{aUeijo{e)0*5g=wzfmTi`~{y^vkv`uoWgolmyk'3(3g?uthoVof|ywPtipfwmYimnk\7fi1=50?;8twi`Wo\7fg`<=4psmd[cskdV~c~h}g(1+27>vugnUmyabPtipfwm.6!890|\7fah_gwohZrozlyc$?'>3:rqkbYa}efTxe|jsi*0-43<x{elSk{cl^vkv`uo4:0;2<o4psmd[cskdV~c~h}g_`qpawr/8 ;j7}|`g^dvhiYs`{oxdRo|sdpw,4/6i2zycjQiumn\pmtb{aUj\7f~k}t)0*5d=wzfmTjxbc_ujqavnXizyn~y&<)0a8twi`Wo\7fg`Rzgrdqk[dutm{~7?7>11`9svjaXn|fgSyf}erj\j`af|l";%<o4psmd[cskdV~c~h}g_ogdeqc/9 ;j7}|`g^dvhiYs`{oxdR`jg`vf,7/6i2zycjQiumn\pmtb{aUeijo{e)1*5f=wzfmTjxbc_ujqavnXflmjxh2<:1<5?wbXkea:<6|k_ecweZeh}g~#<$??;sf\`drfWje~by&>)028vaYci}kTob{at)0*55=ulVnjxlQlotlw,6/682xoSio{a^alqkr/< ;;7\7fjPd`vb[firf}6;2<>4re]geqgXkf\7fex1?1119q`Zbf|hUhcx`{<3<24>tcWmk\7fmRm`uov?7;753{nThlzn_bmvjq:3294:<6|k_ecweZeh}g~783;4re]fj3=ulVxxx>5}su58wgosm{x?7~||t59wvpc>3|doi\7fhcov78rdjnl?1|~Rolk79tvZekc8:0{\7fQkauc\gjsi|!:"==5xr^fbpdYdg|d\7f$<'>0:uq[agsiVidycz'2(33?rtXlh~jSnaznu*0-46<\7f{UomyoPcnwmp-2.991|~Rjnt`]`kphs494:<6y}_ecweZeh}g~7=3??;vp\`drfWje~by2=>028swYci}kTob{at=1=57=pzVnjxlQlotlw81<768:0{\7fQkauc\gjsi|5>596y}_dl5?rtXzz~vLM~8d`9CD}7=N3>1=v];0;0;7?>=9:82<<h5a81g\7fk45>3;0b?<8:59'672=:;:0q^=j:3:0>=<6;;3;=k4n92f8W0c=:1i1<7?<2822b?g>;l1X?h4=8b83>45519;m6l7<f:f1<3<7280:w^:?:3:0>=<6;;3;=k4n92f8rQd1290:6<4jezQ74?4?;321=><600d9e<5c3-8:h7;i;W011?4|}?=1=6{98;28y!d72o1i>5850;14>6<4?rB9=o5U3987\7f4g=900j644r$c:96=0<,;886?6:;h0ae?6=3f8h47>5$c096fb<fk;1<65`2b594?"e:38hh6`m1;38?j4d>3:1(o<52bf8jg7=:21d>n;50;&a6?4dl2di=7=4;n0`0?6=,k81>nj4nc390>=h:k91<7*m2;0a<>he93:07b<m2;29 g4=:k20bo?51:9l6g7=83.i>7<m8:la5?4<3f8i<7>5$c096g><fk;1?65`2`d94?"e:38i46`m1;68?l4dn3:17b<7a;29?j4?<3:17d<l3;29?l4ek3:17b<96;29 g4=:>20bo?50:9l633=83.i>7<88:la5?7<3f8=87>5$c0962><fk;1>65`27194?"e:38<46`m1;18?j41:3:1(o<526:8jg7=<21d>;?50;&a6?4002di=7;4;n054?6=,k81>:64nc392>=h:<l1<7*m2;04<>he93=07b<:e;29 g4=:>20bo?58:9l63c=83.i>7<88:la5??<3f8=h7>5$c0962><fk;1m65`27a94?"e:38<46`m1;`8?j41j3:1(o<526:8jg7=k21d>;o50;&a6?4002di=7j4;n05=?6=,k81>:64nc39a>=h:?21<7*m2;04<>he93l07b<97;29 g4=:>20bo?51198k73c290/n?4=799mf4<6921d>8m50;&a6?4002di=7?=;:k17c<72-h96?;>;o`2>5=<a;9n6=4+b38114=ij80:76g=3e83>!d52;?:7cl>:398m75d290/n?4=509mf4<432c9?o4?:%`1>7363gh:6954i31b>5<#j;099<5ab086?>o5;00;6)l=:372?kd62?10e?=7:18'f7<5=81en<48;:k172<72-h96?;>;o`2>==<a;><6=4+b38114=ij80276g=4783>!d52;?:7cl>:`98m722290/n?4=509mf4<e32c9894?:%`1>7363gh:6n54i360>5<#j;099<5ab08g?>o5<;0;6)l=:372?kd62l10e?:>:18'f7<5=81en<4i;:k105<72-h96?;>;o`2>46<3`88:7>5$c09607<fk;1=<54i316>5<#j;099<5ab0826>=n:ho1<75m20a94?7=83:pD??m;%`;>77d3fkm6=44}c77>5<6290;wE<>b:&a<?333f?86=44}c14>5<1=3n86hktH33a?_5?28<p=?4>a;3:>40=910:87o5108:>43=9:0:47?n:`82=?75200::7?::06956<693w/n54=889'1f<2:2.8o7<77:&0b?4?02.jn7oj;h0af?6=3f82i7>5;h0aa?6=3f8947>5;n0`5?6=3`89n7>5;h0:3?6=,k81>464nc394>=n:0<1<7*m2;0:<>he93;07d<65;29 g4=:020bo?52:9j6<2=83.i>7<68:la5?5<3`8im7>5;n0;`?6=3f8h47>5$c096fb<fk;1<65`2b594?"e:38hh6`m1;38?j4d>3:1(o<52bf8jg7=:21d>n;50;&a6?4dl2di=7=4;n0`0?6=,k81>nj4nc390>=h:k91<7*m2;0a<>he93:07b<m2;29 g4=:k20bo?51:9l6g7=83.i>7<m8:la5?4<3f8i<7>5$c096g><fk;1?65`2`d94?"e:38i46`m1;68?l4fk3:1(o<52`f8jg7=821b>ll50;&a6?4fl2di=7?4;h0be?6=,k81>lj4nc396>=n:h31<7*m2;0b`>he93907d<lf;29?j4493:1(o<52218jg7=821d>>>50;&a6?44;2di=7?4;n01b?6=,k81>>=4nc396>=h:;o1<7*m2;007>he93907b<=d;29 g4=::90bo?54:9l6=g=831d>5:50;9j6d4=83.i>7<n3:la5?6<3`8j=7>5$c096d5<fk;1=65f2`294?"e:38j?6`m1;08?l4>n3:1(o<52`18jg7=;21b>n=50;9j6=d=831b>?m50;9j6a6=831d>oj50;9l6f4=831d>?750;9l6f6=831b>om50;9l630=83.i>7<88:la5?6<3f8=97>5$c0962><fk;1=65`27694?"e:38<46`m1;08?j41;3:1(o<526:8jg7=;21d>;<50;&a6?4002di=7:4;n055?6=,k81>:64nc391>=h:?:1<7*m2;04<>he93<07b<:f;29 g4=:>20bo?57:9l60c=83.i>7<88:la5?><3f8=i7>5$c0962><fk;1565`27f94?"e:38<46`m1;c8?j41k3:1(o<526:8jg7=j21d>;l50;&a6?4002di=7m4;n05e?6=,k81>:64nc39`>=h:?31<7*m2;04<>he93o07b<98;29 g4=:>20bo?5f:9l631=83.i>7<88:la5?7732e99i4?:%`1>71?3gh:6<?4;n06g?6=,k81>:64nc3957=<a;396=4+b381=6=ij80;76g=9083>!d52;387cl>:098m7?7290/n?4=929mf4<532c94k4?:%`1>7?43gh:6>54i31e>5<#j;099<5ab083?>o5;l0;6)l=:372?kd62810e?=k:18'f7<5=81en<4=;:k17f<72-h96?;>;o`2>6=<a;9i6=4+b38114=ij80?76g=3`83>!d52;?:7cl>:498m75>290/n?4=509mf4<132c9?54?:%`1>7363gh:6:54i314>5<#j;099<5ab08;?>o5<>0;6)l=:372?kd62010e?:9:18'f7<5=81en<4n;:k100<72-h96?;>;o`2>g=<a;>?6=4+b38114=ij80h76g=4283>!d52;?:7cl>:e98m725290/n?4=509mf4<b32c98<4?:%`1>7363gh:6k54i363>5<#j;099<5ab0824>=n::<1<7*m2;065>he93;:76g=3483>!d52;?:7cl>:008?l45i3:17d<n7;29 g4=:h20bo?50:9j6d0=83.i>7<n8:la5?7<3`8j97>5$c096d><fk;1>65f2`694?"e:38j46`m1;18?l4>k3:1(o<528f8jg7=821b>4l50;&a6?4>l2di=7?4;h0:e?6=,k81>4j4nc396>=n:031<7*m2;0:`>he93907b<7e;29?j44<3:17d<ne;29?g45:3:1=7>50z&a<?333A89=6F=1c9l16<722wi>=650;194?6|,k218l5G2338L77e3A9>7)89:3`e?!3f2;1b?44?::k75?6=3fh?6=44}c027?6=;3:1<v*m8;6b?M4592B9=o5G349'23<5jo1/9l4=;h1:>5<<a=;1<75`b583>>{e:9=1<7=50;2x g>=<h1C>??4H33a?M523-<=6?li;%7b>7=n;00;66g;1;29?jd32900qo<>1;291?6=8r.i47;?;I015>N59k1C?85+6781fc=#=h097d=6:188m6d=831b8<4?::ka7?6=3fh?6=44}c026?6=;3:1<v*m8;6b?M4592B9=o5G349'23<5jo1/9l4=;h1:>5<<a=;1<75`b583>>{e:9<1<7;50;2x g>==91C>??4H33a?M523-<=6?li;%7b>7=n;00;66g<b;29?l262900eo=50;9lf1<722wi><>50;694?6|,k218k5G2338L77e3-?j6?5f3883>>o393:17dl<:188kg2=831vn?>i:187>5<7s-h369h4H302?M46j2.>m7<4i2;94?=n<80;66gm3;29?jd32900qo<?e;290?6=8r.i47:i;I015>N59k1/9l4=;h1:>5<<a=;1<75fb283>>ie<3:17pl=1883>1<729q/n54;f:J164=O:8h0(8o52:k0=?6=3`>:6=44ic194?=hj=0;66sm20:94?2=83:p(o654g9K677<@;;i7);n:39j7<<722c?=7>5;h`0>5<<gk>1<75rb01a>5<3290;w)l7:5d8L7463A8:n6*:a;58m6?=831b8<4?::ka7?6=3fh?6=44}c32f?6==3:1<v*m8;6g?M4592B9=o5+5`81?l5>2900e>j50;9j04<722ci?7>5;n`7>5<<uk;:o7>55;294~"e03>o7E<=1:J15g=#=h097d=6:188m6b=831b8<4?::ka7?6=3fh?6=44}c32`?6==3:1<v*m8;6g?M4592B9=o5+5`81?l5>2900e>j50;9j04<722ci?7>5;n`7>5<<uk;:i7>55;294~"e03>o7E<=1:J15g=#=h097d=6:188m6b=831b8<4?::ka7?6=3fh?6=44}c32b?6==3:1<v*m8;6g?M4592B9=o5+5`81?l5>2900e>j50;9j04<722ci?7>5;n`7>5<<uk;>;7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c36=?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;>n7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c36`?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;==7>54;294~"e03>m7E<=1:J15g=#=h097d=6:188m17=831bn>4?::ma0?6=3th::=4?:583>5}#j10?j6F=209K64d<,<k1>6g<9;29?l262900eo=50;9lf1<722wi=4k50;794?6|,k218n5G2338L77e3-?j6?5f3883>>o4j3:17d=k:188m17=831dn94?::\7fa5d6=83?1<7>t$c:90f=O:;;0D??m;%7b>7=n;00;66g<b;29?l5c2900e9?50;9lf1<722wi=l<50;794?6|,k218n5G2338L77e3-?j6?5f3883>>o4j3:17d=k:188m17=831dn94?::\7fa5d5=83?1<7>t$c:90f=O:;;0D??m;%7b>7=n;00;66g<b;29?l5c2900e9?50;9lf1<722wi=4750;794?6|,k218n5G2338L77e3-?j6?5f3883>>o4j3:17d=k:188m17=831dn94?::\7fa5<>=83?1<7>t$c:90f=O:;;0D??m;%7b>7=n;00;66g<b;29?l5c2900e9?50;9lf1<722wi=4950;794?6|,k218n5G2338L77e3-?j6?5f3883>>o4j3:17d=k:188m17=831dn94?::\7fa5<0=83?1<7>t$c:915=O:;;0D??m;%7b>2=n;00;66g<b;29?l262900eo=50;9lf1<722wi=:750;694?6|,k218o5G2338L77e3-?j6?5f3883>>o4l3:17d:>:188kg2=831vn<9n:187>5<7s-h369l4H302?M46j2.>m7<4i2;94?=n;m0;66g;1;29?jd32900qo?8b;290?6=8r.i47:m;I015>N59k1/9l4=;h1:>5<<a:n1<75f4083>>ie<3:17pl>7b83>1<729q/n54;b:J164=O:8h0(8o52:k0=?6=3`9o6=44i5394?=hj=0;66sm16f94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rb0:f>5<2290;w)l7:5a8L7463A8:n6*:a;08m6?=831b?o4?::k0`?6=3`>:6=44oc694?=zj82m6=4::183\7f!d?2<:0D?<>;I02f>"2i3=0e>750;9j7g<722c?=7>5;h`0>5<<gk>1<75rb0;3>5<2290;w)l7:5a8L7463A8:n6*:a;08m6?=831b?o4?::k0`?6=3`>:6=44oc694?=zj83:6=4::183\7f!d?2=i0D?<>;I02f>"2i380e>750;9j7g<722c8h7>5;h62>5<<gk>1<75rb06e>5<2290;w)l7:428L7463A8:n6*:a;58m6?=831b?o4?::k75?6=3`h86=44oc694?=zj8?96=4::183\7f!d?2=i0D?<>;I02f>"2i380e>750;9j7g<722c8h7>5;h62>5<<gk>1<75rb073>5<2290;w)l7:5a8L7463A8:n6*:a;08m6?=831b?o4?::k0`?6=3`>:6=44oc694?=zj8?:6=4::183\7f!d?2=i0D?<>;I02f>"2i380e>750;9j7g<722c8h7>5;h62>5<<gk>1<75rbba94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbb`94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbbc94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbb;94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbg094?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbg394?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbg294?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbdd94?2=83:p(o654c9K677<@;;i7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rb02g>5<3290;w)l7:5`8L7463A8:n6*:a;08m6?=831b?i4?::k75?6=3fh?6=44}c33g?6=<3:1<v*m8;6a?M4592B9=o5+5`81?l5>2900e>j50;9j04<722ei87>5;|`24g<72=0;6=u+b987f>N5:81C><l4$4c96>o413:17d=k:188m17=831dn94?::\7fa55g=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f`1=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f`0=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f`3=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f`2=83>1<7>t$c:90g=O:;;0D??m;%7b>7=n;00;66g<d;29?l262900co:50;9~f462290?6=4?{%`;>1d<@;8:7E<>b:J01>"1>38ij6*:a;08m6?=831b?i4?::k75?6=3fh?6=44}c330?6=<3:1<v*m8;6a?M4592B9=o5G349'23<5jo1/9l4=;h1:>5<<a:n1<75f4083>>ie<3:17pl>0283>1<729q/n54;b:J164=O:8h0D>;4$7496g`<,<k1>6g<9;29?l5c2900e9?50;9lf1<722wi==<50;694?6|,k218o5G2338L77e3A9>7)89:3`e?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjml1<7:50;2x g>=<k1C>??4H33a?M523-<=6?li;%7b>7=n;00;66g<d;29?l262900co:50;9~fac=83>1<7>t$c:90g=O:;;0D??m;I16?!012;hm7);n:39j7<<722c8h7>5;h62>5<<gk>1<75rbef94?2=83:p(o654c9K677<@;;i7E=:;%45>7da3-?j6?5f3883>>o4l3:17d:>:188kg2=831vnim50;694?6|,k218o5G2338L77e3A9>7)89:3`e?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjm=1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjm<1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjm?1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjm>1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjon1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjoi1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjoh1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zjok1<7:50;2x g>=<k1C>??4H33a?!3f2;1b?44?::k0`?6=3`>:6=44oc694?=zj8986=4;:183\7f!d?2=h0D?<>;I02f>"2i380e>750;9j7a<722c?=7>5;n`7>5<<uk;8<7>54;294~"e03>i7E<=1:J15g=#=h097d=6:188m6b=831b8<4?::ma0?6=3th:?l4?:583>5}#j10?n6F=209K64d<,<k1>6g<9;29?l5c2900e9?50;9lf1<722wi=>950;694?6|,k218k5G2338L77e3-?j6:5f3883>>o393:17dl<:188kg2=831vn<=9:187>5<7s-h369h4H302?M46j2.>m794i2;94?=n<80;66gm3;29?jd32900qo?i2;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7a;3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?id;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7am3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?if;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg4783:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo<?1;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg47:3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo<?3;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg47<3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?i4;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7a=3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?i6;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7a?3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?i8;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7a13:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?ia;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7aj3:197>50z&a<?2d3A89=6F=1c9'1d<53`926=44i2`94?=n;m0;66g;1;29?jd32900qo?ic;291?6=8r.i47:l;I015>N59k1/9l4=;h1:>5<<a:h1<75f3e83>>o393:17bl;:188yg7d=3:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3a=?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?l4;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;h:7>5d;294~"e03h>7E<=1:J15g=n;90;66g<1;29?l552900e>=50;9j04<722c?97>5;h65>5<<a==1<75f4983>>o59l0;66g=1g83>>ie?3:17b:;:188yg7d?3:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3`e?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?l8;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;h57>5d;294~"e03h>7E<=1:J15g=n;90;66g<1;29?l552900e>=50;9j04<722c?97>5;h65>5<<a==1<75f4983>>o59l0;66g=1g83>>ie?3:17b:;:188yg7dj3:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3ae?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?md;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;in7>5d;294~"e03h>7E<=1:J15g=n;90;66g<1;29?l552900e>=50;9j04<722c?97>5;h65>5<<a==1<75f4983>>o59l0;66g=1g83>>ie?3:17b:;:188yg7ek3:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3aa?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?mf;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;h<7>5d;294~"e03h>7E<=1:J15g=n;90;66g<1;29?l552900e>=50;9j04<722c?97>5;h65>5<<a==1<75f4983>>o59l0;66g=1g83>>ie?3:17b:;:188yg7d93:1h7>50z&a<?d23A89=6F=1c9j75<722c8=7>5;h11>5<<a:91<75f4083>>o3=3:17d:9:188m11=831b854?::k15`<722c9=k4?::ma3?6=3f>?6=44}c3`6?6=l3:1<v*m8;`6?M4592B9=o5f3183>>o493:17d==:188m65=831b8<4?::k71?6=3`>=6=44i5594?=n<10;66g=1d83>>o59o0;66am7;29?j232900qo?l3;29`?6=8r.i47l:;I015>N59k1b?=4?::k05?6=3`996=44i2194?=n<80;66g;5;29?l212900e9950;9j0=<722c9=h4?::k15c<722ei;7>5;n67>5<<uk;i<7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3bb?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;ji7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3b`?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;jo7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3bf?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;jm7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3b=?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;j47>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3a<?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;i;7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3a2?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;i97>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3a0?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;i?7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3a6?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;i=7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3b3?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;j:7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c021?6=;3:1<v*m8;43?M4592B9=o5+5`824>o2>3:17d;8:188kdb=831vn?>n:180>5<7s-h36;>4H302?M46j2.>m7??;h75>5<<a<=1<75`ae83>>{e91=1<7=50;2x g>=>91C>??4H33a?!3f28i0e8850;9j12<722ejh7>5;|`233<72:0;6=u+b9854>N5:81C><l4$4c95f=n=?0;66g:7;29?jgc2900qo?;8;297?6=8r.i478?;I015>N59k1/9l4>c:k62?6=3`?<6=44o`f94?=zjj>1<7=50;2x g>=>91C>??4H33a?!3f28i0e8850;9j12<722ejh7>5;|``7?6=;3:1<v*m8;43?M4592B9=o5+5`82g>o2>3:17d;8:188kdb=831vnn<50;194?6|,k21:=5G2338L77e3-?j6<m4i4494?=n=>0;66and;29?xdem3:1?7>50z&a<?073A89=6F=1c9'1d<6k2c>:7>5;h74>5<<ghn1<75rbcf94?5=83:p(o65619K677<@;;i7);n:0a8m00=831b9:4?::mb`?6=3thio7>53;294~"e03<;7E<=1:J15g=#=h0:o6g:6;29?l302900clj50;9~f455290?6=4?{%`;>34<@;8:7E<>b:&6e?443`?=6=44i4594?=n=10;66and;29?xd6010;694?:1y'f=<1:2B9><5G20`8 0g=:81b9;4?::k63?6=3`?36=44o`f94?=zj8>26=4;:183\7f!d?2?80D?<>;I02f>"2i38:7d;9:188m01=831b954?::mb`?6=3th:?44?:483>5}#j10=?6F=209K64d<,<k1?l5f5783>>o2?3:17d;7:188m0?=831dmi4?::\7fa5=?=83?1<7>t$c:926=O:;;0D??m;%7b>74<a<<1<75f5683>>o203:17d;6:188kdb=831vn<:n:186>5<7s-h36;=4H302?M46j2.>m7<=;h75>5<<a<=1<75f5983>>o213:17bok:188yg74=3:197>50z&a<?043A89=6F=1c9'1d<582c>:7>5;h74>5<<a<21<75f5883>>ifl3:17pl>2d83>1<729q/n5492:J164=O:8h0(8o5e:k62?6=3`?<6=44i4:94?=him0;66sm16594?3=83:p(o65629K677<@;;i7);n:0`8m00=831b9:4?::k6<?6=3`?26=44o`f94?=zj82:6=4<:183\7f!d?2?:0D?<>;I02f>"2i3h0e8850;9j12<722ejh7>5;|`26a<72<0;6=u+b9857>N5:81C><l4$4c9`>o2>3:17d;8:188m0>=831b944?::mb`?6=3th:>k4?:283>5}#j10=<6F=209K64d<,<k1=n5f5783>>o2?3:17bok:188yg70;3:1?7>50z&a<?073A89=6F=1c9'1d<502c>:7>5;h74>5<<ghn1<75rb037>5<4290;w)l7:728L7463A8:n6*:a;0;?l312900e8950;9lea<722wink4?:283>5}#j10=<6F=209K64d<,<k1=n5f5783>>o2?3:17bok:188ygd>29086=4?{%`;>36<@;8:7E<>b:&6e?7d3`?=6=44i4594?=him0;66sm10c94?3=83:p(o65629K677<@;;i7);n:058m00=831b9:4?::k6<?6=3`?26=44o`f94?=zj8>;6=4::183\7f!d?2?90D?<>;I02f>"2i38>7d;9:188m01=831b954?::k6=?6=3fko6=44}c375?6==3:1<v*m8;40?M4592B9=o5+5`81e>o2>3:17d;8:188m0>=831b944?::mb`?6=3th::;4?:483>5}#j10=?6F=209K64d<,<k1>l5f5783>>o2?3:17d;7:188m0?=831dmi4?::\7fa531=83?1<7>t$c:926=O:;;0D??m;%7b>7g<a<<1<75f5683>>o203:17d;6:188kdb=831vn<87:186>5<7s-h36;=4H302?M46j2.>m7<n;h75>5<<a<=1<75f5983>>o213:17bok:188yg71=3:197>50z&a<?043A89=6F=1c9'1d<312c>:7>5;h74>5<<a<21<75f5883>>ifl3:17pl>3e83>0<729q/n5493:J164=O:8h0(8o52`9j13<722c>;7>5;h7;>5<<a<31<75`ae83>>{e9?o1<7;50;2x g>=>:1C>??4H33a?!3f2;n0e8850;9j12<722c>47>5;h7:>5<<ghn1<75rb007>5<2290;w)l7:718L7463A8:n6*:a;18m00=831b9:4?::k6<?6=3`?26=44o`f94?=zjj:1<7:50;2x g>=>;1C>??4H33a?!3f2;h0e8850;9j12<722c>47>5;ncg>5<<ukhj6=4;:183\7f!d?2?80D?<>;I02f>"2i38i7d;9:188m01=831b954?::mb`?6=3th:>;4?:483>5}#j10=?6F=209K64d<,<k1>n5f5783>>o2?3:17d;7:188m0?=831dmi4?::\7fa57e=83?1<7>t$c:926=O:;;0D??m;%7b>1c<a<<1<75f5683>>o203:17d;6:188kdb=831vn<<m:186>5<7s-h36;=4H302?M46j2.>m784i4494?=n=>0;66g:8;29?l3>2900clj50;9~f40d290>6=4?{%`;>35<@;8:7E<>b:&6e?253`?=6=44i4594?=n=10;66g:9;29?jgc2900qo?9b;297?6=8r.i478?;I015>N59k1/9l4m;h75>5<<a<=1<75`ae83>>{e9;91<7;50;2x g>=>:1C>??4H33a?!3f2<1b9;4?::k63?6=3`?36=44i4;94?=him0;66sm16294?3=83:p(o65629K677<@;;i7);n:0g8m00=831b9:4?::k6<?6=3`?26=44o`f94?=zj8=:6=4::183\7f!d?2?90D?<>;I02f>"2i39?7d;9:188m01=831b954?::k6=?6=3fko6=44}c35b?6==3:1<v*m8;40?M4592B9=o5+5`802>o2>3:17d;8:188m0>=831b944?::mb`?6=3th::94?:583>5}#j10=>6F=209K64d<,<k1>95f5783>>o2?3:17d;7:188kdb=831vn<=j:186>5<7s-h36;=4H302?M46j2.>m7;>;h75>5<<a<=1<75f5983>>o213:17bok:188yg7513:197>50z&a<?043A89=6F=1c9'1d<3;2c>:7>5;h74>5<<a<21<75f5883>>ifl3:17pl>2983>0<729q/n5493:J164=O:8h0(8o51e9j13<722c>;7>5;h7;>5<<a<31<75`ae83>>{e9?n1<7;50;2x g>=>:1C>??4H33a?!3f2;o0e8850;9j12<722c>47>5;h7:>5<<ghn1<75rbb394?3=83:p(o65629K677<@;;i7);n:0d8m00=831b9:4?::k6<?6=3`?26=44o`f94?=zjkh1<7;50;2x g>=>:1C>??4H33a?!3f28l0e8850;9j12<722c>47>5;h7:>5<<ghn1<75rb003>5<3290;w)l7:708L7463A8:n6*:a;a8m00=831b9:4?::k6<?6=3fko6=44}c3b0?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;>o7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c3:b?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;j=7>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c36a?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;>47>55;294~"e03>h7E<=1:J15g=#=h097d=6:188m6d=831b?i4?::k75?6=3fh?6=44}c36e?6==3:1<v*m8;6`?M4592B9=o5+5`81?l5>2900e>l50;9j7a<722c?=7>5;n`7>5<<uk;3:7>52;294~"e03?i7E<=1:J15g=n=<0;66and;29?xd6<>0;6?4?:1y'f=<2j2B9><5G20`8m03=831dmi4?::\7fa54?=83<1<7>t$c:921=O:;;0D??m;%7b>4d<a<<1<75f5683>>o203:17d;6:188k0b=831dmi4?::\7fa540=8391<7>t$c:924=O:;;0D??m;%7b>7><a<<1<75f5683>>i2l3:17pl>7483>3<729q/n5494:J164=O:8h0(8o5269j13<722c>;7>5;h7;>5<<a<31<75`5e83>>ifl3:17pl>1983>3<729q/n5494:J164=O:8h0(8o5279j13<722c>;7>5;h7;>5<<a<31<75`5e83>>ifl3:17pl>6283>0<729q/n5495:J164=O:8h0(8o54:k62?6=3`?<6=44i4:94?=n=00;66a:d;29?xd6;o0;684?:1y'f=<1=2B9><5G20`8 0g=:01b9;4?::k63?6=3`?36=44i4;94?=h=m0;66sm13394?3=83:p(o65649K677<@;;i7);n:3d8m00=831b9:4?::k6<?6=3`?26=44o4f94?=z{;hj6=49{_0ae>;6;;0>463>3886=>;6;<0>563>2d862>;6:m0>:6s|22094?7dsW8886P=289]6f4<V;i;7S<=8:\1fa=Y:1n0R?m>;_0;a>X51l1U>>?4^313?[45n2T9>h5Q23f897452<901??>:53897612=;01???:538976a2=;01?>j:538977>2=;01??7:538947e2k901<?l:c18947c2k901<?j:c18947a2k90q~<mc;297~X5jj16><?5b29>650=j:1v\7f?6;:181\7f[4?<27:?:4m4:\7fp6f`=839pR?mi;<3;5?3134;=87;9;|q1e`<72<>pR?oj;<03<?5>348;;7=6;<032?5>348:<7=6;<03b?5>348;i7=6;<30f?5>34;:n7=6;<32g?5>34;:h7=6;<32a?5>34;:j7=6;<363?5>34;>57=6;<36f?5>34;>h7=6;<37b?5>34;>>7=6;<364?5>34;>=7=6;<d1>6?<5o;1?452f180=>;bn39270??d;1:?877k39270??b;1:?877i39270??5;1:?877<39270??3;1:?877:39270j8:2;89a0=;016h84<9:?g0?5>34;8?7=6;<304?5>34;8m7=6;<303?5>34;8:7=6;<3e6?5>34;m?7=6;<3e`?5>34;mi7=6;<3eb?5>348;<7=6;<035?5>348;>7=6;<037?5>348;87=6;<3e0?5>34;m97=6;<3e2?5>34;m;7=6;<3e<?5>34;m57=6;<3ee?5>34;mn7=6;<3eg?5>34;i<7=6;<3bb?5>34;ji7=6;<3b`?5>34;jo7=6;<3bf?5>34;jm7=6;<3b=?5>34;j47=6;<3a<?5>34;i;7=6;<3a2?5>34;i97=6;<3a0?5>34;i?7=6;<3a6?5>34;i=7=6;<3b3?5>34;j:7=6;<36g?5>34;>i7=6;<36<?5>34;>m7=6;|q1<d<72;qU>5o4=042>g2<uz8h?7>53gy]6f5<5;;86>74=332>6?<5;;96>74=33:>6?<5;;36>74=042>6?<58<;6>74=0;f>6?<58k;6>74=0c1>6?<58k86>74=0;:>6?<58336>74=0;4>6?<583=6>74=05:>6?<58=j6>74=05a>6?<58=h6>74=05g>6?<582n6>74=0:e>6?<583;6>74=0;2>6?<5ji1?452cc80=>;di39270m6:2;89`1=;016i;4<9:?f1?5>34o?6>74=ed97<=:ll08563kd;1:?8bd2:301kj5389>bf<4127mn7=6;<db>6?<58i>6??j;<3a=?46m27:o94=1d9>5f0=:8o01<m8:33f?87di38:i63>c9815`=:9j31><k4=0aa>77b34;im7<>e:?2fa<59l16=ol520g894dd2;;n70?me;02a>;6jo09=h521b2964c<58i:6??j;<3`6?46m27:o>4=1d9>5d2=;016=4h5389>5d7=;01v\7f?mj:181\7f[4d027:;i4m4:\7fp6fe=838pR?m8;<34g?d33ty9oo4?:3y]6f0<58=i6o:4}r0`e?6=:rT9o85216c9f1=z{;i26=4={_0`0>;6?00i86s|26;94?4|V;<=70?m0;`7?xu5?>0;6?uQ277894ga2k>0q~<86;296~X5>=16=lk5b59~w7122909wS<93:?2ea<e<2wx>::50;0xZ70534;jo7l;;|q136<72;qU>;?4=0ca>g2<uz8<>7>52z\125=:9hk1n95rs352>5<5sW8>j63>a88a0>{t:>:1<7<t^37f?87f03h?7p}=8383>7}Y:?o01<l7:c68yv4?93:1>vP=6e9>5g1=j=1v\7f?6?:181\7f[41k27:n;4m4:\7fp62`=838pR?8m;<3a1?d33ty9;h4?:3y]63g<58h?6o:4}r04`?6=:rT9:4521c19f1=z{;=h6=4={_05<>;6j;0i86s|26`94?4|V;<<70?m1;`7?xu5?h0;6?uQ24f894g02k>0q~<9f;296~X5=j16=l85b59~w7d>2909wS<m3:?25c<e<2wx>o950;0xZ7d534;:i7l;;|q1f3<72;qU>o?4=03g>g2<uz8i97>52z\1f5=:98i1n95rs3`7>5<5sW8jj63>1c8a0>{t:<81<7<t^31e?87d;3>:7p}=5183>7}Y::o01<m=:538yv43n3:1>vP=3e9>5f7=<81v\7f?:j:181\7f[44k27:o=4;1:\7fp61b=838pR?=m;<3ab?263ty98n4?:3y]66g<58hn69?4}r07f?6=:rT9?4521cf904=z{;>j6=4={_00<>;6jj0?=6s|25;94?4|V;9<70?mb;62?xu5=k0;6?uQ255894df2=;0q~<:a;296~X5<?16=nl5409~w73>2909wS<;5:?2gd<392wx>8650;0xZ72334;h57:>;|q112<72;qU>9=4=0a;>17<uz8>:7>52z\107=:9j=18<5rs376>5<5sW8?=63>c7875>{t:<>1<7<t^363?87d=3>:7p}=5283>7}Y::<01<m;:538yv4303:1>vP=349>5g?=<81v\7f?>8:180\7f84703>:70<?7;`7?847>39i7p}=0983>7}::921n95221c913=z{;;96=4<{<027?26348:=7=m;<026?d33ty9=>4?:3y>645=j=16><;5579~w7612908w0<?7;62?847>3h?70<?a;74?xu5980;6>u22039f1=::8818<52207912=z{;:26=4;{<024?d4348;j7l<;<03a?d4348;m7ok;|q14a<728ip1???:c68945e2k901<?m:2f8947d2:n01<?k:2f8947b2:n01<?i:2f894302:n01<;6:2f8943e2:n01<;k:2f8942a2k901<;=:2f894372:n01<;>:2f894542:n01<=?:2f8945f2:n01<=8:c1894512k901<<;:458944d2<=01<<<:4;894472<=01<;l:2f8943b2:n01<;7:2f8943f2:n0q~<?c;2954}::9l1n952f380`>;a939o70h?:2f89``=;m16==j53e9>55e=;m16==l53e9>55g=;m16==;53e9>552=;m16===53e9>554=;m16h:4<d:?g2?5c34n>6>j4=e697a=z{;:i6=4=7z?14`<e<27:j?4<d:?2b6<4l27:ji4<d:?2b`<4l27:jk4<d:?145<4l279<<4<d:?147<4l279<>4<d:?141<4l27:j94<d:?2b0<4l27:j;4<d:?2b2<4l27:j54<d:?2b<<4l27:jl4<d:?2bg<4l27:jn4<d:?2f5<4l27:mk4<d:?2e`<4l27:mi4<d:?2ef<4l27:mo4<d:?2ed<4l27:m44<d:?2e=<4l27:n54<d:?2f2<4l27:n;4<d:?2f0<4l27:n94<d:?2f6<4l27:n?4<d:?2f4<4l27:m:4<d:?2e3<4l2wx><:50;1x977>2k901??7:c1897722hn0q~<>7;2952}::831n9521739f6=:9?:1n>5218g97a=:9h:1?i521`097a=:9h91?i5218;97a=:9021?i5218597a=:90<1n>5216;97a=:9>k1?i5216`97a=:9>i1?i5216f97a=:91o1?i5219d9f6=:90:1?i5218397a=:9h>1?i5218d97a=:9h;1?i5rs335>5<69r79=54m4:?`g?5c34ii6>j4=bc97a=:k008h63j7;1g?8c12:n01h;53e9>a1<4l27oj7=k;<ff>6b<5mn1?i52db80`>;al39o70hl:2f89cd=;m16jl4<d:\7fp56e=838p1<=m:538945b2hn0q~?<b;297~;6;k0i863>34862>;6:m0>;6s|13294?4|58;i69?4=003>db<uz;9>7>52z?25f<3927:>94nd:\7fp573=838p1<?k:53894412hn0q~?=7;296~;69l0?=63>298b`>{t9;k1<7<t=03e>17<588i6lj4}r36b?6=:8q6=8953c9>50?=;k16=8l53c9>50b=;k16=9h53c9>504=;k16=8>53c9>507=;k16=k<53c9>5c5=;k16=kj53c9>5cc=;k16=kh53c9>656=;k16>=?53c9>654=;k16>==53c9>652=;k16=k:53c9>5c3=;k16=k853c9>5c1=;k16=k653c9>5c?=;k16=ko53c9>5cd=;k16=km53c9>57b=im16=>k5599>50e=;k16=8k53c9>50>=;k16=8o53c9~w42e2903w0?:7;62?873n3h?70?;8;74?87313?370?;a;7;?87393?=70?:8;62?873?3?>7p}>5283>40|58?<6o:4=0a6>13<58h269;4=0a7>13<58i=69;4=0a4>13<58ij69;4=0a;>13<58i269;4=0aa>13<58hj69;4=0`g>13<58hi69;4=0``>13<58hn69;4=0`e>13<58i;69;4=0a2>13<58i969;4=0a0>13<5ko19:5213391<=z{8>h6=48{<36=?2634;><7l;;<37<?3134;?57;8;<37e?3034;8h7;7;<36e?263ty:994?:04x943>2k>01<m::54894d>2=<01<m;:54894e12=<01<m8:54894ef2=<01<m7:54894e>2=<01<mm:54894df2=<01<lk:54894de2=<01<ll:54894db2=<01<li:54894e72=<01<m>:54894e52=<01<m<:5489gc==?16ni4:7:\7fp51b=83<p1<;m:53894362k>01<:6:448942f2<301<=k:448943d2=;0q~?:5;295=}:9<h1n9521b7902=:9k318:521b6902=:9j<18:521b5902=:9jk18:521b:902=:9j318:521b`902=:9kk18:521cf902=:9kh18:521ca902=:9ko18:521cd902=:9j:18:521b3902=:9j818:521b1902=:jm0>:63mc;74?876i3?<70?=9;74?xu6<l0;68u214f904=:9<81n95215c913=:9=;1955214g904=z{8?=6=4>8z?21a<e<27o;7:>;<3`1?2?34;i57:7;<3`0?2?34;h:7:7;<3`3?2?34;hm7:7;<3`<?2?34;h57:7;<3`f?2?34;im7:7;<3a`?2?34;in7:7;<3ag?2?34;ii7:7;<3ab?2?34;h<7:7;<3`5?2?34;h>7:7;<3`7?2?34hh6884=00;>01<589m6894}r356?6=;r7::<4;1:?225<3927::84nd:\7fp536=839p1<8?:c6894>62<=01<8<:458yv7f=3:1>>u218g97g=:9h:1?o521`097g=:9h91?o5218;97g=:9021?o5218597g=:90<1?o5219g97g=:91l1?o5218297g=:90;1?o521b7964`<58h26??i;<3`0?46n27:o;4=1g9>5f1=:8l01<mn:33e?87d038:j63>c8815c=:9jh1><h4=0`b>77a34;ih7<>f:?2fg<59o16=om520d894db2;;m70?mf;02b>;6k909=k521b3964`<58i96??i;<3`7?46n27:4<4nd:?2e1<4j27:5k4<b:?2e4<4j2wx=4<50;6x94?b2=;01<79:c6894012<201<7i:538yv7>i3:1=5u218g9f1=:9j?1?=521c;975=:9j>1?=521b4975=:9j=1?=521bc975=:9j21?=521b;975=:9jh1?=521cc975=:9kn1?=521c`975=:9ki1?=521cg975=:9kl1?=521b2975=:9j;1?=521b0975=:9j91?=52164913=:k=0>;63>7686=>;6>m0>56s|18194?2|58k;69?4=0;4>g2<58<=6884=0c2>17<uz;2n7>519y>5d6=j=16=n;5309>5g?=;816=n:5309>5f0=;816=n95309>5fg=;816=n65309>5f?=;816=nl5309>5gg=;816=oj5309>5gd=;816=om5309>5gc=;816=oh5309>5f6=;816=n?5309>5f4=;816=n=5309>g1<2>27h?7;8;<343?3?34;=h7;8;|q2=1<72:q6=l<5409>5<>=j=16=;95599~w4?d290:mv3>a38a0>;6k<08>63>b8806>;6k=08>63>c7806>;6k>08>63>c`806>;6k108>63>c8806>;6kk08>63>b`806>;6jm08>63>bc806>;6jj08>63>bd806>;6jo08>63>c1806>;6k808>63>c3806>;6k:08>63l3;75?8e52<=01<8j:458940d2<=01<9?:4;894162<30q~?65;290~;6i:0?=63>988a0>;6>>0>:63>a5875>{t90n1<7?7{<3b7?d334lo69?4=0a6>65<58h26>=4=0a7>65<58i=6>=4=0a4>65<58ij6>=4=0a;>65<58i26>=4=0aa>65<58hj6>=4=0`g>65<58hi6>=4=0``>65<58hn6>=4=0`e>65<58i;6>=4=0a2>65<58i96>=4=0a0>65<5j819;5216291==:9>;1955rs0:g>5<3s4;257:>;<3:5?d334;357;9;<35<?313ty:4n4?:4y>5<>=<816=4>5b59>5=>==?16=575599>535==?1v\7f<6m:185\7f87>?3>:70?7f;`7?87??3?=70?78;74?87?13?270?98;7;?xu60h0;6:u2184904=:91o1n952195912=:9121955219;912=:9?>19:52194910=z{8=36=4={<34=?2634;<:7ok;|q23`<72;q6=:o5409>53b=im1v\7f<9i:181\7f870j3>:70?9e;cg?xu6090;6?u216a904=:9?l1mi5rs04b>5<5s4;<h7:>;<35f?gc3ty:4?4?:3y>5=c=<816=585ae9~w4>42909w0?7f;62?87??3ko7p}>8583>7}:90:18<5219:9ea=z{82>6=4={<3:5?2634;357ok;|q206<72;q6=9h5409>511=im1v\7f<:9:181\7f872:3>:70?;a;cg?xu6<=0;6?u2142904=:9=21mi5rs066>5<5s4;>=7:>;<37=?gc3tyn?7>55z?`g?2634o<6o:4=c;912=:jh0>;63mb;74?xud03:1:v3lc;`7?870;3?<70?97;74?87103?<70?80;75?87093?=7p}ld;296~;dj3>:70l6:`f8yve0290<w0mm:c6894002<301<8j:448940d2<<01<9?:45894162<=01<8<:4:8yveb2909w0mn:5389gg=im1v\7fn850;4x9fg=j=16=:95579>530==>16=;65589>53b==?16=:;5599~wf`=838p1n75409>fg<fl2wxo84?:6y>g<<e<27:;;4:7:?232<2?27::;4:9:?221<2027::i4:8:?230<212wx==750;7x9c4=<816==j5b59>fc<2?27h<7;8;<a2>01<uzon6=4:{<d1>g2<58>:6874=00;>00<58;=6894=01e>00<uzl86=4={<d2>17<5kl1mi5rsdf94?3|5o;1n952106912=:98k19;5212f912=:9;319;5rsg694?4|5o:18<52c18b`>{tmj0;68u2f18a0>;6<90>463>3e86=>;6900>463>19862>{tn<0;6?u2eg875>;d93ko7p}jb;292~;bn3h?70?;0;7:?87393?<70?>9;7:?87603?<70?=1;7;?xu6880;6?u211f904=:99?1n95rs023>5<5s4;;o7:>;<330?d33ty:<54?:5y>55e=j=16nk4:6:?`4?3134i:6884}rde>5<5s4;;n7:>;<337?d33ty:<:4?:2y>55d=j=16o=4:8:?`5?3?3tymi7>52z?24d<3927:<?4m4:\7fp550=838p1<>n:c689f7==01v\7fil50;0x9`1=<816hk4m4:\7fp`d<72;q6i;4;1:?ga?d33tyn>7>54z?f2?d334h26884=cc913=:jk0>:6s|d883>7}:m<0?=63kd;`7?xub93:1?v3j5;`7?8df2<201ol5599~wa>=838p1h:5409>`f<e<2wxi=4?:3y>a1<e<27in7;6;|qe=?6=:r7:<84;1:?e`?d33tym47>52z?241<3927mo7l;;|qe3?6=:r7:<>4;1:?ef?d33tym:7>52z?247<3927mm7l;;|qg7?6=:r7oj7:>;<f4>g2<uzn96=4={<ff>17<5m<1n95rse394?4|5mn18<52d48a0>{tl90;6?u2db875>;c<3h?7p}j8;296~;c>3>:70ll:`f8yvc>2909w0j::5389gb=im1v\7fho50;0x9a2=<816nh4nd:\7fp55c=838p1km5409>g7<fl2wx==h50;0x9cd=<816o>4nd:\7fp546=838p1ko5409>g1<fl2wx=>:50;0x94542=;01<=::`f8yv74;3:15v3>328a0>;6;;0>;63>3886<>;6;<0>463>2d86<>;6:m0>563>2g863>;6::0>;63>20863>{t9:;1<7=t=013>17<589j69?4=011>db<uz;8<7>59z?275<e<27:??4:6:?27<<2?27:?84:7:?26`<2?27:>i4:8:?26c<2>27:>>4:6:?264<2>2wx=>o50;7x945f2k>01<<;:448944d2<<01<<<:4:894472<<0q~?<8;297~;6;>0?=63>37875>;6;00jh6s|12494?4|589=6o:4=01:>00<uz;ho7>52z?2b7<3927:n44;4:\7fp5a`=838p1<h=:c6894g12=;0q~?k6;296~;6n:0?=63>c5870>{t9l31<7<t=0d0>g2<58k<69?4}r3g3?6=:r7:ji4;1:?2g0<3<2wx=ho50;0x94`c2k>01<l>:538yv7c03:1>v3>fd875>;6k?0?86s|1d`94?4|58ln6o:4=0`1>17<uz;o57>52z?2bc<3927:o:4;4:\7fp5`e=838p1<hi:c6894d42=;0q~?ka;296~;5890?=63>c9870>{t9ln1<7<t=323>g2<58h?69?4}r3gf?6=:r79<<4;1:?2g<<3<2wx=hk50;0x97662k>01<l::538yv7ck3:1>v3=03875>;6kh0?86s|1dd94?4|5;:96o:4=0`5>17<uz;oh7>52z?146<3927:oo4;4:\7fp5c6=838p1?><:c6894d02=;0q~?ke;296~;58=0?=63>b`870>{t9o;1<7<t=327>g2<58h369?4}r3``?6=:r7:j94;1:?2fg<3<2wx=h>50;0x94`32k>01<o7:538yv7dm3:1>v3>f4875>;6jj0?86s|1d394?4|58l>6o:4=0c:>17<uz;hj7>52z?2b3<3927:ni4;4:\7fp5`4=838p1<h9:c6894gf2=;0q~?k0;296~;6n>0?=63>bd870>{t9l91<7<t=0d4>g2<58ki69?4}r3g5?6=:r7:j54;1:?2fc<3<2wx=h:50;0x94`?2k>01<ol:538yv7c:3:1>v3>f8875>;6k90?86s|1d794?4|58l26o:4=0cg>17<uz;o?7>52z?2bd<3927:o<4;4:\7fp5`0=838p1<hn:c6894gb2=;0q~?k4;296~;6nk0?=63>c3870>{t9l=1<7<t=0da>g2<58km69?4}r3g1?6=:r7:jn4;1:?2g6<3<2wx=h650;0x94`d2k>01<l?:538yv47=3:1=9u21c297g=:9hl1?o521`g97g=:9hn1?o521`a97g=:9hh1?o521`c97g=:9h31?o521`:97g=:9k21?o521c597g=:9k<1?o521c797g=:9k>1?o521c197g=:9k81?o521c397g=:9h=1?o521`497g=:9;o1mi5rs04:>5<3s4;<;7ok;<35a?3>34;=n7;9;<35b?3>3ty:8?4?:2y>57`=im16=?:5599>57d==?1v\7f<o;:181\7f870;3?=70?n4;`7?xu6?;0;6?u21619ea=:9?i1955rs07`>5<5s4;:87;9;<36g?d33ty:=>4?:5y>542=im16=?85579>57e==116=>h5599~w4722909w0?>a;7;?876>3?o7p}>1683>1}:98k1945213491==:9;31955210:9ea=z{8;:6=4={<32e?gc34;9n7;6;|q21=<72=q6=9>5579>50>=j=16=<75569>54>==11v\7f<;n:187\7f87383?<70?:a;`7?87613?=70?>8;7:?xu6<90;6?u21529ea=:9:l1945rs062>5<5s4;?=7ok;<30a?303ty::;4?:3y>530=im16=;;5579~w4002909w0?97;cg?871=3?<7p}>6983>7}:9?21mi5217791==z{8<86=4={<351?3>34;=?7;k;|q4<?6=:r7:?i4nd:?27`<2>2wx=::50;1x940b2<201<8i:44894122hn0q~?>2;290~;6:=0>563>27863>;6:k0>;63>188b`>{t>00;6>u213491<=:9;91mi5213:91==z{191<7<t=00`>0?<58;368j4}r5:>5<5s4;9o7ok;<31f?3?3ty3>7>52z?22f<2127:;84:d:\7fp3d<72;q6=;m5ae9>53d==>1v\7f:l50;0x94172hn01<8i:4:8yv1d2909w0?81;cg?871n3?<7p}8d;296~;6>=0jh63>6286=>{t?l0;6?u212g91<=:9:l19i5rs9394?4|58826874=03:>0b<uz=m6=4={<31=?gc34;947;6;|q;4?6=:r7:>=4:8:?264<2l2wx=4h50;0x94?a2k>01<9::448yv7f93:1>v3>a08a0>;6?<0>;6s|14g94?4|58?n6o:4=035>00<uty99?4?:3y]66`<5:=1>>h4$33b>=?<uz8><7>52z\17`=:;>09?h5+20c9=5=z{;>m6=4={_00`>;4?388h6*=1`8:f>{t:=o1<7<t^31`?8502;9h7)<>a;c1?xu5<m0;6?uQ22`8961=::h0(??n:7;8yv43k3:1>vP=3`9>72<5;h1/><o56c9~w72e2909wS<<9:?03?4412.9=l49c:\7fp61g=838pR?=7;<14>75?3-8:m78k;|q10<<72;qU>>94=259661<,;;j6;k4}r06f?6=:rT98:52368102=#:8k1:k5rs37b>5<5sW8?:63<7;072>"59h0<<6s|24;94?4|V;>>70=8:366?!46i3=:7p}=5983>7}Y:=>01>952568 77f2>80q~<:7;296~X5<:16?:4=429'64g=?:1v\7f?;9:181\7f[43:278;7<;2:&15d<0<2wx>8;50;0xZ726349<6?:>;%02e?123ty9994?:3y]616<5:=1>9>4$33b>20<uz8>?7>52z\173=:;>09?;5+20c932=z{;>36=4={_001>;4?38896*=1`84<>{t:ho1<7<t^3cf?8502;kn7)<>a;:7?xu5jh0;6?uQ2cc8961=:kk0(??n:978yv4ek3:1>vP=bb9>72<5jj1/><o5879~w7e42909wS<l3:?03?4d;2.9=l477:\7fp6f`=838pR?mi;<14>7ea3-8:m767;|q13<<72;qU>;84=259630<,;;j65o4}r043?6=:rT9:852368120=#:8k14o5rs355>5<5sW8=863<7;050>"59h03o6s|26794?4|V;<870=8:340?!46i32o7p}=7583>7}Y:?801>952708 77f21o0q~<83;296~X5>816?:4=609'64g=0o1v\7f?9=:181\7f[418278;7<90:&15d<>92wx>:?50;0xZ73a349<6?;i;%02e??53ty9;=4?:3y]60c<5:=1>8k4$33b><5<uz83>7>52z\12`=:;>09:h5+20c9=1=z{;2:6=4={_05`>;4?38=h6*=1`8:1>{t:1:1<7<t^34`?8502;<h7)<>a;;5?xu5?o0;6?uQ27`8961=:?h0(??n:858yv40m3:1>vP=6`9>72<5>h1/><o5999~w71c2909wS<99:?03?4112.9=l469:\7fp62e=838pR?87;<14>70?3-8:m77n;|q13g<72;qU>;94=259631<,;;j64m4}r04e?6=:rT99i5236811a=#:8k15i5rs34e>5<5sW8>o63<7;06g>"59h02i6s|29694?4|V;2?70=8:3:7?!46i33m7p}=8`83>7}Y:1k01>9529c8 77f2h:0q~<m9;296~X5j:16?:4=b29'64g=i81v\7f?l8:181\7f[4e:278;7<m2:&15d<f;2wx>o850;0xZ7d6349<6?l>;%02e?g33ty9n84?:3y]6g6<5:=1>o>4$33b>d3<uz8i87>52z\1ec=:;>09mk5+20c9e3=z{;in6=4={_0`<>;4?38h46*=1`8b3>{t:ji1<7<t^3a4?8502;i<7)<>a;c;?xu5kk0;6?uQ2b48961=:j<0(??n:`;8yv4di3:1>vP=c49>72<5k<1/><o5a`9~w7e>2909wS<l4:?03?4d<2.9=l49a:\7f~j3d22909wE<>b:\7fm2g0=838pD??m;|l5f2<72;qC><l4}o4a<?6=:rB9=o5rn7`:>5<5sA8:n6sa6cc94?4|@;;i7p`9bc83>7}O:8h0qc8mc;296~N59k1vb;lk:181\7fM46j2we:ok50;0xL77e3td=nk4?:3yK64d<ug<h<7>52zJ15g=zf?i:6=4={I02f>{i>j81<7<tH33a?xh1k:0;6?uG20`8yk0d<3:1>vF=1c9~j3e22909wE<>b:\7fm2f0=838pD??m;|l5g2<72;qC><l4}o4`<?6=:rB9=o5rn7a:>5<5sA8:n6sa6bc94?4|@;;i7p`9cc83>7}O:8h0qc8lc;296~N59k1vb;mk:181\7fM46j2we:nk50;0xL77e3td=ok4?:3yK64d<ug<o<7>52zJ15g=zf?n:6=4={I02f>{i>m81<7<tH33a?xh1l:0;6?uG20`8yk0c<3:1>vF=1c9~j3b22909wE<>b:\7fm2a0=838pD??m;|l5`2<72;qC><l4}o4g<?6=:rB9=o5rn7f:>5<5sA8:n6sa6ec94?4|@;;i7p`9dc83>7}O:8h0qc8kc;296~N59k1vb;jk:181\7fM46j2we:ik50;0xL77e3td=hk4?:3yK64d<ug<n<7>52zJ15g=zf?o:6=4={I02f>{i>l81<7<tH33a?xh1m:0;6?uG20`8yk0b<3:1>vF=1c9~j3c22909wE<>b:\7fm2`0=838pD??m;|l5a2<72;qC><l4}o4f<?6=:rB9=o5rn7g:>5<5sA8:n6sa6dc94?4|@;;i7p`9ec83>7}O:8h0qc;l8;295~N59k1vb8hi:182\7fM46j2we:=>50;3xL77e3td=<<4?:0yK64d<ug<;>7>51zJ15g=zf?:86=4>{I02f>{i>9>1<7?tH33a?xh18<0;6<uG20`8yk07>3:1=vF=1c9~j360290:wE<>b:\7fm25>=83;pD??m;|l54<<728qC><l4}o43e?6=9rB9=o5rn72a>5<6sA8:n6sa61a94?7|@;;i7p`90e83>4}O:8h0qc8?e;295~N59k1vb;>i:182\7fM46j2we:<>50;3xL77e3td==<4?:0yK64d<ug<:>7>51zJ15g=zf?;86=4>{I02f>{i>8>1<7?tH33a?xh19<0;6<uG20`8yk06>3:1=vF=1c9~j370290:wE<>b:\7fm24>=83;pD??m;|l55<<728qC><l4}o42e?6=9rB9=o5rn73a>5<6sA8:n6sa60a94?7|@;;i7p`91e83>4}O:8h0qc8>e;295~N59k1vb;?i:182\7fM46j2we:?>50;3xL77e3td=><4?:0yK64d<ug<9>7>51zJ15g=zf?886=4>{I02f>{i>;>1<7?tH33a?xh1:<0;6<uG20`8yk05>3:1=vF=1c9~j340290:wE<>b:\7fm27>=83;pD??m;|l56<<728qC><l4}o41e?6=9rB9=o5rn70a>5<6sA8:n6sa63a94?7|@;;i7p`92e83>4}O:8h0qc8=e;295~N59k1vb;<i:182\7fM46j2we:>>50;3xL77e3td=?<4?:0yK64d<ug<8>7>51zJ15g=zf?986=4>{I02f>{i>:>1<7?tH33a?xh1;<0;6<uG20`8yk04>3:1=vF=1c9~j350290:wE<>b:\7fm26>=83;pD??m;|l57<<728qC><l4}o40e?6=9rB9=o5rn71a>5<6sA8:n6sa62a94?7|@;;i7p`93e83>4}O:8h0qc8<e;295~N59k1vb;=i:182\7fM46j2we:9>50;3xL77e3td=8<4?:0yK64d<ug<?>7>51zJ15g=zf?>86=4>{I02f>{i>=>1<7?tH33a?xh1<<0;6<uG20`8yk03>3:1=vF=1c9~j320290:wE<>b:\7fm21>=83;pD??m;|l50<<728qC><l4}o47e?6=9rB9=o5rn76a>5<6sA8:n6sa65a94?7|@;;i7p`94e83>4}O:8h0qc8;e;295~N59k1vb;:i:182\7fM46j2we:8>50;3xL77e3td=9<4?:0yK64d<ug<>>7>51zJ15g=zf??86=4>{I02f>{i><>1<7?tH33a?xh1=<0;6<uG20`8yk02>3:1=vF=1c9~j330290:wE<>b:\7fm20>=83;pD??m;|l51<<728qC><l4}o46e?6=9rB9=o5rn77a>5<6sA8:n6sa64a94?7|@;;i7p`95e83>4}O:8h0qc8:e;295~N59k1vb;;i:182\7fM46j2we:;>50;3xL77e3td=:<4?:0yK64d<ug<=>7>51zJ15g=zf?<86=4>{I02f>{i>?>1<7?tH33a?xh1><0;6<uG20`8yk01>3:1=vF=1c9~j300290:wE<>b:\7fm23>=83;pD??m;|l52<<728qC><l4}o45e?6=9rB9=o5rn74a>5<6sA8:n6sa67a94?7|@;;i7p`96e83>4}O:8h0qc89e;295~N59k1vb;8i:182\7fM46j2we::>50;3xL77e3td=;<4?:0yK64d<ug<<>7>51zJ15g=zf?=86=4>{I02f>{i>>>1<7?tH33a?xh1?<0;6<uG20`8yk00>3:1=vF=1c9~j310290:wE<>b:\7fm22>=83;pD??m;|l53<<728qC><l4}o44e?6=9rB9=o5rn75a>5<6sA8:n6sa66a94?7|@;;i7p`97e83>4}O:8h0qc88e;295~N59k1vb;9i:182\7fM46j2we:5>50;3xL77e3td=4<4?:0yK64d<ug<3>7>51zJ15g=zf?286=4>{I02f>{i>1>1<7?tH33a?xh10<0;6<uG20`8yk0?>3:1=vF=1c9~j3>0290:wE<>b:\7fm2=>=83;pD??m;|l5<<<728qC><l4}o4;e?6=9rB9=o5rn7:a>5<6sA8:n6sa69a94?7|@;;i7p`98e83>4}O:8h0qc87e;295~N59k1vb;6i:182\7fM46j2we:4>50;3xL77e3td=5<4?:0yK64d<ug<2>7>51zJ15g=zf?386=4>{I02f>{i>0>1<7?tH33a?xh11<0;6<uG20`8yk0>>3:1=vF=1c9~j3?0290:wE<>b:\7fm2<>=83;pD??m;|l5=<<728qC><l4}o4:e?6=9rB9=o5rn7;a>5<6sA8:n6sa68a94?7|@;;i7p`99e83>4}O:8h0qc86e;295~N59k1vb;7i:182\7fM46j2we:l>50;3xL77e3td=m<4?:0yK64d<ug<j>7>51zJ15g=zf?k86=4>{I02f>{i>h>1<7?tH33a?xh1i<0;6<uG20`8yk0f>3:1=vF=1c9~j3g0290:wE<>b:\7fm2d>=83;pD??m;|l5e<<728qC><l4}o4be?6=9rB9=o5rn7ca>5<6sA8:n6sa6`a94?7|@;;i7p`9ae83>4}O:8h0qc8ne;295~N59k1vb;oi:182\7fM46j2we:o>50;3xL77e3td=n<4?:0yK64d<ug<i>7>51zJ15g=zf?h86=4>{I02f>{i>k>1<7?tH33a?x{zuIJHw:jn:6ffgc05=tJKNv>r@ARxyEF
\ No newline at end of file
diff --git a/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.v b/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.v
new file mode 100644 (file)
index 0000000..1d63338
--- /dev/null
@@ -0,0 +1,169 @@
+/*******************************************************************************
+*     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.                                                     *
+*******************************************************************************/
+// 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).
+
+// You must compile the wrapper file fifo_xlnx_16x19_2clk.v when simulating
+// the core, fifo_xlnx_16x19_2clk. When compiling the wrapper file, be sure to
+// reference the XilinxCoreLib Verilog simulation library. For detailed
+// instructions, please refer to the "CORE Generator Help".
+
+`timescale 1ns/1ps
+
+module fifo_xlnx_16x19_2clk(
+       din,
+       rd_clk,
+       rd_en,
+       rst,
+       wr_clk,
+       wr_en,
+       dout,
+       empty,
+       full,
+       rd_data_count,
+       wr_data_count);
+
+
+input [18 : 0] din;
+input rd_clk;
+input rd_en;
+input rst;
+input wr_clk;
+input wr_en;
+output [18 : 0] dout;
+output empty;
+output full;
+output [4 : 0] rd_data_count;
+output [4 : 0] wr_data_count;
+
+// synthesis translate_off
+
+      FIFO_GENERATOR_V4_3 #(
+               .C_COMMON_CLOCK(0),
+               .C_COUNT_TYPE(0),
+               .C_DATA_COUNT_WIDTH(5),
+               .C_DEFAULT_VALUE("BlankString"),
+               .C_DIN_WIDTH(19),
+               .C_DOUT_RST_VAL("0"),
+               .C_DOUT_WIDTH(19),
+               .C_ENABLE_RLOCS(0),
+               .C_FAMILY("spartan3"),
+               .C_FULL_FLAGS_RST_VAL(1),
+               .C_HAS_ALMOST_EMPTY(0),
+               .C_HAS_ALMOST_FULL(0),
+               .C_HAS_BACKUP(0),
+               .C_HAS_DATA_COUNT(0),
+               .C_HAS_INT_CLK(0),
+               .C_HAS_MEMINIT_FILE(0),
+               .C_HAS_OVERFLOW(0),
+               .C_HAS_RD_DATA_COUNT(1),
+               .C_HAS_RD_RST(0),
+               .C_HAS_RST(1),
+               .C_HAS_SRST(0),
+               .C_HAS_UNDERFLOW(0),
+               .C_HAS_VALID(0),
+               .C_HAS_WR_ACK(0),
+               .C_HAS_WR_DATA_COUNT(1),
+               .C_HAS_WR_RST(0),
+               .C_IMPLEMENTATION_TYPE(2),
+               .C_INIT_WR_PNTR_VAL(0),
+               .C_MEMORY_TYPE(2),
+               .C_MIF_FILE_NAME("BlankString"),
+               .C_MSGON_VAL(1),
+               .C_OPTIMIZATION_MODE(0),
+               .C_OVERFLOW_LOW(0),
+               .C_PRELOAD_LATENCY(0),
+               .C_PRELOAD_REGS(1),
+               .C_PRIM_FIFO_TYPE("512x36"),
+               .C_PROG_EMPTY_THRESH_ASSERT_VAL(4),
+               .C_PROG_EMPTY_THRESH_NEGATE_VAL(5),
+               .C_PROG_EMPTY_TYPE(0),
+               .C_PROG_FULL_THRESH_ASSERT_VAL(15),
+               .C_PROG_FULL_THRESH_NEGATE_VAL(14),
+               .C_PROG_FULL_TYPE(0),
+               .C_RD_DATA_COUNT_WIDTH(5),
+               .C_RD_DEPTH(16),
+               .C_RD_FREQ(1),
+               .C_RD_PNTR_WIDTH(4),
+               .C_UNDERFLOW_LOW(0),
+               .C_USE_DOUT_RST(1),
+               .C_USE_ECC(0),
+               .C_USE_EMBEDDED_REG(0),
+               .C_USE_FIFO16_FLAGS(0),
+               .C_USE_FWFT_DATA_COUNT(1),
+               .C_VALID_LOW(0),
+               .C_WR_ACK_LOW(0),
+               .C_WR_DATA_COUNT_WIDTH(5),
+               .C_WR_DEPTH(16),
+               .C_WR_FREQ(1),
+               .C_WR_PNTR_WIDTH(4),
+               .C_WR_RESPONSE_LATENCY(1))
+       inst (
+               .DIN(din),
+               .RD_CLK(rd_clk),
+               .RD_EN(rd_en),
+               .RST(rst),
+               .WR_CLK(wr_clk),
+               .WR_EN(wr_en),
+               .DOUT(dout),
+               .EMPTY(empty),
+               .FULL(full),
+               .RD_DATA_COUNT(rd_data_count),
+               .WR_DATA_COUNT(wr_data_count),
+               .CLK(),
+               .INT_CLK(),
+               .BACKUP(),
+               .BACKUP_MARKER(),
+               .PROG_EMPTY_THRESH(),
+               .PROG_EMPTY_THRESH_ASSERT(),
+               .PROG_EMPTY_THRESH_NEGATE(),
+               .PROG_FULL_THRESH(),
+               .PROG_FULL_THRESH_ASSERT(),
+               .PROG_FULL_THRESH_NEGATE(),
+               .RD_RST(),
+               .SRST(),
+               .WR_RST(),
+               .ALMOST_EMPTY(),
+               .ALMOST_FULL(),
+               .DATA_COUNT(),
+               .OVERFLOW(),
+               .PROG_EMPTY(),
+               .PROG_FULL(),
+               .VALID(),
+               .UNDERFLOW(),
+               .WR_ACK(),
+               .SBITERR(),
+               .DBITERR());
+
+
+// synthesis translate_on
+
+endmodule
+
diff --git a/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.veo b/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.veo
new file mode 100644 (file)
index 0000000..2e9af1e
--- /dev/null
@@ -0,0 +1,53 @@
+/*******************************************************************************
+*     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.                                                     *
+*******************************************************************************/
+// The following must be inserted into your Verilog file for this
+// core to be instantiated. Change the instance name and port connections
+// (in parentheses) to your own signal names.
+
+//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
+fifo_xlnx_16x19_2clk YourInstanceName (
+       .din(din), // Bus [18 : 0] 
+       .rd_clk(rd_clk),
+       .rd_en(rd_en),
+       .rst(rst),
+       .wr_clk(wr_clk),
+       .wr_en(wr_en),
+       .dout(dout), // Bus [18 : 0] 
+       .empty(empty),
+       .full(full),
+       .rd_data_count(rd_data_count), // Bus [4 : 0] 
+       .wr_data_count(wr_data_count)); // Bus [4 : 0] 
+
+// INST_TAG_END ------ End INSTANTIATION Template ---------
+
+// You must compile the wrapper file fifo_xlnx_16x19_2clk.v when simulating
+// the core, fifo_xlnx_16x19_2clk. When compiling the wrapper file, be sure to
+// reference the XilinxCoreLib Verilog simulation library. For detailed
+// instructions, please refer to the "CORE Generator Help".
+
diff --git a/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.xco b/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk.xco
new file mode 100644 (file)
index 0000000..d0f6380
--- /dev/null
@@ -0,0 +1,82 @@
+##############################################################
+#
+# Xilinx Core Generator version K.39
+# Date: Fri Sep 11 04:33:27 2009
+#
+##############################################################
+#
+#  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 = False
+SET busformat = BusFormatAngleBracketNotRipped
+SET createndf = False
+SET designentry = Verilog
+SET device = xc3s2000
+SET devicefamily = spartan3
+SET flowvendor = Other
+SET formalverification = False
+SET foundationsym = False
+SET implementationfiletype = Ngc
+SET package = fg456
+SET removerpms = False
+SET simulationfiles = Behavioral
+SET speedgrade = -5
+SET verilogsim = True
+SET vhdlsim = False
+# END Project Options
+# BEGIN Select
+SELECT Fifo_Generator family Xilinx,_Inc. 4.3
+# END Select
+# BEGIN Parameters
+CSET almost_empty_flag=false
+CSET almost_full_flag=false
+CSET component_name=fifo_xlnx_16x19_2clk
+CSET data_count=false
+CSET data_count_width=5
+CSET disable_timing_violations=false
+CSET dout_reset_value=0
+CSET empty_threshold_assert_value=4
+CSET empty_threshold_negate_value=5
+CSET enable_ecc=false
+CSET enable_int_clk=false
+CSET fifo_implementation=Independent_Clocks_Distributed_RAM
+CSET full_flags_reset_value=1
+CSET full_threshold_assert_value=15
+CSET full_threshold_negate_value=14
+CSET input_data_width=19
+CSET input_depth=16
+CSET output_data_width=19
+CSET output_depth=16
+CSET overflow_flag=false
+CSET overflow_sense=Active_High
+CSET performance_options=First_Word_Fall_Through
+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=true
+CSET read_data_count_width=5
+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=true
+CSET valid_flag=false
+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=true
+CSET write_data_count_width=5
+# END Parameters
+GENERATE
+# CRC: 60b85dda
+
diff --git a/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.lso b/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.lso
new file mode 100644 (file)
index 0000000..f1a6f78
--- /dev/null
@@ -0,0 +1,3 @@
+blkmemdp_v6_2
+blk_mem_gen_v2_6
+fifo_generator_v4_3
diff --git a/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt b/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
new file mode 100644 (file)
index 0000000..ef33fff
--- /dev/null
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<document OS="lin64" product="ISE" version="10.1.03">
+
+  <!--The data in this file is primarily intended for consumption by Xilinx tools.
+    The structure and the elements are likely to change over the next few releases.
+    This means code written to parse this file will need to be revisited each subsequent release.-->
+
+  <application stringID="Xst" timeStamp="Thu Sep 10 21:33:06 2009">
+    <section stringID="XST_HDL_SYNTHESIS_REPORT">
+      <item dataType="int" stringID="XST_RAMS" value="1"></item>
+      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item>
+      <item dataType="int" stringID="XST_COUNTERS" value="2">
+        <item dataType="int" stringID="XST_4BIT_UP_COUNTER" value="2"/>
+      </item>
+      <item dataType="int" stringID="XST_REGISTERS" value="32">
+        <item dataType="int" stringID="XST_1BIT_REGISTER" value="15"/>
+        <item dataType="int" stringID="XST_2BIT_REGISTER" value="1"/>
+        <item dataType="int" stringID="XST_3BIT_REGISTER" value="1"/>
+        <item dataType="int" stringID="XST_4BIT_REGISTER" value="11"/>
+        <item dataType="int" stringID="XST_5BIT_REGISTER" value="2"/>
+      </item>
+      <item dataType="int" stringID="XST_XORS" value="28">
+        <item dataType="int" stringID="XST_1BIT_XOR2" value="28"/>
+      </item>
+    </section>
+    <section stringID="XST_ADVANCED_HDL_SYNTHESIS_REPORT">
+      <item dataType="int" stringID="XST_FSMS" value="1"/>
+      <item dataType="int" stringID="XST_RAMS" value="1"></item>
+      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item>
+      <item dataType="int" stringID="XST_COUNTERS" value="2">
+        <item dataType="int" stringID="XST_4BIT_UP_COUNTER" value="2"/>
+      </item>
+      <item dataType="int" stringID="XST_REGISTERS" value="107">
+        <item dataType="int" stringID="XST_FLIPFLOPS" value="107"/>
+      </item>
+      <item dataType="int" stringID="XST_XORS" value="28">
+        <item dataType="int" stringID="XST_1BIT_XOR2" value="28"/>
+      </item>
+    </section>
+    <section stringID="XST_FINAL_REGISTER_REPORT">
+      <item dataType="int" stringID="XST_REGISTERS" value="126">
+        <item dataType="int" stringID="XST_FLIPFLOPS" value="126"/>
+      </item>
+    </section>
+    <section stringID="XST_PARTITION_REPORT">
+      <section stringID="XST_PARTITION_IMPLEMENTATION_STATUS">
+        <section stringID="XST_NO_PARTITIONS_WERE_FOUND_IN_THIS_DESIGN"/>
+      </section>
+    </section>
+    <section stringID="XST_FINAL_REPORT">
+      <section stringID="XST_FINAL_RESULTS">
+        <item stringID="XST_TOP_LEVEL_OUTPUT_FILE_NAME" value="/home/matt/coregen/tmp/_cg/fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc"/>
+        <item stringID="XST_OUTPUT_FORMAT" value="NGC"/>
+        <item stringID="XST_OPTIMIZATION_GOAL" value="SPEED"/>
+        <item stringID="XST_KEEP_HIERARCHY" value="no"/>
+      </section>
+      <section stringID="XST_DESIGN_STATISTICS">
+        <item stringID="XST_IOS" value="101"/>
+      </section>
+      <section stringID="XST_CELL_USAGE">
+        <item dataType="int" stringID="XST_BELS" value="66">
+          <item dataType="int" stringID="XST_GND" value="1"/>
+          <item dataType="int" stringID="XST_INV" value="2"/>
+          <item dataType="int" stringID="XST_LUT2" value="18"/>
+          <item dataType="int" stringID="XST_LUT2L" value="1"/>
+          <item dataType="int" stringID="XST_LUT3" value="8"/>
+          <item dataType="int" stringID="XST_LUT4" value="30"/>
+          <item dataType="int" stringID="XST_LUT4D" value="3"/>
+          <item dataType="int" stringID="XST_LUT4L" value="3"/>
+        </item>
+        <item dataType="int" stringID="XST_FLIPFLOPSLATCHES" value="126">
+          <item dataType="int" stringID="XST_FD" value="4"/>
+          <item dataType="int" stringID="XST_FDC" value="40"/>
+          <item dataType="int" stringID="XST_FDCE" value="62"/>
+          <item dataType="int" stringID="XST_FDP" value="10"/>
+          <item dataType="int" stringID="XST_FDPE" value="5"/>
+        </item>
+        <item dataType="int" stringID="XST_RAMS" value="19">
+          <item dataType="int" stringID="XST_RAM16X1D" value="19"/>
+        </item>
+      </section>
+    </section>
+    <section stringID="XST_DEVICE_UTILIZATION_SUMMARY">
+      <item stringID="XST_SELECTED_DEVICE" value="3s2000fg456-5"/>
+      <item AVAILABLE="20480" dataType="int" stringID="XST_NUMBER_OF_SLICES" value="96"/>
+      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_SLICE_FLIP_FLOPS" value="126"/>
+      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_4_INPUT_LUTS" value="103"/>
+      <item dataType="int" stringID="XST_NUMBER_USED_AS_LOGIC" value="65"/>
+      <item dataType="int" stringID="XST_NUMBER_USED_AS_RAMS" value="38"/>
+      <item dataType="int" stringID="XST_NUMBER_OF_IOS" value="101"/>
+      <item AVAILABLE="333" dataType="int" stringID="XST_NUMBER_OF_BONDED_IOBS" value="0"/>
+    </section>
+    <section stringID="XST_PARTITION_RESOURCE_SUMMARY">
+      <section stringID="XST_NO_PARTITIONS_WERE_FOUND_IN_THIS_DESIGN"/>
+    </section>
+    <section stringID="XST_ERRORS_STATISTICS">
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_ERRORS" value="0"/>
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_WARNINGS" value="73"/>
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_INFOS" value="10"/>
+    </section>
+  </application>
+
+</document>
diff --git a/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_flist.txt b/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_flist.txt
new file mode 100644 (file)
index 0000000..5e1a6ed
--- /dev/null
@@ -0,0 +1,8 @@
+# Output products list for <fifo_xlnx_16x19_2clk>
+fifo_xlnx_16x19_2clk.ngc
+fifo_xlnx_16x19_2clk.v
+fifo_xlnx_16x19_2clk.veo
+fifo_xlnx_16x19_2clk.xco
+fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
+fifo_xlnx_16x19_2clk_flist.txt
+fifo_xlnx_16x19_2clk_xmdf.tcl
diff --git a/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_readme.txt b/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_readme.txt
new file mode 100644 (file)
index 0000000..1b59765
--- /dev/null
@@ -0,0 +1,39 @@
+The following files were generated for 'fifo_xlnx_16x19_2clk' in directory 
+/home/matt/gnuradio.git/usrp2/fpga/coregen/:
+
+fifo_xlnx_16x19_2clk.ngc:
+   Binary Xilinx implementation netlist file containing the information
+   required to implement the module in a Xilinx (R) FPGA.
+
+fifo_xlnx_16x19_2clk.v:
+   Verilog wrapper file provided to support functional simulation.
+   This file contains simulation model customization data that is
+   passed to a parameterized simulation model for the core.
+
+fifo_xlnx_16x19_2clk.veo:
+   VEO template file containing code that can be used as a model for
+   instantiating a CORE Generator module in a Verilog design.
+
+fifo_xlnx_16x19_2clk.xco:
+   CORE Generator input file containing the parameters used to
+   regenerate a core.
+
+fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt:
+   Please see the core data sheet.
+
+fifo_xlnx_16x19_2clk_flist.txt:
+   Text file listing all of the output files produced when a customized
+   core was generated in the CORE Generator.
+
+fifo_xlnx_16x19_2clk_readme.txt:
+   Text file indicating the files generated and how they are used.
+
+fifo_xlnx_16x19_2clk_xmdf.tcl:
+   ISE Project Navigator interface file. ISE uses this file to determine
+   how the files output by CORE Generator for the core can be integrated
+   into your ISE project.
+
+
+Please see the Xilinx CORE Generator online help for further details on
+generated files and how to use them.
+
diff --git a/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_xmdf.tcl b/usrp2/fpga/coregen/fifo_xlnx_16x19_2clk_xmdf.tcl
new file mode 100644 (file)
index 0000000..8d633e9
--- /dev/null
@@ -0,0 +1,68 @@
+# The package naming convention is <core_name>_xmdf
+package provide fifo_xlnx_16x19_2clk_xmdf 1.0
+
+# This includes some utilities that support common XMDF operations
+package require utilities_xmdf
+
+# Define a namespace for this package. The name of the name space
+# is <core_name>_xmdf
+namespace eval ::fifo_xlnx_16x19_2clk_xmdf {
+# Use this to define any statics
+}
+
+# Function called by client to rebuild the params and port arrays
+# Optional when the use context does not require the param or ports
+# arrays to be available.
+proc ::fifo_xlnx_16x19_2clk_xmdf::xmdfInit { instance } {
+# Variable containg name of library into which module is compiled
+# Recommendation: <module_name>
+# Required
+utilities_xmdf::xmdfSetData $instance Module Attributes Name fifo_xlnx_16x19_2clk
+}
+# ::fifo_xlnx_16x19_2clk_xmdf::xmdfInit
+
+# Function called by client to fill in all the xmdf* data variables
+# based on the current settings of the parameters
+proc ::fifo_xlnx_16x19_2clk_xmdf::xmdfApplyParams { instance } {
+
+set fcount 0
+# Array containing libraries that are assumed to exist
+# Examples include unisim and xilinxcorelib
+# Optional
+# In this example, we assume that the unisim library will
+# be magically
+# available to the simulation and synthesis tool
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
+utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk.ngc
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk.v
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk.veo
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog_template
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk.xco
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_16x19_2clk_xmdf.tcl
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module fifo_xlnx_16x19_2clk
+incr fcount
+
+}
+
+# ::gen_comp_name_xmdf::xmdfApplyParams
index 364ce6e1ee751dc9efe4aeb08e3757dd0c5b71ca..a87aa2f842e52e281ac072ad28e97e4c9180134a 100644 (file)
@@ -36,7 +36,7 @@ PINATTR PinName full
 PINATTR Polarity OUT
 LINE Wide 576 368 544 368
 PIN 576 368 RIGHT 36
-PINATTR PinName wr_data_count[10:0]
+PINATTR PinName wr_data_count[11:0]
 PINATTR Polarity OUT
 LINE Normal 576 432 544 432
 PIN 576 432 RIGHT 36
@@ -44,6 +44,6 @@ PINATTR PinName empty
 PINATTR Polarity OUT
 LINE Wide 576 592 544 592
 PIN 576 592 RIGHT 36
-PINATTR PinName rd_data_count[10:0]
+PINATTR PinName rd_data_count[11:0]
 PINATTR Polarity OUT
 
index 321f44d7d1bf6e3996820f6b1592fb0422ca4bfc..684eb74f4e026a858c2008a1cc0e6385578d4a5a 100644 (file)
@@ -1,3 +1,3 @@
 XILINX-XDB 0.1 STUB 0.1 ASCII
 XILINX-XDM V1.4e
-$4`g\7f4d<,[o}e~g`n;"2*413&;$?"<>!1!&2?55<89:?<6>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=?41292*57338;1EC^ZT;CG@WG;990;2<:4108JJUSS2HNO^O2>0;2=65=693CE\XZ5psmd[`kw|pU\7fd\7fk|h=33>585?2;:6D@_UU8svjaXmdz\7fuRzgrdqk[dutm{~7==4?>35854<NFY__6}|`g^gntq\7fX|axn\7feQaefcwa977294:j6?>:HLSQQ<wzfmTjxbc_ujqavn;990;2?84108JJUSS2yxdkRhzlm]wlwct`Vkx\7fh|{<0294;4138;1EC^ZT;rqkbYa}efTxe|jsi]mabgsm5;;6=0>a:32>JSSX\^1hlzn_bmvjq:683:5=i5>1;MVPUSS2{nThlzn_bmvjq:683:5=i5>1;MVPUSS2~xThlzn_bmvjq:683:5=<5>:HLSQQ<CAYK7<7>11092>LHW]]0OE]L30;2=57=62F__\XZ5DNRB85<76880=7AZTQWW>AIWJ5:1<3?425907756:29=6D@_UU8gmk:4=3:5=95<6;MVPUSS2me~x1=::1<1?6>c3:y9<=>ig575)07<<81=>6864:4:=32<>0K:>68J4::76477310BB][[:EKB82<768:047GAPTV9@LD;?3:5=<57:NWWTPR=LFK7;7>1109;>JSSX\^1HBL37;2=5>?330:;5?56659:23??3HNO^L2?>c9B@ATF48:1<374AEFQE977611JHI\N<0<;?DBCZH69255NDEPB868?3HNO^L2;>99B@ATF4<437LJKR@>5:==FLMXJ0:07;@FGVD:?611JHI\N<8<;?DBCZK6;2o5NDEPA846=8730MIJ]B=33:==FLMXI0<07;@FGVG:5611JHI\M<2<;?DBCZK6?255NDEPA808?3HNO^O29>99B@ATE4>437LJKRC>;:==FLMXI0406;@QZJFYUMN90NX<7;CWP[LHAG81H86MN8@08G@753JBNOFQCIBGMW@YSQYO97NG;;BNHE1=DDBH87NB]9:ALIHOS\LN:86M@RD]DAKCUI]CDBRGAFN58GWCF\LN:7I<4DH48@LG;87<0HDO31?48@LG;:7<0HDO33?48@LG;<7<0HDO35?48@LG;>720HDO37;2=2>BNI5=5:6JFB=2=2>BNJ5;5:6JFB=0=2>BNJ595:6JFB=6=2>BNJ5?5:6JFB=4=<>BNJ5=1<384DH@?3;?<L@ZJ0=4?>69GMUG;8730HD^M<183:2=CAYH7<384DNC?4;0<LFK7=384DNC?6;0<LFK7?384DNC?0;0<LFK79384DNC?2;><LFK7;7>16:FLE919>2NDN1>16:FLF979>2NDN1<16:FLF959>2NDN1:16:FLF939>2NDN1818:FLF91=87<0HBL37?;8@JVF490;2:5KOQC?4;?<LFZI0=4?>69GKUD;8790ICO<;DLA0>@5N980J5<4FE18BAE33ONHI>5IDD18BAV33ON[I85Iamqf5>A43NDO>6G?2:K26>O5:2C846GAIUR\45><AGC_\R>>8:KMMQVX8;20ECG[P^20<>OIA]ZT<964IOKWTZ6202CEEY^P07:8MKOSXV:<56GAIUQWEQC03@DBXR>?7:KMMQY79>1BBDZP0358MKOSW99<7D@FT^273>OIA]U;9:5FNHV\431<AGC_S=98;HLJPZ6??2CEEYQ?969JJLRX8H=0ECG[_1@4?LHN\V:H;6GAIU]3@2=NF@^T<H94IOKW[5@03@DBXR??7:KMMQY69>1BBDZP1358MKOSW89<7D@FT^373>OIA]U:9:5FNHV\531<AGC_S<98;HLJPZ7??2CEEYQ>969JJLRX9H=0ECG[_0@4?LHN\V;H;6GAIU]2@2=NF@^T=H94IOKW[4@03@DBXR<?7:KMMQY59>1BBDZP2358MKOSW;9<7D@FT^073>OIA]U99:5FNHV\631<AGC_S?98;HLJPZ4??2CEEYQ=969JJLRX:H=0ECG[_3@4?LHN\V8H;6GAIU]1@2=NF@^T>H94IOKW[7@03@DBXR=?7:KMMQY49>1BBDZP3358MKOSW:9<7D@FT^173>OIA]U89:5FNHV\731<AGC_S>98;HLJPZ5??2CEEYQ<969JJLRX;H=0ECG[_2@4?LHN\V9H;6GAIU]0@2=NF@^T?H94IOKW[6@13@DBXRO9;HLJPZD43@EI>6BF2:NL2>JHIMOO;6B@GHABH1=K]];?7A[[279OQQ4XD=1GYY=;;MWW03=K]]>T@85BSFMM1>KRPJSh7@oeosTfvvohfj1Feca}Vdppmjh53G;87C??4:L24=2<F8:2?6@>159M54733G;:?95A1060?K75<2D:>4=4N017?K748=1E=>?;;O3061=I9:9?7C?<459M56333G;8:95A1257?K740=1E=>7<;O370>H6<9>0B<:>4:L2072<F8>886@>4568J422<2D:8;:4N0640>H6<1>0B<:63:L211=I9<:?7C?:159M50433G;>?95A1467?K72==1E=88;;O3631=I9<2?7C?:929M532<F8<;86@>6068J405<2D::>:4N0470>H6><>0B<893:L231=I9>;?7C?8259M52533G;<895A1677?K70>=1E=:9;;O34<1=I9>387C?74:L2<52<F82:86@>8568J4>2<2D:4;:4N0:40>H601>0B<663:L2=1=I90:?7C?6159M5<433G;2?95A1860?K47;2D9=>5A2318J7543G8??6@=529M635<F;=87C<73:L1=6=I;990B>?<;O117>H4;:1E?9=4N270?K51;2D8;>5A3918J6?43G>;?6@;129M075<F=>87C:92:L56>H0:2D3>6@6f:LA[GSTX@DT\_A_S69MAQQHZB>0BB@J1:M1?JM63Y>0\L\[a:RJJZDR[@NSn6^FN^@VWKGJM:1[^H?4Qb9QEHD6>VY2S^7>;R30?VOJWJEG@D]FOO]@L@EL>2YDY_MJ7:QQRDJXI>1X^[OC_C68WVTF<2YX^O:4TXRF76=R8&myj#|i/fa{*fjlp&Gsc\7fQ}d^rmpwYeagUsc\7f>?01]Qavsk|8987X> gsd-vc)`kq$h`fv Mymq[wbXxg~ySoga_ymq4566W[oxyaz>329V4*aun'xm#jmw.bnh|*K\7fg{UyhR~ats]amkY\7fg{:;<?Q]erwop4543\:$k\7fh!rg-dg}(ddbr$Aua}_sf\tkruWkceSua}0120[Wct}e~:?>5Z0.eqb+ta'nis"nbdx.O{kwYulVzex\7fQmio]{kw678=UYi~{ct010?P6(o{l%~k!hcy,`hn~(EqeyS\7fjPpovq[goiWqey<=>:_Sgpqir6;>1^<"i}f/pe+be\7f&jf`t"Cwos]q`Zvi|{UiecQwos2340YUmz\7fgx<Q\W110?P6(o{l%~k!hcy,`hn~(EqeyS\7fjPpovq[goiWqey<=>9_Sgpqir6;:1^<"i}f/pe+be\7f&jf`t"Cwos]q`Zvi|{UiecQwos2342YUmz\7fgx<=8;T2,cw`)zo%lou lljz,I}iuW{nT|cz}_ckm[}iu89:<S_k|umv2[VQ7;:1^<"i}f/pe+be\7f&jf`t"Cwos]q`Zvi|{UiecQwos234=YUmz\7fgx<==;T2,cw`)zo%lou lljz,I}iuW{nT|cz}_fa\|jt789:T^h}zlu306>S7'nxm"\7fh gbz-gim\7f'Drd~R|k_qlwvZadWqey<=>>_Sgpqir6;;1^<"i}f/pe+be\7f&jf`t"Cwos]q`Zvi|{UloRv`r1236ZTb{|f\7f=><4U1-dvc(un&mht#mcky-N|jtXzmU{by|Pgb]{kw678:UYi~{ct011?P6(o{l%~k!hcy,`hn~(EqeyS\7fjPpovq[beXpfx;<=:PRdqvhq74:2_;#j|i.sd,cf~)keas#@v`r^pg[uhszVmhSua}0126[Wct}e~:??5Z0.eqb+ta'nis"nbdx.O{kwYulVzex\7fQhc^zlv567>VXn\7fxb{1208Q5)`zo$yj"ilx/aoo})JpfxT~iQ\7fnup\cfY\7fg{:;<:Q]erwop4553\:$k\7fh!rg-dg}(ddbr$Aua}_sf\tkruWniTtb|?01:\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZtcWyd\7f~Ril_ymq456>W[oxyaz>359V4*aun'xm#jmw.bnh|*K\7fg{U\7fa}Qyamwf4Z6Xpfx;<=>Pxn>2:774<2_;#j|i.sd,cf~)keas#@v`r^vntZpfd|o;S=Qwos2345Y\7fg595?<=<;T2,cw`)zo%lou lljz,I}iuW}g{S{ocud2\4Z~hz9:;<Rv`<5<271=R8&myj#|i/fa{*fjlp&Gsc\7fQ{mq]ueisb8V:Ttb|?012\|j:368;8;6[?/fpe*w`(ojr%oaew/LzlvZrjxV|j`xk?_1]{kw6789Usc1:11^QT462<]9%l~k }f.e`|+ekcq%Ftb|Ptlr\rdjrm;U;Sua}0123[Wct}e~:?>5Z0.eqb+ta'nis"nbdx.O{kwYpzVzex\7fQmio]{kw6789UYi~{ct010?P6(o{l%~k!hcy,`hn~(EqeySz|Ppovq[goiWqey<=>>_Sgpqir6;:1^<"i}f/pe+be\7f&jf`t"Cwos]tvZvi|{UiecQwos2346YUmz\7fgx<=<;T2,cw`)zo%lou lljz,I}iuW~xT|cz}_ckm[}iu89:?S_k|umv276=R8&myj#|i/fa{*fjlp&Gsc\7fQxr^rmpwYeagUsc\7f>?04]Qavsk|8987X> gsd-vc)`kq$h`fv Mymq[rtXxg~ySoga_ymq4561W[oxyaz>329V4*aun'xm#jmw.bnh|*K\7fg{U|~R~ats]amkY\7fg{:;<:Q]erwop4543\:$k\7fh!rg-dg}(ddbr$Aua}_vp\tkruWkceSua}012;[Wct}e~:?>5Z0.eqb+ta'nis"nbdx.O{kwYpzVzex\7fQmio]{kw6780UYi~{ct011?P6(o{l%~k!hcy,`hn~(EqeySz|Ppovq[beXpfx;<=>PRdqvhq74:2_;#j|i.sd,cf~)keas#@v`r^uq[uhszVmhSua}0122[Wct}e~:??5Z0.eqb+ta'nis"nbdx.O{kwYpzVzex\7fQhc^zlv567:VXn\7fxb{1208Q5)`zo$yj"ilx/aoo})JpfxT{\7fQ\7fnup\cfY\7fg{:;<>Q]erwop4553\:$k\7fh!rg-dg}(ddbr$Aua}_vp\tkruWniTtb|?016\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZquWyd\7f~Ril_ymq4562W[oxyaz>339V4*aun'xm#jmw.bnh|*K\7fg{U|~R~ats]dgZ~hz9:;:R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXojUsc\7f>?06]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[rtXxg~ySjmPxnp345>XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^e`[}iu89:2S_k|umv250=R8&myj#|i/fa{*fjlp&D8=85Z0.eqb+ta'nis"nbdx.L750=R8&myj#|i/fa{*fjlp&D>><5Z0.eqb+ta'nis"nbdx.pg[uhszVhbb1>1239V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn=33:77<]9%l~k }f.e`|+ekcq%yhR~ats]amk:66;;0Y=!hrg,qb*adp'iggu!}d^rmpwYeag692??4U1-dvc(un&mht#mcky-q`Zvi|{Uiec2<>338Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio>7:77<]9%l~k }f.e`|+ekcq%yhR~ats]amk:26;;0Y=!hrg,qb*adp'iggu!}d^rmpwYeag6=2??4U1-dvc(un&mht#mcky-q`Zvi|{Uiec28>338Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio>;:77<]9%l~k }f.e`|+ekcq%yhR~ats]amk:>6;:0Y=!hrg,qb*adp'iggu!}d^rmpwYeagU;>=5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbR?=1:W3+bta&{l$knv!cmi{+wbXxg~ySoga_0214>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[7473\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flhX;;:0Y=!hrg,qb*adp'iggu!}d^rmpwYeagU?>=5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbR;=0:W3+bta&{l$knv!cmi{+wbXxg~ySoga_703?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\376<]9%l~k }f.e`|+ekcq%yhR~ats]amkY?:91^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnfV39:6[?/fpe*w`(ojr%oaew/sf\tkruWkceSua}012363=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ~hz9:;=?84U1-dvc(un&mht#mcky-q`Zvi|{UiecQwos2347413\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flhXpfx;<===6:W3+bta&{l$knv!cmi{+wbXxg~ySoga_ymq4563:?1^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnfVrd~=>?5348Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio]{kw678?8=7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?01512>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[}iu89:3>=5Z0.eqb+ta'nis"nbdx.pg[uhszVmh0=0=1:W3+bta&{l$knv!cmi{+wbXxg~ySjm311<14>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa?5;473\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cf:56;:0Y=!hrg,qb*adp'iggu!}d^rmpwY`k595>=5Z0.eqb+ta'nis"nbdx.pg[uhszVmh090=0:W3+bta&{l$knv!cmi{+wbXxg~ySjm35?03?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb>5:76<]9%l~k }f.e`|+ekcq%yhR~ats]dg919:91^<"i}f/pe+be\7f&jf`t"|k_qlwvZad4149<6[?/fpe*w`(ojr%oaew/sf\tkruWni753?i;T2,cw`)zo%lou lljz,vaYwf}xTknQ?1g9V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_003?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]244`<]9%l~k }f.e`|+ekcq%yhR~ats]dgZ46n2_;#j|i.sd,cf~)keas#\7fjPpovq[beX;8l0Y=!hrg,qb*adp'iggu!}d^rmpwY`kV>:j6[?/fpe*w`(ojr%oaew/sf\tkruWniT9<h4U1-dvc(un&mht#mcky-q`Zvi|{UloR8>f:W3+bta&{l$knv!cmi{+wbXxg~ySjmP70d8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^:2b>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\=70<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlm7<3<8;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd8469:?1^<"i}f/pe+be\7f&jf`t"|k_qlwvZadWhyyij2>>348Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`a;:78=7X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh<2<12>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtbo5>5>;5Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef>6:70<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlm7:3<9;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd8285>2_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnk161279V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqab:>6;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP0378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aX9;<0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP1106?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`W;8>7X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_206?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`W=8>7X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_406?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`W?8>7X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_606?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`W18>7X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_80:?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`Wm;7<3<n;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd[a7;994956[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2848512_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnkRj><3<1=>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtboVn:0>0=9:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb64=4956[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2808512_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnkRj><7<1=>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtboVn:0:0=9:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6414956[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f28<8502_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnkRj>_10;?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`Wm;T=?74U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4Y68;20Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0]16==R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=R==8:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6W=837X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_e3\17><]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<Q9299V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqabYc9V=946[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2[=4?3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfYf{{olSi?P9378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^zlv5678;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVrd~=>?1378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^zlv567:;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVrd~=>?3378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^zlv567<;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVrd~=>?5378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^zlv567>;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVrd~=>?7378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^zlv5670;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVrd~=>?9358Q5)`zo$yj"ilx/aoo})seyU}ma{j0^2\|jt789:9;6[?/fpe*w`(ojr%oaew/uos[sgk}l8T<Rv`r123477<]9%l~k }f.e`|+ekcq%|~R~ats]amk:76;80Y=!hrg,qb*adp'iggu!xr^rmpwYeag6:<3<>;T2,cw`)zo%lou lljz,swYwf}xTnd`31?02?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl?6;463\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flh;;78:7X> gsd-vc)`kq$h`fv ws]sjqtXj`d783<>;T2,cw`)zo%lou lljz,swYwf}xTnd`35?02?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl?2;463\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flh;?78:7X> gsd-vc)`kq$h`fv ws]sjqtXj`d743<>;T2,cw`)zo%lou lljz,swYwf}xTnd`39?03?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl\476<]9%l~k }f.e`|+ekcq%|~R~ats]amkY6:81^<"i}f/pe+be\7f&jf`t"y}_qlwvZdnfV;;>=5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbR<=0:W3+bta&{l$knv!cmi{+rtXxg~ySoga_203?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl\076<]9%l~k }f.e`|+ekcq%|~R~ats]amkY2:91^<"i}f/pe+be\7f&jf`t"y}_qlwvZdnfV<9<6[?/fpe*w`(ojr%oaew/vp\tkruWkceS:<?;T2,cw`)zo%lou lljz,swYwf}xTnd`P8328Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio]:63=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ~hz9:;<?84U1-dvc(un&mht#mcky-tvZvi|{UiecQwos2344413\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flhXpfx;<===6:W3+bta&{l$knv!cmi{+rtXxg~ySoga_ymq4563:?1^<"i}f/pe+be\7f&jf`t"y}_qlwvZdnfVrd~=>?5348Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio]{kw678?8=7X> gsd-vc)`kq$h`fv ws]sjqtXj`dTtb|?01512>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[}iu89:3>;5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbRv`r123=76<]9%l~k }f.e`|+ekcq%|~R~ats]dg969:81^<"i}f/pe+be\7f&jf`t"y}_qlwvZad48:5>=5Z0.eqb+ta'nis"nbdx.uq[uhszVmh0<0=0:W3+bta&{l$knv!cmi{+rtXxg~ySjm32?03?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb>0:76<]9%l~k }f.e`|+ekcq%|~R~ats]dg929:91^<"i}f/pe+be\7f&jf`t"y}_qlwvZad4<49<6[?/fpe*w`(ojr%oaew/vp\tkruWni7:3<?;T2,cw`)zo%lou lljz,swYwf}xTkn28>328Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc=:=65=R8&myj#|i/fa{*fjlp&}yS}`{r^e`8<86n2_;#j|i.sd,cf~)keas#z|Ppovq[beX88l0Y=!hrg,qb*adp'iggu!xr^rmpwY`kV;9<6[?/fpe*w`(ojr%oaew/vp\tkruWniT==?i;T2,cw`)zo%lou lljz,swYwf}xTknQ=1g9V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_23e?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]75c=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[07a3\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfY19o1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadW>;m7X> gsd-vc)`kq$h`fv ws]sjqtXojU3=k5Z0.eqb+ta'nis"nbdx.uq[uhszVmhS4<9;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd8585?2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnk1??>348Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc^cpv`a;978=7X> gsd-vc)`kq$h`fv ws]sjqtXojUj\7f\7fkh<3<12>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtbo595>;5Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef>7:70<]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlm793<9;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd8385>2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnk191279V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqab:?6;<0Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hi39?06?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]bwwc`W98>7X> gsd-vc)`kq$h`fv ws]sjqtXojUj\7f\7fkh_005?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]bwwc`W8:996[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^011>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboV9996[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^611>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboV?996[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^411>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboV=996[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^:11>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboV3956[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f28585i2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj><02=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=1?1289V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc9585>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5959:01^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1=6=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=1;1289V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc95<5>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5919:01^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1=:=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=171299V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc9V:946[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2[44>3\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfYf{{olSi?P110;?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]bwwc`Wm;T>?64U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\`4Y4:11^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1^61<>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboVn:S8<7;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[a7X>;20Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hiPd0]46==R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=R6=8:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb6W08>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc\7f>?0106?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]{kw67888>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc\7f>?0306?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]{kw678:8>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc\7f>?0506?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]{kw678<8>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc\7f>?0706?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]{kw678>8>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc\7f>?0906?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]{kw67808j7X> gsd-vc)`d9$yh"i}1/pescr(ZHGT^IQJN^DTBQ7512_;#j|i.sd,ci6)zm%l~< }fvdw+WGJW[OLCXZPEO307>S7'nxm"\7fh gm2-va)`z8$yjzh{/bwqvZ`pn}Uxxlzj_GQN[C@c9:<0Y=!hrg,qb*ak8'xo#j|>.sdtbq)d}{xTjzh{_rvbp`YA[DUMJi?"Io1;?P6(o{l%~k!hl1,q`*au9'xm{kz ctpq[cqa|Vy\7fmykPFRO\BCb6%@d:=>=4U1-dvc(un&mg<#|k/fp2*w`pn}%hy\7f|Pfvdw[vrf|lUM_@QIFe002>S7'nxm"\7fh gm2-va)`z8$yjzh{/bwqvZ`pn}Uxxlzj_GQN[C@c:$Ce?55Z0.eqb+ta'nf;"\7fj gs3-vcqa|&i~~\7fQiwgv\wqgsmVLXARHId3/Jj47502_;#j|i.sd,ci6)zm%l~< }fvdw+`kw|pUm{kzPfc04?P6(o{l%~k!hl1,q`*au9'xm{kz elrw}Z`pn}Ub>h5Z0.eqb+ta'nf;"\7fj gs3-vcqa|&of|ywPfvdw[lYhz9:;<?h4U1-dvc(un&mg<#|k/fp2*w`pn}%na}zv_guepZoXg{:;<=?<a:W3+bta&{l$ka>!re-dvdu)o{nh=#|kc.OpqgYulVnhSdQ|uc2345Ydq5:5?l5Z0.eqb+ta'nf;"\7fj gscp*btck8$yhn!Bst`\vaYckVcT\7fxl?012\g|:66:k0Y=!hrg,qb*ak8'xo#j|ns/eq`f7)zmi$A~{m_sf\`fYnWz\7fi<=>?_b{?6;5f3\:$k\7fh!rg-dh5(ul&mym~ hrea2*wbd'Dy~nR|k_ea\mZurj9:;<Rmv<2<0e>S7'nxm"\7fh gm2-va)`zhy%k\7fjl1/pgg*Kt}kUyhRjl_h]pqg6789Uhu1:13`9V4*aun'xm#jb?.sf,cwgt&nxoo< }db-NwpdXzmUooRgPst`3456Xkp6>2>o4U1-dvc(un&mg<#|k/fpbw+aulj;%~im Mrwa[wbXljUbS~{m0123[f\7f;>79j7X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#@}zb^pg[aeXaVy~n=>?0^az8284i2_;#j|i.sd,ci6)zm%l~l}!gsf`5+tck&GxyoQ}d^f`[lYt}k:;<=Qly=:=7d=R8&myj#|i/fn3*wb(o{kx"j|kc0,q`f)J{|hT~iQkc^k\wpd789:Tot26>2`8Q5)`zo$yj"ic0/pg+btf{'myhn?!rea,IvseW{nThnQf_rwa4567We\7f\7f0=0<c:W3+bta&{l$ka>!re-dvdu)o{nh=#|kc.OpqgYulVnhSdQ|uc2345Yk}}6:<3=m;T2,cw`)zo%l`= }d.eqev(`zmi:"\7fjl/LqvfZtcWmiTeR}zb1234Zjr|5;5?o5Z0.eqb+ta'nf;"\7fj gscp*btck8$yhn!Bst`\vaYckVcT\7fxl?012\hpr;:79i7X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#@}zb^pg[aeXaVy~n=>?0^nvp959;k1^<"i}f/pe+bj7&{n$k\7fo|.fpgg4(ulj%F\7fxlPre]ggZoX{|h;<=>Pltv?0;5e3\:$k\7fh!rg-dh5(ul&mym~ hrea2*wbd'Dy~nR|k_ea\mZurj9:;<Rbzt=7=7g=R8&myj#|i/fn3*wb(o{kx"j|kc0,q`f)J{|hT~iQkc^k\wpd789:T`xz36?1a?P6(o{l%~k!hl1,q`*auiz$l~im>.sf`+HurjVxoSimPi^qvf5678Vf~x1913c9V4*aun'xm#jb?.sf,cwgt&nxoo< }db-NwpdXzmUooRgPst`3456Xd|~743=m;T2,cw`)zo%l`= }d.eqev(`zmi:"\7fjl/LqvfZtcWmiTeR}zb1234Zjr|535?o5Z0.eqb+ta'nf;"\7fj gscp*btck8$yhn!Bst`\vaYckVcT\7fxl?012\|jt;879h7X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#@}zb^pg[aeXaVy~n=>?0^zlv9776:h0Y=!hrg,qb*ak8'xo#j|ns/eq`f7)zmi$A~{m_sf\`fYnWz\7fi<=>?_ymq8484j2_;#j|i.sd,ci6)zm%l~l}!gsf`5+tck&GxyoQ}d^f`[lYt}k:;<=Qwos>1:6d<]9%l~k }f.eo4+tc'nxj\7f#i}db3-vae(Ez\7fiS\7fjPdb]j[vse89:;Sua}<2<0f>S7'nxm"\7fh gm2-va)`zhy%k\7fjl1/pgg*Kt}kUyhRjl_h]pqg6789Usc\7f2;>2`8Q5)`zo$yj"ic0/pg+btf{'myhn?!rea,IvseW{nThnQf_rwa4567Wqey080<b:W3+bta&{l$ka>!re-dvdu)o{nh=#|kc.OpqgYulVnhSdQ|uc2345Y\7fg{6=2>l4U1-dvc(un&mg<#|k/fpbw+aulj;%~im Mrwa[wbXljUbS~{m0123[}iu4>48n6[?/fpe*w`(oe:%~i!hr`q-cwbd9'xoo"C|uc]q`ZbdW`Uxyo>?01]{kw:?6:h0Y=!hrg,qb*ak8'xo#j|ns/eq`f7)zmi$A~{m_sf\`fYnWz\7fi<=>?_ymq8<8512_;#j|i.sd,ci6)zm%l~l}!gsf`5+tck&xoSimPi^21=>S7'nxm"\7fh gm2-va)`zhy%k\7fjl1/pgg*tcWmiTeR?=a:W3+bta&{l$ka>!re-dvdu)o{nh=#|kc.pg[aeXaV;;>45Z0.eqb+ta'nf;"\7fj gscp*btck8$yhn!}d^f`[lY5:01^<"i}f/pe+bj7&{n$k\7fo|.fpgg4(ulj%yhRjl_h]06<=R8&myj#|i/fn3*wb(o{kx"j|kc0,q`f)ulVnhSdQ;289V4*aun'xm#jb?.sf,cwgt&nxoo< }db-q`ZbdW`U>>45Z0.eqb+ta'nf;"\7fj gscp*btck8$yhn!}d^f`[lY1:01^<"i}f/pe+bj7&{n$k\7fo|.fpgg4(ulj%yhRjl_h]46<=R8&myj#|i/fn3*wb(o{kx"j|kc0,q`f)ulVnhSdQ7289V4*aun'xm#jb?.sf,cwgt&nxoo< }db-q`ZbdW`U2??5Z0.eqb+ta'nf;"\7fj gscp*btck8$yhn!}d^f`[lYt}k:;<=2?>218Q5)`zo$yj"ic0/pg+btf{'myhn?!rea,vaYckVcT\7fxl?012?5584:2_;#j|i.sd,ci6)zm%l~l}!gsf`5+tck&xoSimPi^qvf56785;5??5Z0.eqb+ta'nf;"\7fj gscp*btck8$yhn!}d^f`[lYt}k:;<=2=>208Q5)`zo$yj"ic0/pg+btf{'myhn?!rea,vaYckVcT\7fxl?012?7;553\:$k\7fh!rg-dh5(ul&mym~ hrea2*wbd'{nThnQf_rwa45674=48>6[?/fpe*w`(oe:%~i!hr`q-cwbd9'xoo"|k_ea\mZurj9:;<1;1339V4*aun'xm#jb?.sf,cwgt&nxoo< }db-q`ZbdW`Uxyo>?01>5:64<]9%l~k }f.eo4+tc'nxj\7f#i}db3-vae(zmUooRgPst`3456;?7997X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#\7fjPdb]j[vse89:;050<2:W3+bta&{l$ka>!re-dvdu)o{nh=#|kc.pg[aeXaVy~n=>?0=;=6<=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a3+fguzpdnx1>1289V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m?/bcqv|hb|5;5>45Z0.eqb+ta'nf;"\7fj gscp*wus{&i;#no}rxlfp949:01^<"i}f/pe+bj7&{n$k\7fo|.sqww*e7'jky~t`jt=1=6<=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a3+fguzpdnx1:12g9V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m?/fov|+ajS9W%k`?!m00e?P6(o{l%~k!hl1,q`*auiz$y\7fy} c1-dip~)odQ:Q#ibs/op6c=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a3+bkrp'mfW?S!glq-iv4a3\:$k\7fh!rg-dh5(ul&mym~ }suq,g5)`e|r%k`U<]/enw+kt:o1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e7'ng~t#ib[5_-chu)ez8m7X> gsd-vc)`d9$yh"i}ar,qwqu(k9%laxv!glY6Y+aj{'gx>>5Z0.eqb+ta'nf;"\7fj gscp*wus{&i;#{?30?00?P6(o{l%~k!hl1,q`*auiz$y\7fy} c1-u5979::1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e7'\7f;7>3<<;T2,cw`)zo%l`= }d.eqev(u{}y$o=!y1=1=66=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a3+s7;<7887X> gsd-vc)`d9$yh"i}ar,qwqu(k9%}=1;12c9V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m?/w3\4Zgil9:;<<<m;T2,cw`)zo%l`= }d.eqev(u{}y$o=!y1^3\ekb789::>o5Z0.eqb+ta'nf;"\7fj gscp*wus{&i;#{?P2^cm`567888i7X> gsd-vc)`d9$yh"i}ar,qwqu(k9%}=R=Paof34566:k1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e7'\7f;T8Road123444e3\:$k\7fh!rg-dh5(ul&mym~ }suq,g5)q9V?Tbbz?01226<=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a2+fguzpdnx1>1289V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m>/bcqv|hb|5;5>45Z0.eqb+ta'nf;"\7fj gscp*wus{&i:#no}rxlfp949:01^<"i}f/pe+bj7&{n$k\7fo|.sqww*e6'jky~t`jt=1=6<=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a2+fguzpdnx1:12g9V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m>/fov|+ajS9W%k`?!m00e?P6(o{l%~k!hl1,q`*auiz$y\7fy} c0-dip~)odQ:Q#ibs/op6c=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a2+bkrp'mfW?S!glq-iv4a3\:$k\7fh!rg-dh5(ul&mym~ }suq,g4)`e|r%k`U<]/enw+kt:o1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e6'ng~t#ib[5_-chu)ez8m7X> gsd-vc)`d9$yh"i}ar,qwqu(k8%laxv!glY6Y+aj{'gx>>5Z0.eqb+ta'nf;"\7fj gscp*wus{&i:#{?30?00?P6(o{l%~k!hl1,q`*auiz$y\7fy} c0-u5979::1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e6'\7f;7>3<<;T2,cw`)zo%l`= }d.eqev(u{}y$o<!y1=1=66=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a2+s7;<7887X> gsd-vc)`d9$yh"i}ar,qwqu(k8%}=1;12c9V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m>/w3\4Zgil9:;<<<m;T2,cw`)zo%l`= }d.eqev(u{}y$o<!y1^3\ekb789::>o5Z0.eqb+ta'nf;"\7fj gscp*wus{&i:#{?P2^cm`567888i7X> gsd-vc)`d9$yh"i}ar,qwqu(k8%}=R=Paof34566:k1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e6'\7f;T8Road123444e3\:$k\7fh!rg-dh5(ul&mym~ }suq,g4)q9V?Tbbz?012265=R8&myj#|i/fn3*wb(o{kx"\7f}{s.aliu6582_;#j|i.sd,ci6)zm%l~l}!rrvp+fijx8827X> gsd-vc)`d9$yh"i}ar,qwqu(zhgTi`~{y^da[l573\:$k\7fh!rg-dh5(ul&mym~ }suq,vdkXmdz\7fuRhm_h]lv5678:;0Y=!hrg,qb*ak8'xo#j|ns/pppv)uidUna}zv_g`\mZiu89:;=?=4U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov10>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|88>7X> gsd-vc)`d9$yh"|\7fnup,Ifirf}Uhcx`{1107?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphs:;>0Y=!hrg,qb*ak8'xo#\7f~ats-Ngjsi|Vidycz<259V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjq25<2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fex8<;;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw272<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~<>95Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu:10>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|0827X> gsd-vc)`d9$yh"|\7fnup,Ifirf}Uhcx`{_b{?4;4d3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSnw30?]qp7?<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~Tot2>>3a8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp6:2R|{289V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq585>n5Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]`}949W{~956[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az8685k2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fexRmv<2<\vq4>3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSnw34?0`?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs783Q}t3;8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp6>2?m4U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov\g|:26Vx\7f>45Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]`}909:j1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQly=4=[wr512_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fexRmv<6<1g>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|Vir0:0Pru0:?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs743<l;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[f\7f;07Uyx?74U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov\g|:>6;i0Y=!hrg,qb*ak8'xo#\7f~ats-Ngjsi|VidyczPcx>::Zts:h1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQwos>3:7d<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~Ttb|311<1a>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|Vrd~1??>^pw6d=R8&myj#|i/fn3*wb(zyd\7f~"Clotlw[firf}Usc\7f2>>3c8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXpfx7>3<n;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[}iu4:49m6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^zlv929:h1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQwos>6:7g<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~Ttb|36?0b?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWqey0:0=a:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZ~hz525>l5Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]{kw:>68l0Y=!hrg,qb*ak8'xo#\7f~ats-`kphs4949<6[?/fpe*w`(oe:%~i!}povq+firf}6:<3?i;T2,cw`)zo%l`= }d.psjqt(kf\7fex1?11g9V4*aun'xm#jb?.sf,vuhsz&idycz32?3e?P6(o{l%~k!hl1,q`*twf}x$ob{at=1=5c=R8&myj#|i/fn3*wb(zyd\7f~"m`uov?0;7a3\:$k\7fh!rg-dh5(ul&x{by| cnwmp9399o1^<"i}f/pe+bj7&{n$~}`{r.alqkr;>7;m7X> gsd-vc)`d9$yh"|\7fnup,gjsi|5=5=k5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~743?i;T2,cw`)zo%l`= }d.psjqt(kf\7fex1711d9V4*aun'xm#jb?.sf,vuhsz&idyczP00g8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_03e?P6(o{l%~k!hl1,q`*twf}x$ob{at^335`=R8&myj#|i/fn3*wb(zyd\7f~"m`uov\64c<]9%l~k }f.eo4+tc'{zex\7f!lotlw[67b3\:$k\7fh!rg-dh5(ul&x{by| cnwmpZ26m2_;#j|i.sd,ci6)zm%y|cz}/bmvjqY29l1^<"i}f/pe+bj7&{n$~}`{r.alqkrX>8o0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsW>;n7X> gsd-vc)`d9$yh"|\7fnup,gjsi|V2:i6[?/fpe*w`(oe:%~i!}povq+firf}U2>?5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~Th<2?>318Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?5585:2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc95;5>?5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~Th<2=>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?7;453\:$k\7fh!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\7f!lotlw[a7;?7897X> gsd-vc)`d9$yh"|\7fnup,gjsi|Vn:050=2:W3+bta&{l$ka>!re-qtkru'je~byQk1=;=64=R8&myj#|i/fn3*wb(zyd\7f~"m`uov\`4Y7:81^<"i}f/pe+bj7&{n$~}`{r.alqkrXl8U:>?5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~Th<Q>0338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\677<]9%l~k }f.eo4+tc'{zex\7f!lotlw[a7X;;;0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T8??4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?P5338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\277<]9%l~k }f.eo4+tc'{zex\7f!lotlw[a7X?;;0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T4??4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?P9508Q5)`zo$yj"ic0/uq+bqf{'m|hn>!wea,IvseW~xThlzn_bmvjqYnWz\7fi<=>?_b{?4;253\:$k\7fh!rg-dh5(pz&m|m~ hwea3*rbd'Dy~nRy}_ecweZeh}g~TeR}zb1234Ze~484?>6[?/fpe*w`(oe:%{\7f!hw`q-crbd8'}oo"C|uc]tvZbf|hUhcx`{_h]pqg6789Uhu1<1439V4*aun'xm#jb?.vp,crgt&n}oo= xdb-NwpdX\7f{UomyoPcnwmpZoX{|h;<=>Pcx>0:14<]9%l~k }f.eo4+qu'n}j\7f#ixdb2-sae(Ez\7fiSz|Pd`vb[firf}UbS~{m0123[f\7f;<7>97X> gsd-vc)`d9$|~"ixar,dsae7&~nh#@}zb^uq[agsiVidyczPi^qvf5678Vir080;2:W3+bta&{l$ka>!ws-dsdu)o~nh<#ykc.OpqgYpzVnjxlQlotlw[lYt}k:;<=Qly=4=07=R8&myj#|i/fn3*rt(o~kx"jykc1,t`f)J{|hT{\7fQkauc\gjsi|VcT\7fxl?012\g|:06=80Y=!hrg,qb*ak8'}y#jyns/et`f6)\7fmi$A~{m_vp\`drfWje~byQf_rwa4567Wjs743:=;T2,cw`)zo%l`= xr.etev(`\7fmi;"zjl/LqvfZquWmk\7fmRm`uov\mZurj9:;<Rmv<8<77>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*Kt}kU|~Rjnt`]`kphsW`Uxyo>?01]oqq:76=>0Y=!hrg,qb*ak8'}y#jyns/et`f6)\7fmi$A~{m_vp\`drfWje~byQf_rwa4567We\7f\7f0<>1429V4*aun'xm#jb?.vp,crgt&n}oo= xdb-NwpdX\7f{UomyoPcnwmpZoX{|h;<=>Pltv?5;243\:$k\7fh!rg-dh5(pz&m|m~ hwea3*rbd'Dy~nRy}_ecweZeh}g~TeR}zb1234Zjr|5858>5Z0.eqb+ta'nf;"z| gvcp*bqck9$|hn!Bst`\swYci}kTob{at^k\wpd789:T`xz33?60?P6(o{l%~k!hl1,tv*apiz$l{im?.vf`+HurjV}ySio{a^alqkrXaVy~n=>?0^nvp929<:1^<"i}f/pe+bj7&~x$kzo|.fugg5(plj%F\7fxlPws]geqgXkf\7fexRgPst`3456Xd|~793:<;T2,cw`)zo%l`= xr.etev(`\7fmi;"zjl/LqvfZquWmk\7fmRm`uov\mZurj9:;<Rbzt=4=06=R8&myj#|i/fn3*rt(o~kx"jykc1,t`f)J{|hT{\7fQkauc\gjsi|VcT\7fxl?012\hpr;?7>87X> gsd-vc)`d9$|~"ixar,dsae7&~nh#@}zb^uq[agsiVidyczPi^qvf5678Vf~x161429V4*aun'xm#jb?.vp,crgt&n}oo= xdb-NwpdX\7f{UomyoPcnwmpZoX{|h;<=>Pltv?=;243\:$k\7fh!rg-dh5(pz&m|m~ hwea3*rbd'Dy~nRy}_ecweZeh}g~TeR}zb1234Z~hz5:5895Z0.eqb+ta'nf;"z| gvcp*bqck9$|hn!Bst`\swYci}kTob{at^k\wpd789:Ttb|311<77>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*Kt}kU|~Rjnt`]`kphsW`Uxyo>?01]{kw:66=90Y=!hrg,qb*ak8'}y#jyns/et`f6)\7fmi$A~{m_vp\`drfWje~byQf_rwa4567Wqey0?0;3:W3+bta&{l$ka>!ws-dsdu)o~nh<#ykc.OpqgYpzVnjxlQlotlw[lYt}k:;<=Qwos>0:15<]9%l~k }f.eo4+qu'n}j\7f#ixdb2-sae(Ez\7fiSz|Pd`vb[firf}UbS~{m0123[}iu4=4??6[?/fpe*w`(oe:%{\7f!hw`q-crbd8'}oo"C|uc]tvZbf|hUhcx`{_h]pqg6789Usc\7f2:>518Q5)`zo$yj"ic0/uq+bqf{'m|hn>!wea,IvseW~xThlzn_bmvjqYnWz\7fi<=>?_ymq8383;2_;#j|i.sd,ci6)\7f{%l{l}!gvf`4+qck&GxyoQxr^fbpdYdg|d\7fSdQ|uc2345Y\7fg{6<29=4U1-dvc(un&mg<#y}/fubw+aplj:%{im Mrwa[rtXlh~jSnaznu]j[vse89:;Sua}<9<77>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*Kt}kU|~Rjnt`]`kphsW`Uxyo>?01]{kw:>6:;0Y=!hrg,qb*ak8'}y#jyns/et`f6)\7fmi${\7fQkauc\gjsi|VcT<>?4U1-dvc(un&mg<#y}/fubw+aplj:%{im ws]geqgXkf\7fexRgP1208Q5)`zo$yj"ic0/uq+bqf{'m|hn>!wea,swYci}kTob{at^k\55563\:$k\7fh!rg-dh5(pz&m|m~ hwea3*rbd'~xThlzn_bmvjqYnW;9:7X> gsd-vc)`d9$|~"ixar,dsae7&~nh#z|Pd`vb[firf}UbS>=>;T2,cw`)zo%l`= xr.etev(`\7fmi;"zjl/vp\`drfWje~byQf_512?P6(o{l%~k!hl1,tv*apiz$l{im?.vf`+rtXlh~jSnaznu]j[0563\:$k\7fh!rg-dh5(pz&m|m~ hwea3*rbd'~xThlzn_bmvjqYnW?9:7X> gsd-vc)`d9$|~"ixar,dsae7&~nh#z|Pd`vb[firf}UbS:=>;T2,cw`)zo%l`= xr.etev(`\7fmi;"zjl/vp\`drfWje~byQf_912?P6(o{l%~k!hl1,tv*apiz$l{im?.vf`+rtXlh~jSnaznu]j[<5f3\:$k\7fh!rg-dh5(pz&m|m~ hwea3*rbd'~xThlzn_bmvjqYnWz\7fi<=>?<1<0f>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*quWmk\7fmRm`uov\mZurj9:;<1??>2c8Q5)`zo$yj"ic0/uq+bqf{'m|hn>!wea,swYci}kTob{at^k\wpd789:7=3=n;T2,cw`)zo%l`= xr.etev(`\7fmi;"zjl/vp\`drfWje~byQf_rwa45674;48m6[?/fpe*w`(oe:%{\7f!hw`q-crbd8'}oo"y}_ecweZeh}g~TeR}zb1234959;h1^<"i}f/pe+bj7&~x$kzo|.fugg5(plj%|~Rjnt`]`kphsW`Uxyo>?01>7:6g<]9%l~k }f.eo4+qu'n}j\7f#ixdb2-sae(\7f{UomyoPcnwmpZoX{|h;<=>35?1b?P6(o{l%~k!hl1,tv*apiz$l{im?.vf`+rtXlh~jSnaznu]j[vse89:;0;0<a:W3+bta&{l$ka>!ws-dsdu)o~nh<#ykc.uq[agsiVidyczPi^qvf56785=5?l5Z0.eqb+ta'nf;"z| gvcp*bqck9$|hn!xr^fbpdYdg|d\7fSdQ|uc2345:?6:k0Y=!hrg,qb*ak8'}y#jyns/et`f6)\7fmi${\7fQkauc\gjsi|VcT\7fxl?012?=;4>3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g4)di{xrbhz30?0:?P6(o{l%~k!hl1,tv*apiz$|\7fy} c0-`ewt~fl~7=3<6;T2,cw`)zo%l`= xr.etev(p{}y$o<!laspzj`r;:7827X> gsd-vc)`d9$|~"ixar,twqu(k8%hm\7f|vndv?7;4>3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g4)di{xrbhz34?0e?P6(o{l%~k!hl1,tv*apiz$|\7fy} c0-dip~)odQ;Q#ib1/o26c=R8&myj#|i/fn3*rt(o~kx"z}{s.a2+bkrp'mfW<S!glq-iv4a3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g4)`e|r%k`U=]/enw+kt:o1^<"i}f/pe+bj7&~x$kzo|.vqww*e6'ng~t#ib[2_-chu)ez8m7X> gsd-vc)`d9$|~"ixar,twqu(k8%laxv!glY7Y+aj{'gx>k5Z0.eqb+ta'nf;"z| gvcp*rus{&i:#jczx/en_0[)ody%a~<<;T2,cw`)zo%l`= xr.etev(p{}y$o<!y1=2=66=R8&myj#|i/fn3*rt(o~kx"z}{s.a2+s7;97887X> gsd-vc)`d9$|~"ixar,twqu(k8%}=1<1229V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m>/w3?7;443\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g4)q95>5>>5Z0.eqb+ta'nf;"z| gvcp*rus{&i:#{?35?0a?P6(o{l%~k!hl1,tv*apiz$|\7fy} c0-u5Z6Xign;<=>>2c9V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m>/w3\5Zgil9:;<<<m;T2,cw`)zo%l`= xr.etev(p{}y$o<!y1^0\ekb789::>o5Z0.eqb+ta'nf;"z| gvcp*rus{&i:#{?P3^cm`567888i7X> gsd-vc)`d9$|~"ixar,twqu(k8%}=R:Paof34566:k1^<"i}f/pe+bj7&~x$kzo|.vqww*e6'\7f;T9R``t123444>3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g7)di{xrbhz30?0:?P6(o{l%~k!hl1,tv*apiz$|\7fy} c3-`ewt~fl~7=3<6;T2,cw`)zo%l`= xr.etev(p{}y$o?!laspzj`r;:7827X> gsd-vc)`d9$|~"ixar,twqu(k;%hm\7f|vndv?7;4>3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g7)di{xrbhz34?0e?P6(o{l%~k!hl1,tv*apiz$|\7fy} c3-dip~)odQ;Q#ib1/o26c=R8&myj#|i/fn3*rt(o~kx"z}{s.a1+bkrp'mfW<S!glq-iv4a3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g7)`e|r%k`U=]/enw+kt:o1^<"i}f/pe+bj7&~x$kzo|.vqww*e5'ng~t#ib[2_-chu)ez8m7X> gsd-vc)`d9$|~"ixar,twqu(k;%laxv!glY7Y+aj{'gx>k5Z0.eqb+ta'nf;"z| gvcp*rus{&i9#jczx/en_0[)ody%a~<<;T2,cw`)zo%l`= xr.etev(p{}y$o?!y1=2=66=R8&myj#|i/fn3*rt(o~kx"z}{s.a1+s7;97887X> gsd-vc)`d9$|~"ixar,twqu(k;%}=1<1229V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m=/w3?7;443\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g7)q95>5>>5Z0.eqb+ta'nf;"z| gvcp*rus{&i9#{?35?0a?P6(o{l%~k!hl1,tv*apiz$|\7fy} c3-u5Z6Xign;<=>>2c9V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m=/w3\5Zgil9:;<<<m;T2,cw`)zo%l`= xr.etev(p{}y$o?!y1^0\ekb789::>o5Z0.eqb+ta'nf;"z| gvcp*rus{&i9#{?P3^cm`567888i7X> gsd-vc)`d9$|~"ixar,twqu(k;%}=R:Paof34566:k1^<"i}f/pe+bj7&~x$kzo|.vqww*e5'\7f;T9R``t12344473\:$k\7fh!rg-dh5(pz&m|m~ xsuq,gjkw9;:0Y=!hrg,qb*ak8'}y#jyns/uppv)dgdz9>55Z0.eqb+ta'nf;"z| gvcp*rus{&xjaRhzlm]efZo5=2_;#j|i.sd,ci6)\7f{%l{l}!wrvp+wgjWo\7fg`Rg=c:W3+bta&{l$ka>!ws-dsdu)\7fz~x#\7fob_gwohZoXg{:;<=<k;T2,cw`)zo%l`= xr.etev(p{}y$~lcPftno[lYhz9:;<<?k;T2,cw`)zo%l`= xr.pbiZquWldTe<<<;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw61=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf};996[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at0210>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|;8?7X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{3368Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkr3:=1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by;=4:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmp3433\:$k\7fh!rg-dh5(pz&}{by| MbmvjqYdg|d\7f;?:4U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov;61=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}3956[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at^az8585k2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fexRmv<1<\vq4>3\:$k\7fh!rg-dh5(pz&}{by| MbmvjqYdg|d\7fSnw31?0`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7=3Q}t3;8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp692?m4U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov\g|:56Vx\7f>45Z0.eqb+ta'nf;"z| wqlwv*Kdg|d\7fSnaznu]`}959:j1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=1=[wr512_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fexRmv<5<1g>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|Vir090Pru0:?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs793<l;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f\7f;=7Uyx?74U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov\g|:16;i0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPcx>5:Zts:01^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=5=6f=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}Uhu191_sv1=>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|Vir050=c:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZe~414T~y<6;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f\7f;178h7X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{_b{?=;Yu|;k0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPxnp?4;4e3\:$k\7fh!rg-dh5(pz&}{by| MbmvjqYdg|d\7fSua}<02=6`=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}Usc\7f2>0?]qp7g<]9%l~k }f.eo4+qu'~zex\7f!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|d\7fSnaznu]{kw:36;k0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPxnp?1;4f3\:$k\7fh!rg-dh5(pz&}{by| MbmvjqYdg|d\7fSua}<7<1e>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1912`9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqY\7fg{632?o4U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov\|jt;17;m7X> gsd-vc)`d9$|~"y\7fnup,gjsi|5:5>=5Z0.eqb+ta'nf;"z| wqlwv*eh}g~7==0>f:W3+bta&{l$ka>!ws-ttkru'je~by2>>0d8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{<3<2b>S7'nxm"\7fh gm2-sw)pxg~y#naznu>0:4`<]9%l~k }f.eo4+qu'~zex\7f!lotlw8186n2_;#j|i.sd,ci6)\7f{%||cz}/bmvjq:268l0Y=!hrg,qb*ak8'}y#z~ats-`kphs4?4:j6[?/fpe*w`(oe:%{\7f!xpovq+firf}6<2<h4U1-dvc(un&mg<#y}/vrmpw)dg|d\7f050>f:W3+bta&{l$ka>!ws-ttkru'je~by26>0g8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_13f?P6(o{l%~k!hl1,tv*qwf}x$ob{at^32b>S7'nxm"\7fh gm2-sw)pxg~y#naznu]244c<]9%l~k }f.eo4+qu'~zex\7f!lotlw[77b3\:$k\7fh!rg-dh5(pz&}{by| cnwmpZ56m2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqY39l1^<"i}f/pe+bj7&~x${}`{r.alqkrX=8o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW?;n7X> gsd-vc)`d9$|~"y\7fnup,gjsi|V=:i6[?/fpe*w`(oe:%{\7f!xpovq+firf}U3=h5Z0.eqb+ta'nf;"z| wqlwv*eh}g~T5?<4U1-dvc(un&mg<#y}/vrmpw)dg|d\7fSi?30?00?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f28469:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl86:2?<4U1-dvc(un&mg<#y}/vrmpw)dg|d\7fSi?32?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f28685:2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc95>5>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<2:>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?2;453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb64>49>6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo=161239V4*aun'xm#jb?.vp,suhsz&idyczPd0>::77<]9%l~k }f.eo4+qu'~zex\7f!lotlw[a7X8;;0Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;T=?<4U1-dvc(un&mg<#y}/vrmpw)dg|d\7fSi?P1102?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[7463\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb6W:8:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:S9<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj>_402?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[3463\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb6W>8:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:S5<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj>_801?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f18585;2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:5;;2?<4U1-dvc(un&mg<#y}/vrmpw)dg|d\7fSi<31?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f18785:2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:595>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th?2;>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e0?1;453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb54?49>6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>191239V4*aun'xm#jb?.vp,suhsz&idyczPd3>;:74<]9%l~k }f.eo4+qu'~zex\7f!lotlw[a4;178:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn9S=<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj=_001?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[46592_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:V89=6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>R==1:W3+bta&{l$ka>!ws-ttkru'je~byQk2^615>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g6Z3592_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:V<9=6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>R9=1:W3+bta&{l$ka>!ws-ttkru'je~byQk2^:15>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g6Z?6>2_;#j|i.sd,i`k(lf\7f\7fSdQ?179V4*aun'xm#`kb/emvpZoX98=0Y=!hrg,qb*kbe&ndyyQf_0223>S7'nxm"\7fh mdo,`jssW`U:=<94U1-dvc(un&gna"j`uu]j[446?2_;#j|i.sd,i`k(lf\7f\7fSdQ>3058Q5)`zo$yj"cjm.flqqYnW8>:;6[?/fpe*w`(elg$hb{{_h]2141<]9%l~k }f.ofi*bh}}UbS<8>7:W3+bta&{l$ahc dnww[lY6?8=0Y=!hrg,qb*kbe&ndyyQf_0:23>S7'nxm"\7fh mdo,`jssW`U:5<84U1-dvc(un&gna"j`uu]j[7703\:$k\7fh!rg-nah)cg|~TeR<?169V4*aun'xm#`kb/emvpZoX:8;<7X> gsd-vc)jmd%ocxzPi^0152=R8&myj#|i/lgn+air|VcT>>?8;T2,cw`)zo%fi`!kotv\mZ439>1^<"i}f/pe+hcj'me~xRgP2434?P6(o{l%~k!bel-gkprXaV8==:5Z0.eqb+ta'dof#iazt^k\62703\:$k\7fh!rg-nah)cg|~TeR<7169V4*aun'xm#`kb/emvpZoX:0;=7X> gsd-vc)jmd%ocxzPi^123>S7'nxm"\7fh mdo,`jssW`U8<<94U1-dvc(un&gna"j`uu]j[676?2_;#j|i.sd,i`k(lf\7f\7fSdQ<2058Q5)`zo$yj"cjm.flqqYnW:9:;6[?/fpe*w`(elg$hb{{_h]0041<]9%l~k }f.ofi*bh}}UbS>;>6:W3+bta&{l$ahc dnww[lY39?1^<"i}f/pe+hcj'me~xRgP5048Q5)`zo$yj"cjm.flqqYnW?;=7X> gsd-vc)jmd%ocxzPi^522>S7'nxm"\7fh mdo,`jssW`U3=;5Z0.eqb+ta'dof#iazt^k\=4?<]9%l~k }f.ofi*bh}}Ufi`2?>0c8Q5)`zo$yj"cjm.flqqYjmd6:<3?n;T2,cw`)zo%fi`!kotv\i`k;984:m6[?/fpe*w`(elg$hb{{_lgn84499h1^<"i}f/pe+hcj'me~xRcjm=30:4g<]9%l~k }f.ofi*bh}}Ufi`2>4?3b?P6(o{l%~k!bel-gkprXelg7=80>a:W3+bta&{l$ahc dnww[hcj48<5=l5Z0.eqb+ta'dof#iazt^ofi97068k0Y=!hrg,qb*kbe&ndyyQbel>2<;7f3\:$k\7fh!rg-nah)cg|~Tahc318<2=>S7'nxm"\7fh mdo,`jssWdof0<0>a:W3+bta&{l$ahc dnww[hcj4;:5=l5Z0.eqb+ta'dof#iazt^ofi94668k0Y=!hrg,qb*kbe&ndyyQbel>16;7f3\:$k\7fh!rg-nah)cg|~Tahc322<2e>S7'nxm"\7fh mdo,`jssWdof0?:11`9V4*aun'xm#`kb/emvpZkbe58>2<o4U1-dvc(un&gna"j`uu]nah:5>7;j7X> gsd-vc)jmd%ocxzPmdo?6286i2_;#j|i.sd,i`k(lf\7f\7fS`kb<3:=5d=R8&myj#|i/lgn+air|Vgna1<6>0;8Q5)`zo$yj"cjm.flqqYjmd692<o4U1-dvc(un&gna"j`uu]nah:487;j7X> gsd-vc)jmd%ocxzPmdo?7486i2_;#j|i.sd,i`k(lf\7f\7fS`kb<20=5d=R8&myj#|i/lgn+air|Vgna1=<>0c8Q5)`zo$yj"cjm.flqqYjmd6883?n;T2,cw`)zo%fi`!kotv\i`k;;<4:56[?/fpe*w`(elg$hb{{_lgn868612_;#j|i.sd,i`k(lf\7f\7fS`kb<5<2=>S7'nxm"\7fh mdo,`jssWdof080>9:W3+bta&{l$ahc dnww[hcj4?4:56[?/fpe*w`(elg$hb{{_lgn828612_;#j|i.sd,i`k(lf\7f\7fS`kb<9<2=>S7'nxm"\7fh mdo,`jssWdof0409c:W3+bta&{l$ahc gco-cgk`&nhfkl agda`*gk`'kf`S`kb_fgmawgsg{%}magk.bqwv*tfeeed|V>R.scn*w)q:Vddecg{.scn+av>p0$ym`8l;T2,cw`)zo%fi`!hbl,dfha)okglm#`heba-fha(jeaTahcPgdlfvdrhz&|j`dj!crvq+wgjdfe{W<S!r`o-v*p5Wgebbdz!r`o,`u?\7f1'xja;m4U1-dvc(un&gna"imm/eaib(`jdmj"cijcb,aib)edbUfi`Qheogqeqiu'\7fkgei lsup,vdkkgfzP>P }al,q+s4Xffceey }al-gt<~>&{kf:n5Z0.eqb+ta'dof#jlb.f`nc+aeenk%bjklc/`nc*dkcVgnaRijndpbpjt(~hfbh#m|ts-qehjhgyQ8Q#|nm/p,r7Yig`dbx#|nm.fs=}?)zhg:?6[?/fpe*w`(zhgT~iQjn058Q5)`zo$yj"|nm^pfcjssWld:?6[?/fpe*w`(zhgT{\7fQjn0f8Q5)`zo$yj"||tcnh+wbXzz~Tm~|jg328Q5)`zo$yj"||tcnh+wbXzz~Tm~|jg^f265=R8&myj#|i/sqwfim(zmUy\7fyQnssgd[a46k2_;#j|i.sd,vvredb%yhR||t^alig7c3\:$k\7fh!rg-qwqdkc&xoS\7f}{_bmnf47b3\:$k\7fh!rg-qwqdkc&xoS\7f}{_sgd8486m2_;#j|i.sd,vvredb%yhR||t^pfc9499m1^<"i}f/pe+wusjea$~iQ}su]qabY69m1^<"i}f/pe+wusjea$~iQ}su]qabY59m1^<"i}f/pe+wusjea${\7fQ}su]bwwc`:91^<"i}f/pe+wusjea${\7fQ}su]bwwc`Wm;9<6[?/fpe*w`(zz~i`f!xr^pppZgtzlmTh??l;T2,cw`)zo%y\7fylck.uq[wusWjefn<j4U1-dvc(un&xxxobd/vp\vvrXkfgi=<k4U1-dvc(un&xxxobd/vp\vvrXzlm7<3?j;T2,cw`)zo%y\7fylck.uq[wusW{ol0<0>d:W3+bta&{l$~~zmlj-tvZtt|VxnkR>>d:W3+bta&{l$~~zmlj-tvZtt|VxnkR?n;TQFVZGKAHYh7X]JR^TJWLDKM:1]ON74VHGT[Q_WM:1\IL=4WD@a?RTN\LUME_][c:UQMQCXEFNNSLm4WSKWAZKHLLUI=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^gntq\7fe3hffc~zPftno2>dfkb\7f{h6lncjws[hguclx87nbdd:fbpdYdg|d\7f$='k;ecweZeh}g~#=$k4d`vb[firf}":<$j4d`vb[firf}"9%i5kauc\gjsi|!9"h6jnt`]`kphs =#o7io{a^alqkr/= n0hlzn_bmvjq.1!m1omyoPcnwmp-1.l2njxlQlotlw,=/c3mk\7fmRm`uov+=,b<lh~jSnaznu>3:46<lh~jSnaznu>24?69?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/03mce$><&7:fjj-54!>1oec&<4(58`lh/;<#=7iga(5+5?aoi <#=7iga(7+5?aoi >#=7iga(9+5?aoi 0#=7iga<1<4?aoi48:5;6jfn=32:2=cag6:>394dhl?56803mce0<:17:fjj9726>1oec2>6?58`lh;9>4<7iga<0:=3>bnf5;22;5kio>2:2=cag69<394dhl?64803mce0?<17:fjj9446>1oec2=4?58`lh;:<4<7iga<34=3>bnf58<2:5kio>1<;1<l`d7>409;ekm87803mce0>>17:fjj9566>1oec2<2?58`lh;;:4<7iga<26==>bnf59>6=08;ekm8639>2nbb1=16:fjj929>2nbb1;16:fjj909>2nbb1916:fjj9>9>2nbb1717:flqq.7!>1ocxz'1(:8`jss 8:"46j`uu*25,><lf\7f\7f$<<&8:flqq.6; 20hb{{(06*<>bh}}":9$64dnww,40.02ndyy&>7(:8`jss 82"46j`uu*2=,1<lf\7f\7f$?'7;emvp-47!11ocxz'20+;?air|!89%55kotv+66/?3me~x%<;)99gkpr/:<#37iazt)05-==cg|~#>:'7;emvp-4?!11ocxz'28+4?air|!9"46j`uu*04,><lf\7f\7f$>?&8:flqq.4: 20hb{{(21*<>bh}}"88$64dnww,63.?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;><lf\7f\7f0?;18:flqq:5>720hb{{<35=<>bh}}694364dnww87?9?2ndyy2=>99gkpr;;9437iazt=12:==cg|~7??07;emvp954611ocxz335<b?air|59>6=07;emvp9526>1ocxz33?58`jss4=4<7iazt=7=3>bh}}6=2:5kotv?3;1<lf\7f\7f0508;emvp9?902ooek<age78ahvsq:80jdh`_fgmawgsg{U}8R=# Ykomk~'KFXN,Jkaescwkw&68';%<??;;gkekZ~kfqU9Gu=9_3aoo64<n`ldSubax^0H|60X:jf` kgio^efj`tf|fxTz9Q<,OMMA)HHFL9h56hffn]{hk~X:Br8:R<llj.emciXoldn~lz`r^t7[6*|kVbj\7fRgat^aoo86+kVbj\7fR}}su?3(fYulVlyi|3>,b]kevYulVnjxlQlotlw94*dWmceSzgkti?02)eX`hyT{\7fQkauc\gjsi|4;'oRhzlm]ehdatW{y\7fS{oc=0.`[lkwdlgnbyo{inl\p|vb5;&hSx}j_doaaabblVxnk0>#c^uq[ctby4;'oR{|e^flqqYu{}7; nQznegqbiipWee|1="l_icp[jpbzofd{0>#c^rqaiiflVfjxh`ly<2/gZbh}}U|eizg=24/gZktofdTzlb21-a\vaYcmy~c1?>;8-a\lduX}gnn~kb`w<2/gZnf{Vkgab}{_gwoh86+kVbj\7fR||t<3/gZbf|hUhcx`{_vkgpm;69%iTdl}Pws]bgn;7$jU~\7fhQjcb?3(fYdgdgdbRmcobi>4)eX\7f{UjofQcov?3(fYulVzex\7fQxievk947+kV\7fxiRhxfu]geqgXkf\7fex0>#c^jbwZgkefy\7fShc\7ftx?3(fYulVnjxlQlotlw[roc|a7:=!mPowgqbiipWee|1="l_vp\tkruW~coxe3>1-a\twi`Wlg{xtQ{yqg>4)eX\7f{UomyoPcnwmpZqnl}b6=<"l_qpfhjgcW{ol\7f0?#c^flqqYu{}U}ma3?,b]kevYci}kTob{at<2/gZvugnUmyabPtipfwmYimnk\7fiRxnl<0303*dW~xThh~{h<030=*dWyxdkRkbpu{\pmtb{aUeijo{e^tbh83+kVzycjQjmqvz[qnumzbTm~}jru]uei;3$jUcm~Qyamkg95*dWyxdkRhzlm]wlwct`Vkx\7fh|{_wco9763?%ida}aaeov\jdkb5ocmcRvcny]1O}51W;igg!mPv`nj`Zjh\7f4:'oR~}il]emciX|pzn1?ew19.`[uthoVl~`aQ{yqg>4)eXelgd~tQ{yqg>5){5m2lbjbQwloz\6N~4>V8h`fQiigm\c`hbzh~d~Rx;_2]{wqY6<2l~`a94iov\gim?3gmhnxgcd99lr`tadf}j7}|`g^gntq\7f6<2zycjQjmqvz[qnumzb#<$?;;qplcZcjx}sTxe|jsi*2-43<x{elShc\7ftx]wlwct`!;;%<:4psmd[`kw|pU\7fd\7fk|h)0*51=wzfmTi`~{y^vkv`uo :#:86~}of]fiur~W}byi~f'4(37?uthoVof|ywPtipfwm.2!8>0|\7fah_dosp|Ys`{oxd%8&159svjaXmdz\7fuRzgrdqk,2/6<2zycjQjmqvz[qnumzb#4$?;;qplcZcjx}sTxe|jsi*:-41<x{elShc\7ftx]wlwct`5;;6=0>b:rqkbYbey~rSyf}erj\evubz}";%<l4psmd[`kw|pU\7fd\7fk|h^cpw`ts 8#:o6~}of]fiur~W}byi~fParqfvq.68 ;i7}|`g^gntq\7fX|axn\7feQnsrgqp-4.9k1{~biPelrw}ZrozlycSl}|esv+7,7e3yxdkRkbpu{\pmtb{aUj\7f~k}t)6*5g=wzfmTi`~{y^vkv`uoWhyxi\7fz'5(3a?uthoVof|ywPtipfwmYf{zoyx%8&1c9svjaXmdz\7fuRzgrdqk[dutm{~#;$?m;qplcZcjx}sTxe|jsi]bwvcu|!2"=o5\7frne\ahvsqV~c~h}g_`qpawr/1 ;n7}|`g^gntq\7fX|axn\7feQnsrgqp977294:n6~}of]fiur~W}byi~fPndebp`.7!8h0|\7fah_dosp|Ys`{oxdR`jg`vf,4/6k2zycjQjmqvz[qnumzbTbhintd*24,7e3yxdkRkbpu{\pmtb{aUeijo{e)0*5g=wzfmTi`~{y^vkv`uoWgolmyk'3(3a?uthoVof|ywPtipfwmYimnk\7fi%:&1c9svjaXmdz\7fuRzgrdqk[kc`i}o#9$?m;qplcZcjx}sTxe|jsi]mabgsm!<"=o5\7frne\ahvsqV~c~h}g_ogdeqc/? ;i7}|`g^gntq\7fX|axn\7feQaefcwa->.9k1{~biPelrw}ZrozlycSckhaug+=,7b3yxdkRkbpu{\pmtb{aUeijo{e=33>58>3yxdkRhzlm30?uthoVl~`aQ{hsgpl-6.9:1{~biPftno[qnumzb#=$?;;qplcZ`rdeU\7fd\7fk|h)33-45<x{elSk{cl^vkv`uo ;#:?6~}of]eqijX|axn\7fe&<)018twi`Wo\7fg`Rzgrdqk,1/6;2zycjQiumn\pmtb{a">%<=4psmd[cskdV~c~h}g(7+27>vugnUmyabPtipfwm.0!890|\7fah_gwohZrozlyc$5'>3:rqkbYa}efTxe|jsi*:-40<x{elSk{cl^vkv`uo48:1<3?n;qplcZ`rdeU\7fd\7fk|h^cpw`ts 9#:m6~}of]eqijX|axn\7feQnsrgqp-7.9k1{~biPftno[qnumzbTm~}jru*24,7f3yxdkRhzlm]wlwct`Vkx\7fh|{(3+2e>vugnUmyabPtipfwmYf{zoyx%=&1`9svjaXn|fgSyf}erj\evubz}"?%<o4psmd[cskdV~c~h}g_`qpawr/= ;j7}|`g^dvhiYs`{oxdRo|sdpw,3/6i2zycjQiumn\pmtb{aUj\7f~k}t)5*5d=wzfmTjxbc_ujqavnXizyn~y&7)0c8twi`Wo\7fg`Rzgrdqk[dutm{~#5$?k;qplcZ`rdeU\7fd\7fk|h^cpw`ts48:1<3?n;qplcZ`rdeU\7fd\7fk|h^lfcdrb 9#:m6~}of]eqijX|axn\7feQaefcwa-7.9k1{~biPftno[qnumzbTbhintd*24,7f3yxdkRhzlm]wlwct`Vdnklzj(3+2e>vugnUmyabPtipfwmYimnk\7fi%=&1`9svjaXn|fgSyf}erj\j`af|l"?%<o4psmd[cskdV~c~h}g_ogdeqc/= ;j7}|`g^dvhiYs`{oxdR`jg`vf,3/6i2zycjQiumn\pmtb{aUeijo{e)5*5d=wzfmTjxbc_ujqavnXflmjxh&7)0c8twi`Wo\7fg`Rzgrdqk[kc`i}o#5$?k;qplcZ`rdeU\7fd\7fk|h^lfcdrb48:1<384re]`hn773{nThlzn_bmvjq.7!8:0~iQkauc\gjsi|!;"=<5}d^fbpdYdg|d\7f$<>&119q`Zbf|hUhcx`{(3+24>tcWmk\7fmRm`uov+7,773{nThlzn_bmvjq.3!8:0~iQkauc\gjsi|!?"==5}d^fbpdYdg|d\7f$;'>0:pg[agsiVidycz'7(33?wbXlh~jSnaznu*;-46<zmUomyoPcnwmp-?.991yhRjnt`]`kphs494:?6|k_ecweZeh}g~7==4?>038vaYci}kTob{at=33:46<zmUomyoPcnwmp979991yhRjnt`]`kphs4;4:<6|k_ecweZeh}g~7?3??;sf\`drfWje~by2;>028vaYci}kTob{at=7=55=ulVnjxlQlotlw838682xoSio{a^alqkr;?7;;7\7fjPd`vb[firf}632<>4re]geqgXkf\7fex1715:pg[`h13{nT~~z<;sqw3>uea}oy~95|rrv14>rjx&Uhk"hffn]{hk~X:Br8:R<llj,mcj2<|{\7fn56{addpehjq23\7fkgei84ws]bgn0<\7f{Uh`f??;vp\`drfWje~by&?)028swYci}kTob{at)3*54=pzVnjxlQlotlw,46.991|~Rjnt`]`kphs ;#:<6y}_ecweZeh}g~#?$??;vp\`drfWje~by&;)028swYci}kTob{at)7*55=pzVnjxlQlotlw,3/682}ySio{a^alqkr/? ;;7z|Pd`vb[firf}"3%<>4ws]geqgXkf\7fex%7&119tvZbf|hUhcx`{<1<27>quWmk\7fmRm`uov?55<768;0{\7fQkauc\gjsi|5;;2<>4ws]geqgXkf\7fex1?1119tvZbf|hUhcx`{<3<24>quWmk\7fmRm`uov?7;773~xThlzn_bmvjq:368:0{\7fQkauc\gjsi|5?5==5xr^fbpdYdg|d\7f0;0>0:uq[agsiVidycz37?33?rtXlh~jSnaznu>;:46<\7f{UomyoPcnwmp9?9=2}ySh`9;vp\vvrzHIzm:<5O@y7:a?@=<3;p_9h553a91?74:?2?m7=640dxj1>2281e85854:&7<6<3?m1v_9j553a91?74:?2?m7=640d8Wab==:?1<7?<27:7e?5><;:0_9j552794?74:?2?m7=64328`04a290:6<u\4g866f<22899:5:n:2;75c=q\8<;6=4>:08154}T<o0>>n4::0112=2f2:3?=k5+4659``=Q<1>1>v{j7;38q`>=82w/=8651`9a17`=83<>6>495zJ730=]<=0?w<>5f;3;>41=u-;=97;=f:&7<7<2:l1b94750;9l1d0=83.:9l4:b19m50?=821d9lk50;&21d<2j91e=8751:9l1db=83.:9l4:b19m50?=:21d9lm50;&21d<2j91e=8753:9l1dd=83.:9l4:b19m50?=<21d9lo50;&21d<2j91e=8755:9l1d?=83.:9l4:b19m50?=>21d9l650;&21d<2j91e=8757:9l1d1=83.:9l4:b19m50?=021d9l;50;&21d<2j91e=8759:9l1d2=83.:9l4:b19m50?=i21d95:50;&21d<20l1e=8750:9l1=e=83.:9l4:8d9m50?=921d95l50;&21d<20l1e=8752:9l1=g=83.:9l4:8d9m50?=;21d95750;&21d<20l1e=8754:9l1=>=83.:9l4:8d9m50?==21d95950;&21d<20l1e=8756:9l1=0=83.:9l4:8d9m50?=?21d95;50;&21d<20l1e=8758:9l1=5=83.:9l4:8d9m50?=121d95<50;&21d<20l1e=875a:9j1gd=831d9>=50;9l17b=831b9l=50;9j1<d=831d9=>50;&21d<2::1e=8750:9l0c`=83.:9l4:229m50?=921d8kk50;&21d<2::1e=8752:9l0cb=83.:9l4:229m50?=;21d8km50;&21d<2::1e=8754:9l0cd=83.:9l4:229m50?==21d8k750;&21d<2::1e=8756:9l0c>=83.:9l4:229m50?=?21d8k950;&21d<2::1e=8758:9l0c0=83.:9l4:229m50?=121d8k;50;&21d<2::1e=875a:9l0c2=83.:9l4:229m50?=j21d8k=50;&21d<2::1e=875c:9l0c4=83.:9l4:229m50?=l21d8k?50;&21d<2::1e=875e:9l0c6=83.:9l4:229m50?=n21d8hk50;&21d<2::1e=8751198k1cc290/=8o55318j43>28;07b:jc;29 43f2<887c?:9;31?>i3mk0;6)?:a;717>h6=00:?65`4dc94?"6=h0>>>5a14;951=<g=o26=4+14c9175<f8?26<;4;n6f<?6=,8?j68<<;o36=?7132e?i:4?:%36e?35;2d:944>7:9l0`0=83.:9l4:229m50?=9110c9k::18'50g==;90b<;6:0;8?j37>3:1(<;n:400?k7213;j76a:0483>!72i3?9?6`>5882f>=h=9>1<7*>5`8666=i9<31=n54o420>5<#9<k19?=4n07:>4b<3f?;>7>5$07b>0443g;>57?j;:m644<72-;>m7;=3:l21<<6n21d8ko50;&21d<2::1e=8752198k1ca290/=8o55318j43>2;;07b:j4;29 43f2<887c?:9;01?>i3m:0;6)?:a;717>h6=009?65f4c594?"6=h0?hl5a14;94>=n<k<1<7*>5`87`d=i9<31=65f4c794?"6=h0?hl5a14;96>=n<k>1<7*>5`87`d=i9<31?65f4c194?"6=h0?hl5a14;90>=n<k81<7*>5`87`d=i9<31965f4c294?"6=h0?hl5a14;92>=n<hl1<7*>5`87`d=i9<31;65f4`g94?"6=h0?hl5a14;9<>=n<hn1<7*>5`87`d=i9<31565f4`a94?"6=h0?hl5a14;9e>=n<hh1<7*>5`87`d=i9<31n65f4`c94?"6=h0?hl5a14;9g>=n<h31<7*>5`87`d=i9<31h65f4`:94?"6=h0?hl5a14;9a>=n<h=1<7*>5`87`d=i9<31j65f4`794?"6=h0?hl5a14;955=<a=k?6=4+14c90ag<f8?26<?4;h6b7?6=,8?j69jn;o36=?7532c?m?4?:%36e?2ci2d:944>3:9j0d7=83.:9l4;d`9m50?=9=10e9o?:18'50g=<mk0b<;6:078?l2>n3:1(<;n:5fb?k7213;=76g;9d83>!72i3>om6`>58823>=n<0n1<7*>5`87`d=i9<31=554i5;`>5<#9<k18io4n07:>4?<3`>ih7>5$07b>1bf3g;>57?n;:k7ff<72-;>m7:ka:l21<<6j21b8ol50;&21d<3lh1e=8751b98m1df290/=8o54ec8j43>28n07d:m9;29 43f2=nj7c?:9;3f?>o3j10;6)?:a;6ge>h6=00:j65f4c394?"6=h0?hl5a14;965=<a=k=6=4+14c90ag<f8?26??4;h6:f?6=,8?j69jn;o36=?4532c?5l4?:%36e?2ci2d:944=3:9j1=7=831i8:850;394?6|@==>7)?95;642>i6=>0;66sm8`83>4<729qC8:;4$046>=g<g131<75rb5194?e428i36??>{I641>\3<3;=w44>0;d9`?c=j3;3654>7;a9e?c=990:47h59;34>a<d2k0j654r$046>0553-nj6564$5:9166<,=o19>?4$071>4313`?2m7>5;n76g?6=3`?2h7>5;n6;3?6=3f?j=7>5;h6;e?6=3`??:7>5$07b>02a3g;>57>4;h77a?6=,8?j68:i;o36=?7<3`??h7>5$07b>02a3g;>57<4;h77g?6=,8?j68:i;o36=?5<3`??n7>5$07b>02a3g;>57:4;h77e?6=,8?j68:i;o36=?3<3`??57>5$07b>02a3g;>5784;h77<?6=,8?j68:i;o36=?1<3`??;7>5$07b>02a3g;>5764;h771?6=,8?j68:i;o36=??<3`??87>5$07b>02a3g;>57o4;h7:=?6=3f?8:7>5;n7b2?6=,8?j68l?;o36=?6<3f?ji7>5$07b>0d73g;>57?4;n7b`?6=,8?j68l?;o36=?4<3f?jo7>5$07b>0d73g;>57=4;n7bf?6=,8?j68l?;o36=?2<3f?jm7>5$07b>0d73g;>57;4;n7b=?6=,8?j68l?;o36=?0<3f?j47>5$07b>0d73g;>5794;n7b3?6=,8?j68l?;o36=?><3f?j97>5$07b>0d73g;>5774;n7b0?6=,8?j68l?;o36=?g<3f?387>5$07b>0>b3g;>57>4;n7;g?6=,8?j686j;o36=?7<3f?3n7>5$07b>0>b3g;>57<4;n7;e?6=,8?j686j;o36=?5<3f?357>5$07b>0>b3g;>57:4;n7;<?6=,8?j686j;o36=?3<3f?3;7>5$07b>0>b3g;>5784;n7;2?6=,8?j686j;o36=?1<3f?397>5$07b>0>b3g;>5764;n7;7?6=,8?j686j;o36=??<3f?3>7>5$07b>0>b3g;>57o4;h743?6=,8?j686?;o36=?6<3`?<j7>5$07b>0>73g;>57?4;h74a?6=,8?j686?;o36=?4<3`?<h7>5$07b>0>73g;>57=4;h74g?6=,8?j686?;o36=?2<3`?<n7>5$07b>0>73g;>57;4;h74e?6=,8?j686?;o36=?0<3`?<57>5$07b>0>73g;>5794;h74<?6=,8?j686?;o36=?><3`?<:7>5$07b>0>73g;>5774;h741?6=,8?j686?;o36=?g<3`?in7>5;n6;a?6=,8?j6977;o36=?6<3f>2:7>5$07b>1??3g;>57?4;n6:1?6=,8?j6977;o36=?4<3f>287>5$07b>1??3g;>57=4;n6:7?6=,8?j6977;o36=?2<3f>2>7>5$07b>1??3g;>57;4;n6:5?6=,8?j6977;o36=?0<3f>2<7>5$07b>1??3g;>5794;n6;b?6=,8?j6977;o36=?><3f>3h7>5$07b>1??3g;>5774;n6;g?6=,8?j6977;o36=?g<3f?8?7>5;n71`?6=3`?>j7>5$07b>00?3g;>57>4;h753?6=,8?j6887;o36=?7<3`?=:7>5$07b>00?3g;>57<4;h751?6=,8?j6887;o36=?5<3`?=87>5$07b>00?3g;>57:4;h757?6=,8?j6887;o36=?3<3`?=>7>5$07b>00?3g;>5784;h755?6=,8?j6887;o36=?1<3`?=<7>5$07b>00?3g;>5764;h76a?6=,8?j6887;o36=??<3`?>h7>5$07b>00?3g;>57o4;h7b7?6=3`?887>5;h6;f?6=3`?io7>5;n7:g?6=3f?j>7>5;n6;<?6=3f?j<7>5;h7:f?6=3f?;<7>5$07b>0443g;>57>4;n6eb?6=,8?j68<<;o36=?7<3f>mi7>5$07b>0443g;>57<4;n6e`?6=,8?j68<<;o36=?5<3f>mo7>5$07b>0443g;>57:4;n6ef?6=,8?j68<<;o36=?3<3f>m57>5$07b>0443g;>5784;n6e<?6=,8?j68<<;o36=?1<3f>m;7>5$07b>0443g;>5764;n6e2?6=,8?j68<<;o36=??<3f>m97>5$07b>0443g;>57o4;n6e0?6=,8?j68<<;o36=?d<3f>m?7>5$07b>0443g;>57m4;n6e6?6=,8?j68<<;o36=?b<3f>m=7>5$07b>0443g;>57k4;n6e4?6=,8?j68<<;o36=?`<3f>ni7>5$07b>0443g;>57??;:m7aa<72-;>m7;=3:l21<<6921d8hm50;&21d<2::1e=8751398k1ce290/=8o55318j43>28907b:ja;29 43f2<887c?:9;37?>i3m00;6)?:a;717>h6=00:965`4d:94?"6=h0>>>5a14;953=<g=o<6=4+14c9175<f8?26<94;n6f2?6=,8?j68<<;o36=?7?32e?i84?:%36e?35;2d:944>9:9l150=83.:9l4:229m50?=9h10c8>::18'50g==;90b<;6:0`8?j37<3:1(<;n:400?k7213;h76a:0283>!72i3?9?6`>5882`>=h=981<7*>5`8666=i9<31=h54o422>5<#9<k19?=4n07:>4`<3f>mm7>5$07b>0443g;>57<?;:m7ac<72-;>m7;=3:l21<<5921d8h:50;&21d<2::1e=8752398k1c4290/=8o55318j43>2;907d;<a;29 43f2<>87c?:9;28?l33:3:1(<;n:460?k7213;07d;;1;29 43f2<>87c?:9;08?l3383:1(<;n:460?k7213907d;<f;29 43f2<>87c?:9;68?l34m3:1(<;n:460?k7213?07d;<d;29 43f2<>87c?:9;48?l34k3:1(<;n:460?k7213=07d;<b;29 43f2<>87c?:9;:8?l3413:1(<;n:460?k7213307d;<8;29 43f2<>87c?:9;c8?l2e?3:1(<;n:5fb?k7213:07d:m6;29 43f2=nj7c?:9;38?l2e=3:1(<;n:5fb?k7213807d:m4;29 43f2=nj7c?:9;18?l2e;3:1(<;n:5fb?k7213>07d:m2;29 43f2=nj7c?:9;78?l2e83:1(<;n:5fb?k7213<07d:nf;29 43f2=nj7c?:9;58?l2fm3:1(<;n:5fb?k7213207d:nd;29 43f2=nj7c?:9;;8?l2fk3:1(<;n:5fb?k7213k07d:nb;29 43f2=nj7c?:9;`8?l2fi3:1(<;n:5fb?k7213i07d:n9;29 43f2=nj7c?:9;f8?l2f03:1(<;n:5fb?k7213o07d:n7;29 43f2=nj7c?:9;d8?l2f=3:1(<;n:5fb?k7213;;76g;a583>!72i3>om6`>58825>=n<h91<7*>5`87`d=i9<31=?54i5c1>5<#9<k18io4n07:>45<3`>j=7>5$07b>1bf3g;>57?;;:k7e5<72-;>m7:ka:l21<<6=21b84h50;&21d<3lh1e=8751798m1?b290/=8o54ec8j43>28=07d:6d;29 43f2=nj7c?:9;3;?>o31j0;6)?:a;6ge>h6=00:565f4cf94?"6=h0?hl5a14;95d=<a=hh6=4+14c90ag<f8?26<l4;h6af?6=,8?j69jn;o36=?7d32c?nl4?:%36e?2ci2d:944>d:9j0g?=83.:9l4;d`9m50?=9l10e9l7:18'50g=<mk0b<;6:0d8?l2e93:1(<;n:5fb?k72138;76g;a783>!72i3>om6`>58815>=n<0h1<7*>5`87`d=i9<31>?54i5;b>5<#9<k18io4n07:>75<3`>357>5;h75f?6=,8?j689;;o36=?6<3`?<?7>5$07b>0133g;>57?4;h746?6=,8?j689;;o36=?4<3`?<=7>5$07b>0133g;>57=4;h744?6=,8?j689;;o36=?2<3`?=j7>5$07b>0133g;>57;4;h75a?6=,8?j689;;o36=?0<3`?=h7>5$07b>0133g;>5794;h75g?6=,8?j689;;o36=?><3`?=m7>5$07b>0133g;>5774;h75=?6=,8?j689;;o36=?g<3`?>>7>5$07b>03e3g;>57>4;h76e?6=,8?j68;m;o36=?7<3`?>57>5$07b>03e3g;>57<4;h76<?6=,8?j68;m;o36=?5<3`?>;7>5$07b>03e3g;>57:4;h762?6=,8?j68;m;o36=?3<3`?>97>5$07b>03e3g;>5784;h760?6=,8?j68;m;o36=?1<3`?>?7>5$07b>03e3g;>5764;h765?6=,8?j68;m;o36=??<3`?><7>5$07b>03e3g;>57o4;n703?6=3f>257>5;h7;5?6=3k>3<7>51;294~"6><03m6F;7g9K023<g131<75rb5:2>5<6290;w)?95;642>N3?o1C8:;4o074>5<<uk>=87>53;294~"6><03>6F;7g9K023<@=80(h;558d8 <1=92c?97>5;h73>5<<g8?h6=44}c65`?6=;3:1<v*>648;6>N3?o1C8:;4H508 `3==0l0(4951:k71?6=3`?;6=44o07`>5<<uk>=?7>53;294~"6><03>6F;7g9K023<@=80(h;558d8 <1=92c?97>5;h73>5<<g8?h6=44}c65f?6==3:1<v*>648;3>N3?o1C8:;4H508 `3==0l0(4951:k71?6=3`><6=44i4294?=n9<h1<75`14a94?=zj=<h6=4<:183\7f!71=3297E:8f:J730=O<;1/i84:9g9'=2<63`>>6=44i4294?=h9<i1<75rb541>5<2290;w)?95;:4?M20n2B?;85G439'a0<21o1/5:4>;h66>5<<a==1<75f5183>>o6=k0;66a>5b83>>{e<?k1<7:50;2x 40221<0D99i;I641>">?3;0e9;50;9j15<722c:9o4?::m21f<722wi8;750;694?6|,8<>6584H55e?M20=2.2;7?4i5794?=n=90;66g>5c83>>i6=j0;66sm46194?2=83:p(<8::948L11a3A><96*67;38m13=831b9=4?::k21g<722e:9n4?::\7fa024=83>1<7>t$046>=0<@==m7E:85:&:3?7<a=?1<75f5183>>o6=k0;66a>5b83>>{e:l;1<7:50;2x 40221<0D99i;I641>">?3>0e9;50;9j15<722c:9o4?::m21f<722wi>4l50;694?6|,8<>65=4H55e?M20=2.2;7?4i5794?=n<j0;66g:0;29?j72k3:17pl=9b83>1<729q/=;;5829K02`<@==>7)78:09j00<722c?o7>5;h73>5<<g8?h6=44}c0:a?6=<3:1<v*>648;7>N3?o1C8:;4$8595>o3=3:17d:l:188m06=831d=8m50;9~f7?a290?6=4?{%351?>43A><j6F;749'=2<63`>>6=44i5a94?=n=90;66a>5b83>>{e:h:1<7:50;2x 4022190D99i;I641>">?3;0e9;50;9j0f<722c><7>5;n36g?6=3th9m<4?:583>5}#9??14>5G46d8L1123-3<6<5f4483>>o3k3:17d;?:188k43d2900qo<n2;290?6=8r.::8473:J73c=O<>?0(4951:k71?6=3`>h6=44i4294?=h9<i1<75rb3c0>5<3290;w)?95;:0?M20n2B?;85+9682?l222900e9m50;9j15<722e:9n4?::\7fa6d2=83>1<7>t$046>=5<@==m7E:85:&:3?7<a=?1<75f4b83>>o283:17b?:c;29?xd5i<0;694?:1y'533=0:1C8:h4H556?!?0281b884?::k7g?6=3`?;6=44o07`>5<<uk82h7>54;294~"6><03?6F;7g9K023<,0=1=6g;5;29?l2d2900e8>50;9l50e=831vn>o=:187>5<7s-;=9769;I64b>N3?<1/5:4>;h66>5<<a<:1<75f14`94?=h9<i1<75rb2c2>5<3290;w)?95;:5?M20n2B?;85+9682?l222900e8>50;9j50d=831d=8m50;9~f63e290?6=4?{%351?>43A><j6F;749'=2<63`>>6=44i5a94?=n=90;66a>5b83>>{e;<i1<7:50;2x 4022190D99i;I641>">?3;0e9;50;9j0f<722c><7>5;n36g?6=3th89h4?:583>5}#9??14>5G46d8L1123-3<6<5f4483>>o3k3:17d;?:188k43d2900qo=:f;290?6=8r.::8473:J73c=O<>?0(4951:k71?6=3`>h6=44i4294?=h9<i1<75rb243>5<3290;w)?95;:0?M20n2B?;85+9682?l222900e9m50;9j15<722e:9n4?::\7fa737=83>1<7>t$046>=5<@==m7E:85:&:3?7<a=?1<75f4b83>>o283:17b?:c;29?xd4>;0;694?:1y'533=0:1C8:h4H556?!?0281b884?::k7g?6=3`?;6=44o07`>5<<uk9=?7>54;294~"6><03?6F;7g9K023<,0=1=6g;5;29?l2d2900e8>50;9l50e=831vn>8;:187>5<7s-;=976<;I64b>N3?<1/5:4>;h66>5<<a=i1<75f5183>>i6=j0;66sm37794?2=83:p(<8::918L11a3A><96*67;38m13=831b8n4?::k64?6=3f;>o7>5;|`01a<72=0;6=u+1779<6=O<>l0D99:;%;4>4=n<<0;66g;c;29?l372900c<;l:188yg4?=3:1?7>50z&220<b82B?;k5G4678 <1=:?1b4o4?::k;g?6=3f;>97>5;|`13g<72=0;6=u+1779a3=O<>l0D99:;h6:>5<<a<;1<75f14g94?=h9<?1<75rb3;3>5<4290;w)?95;64a>N3?o1C8:;4i5;94?=nlk0;66a>5483>>{e:1=1<7=50;2x 4022l:0D99i;I641>">?38=7d6m:188m=e=831d=8;50;9~f71d290?6=4?{%351?c13A><j6F;749j0<<722c>=7>5;h36a?6=3f;>97>5;|`1=7<72:0;6=u+177902c<@==m7E:85:k7=?6=3`ni6=44o076>5<<uk8347>53;294~"6><0n<6F;7g9K023<,0=1>;5f8c83>>o?k3:17b?:5;29?xd5?m0;694?:1y'533=m?1C8:h4H556?l2>2900e8?50;9j50c=831d=8;50;9~f7?429086=4?{%351?20m2B?;k5G4678m1?=831bho4?::m210<722wi>5750;194?6|,8<>6h>4H55e?M20=2.2;7<9;h:a>5<<a1i1<75`14794?=zj;=n6=4;:183\7f!71=3o=7E:8f:J730=n<00;66g:1;29?l72m3:17b?:5;29?xd51=0;6>4?:1y'533=<>o0D99i;I641>o313:17djm:188k4322900qo<7a;297?6=8r.::84j0:J73c=O<>?0(495279j<g<722c3o7>5;n361?6=3th9;k4?:583>5}#9??1i;5G46d8L1123`>26=44i4394?=n9<o1<75`14794?=zj;3>6=4<:183\7f!71=3><i6F;7g9K023<a=31<75fdc83>>i6=<0;66sm29`94?5=83:p(<8::d28L11a3A><96*67;05?l>e2900e5m50;9l503=831vn?6?:187>5<7s-;=97k9;I64b>N3?<1b844?::k65?6=3`;>i7>5;n361?6=3th95;4?:283>5}#9??18:k4H55e?M20=2c?57>5;hfa>5<<g8?>6=44}c0;g?6=;3:1<v*>648f4>N3?o1C8:;4$85963=n0k0;66g7c;29?j72=3:17pl=8083>1<729q/=;;5e79K02`<@==>7d:6:188m07=831b=8k50;9l503=831vn?78:180>5<7s-;=97:8e:J73c=O<>?0e9750;9j`g<722e:984?::\7fa6=b=8391<7>t$046>`6<@==m7E:85:&:3?413`2i6=44i9a94?=h9<?1<75rb3:1>5<3290;w)?95;g5?M20n2B?;85f4883>>o293:17d?:e;29?j72=3:17pl=9983>6<729q/=;;546g8L11a3A><96g;9;29?lbe2900c<;::188yg4?m3:1?7>50z&220<b82B?;k5G4678 <1=:?1b4o4?::k;g?6=3f;>97>5;|`1<6<72=0;6=u+1779a3=O<>l0D99:;h6:>5<<a<;1<75f14g94?=h9<?1<75rb3;:>5<4290;w)?95;64a>N3?o1C8:;4i5;94?=nlk0;66a>5483>>{e:1l1<7=50;2x 4022l:0D99i;I641>">?38=7d6m:188m=e=831d=8;50;9~f7>3290?6=4?{%351?c13A><j6F;749j0<<722c>=7>5;h36a?6=3f;>97>5;|`1=d<72:0;6=u+177902c<@==m7E:85:k7=?6=3`ni6=44o076>5<<uk83:7>53;294~"6><0n<6F;7g9K023<,0=1>;5f8c83>>o?k3:17b?:5;29?xd5180;6>4?:1y'533=<>o0D99i;I641>o313:17djm:188k4322900qo=;5;297?6=8r.::84j0:J73c=O<>?0(495279j<g<722c3o7>5;n361?6=3th8?o4?:583>5}#9??1i;5G46d8L1123`>26=44i4394?=n9<o1<75`14794?=zj:?;6=4<:183\7f!71=3><i6F;7g9K023<a=31<75fdc83>>i6=<0;66sm35594?5=83:p(<8::d28L11a3A><96*67;05?l>e2900e5m50;9l503=831vn>=l:187>5<7s-;=97k9;I64b>N3?<1b844?::k65?6=3`;>i7>5;n361?6=3th89?4?:283>5}#9??18:k4H55e?M20=2c?57>5;hfa>5<<g8?>6=44}c17<?6=;3:1<v*>648f4>N3?o1C8:;4$85963=n0k0;66g7c;29?j72=3:17pl<3e83>1<729q/=;;5e79K02`<@==>7d:6:188m07=831b=8k50;9l503=831vn>;<:180>5<7s-;=97:8e:J73c=O<>?0e9750;9j`g<722e:984?::\7fa71?=8391<7>t$046>`6<@==m7E:85:&:3?413`2i6=44i9a94?=h9<?1<75rb21f>5<3290;w)?95;g5?M20n2B?;85f4883>>o293:17d?:e;29?j72=3:17pl<5583>6<729q/=;;546g8L11a3A><96g;9;29?lbe2900c<;::188yg53i3:1?7>50z&220<b82B?;k5G4678 <1=:?1b4o4?::k;g?6=3f;>97>5;|`07c<72=0;6=u+1779a3=O<>l0D99:;h6:>5<<a<;1<75f14g94?=h9<?1<75rb276>5<4290;w)?95;64a>N3?o1C8:;4i5;94?=nlk0;66a>5483>>{e;=h1<7=50;2x 4022l:0D99i;I641>">?38=7d6m:188m=e=831d=8;50;9~f627290?6=4?{%351?c13A><j6F;749j0<<722c>=7>5;h36a?6=3f;>97>5;|`013<72:0;6=u+177902c<@==m7E:85:k7=?6=3`ni6=44o076>5<<uk9?o7>53;294~"6><0n<6F;7g9K023<,0=1>;5f8c83>>o?k3:17b?:5;29?xd4<80;694?:1y'533=m?1C8:h4H556?l2>2900e8?50;9j50c=831d=8;50;9~f63029086=4?{%351?20m2B?;k5G4678m1?=831bho4?::m210<722wi?9j50;194?6|,8<>6h>4H55e?M20=2.2;7<9;h:a>5<<a1i1<75`14794?=zj:>96=4;:183\7f!71=3o=7E:8f:J730=n<00;66g:1;29?l72m3:17b?:5;29?xd4=10;6>4?:1y'533=<>o0D99i;I641>o313:17djm:188k4322900qo=;e;297?6=8r.::84j0:J73c=O<>?0(495279j<g<722c3o7>5;n361?6=3th88>4?:583>5}#9??1i;5G46d8L1123`>26=44i4394?=n9<o1<75`14794?=zj:?26=4<:183\7f!71=3><i6F;7g9K023<a=31<75fdc83>>i6=<0;66sm35d94?5=83:p(<8::d28L11a3A><96*67;05?l>e2900e5m50;9l503=831vn>:;:187>5<7s-;=97k9;I64b>N3?<1b844?::k65?6=3`;>i7>5;n361?6=3th89l4?:283>5}#9??18:k4H55e?M20=2c?57>5;hfa>5<<g8?>6=44}c172?6=;3:1<v*>648f4>N3?o1C8:;4$85963=n0k0;66g7c;29?j72=3:17pl<5083>6<729q/=;;546g8L11a3A><96g;9;29?lbe2900c<;::188yg4ej3:187>50z&220<b>2B?;k5G4678m1?=831b9<4?::k21`<722e:984?::\7fa6gg=83>1<7>t$046>`0<@==m7E:85:k7=?6=3`?:6=44i07f>5<<g8?>6=44}c0a=?6=<3:1<v*>648f2>N3?o1C8:;4i5;94?=n=80;66g>5d83>>i6=<0;66sm2c:94?2=83:p(<8::d48L11a3A><96g;9;29?l362900e<;j:188k4322900qo<m7;290?6=8r.::84j6:J73c=O<>?0e9750;9j14<722c:9h4?::m210<722wi>o850;694?6|,8<>6h84H55e?M20=2c?57>5;h72>5<<a8?n6=44o076>5<<uk8o>7>54;294~"6><0n:6F;7g9K023<a=31<75f5083>>o6=l0;66a>5483>>{e:m;1<7:50;2x 4022l<0D99i;I641>o313:17d;>:188m43b2900c<;::188yg4c83:187>50z&220<b>2B?;k5G4678m1?=831b9<4?::k21`<722e:984?::\7fa6f`=83>1<7>t$046>`0<@==m7E:85:k7=?6=3`?:6=44i07f>5<<g8?>6=44}c0`a?6=<3:1<v*>648f2>N3?o1C8:;4i5;94?=n=80;66g>5d83>>i6=<0;66sm2bf94?2=83:p(<8::d48L11a3A><96g;9;29?l362900e<;j:188k4322900qo=8b;290?6=8r.::84j6:J73c=O<>?0e9750;9j14<722c:9h4?::m210<722wi?:o50;694?6|,8<>6h84H55e?M20=2c?57>5;h72>5<<a8?n6=44o076>5<<uk9<57>54;294~"6><0n:6F;7g9K023<a=31<75f5083>>o6=l0;66a>5483>>{e;>21<7:50;2x 4022l<0D99i;I641>o313:17d;>:188m43b2900c<;::188yg50?3:187>50z&220<b>2B?;k5G4678m1?=831b9<4?::k21`<722e:984?::\7fa720=83>1<7>t$046>`0<@==m7E:85:k7=?6=3`?:6=44i07f>5<<g8?>6=44}c1:6?6=<3:1<v*>648f2>N3?o1C8:;4i5;94?=n=80;66g>5d83>>i6=<0;66sm38394?2=83:p(<8::d48L11a3A><96g;9;29?l362900e<;j:188k4322900qo=60;290?6=8r.::84j6:J73c=O<>?0e9750;9j14<722c:9h4?::m210<722wi?5h50;694?6|,8<>6h84H55e?M20=2c?57>5;h72>5<<a8?n6=44o076>5<<uk93i7>54;294~"6><0n:6F;7g9K023<a=31<75f5083>>o6=l0;66a>5483>>{e;1n1<7:50;2x 4022l<0D99i;I641>o313:17d;>:188m43b2900c<;::188yg7f<3:187>50z&220<?;2B?;k5G4678 <1=92c?97>5;h6`>5<<a<:1<75`14a94?=zj8kh6=4;:183\7f!71=3287E:8f:J730=#1>0:7d:::188m1e=831b9=4?::m21f<722wi=ll50;694?6|,8<>65=4H55e?M20=2.2;7?4i5794?=n<j0;66g:0;29?j72k3:17pl>a`83>1<729q/=;;5829K02`<@==>7)78:09j00<722c?o7>5;h73>5<<g8?h6=44}c3b=?6=<3:1<v*>648;7>N3?o1C8:;4$8595>o3=3:17d:l:188m06=831d=8m50;9~f4g?290?6=4?{%351?>43A><j6F;749'=2<63`>>6=44i5a94?=n=90;66a>5b83>>{e9h=1<7:50;2x 4022190D99i;I641>">?3;0e9;50;9j0f<722c><7>5;n36g?6=3th:m;4?:583>5}#9??14>5G46d8L1123-3<6<5f4483>>o3k3:17d;?:188k43d2900qo?n5;290?6=8r.::8473:J73c=O<>?0(4951:k71?6=3`>h6=44i4294?=h9<i1<75rb0c0>5<3290;w)?95;:0?M20n2B?;85+9682?l222900e9m50;9j15<722e:9n4?::\7fa5d4=83>1<7>t$046>=5<@==m7E:85:&:3?7<a=?1<75f4b83>>o283:17b?:c;29?xd5980;694?:1y'533=0:1C8:h4H556?!?0281b884?::k7g?6=3`?;6=44o07`>5<<uk8:57>54;294~"6><03?6F;7g9K023<,0=1=6g;5;29?l2d2900e8>50;9l50e=831vn??7:187>5<7s-;=976<;I64b>N3?<1/5:4>;h66>5<<a=i1<75f5183>>i6=j0;66sm20594?2=83:p(<8::918L11a3A><96*67;38m13=831b8n4?::k64?6=3f;>o7>5;|`153<72=0;6=u+1779<6=O<>l0D99:;%;4>4=n<<0;66g;c;29?l372900c<;l:188yg46=3:187>50z&220<?;2B?;k5G4678 <1=92c?97>5;h6`>5<<a<:1<75`14a94?=zj;;?6=4;:183\7f!71=3287E:8f:J730=#1>0:7d:::188m1e=831b9=4?::m21f<722wi><=50;694?6|,8<>65=4H55e?M20=2.2;7?4i5794?=n<j0;66g:0;29?j72k3:17pl=1383>1<729q/=;;5829K02`<@==>7)78:09j00<722c?o7>5;h73>5<<g8?h6=44}c024?6=<3:1<v*>648;7>N3?o1C8:;4$8595>o3=3:17d:l:188m06=831d=8m50;9~f76a290?6=4?{%351?>43A><j6F;749'=2<63`>>6=44i5a94?=n=90;66a>5b83>>{e:<i1<7:50;2x 4022190D99i;I641>">?3;0e9;50;9j0f<722c><7>5;n36g?6=3th9:94?:583>5}#9??14>5G46d8L1123-3<6<5f4483>>o3k3:17d;?:188k43d2900qo<93;290?6=8r.::8473:J73c=O<>?0(4951:k71?6=3`>h6=44i4294?=h9<i1<75rb341>5<3290;w)?95;:0?M20n2B?;85+9682?l222900e9m50;9j15<722e:9n4?::\7fa637=83>1<7>t$046>=5<@==m7E:85:&:3?7<a=?1<75f4b83>>o283:17b?:c;29?xd5>90;694?:1y'533=0:1C8:h4H556?!?0281b884?::k7g?6=3`?;6=44o07`>5<<uk8>j7>54;294~"6><03?6F;7g9K023<,0=1=6g;5;29?l2d2900e8>50;9l50e=831vn?;j:187>5<7s-;=976<;I64b>N3?<1/5:4>;h66>5<<a=i1<75f5183>>i6=j0;66sm24f94?2=83:p(<8::918L11a3A><96*67;38m13=831b8n4?::k64?6=3f;>o7>5;|`11g<72=0;6=u+1779<6=O<>l0D99:;%;4>4=n<<0;66g;c;29?l372900c<;l:188yg42i3:187>50z&220<?;2B?;k5G4678 <1=92c?97>5;h6`>5<<a<:1<75`14a94?=zj8om6=4;:183\7f!71=3287E:8f:J730=#1>0:7d:::188m1e=831b9=4?::m21f<722wi=k950;694?6|,8<>65=4H55e?M20=2.2;7?4i5794?=n<j0;66g:0;29?j72k3:17pl>f783>1<729q/=;;5829K02`<@==>7)78:09j00<722c?o7>5;h73>5<<g8?h6=44}c3e1?6=<3:1<v*>648;7>N3?o1C8:;4$8595>o3=3:17d:l:188m06=831d=8m50;9~f4`3290?6=4?{%351?>43A><j6F;749'=2<63`>>6=44i5a94?=n=90;66a>5b83>>{e9o91<7:50;2x 4022190D99i;I641>">?3;0e9;50;9j0f<722c><7>5;n36g?6=3th:j?4?:583>5}#9??14>5G46d8L1123-3<6<5f4483>>o3k3:17d;?:188k43d2900qo?i1;290?6=8r.::8473:J73c=O<>?0(4951:k71?6=3`>h6=44i4294?=h9<i1<75rb0d3>5<3290;w)?95;:0?M20n2B?;85+9682?l222900e9m50;9j15<722e:9n4?::\7fa5`c=83>1<7>t$046>=5<@==m7E:85:&:3?7<a=?1<75f4b83>>o283:17b?:c;29?xd6mm0;694?:1y'533=0:1C8:h4H556?!?0281b884?::k7g?6=3`?;6=44o07`>5<<uk8?:7>54;294~"6><03?6F;7g9K023<@=80(h;558d8 <1=92c?97>5;h6`>5<<a<:1<75`14a94?=zj;>n6=4;:183\7f!71=3287E:8f:J730=O<;1/i84:9g9'=2<63`>>6=44i5a94?=n=90;66a>5b83>>{e:=n1<7:50;2x 4022190D99i;I641>N3:2.n97;6f:&:3?7<a=?1<75f4b83>>o283:17b?:c;29?xd5<j0;694?:1y'533=0:1C8:h4H556?M253-o>687i;%;4>4=n<<0;66g;c;29?l372900c<;l:188yg43j3:187>50z&220<?;2B?;k5G4678L14<,l?194h4$8595>o3=3:17d:l:188m06=831d=8m50;9~f72f290?6=4?{%351?>43A><j6F;749K07=#m<0>5k5+9682?l222900e9m50;9j15<722e:9n4?::\7fa61?=83>1<7>t$046>=5<@==m7E:85:J76>"b=3?2j6*67;38m13=831b8n4?::k64?6=3f;>o7>5;|`10=<72=0;6=u+1779<6=O<>l0D99:;I61?!c22<3m7)78:09j00<722c?o7>5;h73>5<<g8?h6=44}c073?6=<3:1<v*>648;7>N3?o1C8:;4H508 `3==0l0(4951:k71?6=3`>h6=44i4294?=h9<i1<75rb366>5<3290;w)?95;:0?M20n2B?;85G439'a0<21o1/5:4>;h66>5<<a=i1<75f5183>>i6=j0;66sm25694?2=83:p(<8::918L11a3A><96F;2:&f1?3>n2.2;7?4i5794?=n<j0;66g:0;29?j72k3:17pl>d883>1<729q/=;;5829K02`<@==>7E:=;%g6>0?a3-3<6<5f4483>>o3k3:17d;?:188k43d2900qo?j1;290?6=8r.::8473:J73c=O<>?0D9<4$d791<`<,0=1=6g;5;29?l2d2900e8>50;9l50e=831vn<k?:187>5<7s-;=976<;I64b>N3?<1C8?5+e486=c=#1>0:7d:::188m1e=831b9=4?::m21f<722wi=ih50;694?6|,8<>65=4H55e?M20=2B?>6*j5;7:b>">?3;0e9;50;9j0f<722c><7>5;n36g?6=3th:hh4?:583>5}#9??14>5G46d8L1123A>97)k::4;e?!?0281b884?::k7g?6=3`?;6=44o07`>5<<uk;oh7>54;294~"6><03?6F;7g9K023<@=80(h;558d8 <1=92c?97>5;h6`>5<<a<:1<75`14a94?=zj8nh6=4;:183\7f!71=3287E:8f:J730=O<;1/i84:9g9'=2<63`>>6=44i5a94?=n=90;66a>5b83>>{e9mh1<7:50;2x 4022190D99i;I641>N3:2.n97;6f:&:3?7<a=?1<75f4b83>>o283:17b?:c;29?xd6lh0;694?:1y'533=0:1C8:h4H556?M253-o>687i;%;4>4=n<<0;66g;c;29?l372900c<;l:188yg7c03:187>50z&220<?;2B?;k5G4678L14<,l?194h4$8595>o3=3:17d:l:188m06=831d=8m50;9~f4b0290?6=4?{%351?>43A><j6F;749K07=#m<0>5k5+9682?l222900e9m50;9j15<722e:9n4?::\7fa5f5=83>1<7>t$046>=5<@==m7E:85:&:3?7<a=?1<75f4b83>>o283:17b?:c;29?xd6kk0;694?:1y'533=0:1C8:h4H556?!?0281b884?::k7g?6=3`?;6=44o07`>5<<uk;hm7>54;294~"6><03?6F;7g9K023<,0=1=6g;5;29?l2d2900e8>50;9l50e=831vn<m6:187>5<7s-;=976<;I64b>N3?<1/5:4>;h66>5<<a=i1<75f5183>>i6=j0;66sm1b:94?2=83:p(<8::918L11a3A><96*67;38m13=831b8n4?::k64?6=3f;>o7>5;|`2g2<72=0;6=u+1779<6=O<>l0D99:;%;4>4=n<<0;66g;c;29?l372900c<;l:188yg7d>3:187>50z&220<?;2B?;k5G4678 <1=92c?97>5;h6`>5<<a<:1<75`14a94?=zj8i>6=4;:183\7f!71=3287E:8f:J730=#1>0:7d:::188m1e=831b9=4?::m21f<722wi=n:50;694?6|,8<>65=4H55e?M20=2.2;7?4i5794?=n<j0;66g:0;29?j72k3:17pl>c383>1<729q/=;;5829K02`<@==>7)78:09j00<722c?o7>5;h73>5<<g8?h6=44}c3`5?6=<3:1<v*>648;7>N3?o1C8:;4$8595>o3=3:17d:l:188m06=831d=8m50;9~f757290?6=4?{%351?>43A><j6F;749'=2<63`>>6=44i5a94?=n=90;66a>5b83>>{e::21<7:50;2x 4022190D99i;I641>">?3;0e9;50;9j0f<722c><7>5;n36g?6=3th9?:4?:583>5}#9??14>5G46d8L1123-3<6<5f4483>>o3k3:17d;?:188k43d2900qo<<6;290?6=8r.::8473:J73c=O<>?0(4951:k71?6=3`>h6=44i4294?=h9<i1<75rb316>5<3290;w)?95;:0?M20n2B?;85+9682?l222900e9m50;9j15<722e:9n4?::\7fa662=83>1<7>t$046>=5<@==m7E:85:&:3?7<a=?1<75f4b83>>o283:17b?:c;29?xd5;:0;694?:1y'533=0:1C8:h4H556?!?0281b884?::k7g?6=3`?;6=44o07`>5<<uk88>7>54;294~"6><03?6F;7g9K023<,0=1=6g;5;29?l2d2900e8>50;9l50e=831vn?=>:187>5<7s-;=976<;I64b>N3?<1/5:4>;h66>5<<a=i1<75f5183>>i6=j0;66sm23d94?2=83:p(<8::918L11a3A><96*67;38m13=831b8n4?::k64?6=3f;>o7>5;|`16`<72=0;6=u+1779<6=O<>l0D99:;%;4>4=n<<0;66g;c;29?l372900c<;l:188yg56k3:197>50z&220<?<2B?;k5G4678 <1=92c?97>5;h64>5<<a=i1<75f5183>>i6=j0;66sm33694?3=83:p(<8::968L11a3A><96*67;38m13=831b8:4?::k7g?6=3`?;6=44o07`>5<<uk99>7>55;294~"6><0386F;7g9K023<,0=1=6g;5;29?l202900e9m50;9j15<722e:9n4?::\7fa777=83?1<7>t$046>=2<@==m7E:85:&:3?7<a=?1<75f4683>>o3k3:17d;?:188k43d2900qo==3;291?6=8r.::8474:J73c=O<>?0(4951:k71?6=3`><6=44i5a94?=n=90;66a>5b83>>{e;8l1<7;50;2x 40221>0D99i;I641>">?3;0e9;50;9j02<722c?o7>5;h73>5<<g8?h6=44}c12a?6==3:1<v*>648;0>N3?o1C8:;4$8595>o3=3:17d:8:188m1e=831b9=4?::m21f<722wi??>50;794?6|,8<>65:4H55e?M20=2.2;7?4i5794?=n<>0;66g;c;29?l372900c<;l:188yg56j3:197>50z&220<?<2B?;k5G4678 <1=92c?97>5;h64>5<<a=i1<75f5183>>i6=j0;66sm30c94?3=83:p(<8::958L11a3A><96*67;68m13=831b8:4?::k64?6=3`;>n7>5;n36g?6=3th8=i4?:483>5}#9??1495G46d8L1123-3<6<5f4483>>o3?3:17d:l:188m06=831d=8m50;9~f66329086=4?{%351?20m2B?;k5G4678m1?=831bho4?::m210<722wi?=k50;194?6|,8<>699j;I64b>N3?<1b844?::kgf?6=3f;>97>5;|`044<72=0;6=u+1779a3=O<>l0D99:;h6:>5<<a<;1<75f14g94?=h9<?1<75rb22g>5<4290;w)?95;64a>N3?o1C8:;4i5;94?=nlk0;66a>5483>>{e:ol1<7:50;2x 4022l<0D99i;I641>o313:17d;>:188m43b2900c<;::188yg57k3:1?7>50z&220<3?l1C8:h4H556?l2>2900eil50;9l503=831vn?hk:187>5<7s-;=97k9;I64b>N3?<1b844?::k65?6=3`;>i7>5;n361?6=3th8<o4?:283>5}#9??18:k4H55e?M20=2c?57>5;hfa>5<<g8?>6=44}c0ef?6=<3:1<v*>648f2>N3?o1C8:;4i5;94?=n=80;66g>5d83>>i6=<0;66sm31c94?5=83:p(<8::55f?M20n2B?;85f4883>>ocj3:17b?:5;29?xd5n00;694?:1y'533=m?1C8:h4H556?l2>2900e8?50;9j50c=831d=8;50;9~f66>29086=4?{%351?20m2B?;k5G4678m1?=831bho4?::m210<722wi>k950;694?6|,8<>6h84H55e?M20=2c?57>5;h72>5<<a8?n6=44o076>5<<uk9;47>53;294~"6><0?;h5G46d8L1123`>26=44ie`94?=h9<?1<75rb3d6>5<3290;w)?95;g5?M20n2B?;85f4883>>o293:17d?:e;29?j72=3:17pl<0683>6<729q/=;;546g8L11a3A><96g;9;29?lbe2900c<;::188yg4a;3:187>50z&220<b>2B?;k5G4678m1?=831b9<4?::k21`<722e:984?::\7fa750=8391<7>t$046>11b3A><j6F;749j0<<722con7>5;n361?6=3th9j<4?:583>5}#9??1i;5G46d8L1123`>26=44i4394?=n9<o1<75`14794?=zj::86=4<:183\7f!71=3><i6F;7g9K023<a=31<75fdc83>>i6=<0;66sm2dd94?2=83:p(<8::d48L11a3A><96g;9;29?l362900e<;j:188k4322900qo=<2;291?6=8r.::8474:J73c=O<>?0(4951:k71?6=3`><6=44i5a94?=n=90;66a>5b83>>{e;:k1<7;50;2x 40221>0D99i;I641>">?3;0e9;50;9j02<722c?o7>5;h73>5<<g8?h6=44}c10=?6==3:1<v*>648;0>N3?o1C8:;4$8595>o3=3:17d:8:188m1e=831b9=4?::m21f<722wi?>650;794?6|,8<>65:4H55e?M20=2.2;7?4i5794?=n<>0;66g;c;29?l372900c<;l:188yg54?3:197>50z&220<?<2B?;k5G4678 <1=92c?97>5;h64>5<<a=i1<75f5183>>i6=j0;66sm32494?3=83:p(<8::968L11a3A><96*67;38m13=831b8:4?::k7g?6=3`?;6=44o07`>5<<uk9897>55;294~"6><0386F;7g9K023<,0=1=6g;5;29?l202900e9m50;9j15<722e:9n4?::\7fa762=83?1<7>t$046>=2<@==m7E:85:&:3?7<a=?1<75f4683>>o3k3:17d;?:188k43d2900qo=<3;291?6=8r.::8474:J73c=O<>?0(4951:k71?6=3`><6=44i5a94?=n=90;66a>5b83>>{e;:;1<7;50;2x 40221>0D99i;I641>">?3;0e9;50;9j02<722c?o7>5;h73>5<<g8?h6=44}c104?6==3:1<v*>648;0>N3?o1C8:;4$8595>o3=3:17d:8:188m1e=831b9=4?::m21f<722wi>::50;694?6|,8<>65=4H55e?M20=2.2;7?4i5794?=n<j0;66g:0;29?j72k3:17pl=7083>1<729q/=;;5829K02`<@==>7)78:09j00<722c?o7>5;h73>5<<g8?h6=44}c04<?6=<3:1<v*>648;2>N3?o1C8:;4$8590>o3=3:17d;?:188m43e2900c<;l:188yg40?3:187>50z&220<?>2B?;k5G4678 <1=<2c?97>5;h73>5<<a8?i6=44o07`>5<<uk9oi7>55;294~"6><0386F;7g9K023<,0=1=6g;5;29?l202900e9m50;9j15<722e:9n4?::\7fa7`0=83?1<7>t$046>=2<@==m7E:85:&:3?7<a=?1<75f4683>>o3k3:17d;?:188k43d2900qo=j4;291?6=8r.::8474:J73c=O<>?0(4951:k71?6=3`><6=44i5a94?=n=90;66a>5b83>>{e;l91<7;50;2x 40221>0D99i;I641>">?3;0e9;50;9j02<722c?o7>5;h73>5<<g8?h6=44}c1f1?6==3:1<v*>648;0>N3?o1C8:;4$8595>o3=3:17d:8:188m1e=831b9=4?::m21f<722wi?h?50;794?6|,8<>65:4H55e?M20=2.2;7?4i5794?=n<>0;66g;c;29?l372900c<;l:188yg5b83:197>50z&220<?<2B?;k5G4678 <1=92c?97>5;h64>5<<a=i1<75f5183>>i6=j0;66sm3d094?3=83:p(<8::968L11a3A><96*67;38m13=831b8:4?::k7g?6=3`?;6=44o07`>5<<uk9oh7>55;294~"6><03;6F;7g9K023<,0=186g;5;29?l202900e8>50;9j50d=831d=8m50;9~f6bd290>6=4?{%351?>33A><j6F;749'=2<63`>>6=44i5594?=n<j0;66g:0;29?j72k3:17pl<dg83>0<729q/=;;5859K02`<@==>7)78:09j00<722c?;7>5;h6`>5<<a<:1<75`14a94?=zj:i=6=4<:183\7f!71=3><i6F;7g9K023<a=31<75fdc83>>i6=<0;66sm3e294?5=83:p(<8::55f?M20n2B?;85f4883>>ocj3:17b?:5;29?xd4k:0;694?:1y'533=m?1C8:h4H556?l2>2900e8?50;9j50c=831d=8;50;9~f6ea29086=4?{%351?20m2B?;k5G4678m1?=831bho4?::m210<722wi?n?50;694?6|,8<>6h84H55e?M20=2c?57>5;h72>5<<a8?n6=44o076>5<<uk9hi7>53;294~"6><0?;h5G46d8L1123`>26=44ie`94?=h9<?1<75rb2`e>5<3290;w)?95;g5?M20n2B?;85f4883>>o293:17d?:e;29?j72=3:17pl<ce83>6<729q/=;;546g8L11a3A><96g;9;29?lbe2900c<;::188yg5el3:187>50z&220<b>2B?;k5G4678m1?=831b9<4?::k21`<722e:984?::\7fa7fe=8391<7>t$046>11b3A><j6F;749j0<<722con7>5;n361?6=3th8no4?:583>5}#9??1i;5G46d8L1123`>26=44i4394?=n9<o1<75`14794?=zj:ii6=4<:183\7f!71=3><i6F;7g9K023<a=31<75fdc83>>i6=<0;66sm3c;94?2=83:p(<8::d48L11a3A><96g;9;29?l362900e<;j:188k4322900qo=la;297?6=8r.::84;7d9K02`<@==>7d:6:188mad=831d=8;50;9~f6d0290?6=4?{%351?c13A><j6F;749j0<<722c>=7>5;h36a?6=3f;>97>5;|`0g<<72:0;6=u+177902c<@==m7E:85:k7=?6=3`ni6=44o076>5<<uk9i97>54;294~"6><0n:6F;7g9K023<a=31<75f5083>>o6=l0;66a>5483>>{e;j21<7=50;2x 4022==n7E:8f:J730=n<00;66gkb;29?j72=3:17pl<b283>1<729q/=;;5e79K02`<@==>7d:6:188m07=831b=8k50;9l503=831vn>m::180>5<7s-;=97:8e:J73c=O<>?0e9750;9j`g<722e:984?::\7fa7g7=83>1<7>t$046>`0<@==m7E:85:k7=?6=3`?:6=44i07f>5<<g8?>6=44}c1e1?6==3:1<v*>648;0>N3?o1C8:;4$8595>o3=3:17d:8:188m1e=831b9=4?::m21f<722wi?k<50;794?6|,8<>6594H55e?M20=2.2;7:4i5794?=n<>0;66g:0;29?l72j3:17b?:c;29?xd4n:0;684?:1y'533=0=1C8:h4H556?!?0281b884?::k73?6=3`>h6=44i4294?=h9<i1<75rb2d;>5<2290;w)?95;:7?M20n2B?;85+9682?l222900e9950;9j0f<722c><7>5;n36g?6=3th8j;4?:483>5}#9??1495G46d8L1123-3<6<5f4483>>o3?3:17d:l:188m06=831d=8m50;9~f6`0290>6=4?{%351?>33A><j6F;749'=2<63`>>6=44i5594?=n<j0;66g:0;29?j72k3:17pl<fc83>0<729q/=;;5859K02`<@==>7)78:09j00<722c?;7>5;h6`>5<<a<:1<75`14a94?=zj:l26=4::183\7f!71=32?7E:8f:J730=#1>0:7d:::188m11=831b8n4?::k64?6=3f;>o7>5;|`0bd<72<0;6=u+1779<1=O<>l0D99:;%;4>4=n<<0;66g;7;29?l2d2900e8>50;9l50e=831vn>hl:186>5<7s-;=976;;I64b>N3?<1/5:4>;h66>5<<a==1<75f4b83>>o283:17b?:c;29?xd4n=0;684?:1y'533=0=1C8:h4H556?!?0281b884?::k73?6=3`>h6=44i4294?=h9<i1<75rb52b>5<2290;w)?95;:7?M20n2B?;85+9682?l222900e9950;9j0f<722c><7>5;n36g?6=3th?=?4?:483>5}#9??1495G46d8L1123-3<6<5f4483>>o3?3:17d:l:188m06=831d=8m50;9~f176290>6=4?{%351?>33A><j6F;749'=2<63`>>6=44i5594?=n<j0;66g:0;29?j72k3:17pl;1183>0<729q/=;;5859K02`<@==>7)78:09j00<722c?;7>5;h6`>5<<a<:1<75`14a94?=zj=:m6=4::183\7f!71=32?7E:8f:J730=#1>0:7d:::188m11=831b8n4?::k64?6=3f;>o7>5;|`74`<72<0;6=u+1779<1=O<>l0D99:;%;4>4=n<<0;66g;7;29?l2d2900e8>50;9l50e=831vn9>k:186>5<7s-;=976;;I64b>N3?<1/5:4>;h66>5<<a==1<75f4b83>>o283:17b?:c;29?xd38j0;684?:1y'533=0=1C8:h4H556?!?0281b884?::k73?6=3`>h6=44i4294?=h9<i1<75rb52a>5<2290;w)?95;:7?M20n2B?;85+9682?l222900e9950;9j0f<722c><7>5;n36g?6=3th?<44?:483>5}#9??1495G46d8L1123-3<6<5f4483>>o3?3:17d:l:188m06=831d=8m50;9~f16?290>6=4?{%351?>33A><j6F;749'=2<63`>>6=44i5594?=n<j0;66g:0;29?j72k3:17pl;3183>1<729q/=;;5849K02`<@==>7)78:09j00<722c?;7>5;h73>5<<g8?h6=44}c61b?6=<3:1<v*>648;1>N3?o1C8:;4$8595>o3=3:17d:8:188m06=831d=8m50;9~f14b290?6=4?{%351?>23A><j6F;749'=2<63`>>6=44i5594?=n=90;66a>5b83>>{e<;n1<7:50;2x 40221?0D99i;I641>">?3;0e9;50;9j02<722c><7>5;n36g?6=3th?>n4?:583>5}#9??1485G46d8L1123-3<6<5f4483>>o3?3:17d;?:188k43d2900qo:=b;290?6=8r.::8475:J73c=O<>?0(4951:k71?6=3`><6=44i4294?=h9<i1<75rb50:>5<3290;w)?95;:6?M20n2B?;85+9682?l222900e9950;9j15<722e:9n4?::\7fa07>=83>1<7>t$046>=3<@==m7E:85:&:3?7<a=?1<75f4683>>o283:17b?:c;29?xd3:>0;694?:1y'533=0<1C8:h4H556?!?0281b884?::k73?6=3`?;6=44o07`>5<<uk>9:7>54;294~"6><0396F;7g9K023<,0=1=6g;5;29?l202900e8>50;9l50e=831vn9<::187>5<7s-;=976:;I64b>N3?<1/5:4>;h66>5<<a==1<75f5183>>i6=j0;66sm43694?2=83:p(<8::978L11a3A><96*67;38m13=831b8:4?::k64?6=3f;>o7>5;|`766<72=0;6=u+1779<0=O<>l0D99:;%;4>4=n<<0;66g;7;29?l372900c<;l:188yg25:3:187>50z&220<?=2B?;k5G4678 <1=92c?97>5;h64>5<<a<:1<75`14a94?=zj=8:6=4;:183\7f!71=32>7E:8f:J730=#1>0:7d:::188m11=831b9=4?::m21f<722wi8?>50;694?6|,8<>65;4H55e?M20=2.2;7?4i5794?=n<>0;66g:0;29?j72k3:17pl;1d83>1<729q/=;;5849K02`<@==>7)78:09j00<722c?;7>5;h73>5<<g8?h6=44}c62`?6=<3:1<v*>648;1>N3?o1C8:;4$8595>o3=3:17d:8:188m06=831d=8m50;9~f17d290?6=4?{%351?>23A><j6F;749'=2<63`>>6=44i5594?=n=90;66a>5b83>>{e<8h1<7:50;2x 40221?0D99i;I641>">?3;0e9;50;9j02<722c><7>5;n36g?6=3th?=l4?:583>5}#9??1485G46d8L1123-3<6<5f4483>>o3?3:17d;?:188k43d2900qo:>9;290?6=8r.::8475:J73c=O<>?0(4951:k71?6=3`><6=44i4294?=h9<i1<75rb53;>5<3290;w)?95;:6?M20n2B?;85+9682?l222900e9950;9j15<722e:9n4?::\7fa041=83>1<7>t$046>=3<@==m7E:85:&:3?7<a=?1<75f4683>>o283:17b?:c;29?xd39?0;694?:1y'533=0<1C8:h4H556?!?0281b884?::k73?6=3`?;6=44o07`>5<<uk>:97>54;294~"6><0396F;7g9K023<,0=1=6g;5;29?l202900e8>50;9l50e=831vn9=9:187>5<7s-;=976:;I64b>N3?<1/5:4>;h66>5<<a==1<75f5183>>i6=j0;66sm42794?2=83:p(<8::978L11a3A><96*67;38m13=831b8:4?::k64?6=3f;>o7>5;|`771<72=0;6=u+1779<0=O<>l0D99:;%;4>4=n<<0;66g;7;29?l372900c<;l:188yg24;3:187>50z&220<?=2B?;k5G4678 <1=92c?97>5;h64>5<<a<:1<75`14a94?=zj=996=4;:183\7f!71=32>7E:8f:J730=#1>0:7d:::188m11=831b9=4?::m21f<722wi8>?50;694?6|,8<>65;4H55e?M20=2.2;7?4i5794?=n<>0;66g:0;29?j72k3:17pl;2`83>1<729q/=;;5849K02`<@==>7)78:09j00<722c?;7>5;h73>5<<g8?h6=44}c62b?6=<3:1<v*>648;1>N3?o1C8:;4$8595>o3=3:17d:8:188m06=831d=8m50;9~f173290?6=4?{%351?>23A><j6F;749'=2<63`>>6=44i5594?=n=90;66a>5b83>>{e<891<7:50;2x 40221?0D99i;I641>">?3;0e9;50;9j02<722c><7>5;n36g?6=3th?:k4?:283>5}#9??1i=5G46d8L1123-3<6<l4i9`94?=n0j0;66a>5483>>{e<?<1<7=50;2x 4022l:0D99i;I641>">?3;i7d6m:188m=e=831d=8;50;9~f4?429086=4?{%351?c73A><j6F;749'=2<6k2c3n7>5;h:`>5<<g8?>6=44}c3:6?6=;3:1<v*>648f4>N3?o1C8:;4$8595f=n0k0;66g7c;29?j72=3:17pl>9083>6<729q/=;;5e19K02`<@==>7)78:0a8m=d=831b4n4?::m210<722wi=4>50;194?6|,8<>6h>4H55e?M20=2.2;7?l;h:a>5<<a1i1<75`14794?=zj82m6=4<:183\7f!71=3o;7E:8f:J730=#1>0:o6g7b;29?l>d2900c<;::188yg7?m3:1?7>50z&220<b82B?;k5G4678 <1=9j1b4o4?::k;g?6=3f;>97>5;|`2<a<72:0;6=u+1779a5=O<>l0D99:;%;4>4e<a1h1<75f8b83>>i6=<0;66sm19a94?5=83:p(<8::d28L11a3A><96*67;3`?l>e2900e5m50;9l503=831vn<6m:180>5<7s-;=97k?;I64b>N3?<1/5:4>c:k;f?6=3`2h6=44o076>5<<uk;3m7>53;294~"6><0n<6F;7g9K023<,0=1=n5f8c83>>o?k3:17b?:5;29?xd6?h0;6>4?:1y'533=m91C8:h4H556?!?028i0e5l50;9j<f<722e:984?::\7fa52?=8391<7>t$046>`6<@==m7E:85:&:3?7d3`2i6=44i9a94?=h9<?1<75rb05;>5<4290;w)?95;g3?M20n2B?;85+9682g>o?j3:17d6l:188k4322900qo?87;297?6=8r.::84j0:J73c=O<>?0(4951b9j<g<722c3o7>5;n361?6=3th:;;4?:283>5}#9??1i=5G46d8L1123-3<6<m4i9`94?=n0j0;66a>5483>>{e9>?1<7=50;2x 4022l:0D99i;I641>">?3;h7d6m:188m=e=831d=8;50;9~f41329086=4?{%351?c73A><j6F;749'=2<6k2c3n7>5;h:`>5<<g8?>6=44}c347?6=;3:1<v*>648f4>N3?o1C8:;4$8595f=n0k0;66g7c;29?j72=3:17pl>7383>6<729q/=;;5e19K02`<@==>7)78:0a8m=d=831b4n4?::m210<722wi=:?50;194?6|,8<>6h>4H55e?M20=2.2;7?l;h:a>5<<a1i1<75`14794?=zj;=86=4;:183\7f!71=3o97E:8f:J730=#1>09<6g7b;29?l>d2900e5j50;9l503=831vn?9n:186>5<7s-;=97k<;I64b>N3?<1/5:4;6:k;f?6=3`2h6=44i9f94?=n0l0;66a>5483>>{e:><1<7;50;2x 4022l90D99i;I641>">?3;m7d6m:188m=e=831b4i4?::k;a?6=3f;>97>5;|`0e0<72:0;6=u+1779a5=O<>l0D99:;%;4>43<a1h1<75f8b83>>i6=<0;66sm26294?2=83:p(<8::d08L11a3A><96*67;3:?l>e2900e5m50;9j<a<722e:984?::\7fa63`=83?1<7>t$046>`5<@==m7E:85:&:3?713`2i6=44i9a94?=n0m0;66g7e;29?j72=3:17pl<9d83>6<729q/=;;5e19K02`<@==>7)78:348m=d=831b4n4?::m210<722wi?5950;194?6|,8<>6h>4H55e?M20=2.2;7<9;h:a>5<<a1i1<75`14794?=zj;nn6=4<:183\7f!71=3o;7E:8f:J730=#1>09:6g7b;29?l>d2900c<;::188yg4d?3:1?7>50z&220<b82B?;k5G4678 <1=:?1b4o4?::k;g?6=3f;>97>5;|`0=a<72<0;6=u+1779a6=O<>l0D99:;%;4>71<a1h1<75f8b83>>o?l3:17d6j:188k4322900qo=76;291?6=8r.::84j3:J73c=O<>?0(495269j<g<722c3o7>5;h:g>5<<a1o1<75`14794?=zj;no6=4::183\7f!71=3o87E:8f:J730=#1>09;6g7b;29?l>d2900e5j50;9j<`<722e:984?::\7fa6f0=83?1<7>t$046>`5<@==m7E:85:&:3?463`2i6=44i9a94?=n0m0;66g7e;29?j72=3:17pl<9b83>0<729q/=;;5e29K02`<@==>7)78:358m=d=831b4n4?::k;`?6=3`2n6=44o076>5<<uk9397>55;294~"6><0n?6F;7g9K023<,0=1>:5f8c83>>o?k3:17d6k:188m=c=831d=8;50;9~f7bd290>6=4?{%351?c43A><j6F;749'=2<5?2c3n7>5;h:`>5<<a1n1<75f8d83>>i6=<0;66sm2b794?3=83:p(<8::d18L11a3A><96*67;02?l>e2900e5m50;9j<a<722c3i7>5;n361?6=3th85o4?:483>5}#9??1i>5G46d8L1123-3<6?94i9`94?=n0j0;66g7d;29?l>b2900c<;::188yg5?<3:197>50z&220<b;2B?;k5G4678 <1=:>1b4o4?::k;g?6=3`2o6=44i9g94?=h9<?1<75rb3fa>5<2290;w)?95;g0?M20n2B?;85+96813>o?j3:17d6l:188m=b=831b4h4?::m210<722wi>n:50;794?6|,8<>6h=4H55e?M20=2.2;7<>;h:a>5<<a1i1<75f8e83>>o?m3:17b?:5;29?xd41h0;684?:1y'533=m:1C8:h4H556?!?02;=0e5l50;9j<f<722c3h7>5;h:f>5<<g8?>6=44}c1;7?6==3:1<v*>648f7>N3?o1C8:;4$85962=n0k0;66g7c;29?l>c2900e5k50;9l503=831vn?jn:186>5<7s-;=97k<;I64b>N3?<1/5:4=7:k;f?6=3`2h6=44i9f94?=n0l0;66a>5483>>{e:j91<7;50;2x 4022l90D99i;I641>">?38:7d6m:188m=e=831b4i4?::k;a?6=3f;>97>5;|`1a6<72=0;6=u+1779a7=O<>l0D99:;%;4>=7<a1h1<75f8b83>>o?l3:17b?:5;29?xd4i=0;684?:1y'533=m:1C8:h4H556?!?021:0e5l50;9j<f<722c3h7>5;h:f>5<<g8?>6=44}c1:=?6==3:1<v*>648f7>N3?o1C8:;4$85962=n0k0;66g7c;29?l>c2900e5k50;9l503=831vn>6=:186>5<7s-;=97k<;I64b>N3?<1/5:4=7:k;f?6=3`2h6=44i9f94?=n0l0;66a>5483>>{e:m31<7;50;2x 4022l90D99i;I641>">?38<7d6m:188m=e=831b4i4?::k;a?6=3f;>97>5;|`1g7<72<0;6=u+1779a6=O<>l0D99:;%;4>77<a1h1<75f8b83>>o?l3:17d6j:188k4322900qo?73;297?6=8r.::84j0:J73c=O<>?0(4951b9j<g<722c3o7>5;n361?6=3th:;o4?:283>5}#9??1i=5G46d8L1123-3<6?84i9`94?=n0j0;66a>5483>>{e91=1<7=50;2x 4022l:0D99i;I641>">?3;h7d6m:188m=e=831d=8;50;9~f4>629086=4?{%351?c73A><j6F;749'=2<6k2c3n7>5;h:`>5<<g8?>6=44}c3;0?6=<3:1<v*>648f6>N3?o1C8:;4$8596==n0k0;66g7c;29?l>c2900c<;::188yg71l3:1?7>50z&220<b82B?;k5G4678 <1=9j1b4o4?::k;g?6=3f;>97>5;|`223<72:0;6=u+1779a5=O<>l0D99:;%;4>4e<a1h1<75f8b83>>i6=<0;66sm31094?4=83:p(<8::ed8L11a3A><96*67;36?l>e2900c<;::188yg5783:1>7>50z&220<cn2B?;k5G4678 <1=9<1b4o4?::m210<722wi>kk50;094?6|,8<>6ih4H55e?M20=2.2;7?:;h:a>5<<g8?>6=44}c0eg?6=:3:1<v*>648gb>N3?o1C8:;4$85950=n0k0;66a>5483>>{e:ok1<7<50;2x 4022ml0D99i;I641>">?3;>7d6m:188k4322900qo<i8;296?6=8r.::84kf:J73c=O<>?0(495149j<g<722e:984?::\7fa6c0=8381<7>t$046>a`<@==m7E:85:&:3?723`2i6=44o076>5<<uk8m87>52;294~"6><0oj6F;7g9K023<,0=1=85f8c83>>i6=<0;66sm2g094?4=83:p(<8::ed8L11a3A><96*67;36?l>e2900c<;::188yg4a83:1>7>50z&220<cn2B?;k5G4678 <1=9<1b4o4?::m210<722wi?n:50;094?6|,8<>6ih4H55e?M20=2.2;7?:;h:a>5<<g8?>6=44}c1`6?6=:3:1<v*>648gb>N3?o1C8:;4$85950=n0k0;66a>5483>>{e;j:1<7<50;2x 4022ml0D99i;I641>">?3;>7d6m:188k4322900qo=me;296?6=8r.::84kf:J73c=O<>?0(495149j<g<722e:984?::\7fa7ge=8381<7>t$046>a`<@==m7E:85:&:3?723`2i6=44o076>5<<uk9im7>52;294~"6><0oj6F;7g9K023<,0=1=85f8c83>>i6=<0;66sm3c:94?4=83:p(<8::ed8L11a3A><96*67;36?l>e2900c<;::188yg5e>3:1>7>50z&220<cn2B?;k5G4678 <1=9<1b4o4?::m210<722wi?o:50;094?6|,8<>6ih4H55e?M20=2.2;7?:;h:a>5<<g8?>6=44}c1a6?6=:3:1<v*>648gb>N3?o1C8:;4$85950=n0k0;66a>5483>>{e;9?1<7<50;2x 4022ml0D99i;I641>">?3;>7d6m:188k4322900qo=l7;296?6=8r.::84kf:J73c=O<>?0(495149j<g<722e:984?::\7fa531=83>1<7>t$046>`4<@==m7E:85:&:3?4?3`2i6=44i9a94?=n0m0;66a>5483>>{e9?31<7:50;2x 4022l80D99i;I641>">?3837d6m:188m=e=831b4i4?::m210<722wi=;k50;694?6|,8<>6h<4H55e?M20=2.2;7<7;h:a>5<<a1i1<75f8e83>>i6=<0;66sm19494?3=83:p(<8::d18L11a3A><96*67;0:?l>e2900e5m50;9j<a<722c3i7>5;n361?6=3th:444?:483>5}#9??1i>5G46d8L1123-3<6<k4i9`94?=n0j0;66g7d;29?l>b2900c<;::188yg7083:197>50z&220<b;2B?;k5G4678 <1=9l1b4o4?::k;g?6=3`2o6=44i9g94?=h9<?1<75rb0:3>5<2290;w)?95;g0?M20n2B?;85+9682a>o?j3:17d6l:188m=b=831b4h4?::m210<722wi=5650;694?6|,8<>6h<4H55e?M20=2.2;7<7;h:a>5<<a1i1<75f8e83>>i6=<0;66sm19794?3=83:p(<8::d18L11a3A><96*67;3f?l>e2900e5m50;9j<a<722c3i7>5;n361?6=3th::l4?:483>5}#9??1i>5G46d8L1123-3<6<k4i9`94?=n0j0;66g7d;29?l>b2900c<;::188yg70m3:187>50z&220<b:2B?;k5G4678 <1=9m1b4o4?::k;g?6=3`2o6=44o076>5<<uk;=n7>55;294~"6><0n?6F;7g9K023<,0=1=h5f8c83>>o?k3:17d6k:188m=c=831d=8;50;9~f4>5290?6=4?{%351?c53A><j6F;749'=2<502c3n7>5;h:`>5<<a1n1<75`14794?=zj8<36=4::183\7f!71=3o87E:8f:J730=#1>0:i6g7b;29?l>d2900e5j50;9j<`<722e:984?::\7fa52`=83>1<7>t$046>`4<@==m7E:85:&:3?7c3`2i6=44i9a94?=n0m0;66a>5483>>{e9>n1<7;50;2x 4022l90D99i;I641>">?3827d6m:188m=e=831b4i4?::k;a?6=3f;>97>5;|`71g<72=81<7>t$046>43c3A><j6F;749Y01<fs?0<6?<522825?752;>1=>4=5;37>x"c>390(i953:&;b?5<,0:1?6*61;18 <4=;2.2?7=4$8697>"6>8097)?92;08 <>=;2.257=4$8c97>">j390(4m53:&:`?5<,0o1?6*6f;18 d6=;2.j=7=4$`097>"f;390(l:53:&b1?5<,h<1?6*n7;18 d>=;2.j57=4$`c97>"fj390(lm53:&b`?5<,ho1?6*nf;18 g6=;2.i=7=4$c097>"e;390(o:53:&a1?5<,k<1?6*m7;18 g>=;2.i57=4$cc97>"ej390(om53:&a`?5<,ko1?6*mf;18 f6=;2.h=7=4$b097>"d;390(n:53:&`1?5<,j<1?6*l7;18 f>=;2.h57=4$bc97>"dj390(nm53:&``?5<,jo1?6*lf;18 a6=;2.o=7=4$e097>"c;390(i:53:&g1?5<,==h699n;%;6>6=#9<l1=8:4$e:96>"c1380(99m:55b?!?12:1b8l4?::k7f?6=3`=n6=44i6d94?=n9?91<75f17694?=n<>21<75f46;94?=n:j0;6)?:a;0a?k7213:07d=::18'50g=:k1e=8751:9j71<72-;>m7<m;o36=?4<3`986=4+14c96g=i9<31?65f3383>!72i38i7c?:9;68?l56290/=8o52c9m50?==21b?=4?:%36e?4e3g;>5784;h0e>5<#9<k1>o5a14;93>=n:l0;6)?:a;0a?k7213207d<k:18'50g=:k1e=8759:9j6d<72-;>m7<m;o36=?g<3`936=4+14c972=i9<31<65f4083>!72i39<7c?:9;38?l27290/=8o5369m50?=:21b?k4?:%36e?503g;>57=4;h1f>5<#9<k1?:5a14;90>=n;m0;6)?:a;14?k7213?07d=l:18'50g=;>1e=8756:9j7g<72-;>m7=8;o36=?1<3`9j6=4+14c972=i9<31465f3883>!72i39<7c?:9;;8?l51290/=8o5369m50?=i21b9l4?:%36e?3>3g;>57>4;h7;>5<#9<k1945a14;95>=n=>0;6)?:a;7:?k7213807d;9:18'50g==01e=8753:9j10<72-;>m7;6;o36=?2<3`??6=4+14c91<=i9<31965f5283>!72i3?27c?:9;48?l35290/=8o5589m50?=?21b:>4?:%36e?053g;>57>4;h42>5<#9<k1:?5a14;95>=n>90;6)?:a;41?k7213807d;i:18'50g=>;1e=8753:9j1`<72-;>m78=;o36=?2<3`?o6=4+14c927=i9<31965f5b83>!72i3<97c?:9;48?l3e290/=8o5639m50?=?21b:84?:%36e?033g;>57>4;h44>5<#9<k1:;5a14;94>=h?90;6)?:a;4e?k7213:07b8j:18'50g=>o1e=8751:9l2a<72-;>m78i;o36=?4<3f<h6=4+14c92c=i9<31?65`6c83>!72i3<m7c?:9;68?j0f290/=8o56g9m50?==21d:44?:%36e?0a3g;>5784;n4;>5<#9<k1:k5a14;93>=h?k0;6)?:a;5b?k7213:07b96:18'50g=?11e=8750:9l32<72-;>m797;o36=?7<3f==6=4+14c93==i9<31>65`7483>!72i3=37c?:9;18?j13290/=8o5799m50?=<21d;>4?:%36e?1?3g;>57;4;n51>5<#9<k1;55a14;92>=h?80;6)?:a;5;?k7213=07b9k:18'50g=?j1e=8750:9~f13d290?>7>50z&220<6=m1C8:h4H556?_232hq=6:4=2;00>47=9;0987?<:37951<z,m<1?6*k7;18 =`=;2.2<7=4$8397>">:390(4=53:&:0?5<,8<:6?5+17096>">0390(4753:&:e?5<,0h1?6*6c;18 <b=;2.2i7=4$8d97>"f8390(l?53:&b6?5<,h91?6*n4;18 d3=;2.j:7=4$`597>"f0390(l753:&be?5<,hh1?6*nc;18 db=;2.ji7=4$`d97>"e8390(o?53:&a6?5<,k91?6*m4;18 g3=;2.i:7=4$c597>"e0390(o753:&ae?5<,kh1?6*mc;18 gb=;2.ii7=4$cd97>"d8390(n?53:&`6?5<,j91?6*l4;18 f3=;2.h:7=4$b597>"d0390(n753:&`e?5<,jh1?6*lc;18 fb=;2.hi7=4$bd97>"c8390(i?53:&g6?5<,m91?6*k4;18 a3=;2.?;n4;7`9'=0<43-;>j7?:4:&g<?4<,m31>6*;7c873d=#1?087d:n:188m1d=831b;h4?::k4b?6=3`;=?7>5;h350?6=3`><47>5;h64=?6=3`8h6=4+14c96g=i9<31<65f3483>!72i38i7c?:9;38?l53290/=8o52c9m50?=:21b?>4?:%36e?4e3g;>57=4;h11>5<#9<k1>o5a14;90>=n;80;6)?:a;0a?k7213?07d=?:18'50g=:k1e=8756:9j6c<72-;>m7<m;o36=?1<3`8n6=4+14c96g=i9<31465f2e83>!72i38i7c?:9;;8?l4f290/=8o52c9m50?=i21b?54?:%36e?503g;>57>4;h62>5<#9<k1?:5a14;95>=n<90;6)?:a;14?k7213807d=i:18'50g=;>1e=8753:9j7`<72-;>m7=8;o36=?2<3`9o6=4+14c972=i9<31965f3b83>!72i39<7c?:9;48?l5e290/=8o5369m50?=?21b?l4?:%36e?503g;>5764;h1:>5<#9<k1?:5a14;9=>=n;?0;6)?:a;14?k7213k07d;n:18'50g==01e=8750:9j1=<72-;>m7;6;o36=?7<3`?<6=4+14c91<=i9<31>65f5783>!72i3?27c?:9;18?l32290/=8o5589m50?=<21b994?:%36e?3>3g;>57;4;h70>5<#9<k1945a14;92>=n=;0;6)?:a;7:?k7213=07d8<:18'50g=>;1e=8750:9j24<72-;>m78=;o36=?7<3`<;6=4+14c927=i9<31>65f5g83>!72i3<97c?:9;18?l3b290/=8o5639m50?=<21b9i4?:%36e?053g;>57;4;h7`>5<#9<k1:?5a14;92>=n=k0;6)?:a;41?k7213=07d8::18'50g=>=1e=8750:9j22<72-;>m789;o36=?6<3f=;6=4+14c92c=i9<31<65`6d83>!72i3<m7c?:9;38?j0c290/=8o56g9m50?=:21d:n4?:%36e?0a3g;>57=4;n4a>5<#9<k1:k5a14;90>=h>h0;6)?:a;4e?k7213?07b86:18'50g=>o1e=8756:9l2=<72-;>m78i;o36=?1<3f=i6=4+14c93d=i9<31<65`7883>!72i3=37c?:9;28?j10290/=8o5799m50?=921d;;4?:%36e?1?3g;>57<4;n56>5<#9<k1;55a14;97>=h?=0;6)?:a;5;?k7213>07b9<:18'50g=?11e=8755:9l37<72-;>m797;o36=?0<3f=:6=4+14c93==i9<31;65`7e83>!72i3=h7c?:9;28?xd3=m0;69<50;2x 40228?o7E:8f:J730=]<=0jw;48:30966<693;96?:512811?732t.o:7=4$e597>"?n390(4>53:&:5?5<,081?6*63;18 <2=;2.::<4=;%356?4<,021?6*69;18 <g=;2.2n7=4$8a97>">l390(4k53:&:b?5<,h:1?6*n1;18 d4=;2.j?7=4$`697>"f=390(l853:&b3?5<,h21?6*n9;18 dg=;2.jn7=4$`a97>"fl390(lk53:&bb?5<,k:1?6*m1;18 g4=;2.i?7=4$c697>"e=390(o853:&a3?5<,k21?6*m9;18 gg=;2.in7=4$ca97>"el390(ok53:&ab?5<,j:1?6*l1;18 f4=;2.h?7=4$b697>"d=390(n853:&`3?5<,j21?6*l9;18 fg=;2.hn7=4$ba97>"dl390(nk53:&`b?5<,m:1?6*k1;18 a4=;2.o?7=4$e697>"c=390(99l:55b?!?22:1/=8h51468 a>=:2.o57<4$55a>11f3-3=6>5f4`83>>o3j3:17d9j:188m2`=831b=;=50;9j532=831b8:650;9j02?=831b>n4?:%36e?4e3g;>57>4;h16>5<#9<k1>o5a14;95>=n;=0;6)?:a;0a?k7213807d=<:18'50g=:k1e=8753:9j77<72-;>m7<m;o36=?2<3`9:6=4+14c96g=i9<31965f3183>!72i38i7c?:9;48?l4a290/=8o52c9m50?=?21b>h4?:%36e?4e3g;>5764;h0g>5<#9<k1>o5a14;9=>=n:h0;6)?:a;0a?k7213k07d=7:18'50g=;>1e=8750:9j04<72-;>m7=8;o36=?7<3`>;6=4+14c972=i9<31>65f3g83>!72i39<7c?:9;18?l5b290/=8o5369m50?=<21b?i4?:%36e?503g;>57;4;h1`>5<#9<k1?:5a14;92>=n;k0;6)?:a;14?k7213=07d=n:18'50g=;>1e=8758:9j7<<72-;>m7=8;o36=??<3`9=6=4+14c972=i9<31m65f5`83>!72i3?27c?:9;28?l3?290/=8o5589m50?=921b9:4?:%36e?3>3g;>57<4;h75>5<#9<k1945a14;97>=n=<0;6)?:a;7:?k7213>07d;;:18'50g==01e=8755:9j16<72-;>m7;6;o36=?0<3`?96=4+14c91<=i9<31;65f6283>!72i3<97c?:9;28?l06290/=8o5639m50?=921b:=4?:%36e?053g;>57<4;h7e>5<#9<k1:?5a14;97>=n=l0;6)?:a;41?k7213>07d;k:18'50g=>;1e=8755:9j1f<72-;>m78=;o36=?0<3`?i6=4+14c927=i9<31;65f6483>!72i3<?7c?:9;28?l00290/=8o5679m50?=821d;=4?:%36e?0a3g;>57>4;n4f>5<#9<k1:k5a14;95>=h>m0;6)?:a;4e?k7213807b8l:18'50g=>o1e=8753:9l2g<72-;>m78i;o36=?2<3f<j6=4+14c92c=i9<31965`6883>!72i3<m7c?:9;48?j0?290/=8o56g9m50?=?21d;o4?:%36e?1f3g;>57>4;n5:>5<#9<k1;55a14;94>=h?>0;6)?:a;5;?k7213;07b99:18'50g=?11e=8752:9l30<72-;>m797;o36=?5<3f=?6=4+14c93==i9<31865`7283>!72i3=37c?:9;78?j15290/=8o5799m50?=>21d;<4?:%36e?1?3g;>5794;n5g>5<#9<k1;n5a14;94>=zj=?n6=4;2;294~"6><0:9i5G46d8L1123S>?6lu9:6816?4428;1=?4=4;30>73=9=0v(i853:&g3?5<,1l1?6*60;18 <7=;2.2>7=4$8197>"><390(<8>:39'534=:2.247=4$8;97>">i390(4l53:&:g?5<,0n1?6*6e;18 <`=;2.j<7=4$`397>"f:390(l=53:&b0?5<,h?1?6*n6;18 d1=;2.j47=4$`;97>"fi390(ll53:&bg?5<,hn1?6*ne;18 d`=;2.i<7=4$c397>"e:390(o=53:&a0?5<,k?1?6*m6;18 g1=;2.i47=4$c;97>"ei390(ol53:&ag?5<,kn1?6*me;18 g`=;2.h<7=4$b397>"d:390(n=53:&`0?5<,j?1?6*l6;18 f1=;2.h47=4$b;97>"di390(nl53:&`g?5<,jn1?6*le;18 f`=;2.o<7=4$e397>"c:390(i=53:&g0?5<,m?1?6*;7b873d=#1<087)?:f;360>"c0380(i752:&73g<3?h1/5;4<;h6b>5<<a=h1<75f7d83>>o0n3:17d?93;29?l71<3:17d:88;29?l2013:17d<l:18'50g=:k1e=8750:9j70<72-;>m7<m;o36=?7<3`9?6=4+14c96g=i9<31>65f3283>!72i38i7c?:9;18?l55290/=8o52c9m50?=<21b?<4?:%36e?4e3g;>57;4;h13>5<#9<k1>o5a14;92>=n:o0;6)?:a;0a?k7213=07d<j:18'50g=:k1e=8758:9j6a<72-;>m7<m;o36=??<3`8j6=4+14c96g=i9<31m65f3983>!72i39<7c?:9;28?l26290/=8o5369m50?=921b8=4?:%36e?503g;>57<4;h1e>5<#9<k1?:5a14;97>=n;l0;6)?:a;14?k7213>07d=k:18'50g=;>1e=8755:9j7f<72-;>m7=8;o36=?0<3`9i6=4+14c972=i9<31;65f3`83>!72i39<7c?:9;:8?l5>290/=8o5369m50?=121b?;4?:%36e?503g;>57o4;h7b>5<#9<k1945a14;94>=n=10;6)?:a;7:?k7213;07d;8:18'50g==01e=8752:9j13<72-;>m7;6;o36=?5<3`?>6=4+14c91<=i9<31865f5583>!72i3?27c?:9;78?l34290/=8o5589m50?=>21b9?4?:%36e?3>3g;>5794;h40>5<#9<k1:?5a14;94>=n>80;6)?:a;41?k7213;07d8?:18'50g=>;1e=8752:9j1c<72-;>m78=;o36=?5<3`?n6=4+14c927=i9<31865f5e83>!72i3<97c?:9;78?l3d290/=8o5639m50?=>21b9o4?:%36e?053g;>5794;h46>5<#9<k1:95a14;94>=n>>0;6)?:a;45?k7213:07b9?:18'50g=>o1e=8750:9l2`<72-;>m78i;o36=?7<3f<o6=4+14c92c=i9<31>65`6b83>!72i3<m7c?:9;18?j0e290/=8o56g9m50?=<21d:l4?:%36e?0a3g;>57;4;n4:>5<#9<k1:k5a14;92>=h>10;6)?:a;4e?k7213=07b9m:18'50g=?h1e=8750:9l3<<72-;>m797;o36=?6<3f=<6=4+14c93==i9<31=65`7783>!72i3=37c?:9;08?j12290/=8o5799m50?=;21d;94?:%36e?1?3g;>57:4;n50>5<#9<k1;55a14;91>=h?;0;6)?:a;5;?k7213<07b9>:18'50g=?11e=8757:9l3a<72-;>m79l;o36=?6<3th:;n4?:483>5}#9??1i95G46d8L1123-3<6?74i9`94?=n0j0;66g7d;29?l>b2900cim50;9~f40a29086=4?{%351?c63A><j6F;749'=2<6k2c3n7>5;h:`>5<<gmi1<75rb04`>5<2290;w)?95;g7?M20n2B?;85+9682a>o?j3:17d6l:188m=b=831b4h4?::mgg?6=3ty>544?:7y]1<?<5;=865j4=35b>=c<5;==65k4=353>=d<5;<m65l4}r6:3?6=?1qU8474^5:;?[3f:2T>m=5Q4958Z0?d3W?8:6P:a09]161<V<?h7S:7e:\7=3=Y<0?0R97;;_6:7>X31;1U84?4^5;3?[2?n2T?4i5Q49a891>72130198m:42891052<:0198n:428910>2<:0199<:42891152<:01?lm:43897df2<;01?l6:43897d?2<;01?l8:43897d12<;01?j=:43897b62<;01?j?:43897ea2<;01?mj:43897ec2<;01>9m:438961f2<;01>96:438961?2<;01>98:43896112<;01>7=:43896?62<;01>7?:43896>a2<;01>6j:43896>c2<;01>>>:43897`a2<;01?hk:43897`e2<;01?h6:43897`02<;01?h::43897`42<;01?h>:43897ca2<;01>m<:43896e62<;01>li:43896dc2<;01>lm:43896d>2<;01>l8:43896d22<;01>l<:43896d62<;019;m:040?822j3;=863;5c873<=:<<h1:>5244`924=:<<h1:=5244`91c=:<<h19h5244`91a=:<<h19n5244`91g=:<<h1::5244a9535<5=?h6<8;;<66g?20127?9n493:?71f<1927?9n490:?71f<2n27?9n4:e:?71f<2l27?9n4:c:?71f<2j27?9n497:?71a<6>:1688j51768913c2==270::d;40?822l3<:70::d;43?822l3?m70::d;7f?822l3?o70::d;7`?822l3?i70::d;44?822m3;=?63;5d8221=:<<o18:74=57f>35<5=?n6;?4=57f>36<5=?n68h4=57f>0c<5=?n68j4=57f>0e<5=?n68l4=57f>31<uz?2n7>53z\6=g=:<?h1=8l4=541>43e3ty>>i4?:3y]17b<5;=36<;l;|q6fg<72:qU9ol4=2c6>=d<5:k?65l4}r7;5?6=09qU95?4=547>13<5=<869;4=541>13<5=<j69;4=54:>13<5;o:69;4=3;a>13<5;3h69;4=3;f>13<5;3m69;4=3c3>13<5;k:69;4=3c1>13<5;k869;4=3c7>13<5;k>69;4=3;g>13<5;;:69;4=33:>13<5;;369;4=334>13<5;;=69;4=336>13<5;;?69;4=330>13<5;;969;4=333>13<5;:m69;4=37`>13<5;<?69;4=340>13<5;<969;4=342>13<5;<;69;4=37e>13<5;?n69;4=37g>13<5;?i69;4=37b>13<5;>=69;4=36f>13<5;>o69;4=36`>13<5;>i69;4=36b>13<5;>269;4=36;>13<5;><69;4=366>13<5;>?69;4=0a0>13<58ii69;4=0ab>13<58i269;4=0a;>13<58i<69;4=0a5>13<58i>69;4=0a7>13<58i969;4=0a2>13<5:;h69;4=207>13<5:8969;4=202>13<5:8869;4=23e>13<5:;n69;4=203>13<5:;i69;4=23b>13<5:;o69;4=211>13<5:9j69;4=21:>13<5:9369;4=214>13<5:9=69;4=216>13<5:9?69;4=210>13<5:9:69;4=213>13<5;=?69;4=352>13<5;=369;4=354>13<5=9;69;4=50e>13<5=8n69;4=50g>13<5=8h69;4=50a>13<5=8269;4=50;>13<5=8<69;4=505>13<5=8>69;4=507>13<5=8869;4=501>13<5=8:69;4=503>13<5=;n69;4=53g>13<5=;h69;4=53a>13<5=;j69;4=53:>13<5=;369;4=534>13<5=;=69;4=536>13<5=9=69;4=516>13<5=9?69;4=510>13<5=9969;4=512>13<5=8j69;4=53e>13<5=;?69;4=530>13<5=?i69l4=57`>1d<5=?o69l4=57f>1d<uz?8?7>52z\676=:;h81=8m4}r7b7?6=>=qU9l=4=54g>13<5=<i69;4=54`>13<5==869;4=551>13<5:k969;4=2c2>13<5:?i69;4=27`>13<5:?n69;4=27e>13<5:<;69;4=242>13<5:<969;4=240>13<5:<?69;4=246>13<5:?o69;4=0c7>13<58kh69;4=0ca>13<58kj69;4=0c:>13<58k369;4=0c4>13<58k=69;4=0c6>13<58k869;4=0c1>13<58om69;4=0d4>13<58l=69;4=0d6>13<58l?69;4=0d0>13<58l969;4=0d2>13<58l;69;4=0gf>13<58oo69;4=0f:>13<58o:69;4=0g3>13<58nm69;4=0ff>13<58no69;4=0f`>13<58ni69;4=0fb>13<58n369;4=0f4>13<5;9;69;4=31;>13<5;9<69;4=315>13<5;9>69;4=317>13<5;9869;4=311>13<5;9:69;4=30e>13<5;8n69;4=2ff>13<5:o=69;4=2g7>13<5:o869;4=2g6>13<5:o:69;4=2g3>13<5:o969;4=2fg>13<5:nh69;4=2fe>13<5:l>69;4=2d1>13<5:l869;4=2d;>13<5:l=69;4=2d4>13<5:li69;4=2d:>13<5:lj69;4=2d`>13<5:l?69;4=52b>13<5=;969;4=532>13<5=;;69;4=52e>13<5=:n69;4=52g>13<5=:h69;4=52a>13<5=:269;4=52;>13<5=?i69o4=57`>1g<5=?o69o4=57f>1g<uz?i=7>52z\6e3=:;<n1=8m4}r7ae?6=:rT>mh52377950e<uz?i57>52z\6ea=:;?>1=8m4}r7a<?6=:rT>mn52371950e<uz?i;7>52z\6eg=:;?81=8m4}r7a2?6=:rT>ml52373950e<uz?i97>52z\6e<=:;?:1=8m4}r7a0?6=:rT>m55234d950e<uz?i?7>52z\6e2=:;<o1=8m4}r7a6?6=:rT>m85234a950e<uz?jj7>52z\6e1=:;<h1=8m4}r710?6=:rT><=52422950e<uz?9>7>52z\7bc=:<;l1=8m4}r715?6=:rT?jh5243g950e<uz?9<7>52z\7ba=:<;n1=8m4}r72b?6=:rT?jn5243a950e<uz?:i7>52z\7bg=:<;h1=8m4}r72g?6=:rT?j45243;950e<uz?:n7>52z\7b==:<;21=8m4}r72e?6=:rT?j:52435950e<uz?:57>52z\7b3=:<;<1=8m4}r72<?6=:rT?j852437950e<uz?:;7>52z\7b1=:<;>1=8m4}r722?6=:rT?j>52431950e<uz?:97>52z\7b7=:<;81=8m4}r720?6=:rT?j<52433950e<uz?:?7>52z\7b5=:<;:1=8m4}r725?6=:rT?ih5240g950e<uz?:<7>52z\7aa=:<8n1=8m4}r73b?6=:rT?in5240a950e<uz?;i7>52z\7ag=:<8h1=8m4}r73`?6=:rT?il5240c950e<uz?;o7>52z\7a<=:<831=8m4}r73f?6=:rT?i55240:950e<uz?;m7>52z\7a2=:<8=1=8m4}r73=?6=:rT?i;52404950e<uz?;47>52z\7a0=:<8?1=8m4}r71f?6=:rT><;52424950e<uz?9m7>52z\640=:<:?1=8m4}r71=?6=:rT><952426950e<uz?947>52z\646=:<:91=8m4}r713?6=:rT><?52420950e<uz?9:7>52z\644=:<:;1=8m4}r711?6=:rT?jl5243c950e<uz?:h7>52z\7ac=:<8l1=8m4}r726?6=:rT?i952406950e<uz?;;7>52z\7a6=:<891=8m4}r7;b?6=:rT>495228f950e<uz?247>52z\6<f=::h?1=8m4}r7:3?6=:rT>4o522`6950e<uz?2:7>52z\6<d=::h91=8m4}r7:1?6=:rT>44522`0950e<uz?287>52z\6<==::h;1=8m4}r7:7?6=:rT>4:522`2950e<uz?2>7>52z\6<3=::0l1=8m4}r7:5?6=:rT>485228g950e<uz?2<7>52z\6<6=::0i1=8m4}r7;`?6=:rT>4?5228`950e<uz>on7>52z\7f2=:<<o1:85rs5f:>5<5sW>i:63;5d86e>{t<m21<7<t^5`6?822m3?37p};d683>7}Y<k>019;j:458yv2c>3:1>vP;b29>00c==?1v\7f9j::181\7f[2e:27?9h4:5:\7fp0a5=838pR9l?;<66a?333ty?h?4?:3y]0d`<5=?n68=4}r6g5?6=:rT?mh5244g917=z{=n;6=4={_6b`>;3=m0=96s|4bd94?4|V=kh70::d;7b?xu3kl0;6?uQ4``8913c2<20q~:ld;296~X3ih1688j5569~w1ed2909wS:n9:?71a<2>2wx8nl50;0xZ1g?34>>h7;:;|q7gd<72;qU8l94=57g>02<uz>h47>52z\7e0=:<<n19>5rs5a4>5<5sW>j863;5e866>{t<j<1<7<t^5c0?822k3<>7p};c483>7}Y<h8019;l:4c8yv2d<3:1>vP;a09>00e==11v\7f9m<:181\7f[2f827?9n4:7:\7fp0f4=838pR97i;<66g?313ty?o<4?:3y]0<c<5=?h68;4}r6`4?6=:rT?5i5244a911=z{=hm6=4={_6:g>;3=j0>?6s|4d094?4|V=ho70::c;71?xu3m80;6?uQ4ca8913e2??0q~:j0;296~X3jk1688l55`9~w1ba2909wS:ma:?71g<202wx8ik50;0xZ1d>34>>n7;8;|q7`a<72;qU8o64=57a>00<uz>oo7>52z\7f4=:<<h1985rs5f7>5<5sW>j:63;5c860>{t<j31<7<t^5;a?822j3?87p};bd83>7}Y<0k019;m:408yvc>290:=v3;808212=::>h1845228290<=:;:h1845234290<=::k<184522bf90<=:;><1845239f90<=:;99184522dd90<=:;j?184523c390<=:<<h1;h5244a93`=:<<n1;h5244g93`=z{=<86=4<{<650?3734>=?7?:c:?727<3?2wx8;:50;0x910328?h70:96;:a?xu3>j0;6>u247f915=:<?h18:5247a950e<uz>=h7>52z?72a<6=j168;h58c9~w1052908w0:93;73?821:3;>o63;678;g>{t<?h1<7=t=54a>43d34>=o7;?;<65b?>d3ty?:84?:2y>03g=9<h01986:07a?821>3;>96s|47:94?40s4>=m7?:c:?1a4<6=k16>4l54b9>6<e=<j16>4k54b9>6<`=<j16>l>54b9>6d7=<j16>l<54b9>6d5=<j16>l:54b9>6d3=<j16>4j54b9>74e=<j16??:54b9>774=<j16???54b9>775=<j16?<h54b9>74c=<j16??>54b9>74d=<j16?<o514`8967c2=i01>==:5a8965f2=i01>=6:5a8965?2=i01>=8:5a896512=i01>=::5a896532=i01>=<:5a896562=i01>=?:5a897132=i01?9>:5a8971?28?i70<87;36f>{t<?=1<7<k{<65=?72k279=<4;c:?15<<3k279=54;c:?152<3k279=;4;c:?150<3k279=94;c:?156<3k279=?4;c:?155<3k279<k4;c:?11f<3k279:94;c:?126<3k279:?4;c:?124<3k279:=4;c:?11c<3k2799h4;c:?11a<3k2799o4;c:?11d<3k2798;4;c:?10`<3k2798i4;c:?10f<3k2798o4;c:?10d<3k279844;c:?10=<3k2798:4;c:?100<3k279894;c:?2g6<3k27:oo4;c:?2gd<3k27:o44;c:?2g=<3k27:o:4;c:?2g3<3k27:o84;c:?2g1<3k27:o?4;c:?2g4<3k2wx8;k50;1x911428?i70:82;36f>;3>o0:985rs552>5<5nr7?;>4>5b9>7d4=9<h01>o>:07a?852j3>h70=:c;6`?852m3>h70=:f;6`?85183>h70=91;6`?851:3>h70=93;6`?851<3>h70=95;6`?852l3>h70=ke;6`?85b>3>h70=j4;6`?85b;3>h70=j5;6`?85b93>h70=j0;6`?85b:3>h70=kd;36f>;4lj0?o63<dg87g>;4n<0?o63<f3821g=:;o918n523g:90f=:;o<18n523g590f=:;oh18n523g;90f=:;ok18n523ga90f=:;o>18n5241c90f=:<8818n5240390f=:<8:18n5241d90f=:<9o18n5241f90f=:<9i18n5241`90f=:<9318n5241:90f=z{==;6=4=dz?737<6=j16=l:54b9>5de=<j16=ll54b9>5dg=<j16=l754b9>5d>=<j16=l954b9>5d0=<j16=l;54b9>5d5=<j16=l<54b9>5``=<j16=k954b9>5c0=<j16=k;54b9>5c2=<j16=k=54b9>5c4=<j16=k?54b9>5c6=<j16=hk54b9>5`b=<j16=i754b9>5`7=<j16=h>54b9>5a`=<j16=ik54b9>5ab=<j16=im54b9>5ad=<j16=io54b9>5a>=<j16=i954b9>666=<j16>>654b9>661=<j16>>854b9>663=<j16>>:54b9>665=<j16>><54b9>667=<j16>?h54b9>67c=<j1v\7f?k=:181\7f84b93?;70<j3;361>{t:l;1<7=t=3g2>43d348<:76m;<05b?>d3ty9m;4?:3y>6<d==916>4>51478yv4f03:1>v3=9b864>;51;0:985rs3c:>5<5s482i7;?;<0:7?72=2wx>lo50;0x97?a2<:01?7;:076?xu5ik0;6?u22`2915=::0?1=8;4}r0bg?6=:r79m<4:0:?1=3<6=<1v\7f?ok:181\7f84f:3?;70<67;361>{t:ho1<7<t=3c0>06<5;336<;:;|q1ec<72;q6>l:5519>6<?=9<?0q~<m0;296~;5i<0><63=9`8210=z{;k<6=4={<0:`?373482=7?:5:\7fp7d5=839p1>o=:42896g62<:01>o;:076?xu4i80;6>u23`3950e<5:k>65m4=2c7>=e<uz9=:7>52z?01g<282789=4>549~w60?2909w0=:c;73?852:3;>96s|37;94?4|5:?n68>4=270>4323ty8:l4?:3y>70`==916?8:51478yv51j3:1>v3<61864>;4=<0:985rs24`>5<5s49==7;?;<162?72=2wx?;j50;0x96052<:01>;8:076?xu4>l0;6?u2371915=:;<21=8;4}r15b?6=:r78:94:0:?01<<6=<1v\7f>9?:181\7f851=3?;70=:a;361>{t;?=1<7<t=27g>06<5:?:6<;:;|q141<72<q6>5;58c9>62d==816>=h514a897b>21o01?m=:9`8yv55=3:14v3=848;g>;4;90:9n5216c9<f=::j814i5244`973=:<<i1?;5244f973=:<<o1?;5rs3:6>5<4s48397?:5:?13g<6=l16>4>5dc9~w71e2908w0<8b;361>;5?j0?563=9387=>{t:9<1<7;t=3:4>=d<5;=h68?4=333>43d348o576l;<0`6?>d3ty8>:4?:8y>6=1=0j16?>?514a8941f21h01<96:9a897e521o019;m:2;8913d2:3019;k:2;8913b2:30q~<77;297~;50>0:985226a950c<5;396il4}r04g?6=;r79;n4>549>62b=<016>4=5489~w760290>w0<78;:a?840l3?:70<>2;36g>;5lh03i63=c28;f>{t;;21<77t=3:;>=e<5:986<;l;<34=?>e34;<476l;<0`7?>c34>>n7=n;<66g?5f34>>h7=n;<66a?5f3ty9454?:2y>6=>=9<?01?9k:07f?84>;3ni7p}=7e83>6}::>n1=8;4=35f>1?<5;3?6974}r03<?6==r794447b:?13`<29279=>4>5b9>6ag=0j16>n=58b9~w64>2902w0<79;:`?854<3;>o63>798;f>;6?>03o63=c28;a>;3=k08n63;5b80f>;3=m08n63;5d80f>{t:131<7=t=3::>432348<i7?:e:?1=1<cj2wx>:k50;1x971b28?>70<8f;6:?84>=3>27p}=0883>0}::1k14o5226d914=::8>1=8m4=3fa>=c<5;i?65l4}r11e?6=1r794l47c:?070<6=j16=:958c9>520=0j16>n:58e9>00d=;j1688m53b9>00b=;j1688k53b9~w7>f2908w0<7a;361>;5?o0:9h522879`g=z{;=m6=4<{<04b?72=2794=4;9:?1=3<312wx>=o50;7x97>e21h01?6?:438977228?h70<kb;:`?84d<32h7p}<2c83><}::1h14n52324950e<58==65l4=056>=e<5;i?65k4=57a>6b<5=?h6>j4=57g>6b<5=?n6>j4}r0;f?6=;r794o4>549>6=6=9<o01?79:e`8yv4?83:1?v3=818210=::1;1845228590<=z{;:i6=4:{<0;g?>e3483=7;>;<022?72k279hn47e:?1g0<?j2wx??m50;;x97>d21i01>=8:07`?870=32i70?84;:`?84d=32o70::b;1f?822k39n70::d;1f?822m39n7p}=8b83>6}::1i1=8;4=3:2>43b3482;7jm;|q1<4<72:q6>5?5147897>52=301?77:5;8yv47k3:19v3=8e8;f>;50;0>=63=16821f=::mi14n522b79<f=z{:8o6=46{<0;`?>d349847?:c:?231<?j27:;>47c:?1g0<?m27?9o4<f:?71f<4n27?9i4<f:?71`<4n2wx>5j50;1x97>c28?>70<72;36a>;5110on6s|29094?5|5;296<;:;<0;7?2>348257:6;|q14a<72<q6>5k58c9>6=5==816><6514a897bc21o01?m9:9`8yv55m3:15v3=8d8;g>;4;00:9n521619<g=:9>814n522b49<a=:<<h18=5244a905=:<<n18=5244g905=z{;2n6=4<{<0;a?72=2794>4>5d9>6<?=lk1v\7f?6<:180\7f84?;3;>963=8587=>;51h0?56s|21g94?3|5;2m65l4=3:7>07<5;;26<;l;<0g`?>d348h:76l;|q06c<720q6>5h58b9>76g=9<i01<9=:9`8941621i01?m9:9g8913e2=;019;l:538913c2=;019;j:538yv4?n3:1?v3=8g8210=::1>1=8k4=3;b>ad<uz8387>52z?1<1<6=<16>4?5489~w762290?w0<76;:a?84693;>o63=dd8;f>;5k>03n6s|33494??|5;2=65m4=0a0>06<5:996<;l;<345?>e348h;76l;<66f?5?34>>o7=7;<66`?5?34>>i7=7;|q1<3<72;q6>585147897?62mh0q~?67;290~;4<<03n63>a3821f=:;0314h523909<`=z{:lo6=47{<171?>d3498n7;>;<63<?72k27:5>47c:?71g<5i27?9n4=a:?71a<5i27?9h4=a:\7fp713=839p1>:::076?854j3;>i63<518gf>{t;:h1<7=t=21a>4323498o7:6;<166?2>3ty:544?:5y>711=0k16=l=514a896?>21i01>6=:9a8yv5an3:15v3<468;g>;4;j0>=63;08821f=:90914o521809<f=:<<h1>i5244a96a=:<<n1>i5244g96a=z{:><6=4<{<173?72=278?n4>5d9>704=lk1v\7f>=l:180\7f854k3;>963<3e87=>;4=:0?56s|18c94?2|5:>365l4=0c6>43d3492m76j;<1;7?>b3ty?<=4?:8y>71>=0j16?>j5509>05d=9<i01<7=:9`894?621i019;m:3g8913d2;o019;k:3g8913b2;o0q~=;8;297~;4<10:985232f950c<5:?86il4}r10`?6=;r78?i4>549>76c=<016?8:5489~w4?e290?w0=;9;:a?87f>3;>o63<9`8;g>;40:03o6s|41394??|5:>265m4=21f>07<5=:h6<;l;<3:5?>e34;2<76l;<66f?4a34>>o7<i;<66`?4a34>>i7<i;|q00<<72:q6?9751478965b28?n70=:4;fa?xu4;l0;6>u232g9503<5:9m6974=276>1?<uz>;>7>59z?00d<?j278?k4:1:?74a<6=j16=4>58c9>5=`=0j1688l5319>00e=;91688j5319>00c=;91v\7f<7l:187\7f853i32h70?n7;36g>;41k03i63<858;a>{t;=k1<7=t=26b>4323498j7?:e:?010<cj2wx?>h50;1x965a28?>70=;0;6:?852>3>27p};0283><}:;=h14o52352914=:<9o1=8m4=0:e>=d<582n65m4=57a>67<5=?h6>?4=57g>67<5=?n6>?4}r3:`?6=<r788o47c:?2e=<6=j16?4l58b9>7=2=0j1v\7f>:m:180\7f853j3;>963<41821`=:;<<1ho5rs263>5<4s49?<7?:5:?004<312789:4;9:\7fp052=833p1>:l:9`896262<;019>i:07`?87?m32i70?7d;:`?822j39970::c;11?822l39970::e;11?xu61l0;69u235a9<f=:9h31=8m4=2;`>=c<5:2>65k4}r17g?6=;r788n4>549>717=9<o01>;8:e`8yv5393:1?v3<408210=:;=81845234:90<=z{=:>6=46{<17`?>e349?>7;>;<624?72k27:4i47b:?2<f<?k27?9o4<3:?71f<4;27?9i4<3:?71`<4;2wx=4h50;6x962c21i01<on:07`?85>k32h70=75;:`?xu4<m0;6>u235f9503<5:>96<;j;<16<?be3ty88?4?:2y>714=9<?01>:<:5;8963>2=30q~:?6;29=~;4<l03n63<42865>;3980:9n5219a9<g=:91h14n5244`971=:<<i1?95244f971=:<<o1?95rs0c3>5<3s49?i76l;<3bf?72k2785i47e:?0<3<?m2wx?9k50;1x962b28?>70=;3;36a>;4=00on6s|35194?5|5:>86<;:;<170?2>349>m7:6;|q742<720q6?9h58c9>712==8168<<514a894>e21h01<6n:9a8913e2:?019;l:278913c2:?019;j:278yv7f93:18v3<4g8;g>;6ij0:9n5238f9<f=:;1<14n5rs26e>5<4s49?j7?:5:?001<6=l16?8o5dc9~w6232909w0=;4;361>;4=80?56s|3gg94?>|5:>=65l4=313>06<5=:j6<;l;<3;e?>e34>>n7<l;<66g?4d34>>h7<l;<66a?4d3ty:554?:5y>710=0j16=l:514a896?b21i01>68:9a8yv53>3:1>v3<478210=:;<;1ho5rs3`6>5<5s48in7:6;<0ae?72=2wx>n?50;0x97de28?n70<l7;361>{t:ml1<7<t=3`a>432348n?76k;|q1f1<72;q6>oo5489>6g?=9<?0q~<l0;296~;5jh0:9h522b49503<uz8i?7>52z?1f<<31279n54>549~w7da2909w0<m9;36a>;5k<0:985rs3`1>5<5s48i47:6;<0a3?72=2wx>ok50;0x97d?28?n70<l4;361>{t:k;1<7<t=3`4>1?<5;h=6<;:;|q1fa<72;q6>o9514g897e428?>7p}=bb83>7}::k<1=8k4=3a1>4323ty9on4?:3y>6a4=<016>i?51478yv4c03:1>v3=d3821`=::mo1=8;4}r0f4?6=:r79h?4>549>6`5=0k1v\7f?mm:181\7f84c93>270<k0;361>{t:m=1<7<t=3f2>43b348oh7?:5:\7fp6fg=838p1?j?:5;897ea28?>7p}=d783>7}::m:1=8k4=3f`>4323ty9o44?:3y>6f`=<016>nk51478yv4c=3:1>v3=cg821`=::mh1=8;4}r0`<?6=:r79oh4;9:?1ga<6=<1v\7f?j;:181\7f84dm3;>i63=d`8210=z{;n86=4={<0``?72m279h44>549~w6122909w0=8b;6:?850i3;>96s|39394?4|5:=i6<;j;<1;3?72=2wx?4h50;0x961e28?>70=n4;:g?xu4?=0;6?u236c90<=:;>31=8;4}r1;4?6=:r78;l4>5d9>7=0=9<?0q~=83;296~;4?00?563<798210=z{:=m6=4={<14=?72m278484>549~w6152909w0=88;6:?850?3;>96s|36g94?4|5:=36<;j;<1;0?72=2wx?:?50;0x96102=301>99:076?xu4?m0;6?u2365950c<5:286<;:;|q03f<72;q6?:8514g896>528?>7p}<8b83>7}:;08184523839503<uz9247>52z?0=7<6=l16?4k51478yv5f83:1>v3<938210=:;h>14h5rs2:a>5<5s492=7:6;<1:4?72=2wx?4950;0x96?628?n70=6d;361>{t;1k1<7<t=2;3>1?<5:2m6<;:;|q0=3<72;q6?4>514g896?d28?>7p}<8883>7}:;1l1845239g9503<uz9297>52z?0<c<6=l16?4l51478yv5?03:1>v3<8d87=>;40m0:985rs2;7>5<5s493i7?:e:?0=d<6=<1v\7f>7<:181\7f85?l3;>i63<988210=z{8o86=49{<3b0?3734;nj7?:c:?223<?k27:::47c:?22=<?k27::n47c:\7fp5db=838p1<ol:428940128?>7p}>ad83>1}:9hh19=521759503<58<265l4=04b>=d<uz;jj7>52z?2ed<2827::54>549~w4d72909w0?n9;73?87113;>96s|1c394?4|58k368>4=04b>4323ty:n?4?:7y>5d1==916=;j58b9>53c=0m16=:>58d9>5=6=0l16=;l51478yv7e;3:1>v3>a7864>;6>m0:985rs0`7>5<5s4;j97;?;<35a?72=2wx=o;50;0x94g42<:01<9?:076?xu58:0;6?u21`0915=:91:1=8;4}r064?6=>r79=<4:0:?11f<6=j16=5?58b9>5=?=0l16=:k58b9>5=4=0j1v\7f??n:181\7f84613?;70?71;361>{t:8h1<7<t=33;>06<58296<;:;|q167<72?q6><95519>5=5=0k16=5:58e9>5=0=0l16=575147894>221n0q~<>c;296~;59?0><63>828210=z{;;o6=4={<021?3734;387?:5:\7fp64c=838p1??;:42894>228?>7p}=1g83>1}::8919=521959<f=:91<1=8;4=0:;>=b<uz89<7>52z?157<2827:4:4>549~w7462909w0<>0;73?87?03;>96s|21094?4|5;:m68>4=05g>4323ty9?l4?:3y>60e==916>98514a8yv43;3:1>v3=65864>;5<l0:9n5rs37:>5<2s48=87?:c:?2<4<?j27:4447d:?23`<?j27:4?47b:\7fp614=838p1?8<:428972c28?h7p}=5983>1}::?91=8m4=0::>=e<582965j4=05`>=e<uz8?=7>52z?127<282798n4>5b9~w7302908w0<92;36g>;60003n63>7b8;f>{t:=:1<7<t=342>06<5;>i6<;l;|q113<72?q6>;?514a894>421i01<6;:9a894>121i01<6::9a8941d21o0q~<<f;296~;5>90><63=4`821f=z{;?>6=4:{<054?72k27:4947b:?2<3<?j27:4847b:?23f<?l2wx>>k50;0x973a2<:01?:6:07`?xu5==0;69u224d950e<58=i65m4=0:6>=c<58=o65j4}r00`?6=:r799h4:0:?10=<6=j1v\7f?;<:180\7f842m3;>o63>7c8;f>;6?o03n6s|22a94?4|5;?o68>4=364>43d3ty99?4?:5y>60b=9<i01<68:9`894>?21i01<9i:9a8yv44j3:1>v3=5c864>;5<<0:9n5rs372>5<4s48>n7?:c:?2<=<?j27:;k47d:\7fp66?=838p1?;n:428972328?h7p}=4g83>7}::<k1=8m4=05f>=b<uz;hh7>52z?2ac<2827:h44>5b9~w4b12909w0?i7;73?87b93;>o6s|1da94?3|58l<6<;l;<352?>e34;=;76m;<35f?>e34;=476m;|q2`0<72;q6=k85519>5`6=9<i0q~?jb;290~;6n?0:9n521759<a=:9?h14n5217:9<a=z{8n?6=4={<3e1?3734;oj7?:c:\7fp5`g=83?p1<h::07`?871132h70?9a;:`?871032n70?9c;:g?xu6l:0;6?u21g6915=:9mo1=8m4}r3f=?6=<r7:j94>5b9>53?=0m16=;o58e9>53e=0l1v\7f<j=:181\7f87a;3?;70?kd;36g>{t9l21<7=t=0d0>43d34;=m76j;<35f?>c3ty:h<4?:3y>5c4==916=im514a8yv7b?3:1>v3>f3821f=:9?i14o5rs0f3>5<5s4;m=7;?;<3gf?72k2wx=h850;7x94`628?h70?9d;:a?871m32h70?80;:g?87?832h7p}>cg83>7}:9o:19=521ec950e<uz;n97>54z?2b5<6=j16=;k58c9>526=0j16=5>58c9~w4eb2909w0?je;73?87c03;>o6s|1d694?5|58on6<;l;<344?>e34;=j76m;|q2gf<72;q6=hj5519>5a1=9<i0q~?j2;296~;6mm0:9n5217d9<f=z{;8?6=4={<072?373488<7?:c:\7fp67b=838p1?:j:428975?28?h7p}=2b83>7}::=n19=52225950e<uz89n7>52z?10f<28279?;4>5b9~w74f2909w0<;b;73?844=3;>o6s|23;94?4|5;>j68>4=317>43d3ty9>54?:3y>61?==916>>=514a8yv45?3:1>v3=49864>;5;;0:9n5rs305>5<5s48?;7;?;<005?72k2wx>?;50;0x97222<:01?<i:07`?xu5::0;6?u2256915=::;o1=8m4}r3a3?6=:r7:h44:0:?2g6<6=j1v\7f<m?:181\7f87b93?;70?lb;36g>{t9kl1<7<t=0g3>06<58ij6<;l;|q2f`<72;q6=ih5519>5f?=9<i0q~?md;296~;6ll0><63>c9821f=z{8hh6=4={<3g`?3734;h;7?:c:\7fp5gd=838p1<jl:42894e128?h7p}>b`83>7}:9mh19=521b7950e<uz;i57>52z?2`d<2827:o94>5b9~w4d?2909w0?k8;73?87d:3;>o6s|1c494?4|58n<68>4=0a2>43d3ty:j54?:3y>5fd==916=:?51478yv7a13:1>v3>c`864>;6?;0:985rs0db>5<5s4;h57;?;<347?72=2wx=kl50;0x94e?2<:01<9;:076?xu6nj0;6?u21b5915=:9>?1=8;4}r3e`?6=:r7:o;4:0:?233<6=<1v\7f<hj:181\7f87d=3?;70?87;361>{t9ol1<7<t=0a7>06<58=36<;:;|q145<72;q6=n<5519>52?=9<?0q~<?1;296~;6k80><63>7`8210=z{;<>6=4={<00<?3734;3m7?:5:\7fp630=838p1?=8:42894>e28?>7p}=6683>7}:::<19=5219a9503<uz8=47>52z?170<2827:4i4>549~w70>2909w0<<4;73?87?m3;>96s|27c94?4|5;9868>4=0:e>4323ty9:o4?:3y>664==916=4>51478yv41k3:1>v3=30864>;6180:985rs34g>5<5s489j7;?;<3:6?72=2wx>;k50;0x974b2<:01<7<:076?xu3=o0;6<mt=23`>11<5:8?6994=201>11<5:8:6994=200>11<5:;m6994=23f>11<5:8;6994=23a>11<5:;j6994=23g>11<5:996994=21b>11<5:926994=21;>11<5:9<6994=215>11<5:9>6994=217>11<5:986994=212>11<5:9;6994=34e>432348n?76l;<66f?1a34>>o79i;<66`?1a34>>i79i;|q1a3<72;q6?<m5519>752=9<?0q~=>0;290~;49j0:9n52320915=::mo14n523179<g=z{;on6=4={<110?37349;i7?:5:\7fp74?=83>p1><;:07`?854i3?;70<kd;:a?857:32i7p}=eb83>7}:;;819=5231a9503<uz9:;7>54z?067<6=j16?>65519>6ae=0k16>kk58c9~w7ce2909w0==1;73?857j3;>96s|30494?2|5:8:6<;l;<103?37348oo76k;<0eg?>e3ty9ii4?:3y>775==916?=j51478yv5603:18v3<22821f=:;:319=522ef9<a=:;9:14o5rs3g:>5<5s49:j7;?;<13=?72=2wx?<:50;6x967a28?h70=<5;73?84cj32o70<i8;:a?xu5m10;6?u230g915=:;921=8;4}r127?6=<r78=h4>5b9>762==916>io58c9>6c0=0k1v\7f?kn:181\7f85583?;70=?a;361>{t;8?1<7:t=203>43d3498:7;?;<0gf?>e348mm76m;|q1a0<72;q6?<l5519>750=9<?0q~=>1;290~;49k0:9n52323915=::m314o522g09<g=z{;o?6=4={<12e?37349;?7?:5:\7fp75`=83>p1>?n:07`?85483?;70<k9;:g?84a832i7p}=e683>7}:;8n19=523159503<uz9:>7>54z?05a<6=j16?>=5519>6ag=0m16>k:58c9~w6662909w0=?4;6:?85793;>96s|31794?4|5::?6il4=226>4323ty9jk4?:2y>75c=<016?=?5489>6c`=9<?0q~=?2;297~;48l0on63<00821`=:;981=8;4}r0e`?6=;r78<i4;9:?1bc<31279ji4>549~w6672908w0=?d;fa?84an3;>i63<018210=z{;li6=4<{<13g?2>348mh7:6;<0ef?72=2wx>kk50;1x966d2mh01?hk:07f?84am3;>96s|2g;94?5|5::i6974=3da>1?<5;l26<;:;|q1bf<72:q6?=l5dc9>6cd=9<o01?hl:076?xu5n>0;6>u231c90<=::o3184522g59503<uz8mm7>53z?04d<cj279j44>5d9>6cg=9<?0q~<i5;297~;4800?563=f687=>;5n<0:985rs3d;>5<4s49;57jm;<0e3?72m279j54>549~w7`42908w0=?8;6:?84a=3>270<i3;361>{t:o<1<7=t=22;>ad<5;l>6<;j;<0e2?72=2wx>k?50;1x96602=301?h<:5;897`628?>7p}=f583>6}:;9=1ho522g1950c<5;l?6<;:;|q1ac<72:q6?=85489>6c7=<016>hh51478yv4a:3:1?v3<078gf>;5n80:9h522g09503<uz8m<7>53z?046<cj279ik4>5d9>6c6=9<?0q~<85;296~;5?=0><63=778210=z{;=?6=49{<040?72k279;>47c:?13d<?l279;;47d:?135<?l279:k47e:\7fp624=838p1?9>:428971428?>7p}=7083>3}::>;1=8m4=350>=d<5;=j65m4=355>=e<5;=;65m4=34e>=b<uz8<57>53z?13=<28279;:4:0:?13d<6=<1v\7f?98:181\7f840?3;>o63=7`8;f>{t<?;1<7<9{<1ga?20349n:7:8;<1f0?20349n?7:8;<1f1?20349n=7:8;<1f4?20349n>7:8;<1g`?20349oo7:8;<1gb?20349m97:8;<1e6?20349m?7:8;<1e<?20349m:7:8;<1e3?20349mn7:8;<1e=?20349mm7:8;<1eg?20349m87:8;<63e?2034>:>7:8;<625?2034>:<7:8;<63b?2034>;i7:8;<63`?2034>;o7:8;<63f?2034>;57:8;<63<?20349j97?:5:?71g<3?11688m546:8913c2==370::e;64<>{t;h21<7<t=2ff>06<5:i=6<;:;|q0`7<72=q6?ik514a896`32<:01>7j:9`896e021h0q~=m0;296~;4m?0><63<d18210=z{:ni6=4;{<1f2?72k278jn4:0:?0=a<?j278o947b:\7fp7dc=838p1>k;:42896eb28?>7p}<d883>1}:;l>1=8m4=2db>06<5:3h65l4=2a3>=d<uz9jh7>52z?0a6<28278oi4>549~w6b?290?w0=j3;36g>;4n00><63<9b8;`>;4jl03n6s|3`d94?4|5:o>68>4=2ae>4323ty8hl4?:5y>7`3=9<i01>hm:42896?c21n01>m=:9`8yv5fj3:1>v3<e0864>;4kk0:985rs2f5>5<3s49n=7?:c:?0b2<282785o47d:?0fd<?j2wx?lo50;0x96c72<:01>mn:076?xu4l<0;69u23d2950e<5:l=68>4=2;b>=d<5:h365l4}r1bg?6=:r78i?4:0:?0gf<6=<1v\7f>j8:187\7f85b:3;>o63<f9864>;41k03n63<bb8;f>{t;h=1<7<t=2fg>06<5:i36<;:;|q0`6<72=q6?ij514a896`42<:01>76:9`896d321h0q~=n6;296~;4lj0><63<c48210=z{:n:6=4;{<1gg?72k278j?4:0:?0=<<?l278n?47b:\7fp7d?=838p1>ji:42896e>28?>7p}<d583>1}:;ml1=8m4=2d6>06<5:3j65j4=2`5>=d<uz9h?7>52z?0g3<31278o>4>549~w6e02909w0=l6;fa?85d?3;>96s|3b394?5|5:n;6974=2a0>1?<5:i:6<;:;|q0g1<72:q6?i>5dc9>7f5=9<o01>m;:076?xu4jo0;6>u23bd90<=:;j;184523cd9503<uz9h>7>53z?0gc<cj278o<4>5d9>7f4=9<?0q~=md;297~;4kl0?563<bg87=>;4jm0:985rs2a3>5<4s49hi7jm;<1ab?72m278o=4>549~w6de2908w0=ld;6:?85el3>270=mb;361>{t;ko1<7=t=2ag>ad<5:ho6<;j;<1aa?72=2wx?o750;1x96ed2=301>lm:5;896d>28?>7p}<bb83>6}:;ji1ho523c`950c<5:hh6<;:;|q0f2<72:q6?nl5489>7g?=<016?o951478yv5ei3:1?v3<cc8gf>;4j00:9h523cc9503<uz9i97>53z?0gd<31278n:4;9:?0f0<6=<1v\7f>l7:180\7f85di3ni70=m7;36a>;4j10:985rs2`0>5<4s49h57:6;<1a1?2>349i?7?:5:\7fp7g0=839p1>m6:e`896d228?n70=m6;361>{t;k;1<7=t=2a;>1?<5:h86974=2`2>4323ty8n94?:2y>7f>=lk16?o=514g896d328?>7p}<b383>6}:;j?1ho523c3950c<5:h96<;:;|q0ad<72:q6?k;514a8916e2<:01>6<:9f8yv5b?3:1?v3<f3821f=:<9219=523909<a=z{:o26=4<{<1e7?72k27?<44:0:?0<7<?j2wx?hj50;1x96`?28?h70:?e;73?85?<32i7p}<ec83>6}:;o<1=8m4=52`>06<5:2865l4}r1fg?6=;r78j:4>5b9>05b==916?5:58e9~w6`72908w0=ib;36g>;3980><63<878;`>{t;lo1<7=t=2d:>43d34>;j7;?;<1;1?>c3ty8ik4?:2y>7cg=9<i019??:42896>221h0q~=i1;297~;4nj0:9n52400915=:;1<14o5rs2g;>5<4s49m87?:c:?74d<282784:47b:\7fp036=838>w0:<0;64?825n3><70:=e;64?825l3><70:=c;64?825j3><70:=9;64?82503><70:=7;64?825>3><70:=5;64?825<3><70:=3;64?825:3><70:=1;64?82583><70:>e;64?826l3><70:>c;64?826j3><70:>a;64?82613><70:>8;64?826?3><70:>6;64?826=3><70:<6;64?824=3><70:<4;64?824;3><70:<2;64?82493><70:=a;64?826n3><70:>4;64?826;3><70<80;361>{t<<91<7<t=513>06<5=?n6:j4}r666?6=:r7?>k4:0:?71`<012wx88?50;0x914b2<:019;j:658yv2283:1>v3;2e864>;3=l0<:6s|45d94?4|5=8h68>4=57f>23<uz>?i7>52z?76g<2827?9h484:\7fp01e=838p19<6:428913b2>90q~:;b;296~;3:10><63;5d846>{t<=k1<7<t=504>06<5=?n6:?4}r67=?6=:r7?>;4:0:?71a<0l2wx89650;0x91422<:019;k:6;8yv23?3:1>v3;25864>;3=m0<;6s|45494?4|5=8868>4=57g>20<uz>?97>52z?767<2827?9i485:\7fp012=838p19<>:428913c2>>0q~:;3;296~;3:90><63;5e847>{t<=;1<7<t=53f>06<5=?o6:<4}r674?6=:r7?=i4:0:?71a<092wx8>h50;0x917d2<:019;l:6f8yv24m3:1>v3;1c864>;3=j0<56s|42f94?4|5=;j68>4=57`>21<uz>8o7>52z?75<<2827?9n486:\7fp06d=838p19?7:428913d2>?0q~:<a;296~;39>0><63;5b840>{t<:31<7<t=535>06<5=?h6:=4}r60<?6=:r7?=84:0:?71f<0:2wx88o50;0x91512<:019;l:638yv2213:1>v3;34864>;3=k0<h6s|44:94?4|5=9?68>4=57a>2?<uz>>;7>52z?776<2827?9o487:\7fp000=838p19==:428913e2><0q~::5;296~;3;80><63;5c841>{t<<>1<7<t=50b>06<5=?i6::4}r67`?6=:r7?=k4:0:?71g<0;2wx89<50;0x91732<:019;m:608yv24?3:1>v3;12864>;3=k0<=6s|18694?4|58=i6<;:;<3;2?>c3ty:8o4?:3y>5=6=0m16=;h5db9~w4?22909w0?8e;361>;6?m03o6s|15a94?4|58<i65k4=04`>ae<uz;?h7>52z?23c<6=<16=:j58d9~w4?12909w0?8d;:a?870k3nh7ps|4e`94?4|V=h<70:<:5`4?!20<3;?i6s|4e;94?4|V=h=70:<:5`5?!20<3;?j6s|4e:94?4|V=h>70:<:5`6?!20<3;><6s|4e594?4|V=h?70:<:5`7?!20<3;>=6s|4e494?4|V=h870:<:5`0?!20<3oj7p};d483>7}Y<k8019=54c08 1132ln0q~:k3;296~X3j9168>4;b19'022=n81v\7f9j=:181\7f[2fn27??7:nf:&731<a;2wx8i?50;0xZ1gb34>869oj;%640?`b3ty?h=4?:3y]0db<5=918lj4$557>46>3ty?ok4?:3y]0de<5=918lm4$557>4733ty?oh4?:3y]0dd<5=918ll4$557>47d3ty?oi4?:3y]0dg<5=918lo4$557>4413ty?on4?:3y]0d?<5=918l74$557>44a3ty?oo4?:3y]0d><5=918l64$557>4523ty?ol4?:3y]0d1<5=918l94$557>4513ty?o54?:3y]0d3<5=918l;4$557>4503ty?o:4?:3y]0d2<5=918l:4$557>45?3ty?o;4?:3y]0d5<5=918l=4$557>45>3ty?o84?:3y]0d4<5=918l<4$557>45f3ty?o94?:3y]0d7<5=918l?4$557>45e3ty?o>4?:3y]0d6<5=918l>4$557>45d3ty?o?4?:3y]0<`<5=9184h4$557>45c3ty?o<4?:3y]0<c<5=9184k4$557>45b3ty?o=4?:3y]0<b<5=9184j4$557>45a3ty?nk4?:3y]0<e<5=9184m4$557>4273ty?i?4?:3y]0gb<5=918oj4$557>4263ty?i<4?:3y]0ge<5=918om4$557>4253ty?i=4?:3y]0gd<5=918ol4$557>4243ty?hk4?:3y]0gg<5=918oo4$557>4233ty?hh4?:3y]0g?<5=918o74$557>4223ty?hi4?:3y]0g><5=918o64$557>4213ty?hn4?:3y]0g7<5=918o?4$557>4203ty?h94?:3y]0d0<5=918l84$557>42?3ty?o44?:3y]0<d<5=9184l4$557>42>3ty?nh4?:3y]0<g<5=9184o4$557>42f3ty>4<4?:3y]1=7<5=9195?4$557>`d<uz?257>52z\6=<=:<:0>545+4669af=z{<3i6=4={_7:f>;3;3?2n6*;758fa>{t=h91<7<t^4c0?8242<k87):84;ge?xu2jk0;6?uQ5c`8915==kh0(99;:g28yv35<3:1>vP:019>06<2891/8::5f39~w0452909wS:if:?77?2an2.?;94i4:\7fp177=838pR9hj;<60>1`b3-><87h:;|q665<72;qU8kj4=5190cb<,==?6k84}r72b?6=:rT?jn524287bf=#<>>1j:5rs43f>5<5sW>mn63;3;6ef>"3?=0m46s|50a94?4|V=l270:<:5d:?!20<3l27p}:1c83>7}Y<o2019=54g:8 1132ok0q~;>a;296~X3n>168>4;f69'022=nk1v\7f8?6:181\7f[2a>27??7:i6:&731<ak2wx9<650;0xZ1`234>869h:;%640?`c3ty>=:4?:3y]0c2<5=918k:4$557>c`<uz?::7>52z\7b6=:<:0?j>5+4669556<uz?:97>52z\7b7=:<:0?j?5+4669557<uz?:87>52z\7b4=:<:0?j<5+4669554<uz?:?7>52z\7b5=:<:0?j=5+4669555<uz?:=7>52z\7a`=:<:0?ih5+4669552<uz?:<7>52z\7aa=:<:0?ii5+4669553<uz?;j7>52z\7af=:<:0?in5+4669550<uz?;i7>52z\7ag=:<:0?io5+4669551<uz?;h7>52z\7ad=:<:0?il5+466955><uz?;o7>52z\7a<=:<:0?i45+466955g<uz?;n7>52z\7a==:<:0?i55+466955d<uz?;m7>52z\7a2=:<:0?i:5+466955e<uz?;57>52z\7a3=:<:0?i;5+466955b<uz?;47>52z\7a0=:<:0?i85+466955c<uz?9n7>52z\643=:<:0><;5+466955`<uz?9m7>52z\640=:<:0><85+4669546<uz?957>52z\641=:<:0><95+4669547<uz?947>52z\646=:<:0><>5+4669544<uz?9;7>52z\647=:<:0><?5+4669545<uz?9:7>52z\644=:<:0><<5+4669543<uz?997>52z\7bd=:<:0?jl5+4669540<uz?:h7>52z\7ac=:<:0?ik5+4669541<uz?:>7>52z\7a1=:<:0?i95+466954><uz?;;7>52z\7a6=:<:0?i>5+466954?<uz?9h7>52z\66a=:<:0>>i5+466954g<uz?8?7>52z\676=:<:0>?>5+466954d<uz?3j7>52z\6<1=:<:0>495+466954b<uz?247>52z\6<f=:<:0>4n5+466954c<uz?2;7>52z\6<g=:<:0>4o5+466954`<uz?2:7>52z\6<d=:<:0>4l5+4669576<uz?297>52z\6<<=:<:0>445+4669577<uz?287>52z\6<==:<:0>455+4669574<uz?2?7>52z\6<2=:<:0>4:5+4669575<uz?2>7>52z\6<3=:<:0>4;5+4669572<uz?2=7>52z\6<0=:<:0>485+4669573<uz?2<7>52z\6<6=:<:0>4>5+4669571<uz?3h7>52z\6<7=:<:0>4?5+466957><uz?i=7>52z\6e3=:<:0>m;5+466957?<uz?im7>52z\6e`=:<:0>mh5+466957g<uz?i57>52z\6ea=:<:0>mi5+466957d<uz?i47>52z\6ef=:<:0>mn5+466957e<uz?i;7>52z\6eg=:<:0>mo5+466957b<uz?i:7>52z\6ed=:<:0>ml5+466957c<uz?i97>52z\6e<=:<:0>m45+4669566<uz?i87>52z\6e==:<:0>m55+4669567<uz?i?7>52z\6e2=:<:0>m:5+4669564<uz?i>7>52z\6e0=:<:0>m85+4669565<uz?jj7>52z\6e1=:<:0>m95+4669562<utdhio4?:3yK023<ugino7>52zJ730=zfjoo6=4={I641>{iklo1<7<tH556?xhdmo0;6?uG4678ykea83:1>vF;749~jf`62909wE:85:\7fmgc4=838pD99:;|l`b6<72;qC8:;4}oae0?6=:rB?;85rnbd6>5<5sA><96sacg494?4|@==>7p`lf683>7}O<>?0qcmi8;296~N3?<1vbnh6:181\7fM20=2weoko50;0xL1123tdhjo4?:3yK023<ugimo7>52zJ730=zfjlo6=4={I641>{ikoo1<7<tH556?xhdno0;6?uG4678ykb783:1>vF;749~ja662909wE:85:\7fm`54=838pD99:;|lg46<72;qC8:;4}of30?6=:rB?;85rne26>5<5sA><96sad1494?4|@==>7p`k0683>7}O<>?0qcj?8;296~N3?<1vbi>6:181\7fM20=2weh=o50;0xL1123tdo<o4?:3yK023<ugn;o7>52zJ730=zfm:o6=4={I641>{il9o1<7<tH556?xhc8o0;6?uG4678ykb683:1>vF;749~ja762909wE:85:\7fm`44=838pD99:;|lg56<72;qC8:;4}of20?6=:rB?;85rne36>5<5sA><96sad0494?4|@==>7p`k1683>7}O<>?0qcj>8;296~N3?<1vbi?6:181\7fM20=2weh<o50;0xL1123tdo=o4?:3yK023<ugn:o7>52zJ730=zfm;o6=4={I641>{il8o1<7<tH556?xhc9o0;6?uG4678ykb583:1>vF;749~ja462909wE:85:\7fm`74=838pD99:;|lg66<72;qC8:;4}of10?6=:rB?;85rne06>5<5sA><96sad3494?4|@==>7p`k2683>7}O<>?0qcj=8;296~N3?<1vbi<6:181\7fM20=2weh?o50;0xL1123tdo>o4?:3yK023<ugn9o7>52zJ730=zfm8o6=4={I641>{il;o1<7<tH556?xhc:o0;6?uG4678ykb483:1>vF;749~ja562909wE:85:\7fm`64=838pD99:;|lg76<72;qC8:;4}of00?6=:rB?;85rne16>5<5sA><96sad2494?4|@==>7p`k3683>7}O<>?0qcj<8;296~N3?<1vbi=6:181\7fM20=2weh>o50;0xL1123tdo?o4?:3yK023<ugn8o7>52zJ730=zfm9o6=4={I641>{il:o1<7<tH556?xhc;o0;6?uG4678ykb383:1>vF;749~ja262909wE:85:\7fm`14=838pD99:;|lg06<72;qC8:;4}of70?6=:rB?;85rne66>5<5sA><96sad5494?4|@==>7p`k4683>7}O<>?0qcj;8;296~N3?<1vbi:6:181\7fM20=2weh9o50;0xL1123tdo8o4?:3yK023<ugn?o7>52zJ730=zfm>o6=4={I641>{il=o1<7<tH556?xhc<o0;6?uG4678ykgcj3:1=vF;749~jg27290:wE:85:\7fmf17=83;pD99:;|la07<728qC8:;4}o`77?6=9rB?;85rnc67>5<6sA><96sab5794?7|@==>7p`m4783>4}O<>?0qcl;7;295~N3?<1vbo:7:182\7fM20=2wen9750;3xL1123tdi8l4?:0yK023<ugh?n7>51zJ730=zfk>h6=4>{I641>{ij=n1<7?tH556?xhe<l0;6<uG4678ykd3n3:1=vF;749~jg37290:wE:85:\7fmf07=83;pD99:;|la17<728qC8:;4}o`67?6=9rB?;85rnc77>5<6sA><96sab4794?7|@==>7p`m5783>4}O<>?0qcl:7;295~N3?<1vbo;7:182\7fM20=2wen8750;3xL1123tdi9l4?:0yK023<ugh>n7>51zJ730=zfk?h6=4>{I641>{ij<n1<7?tH556?xhe=l0;6<uG4678ykd2n3:1=vF;749~jg07290:wE:85:\7fmf37=83;pD99:;|la27<728qC8:;4}o`57?6=9rB?;85rnc47>5<6sA><96sab7794?7|@==>7p`m6783>4}O<>?0qcl97;295~N3?<1vbo87:182\7fM20=2wen;750;3xL1123tdi:l4?:0yK023<ugh=n7>51zJ730=zfk<h6=4>{I641>{ij?n1<7?tH556?xhe>l0;6<uG4678ykd1n3:1=vF;749~jg17290:wE:85:\7fmf27=83;pD99:;|la37<728qC8:;4}o`47?6=9rB?;85rnc57>5<6sA><96sab6794?7|@==>7p`m7783>4}O<>?0qcl87;295~N3?<1vbo97:182\7fM20=2wen:750;3xL1123tdi;l4?:0yK023<ugh<n7>51zJ730=zfk=h6=4>{I641>{ij>n1<7?tH556?xhe?l0;6<uG4678ykd0n3:1=vF;749~jg>7290:wE:85:\7fmf=7=83;pD99:;|la<7<728qC8:;4}o`;7?6=9rB?;85rnc:7>5<6sA><96sab9794?7|@==>7p`m8783>4}O<>?0qcl77;295~N3?<1vbo67:182\7fM20=2wen5750;3xL1123tdi4l4?:0yK023<ugh3n7>51zJ730=zfk2h6=4>{I641>{ij1n1<7?tH556?xhe0l0;6<uG4678ykd?n3:1=vF;749~jg?7290:wE:85:\7fmf<7=83;pD99:;|la=7<728qC8:;4}o`:7?6=9rB?;85rnc;7>5<6sA><96sab8794?7|@==>7p`m9783>4}O<>?0qcl67;295~N3?<1vbo77:182\7fM20=2wen4750;3xL1123tdi5l4?:0yK023<ugh2n7>51zJ730=zfk3h6=4>{I641>{ij0n1<7?tH556?xhe1l0;6<uG4678ykd>n3:1=vF;749~jgg7290:wE:85:\7fmfd7=83;pD99:;|lae7<728qC8:;4}o`b7?6=9rB?;85rncc7>5<6sA><96sab`794?7|@==>7p`ma783>4}O<>?0qcln7;295~N3?<1vboo7:182\7fM20=2wenl750;3xL1123tdiml4?:0yK023<ughjn7>51zJ730=zfkkh6=4>{I641>{ijhn1<7?tH556?xheil0;6<uG4678ykdfn3:1=vF;749~jgd7290:wE:85:\7fmfg7=83;pD99:;|laf7<728qC8:;4}o`a7?6=9rB?;85rnc`7>5<6sA><96sabc794?7|@==>7p`mb783>4}O<>?0qclm7;295~N3?<1vbol7:182\7fM20=2weno750;3xL1123tdinl4?:0yK023<ughin7>51zJ730=zfkhh6=4>{I641>{ijkn1<7?tH556?xhejl0;6<uG4678ykden3:1=vF;749~jge7290:wE:85:\7fmff7=83;pD99:;|lag7<728qC8:;4}o``7?6=9rB?;85rnca7>5<6sA><96sabb794?7|@==>7p`mc783>4}O<>?0qcll7;295~N3?<1vbom7:182\7fM20=2wenn750;3xL1123tdiol4?:0yK023<ughhn7>51zJ730=zfkih6=4>{I641>{ijjn1<7?tH556?xhekl0;6<uG4678ykddn3:1=vF;749~jgb7290:wE:85:\7fmfa7=83;pD99:;|la`7<728qC8:;4}o`g7?6=9rB?;85rncf7>5<6sA><96sabe794?7|@==>7p`md783>4}O<>?0qclk7;295~N3?<1vboj7:182\7fM20=2weni750;3xL1123tdihl4?:0yK023<ughon7>51zJ730=zfknh6=4>{I641>{ijmn1<7?tH556?xhell0;6<uG4678ykdcn3:1=vF;749~jgc7290:wE:85:\7fmf`7=83;pD99:;|laa7<728qC8:;4}o`f7?6=9rB?;85rncg7>5<6sA><96sabd794?7|@==>7p`me783>4}O<>?0qclj7;295~N3?<1vbok7:182\7fM20=2wenh750;3xL1123tdiil4?:0yK023<ughnn7>51zJ730=zfkoh6=4>{I641>{ijln1<7?tH556?xheml0;6<uG4678ykdbn3:1=vF;749~jg`7290:wE:85:\7fmfc7=83;pD99:;|lab7<728qC8:;4}o`e7?6=9rB?;85rncd7>5<6sA><96sabg794?7|@==>7p`mf783>4}O<>?0qcli7;295~N3?<1vboh7:182\7fM20=2wenk750;3xL1123tdijl4?:0yK023<ughmn7>51zJ730=zfklh6=4>{I641>{ijon1<7?tH556?xhenl0;6<uG4678ykdan3:1=vF;749~jf67290:wE:85:\7fmg57=83;pD99:;|l`47<728qC8:;4}oa37?6=9rB?;85rnb27>5<6sA><96sac1794?7|@==>7p`l0783>4}O<>?0qcm?7;295~N3?<1vbn>7:182\7fM20=2weo=750;3xL1123tdh<l4?:0yK023<ugi;n7>51zJ730=zfj:h6=4>{I641>{ik9n1<7?tH556?xhd8l0;6<uG4678yke7n3:1=vF;749~jf77290:wE:85:\7fmg47=83;pD99:;|l`57<728qC8:;4}oa27?6=9rB?;85rnb37>5<6sA><96sac0794?7|@==>7p`l1783>4}O<>?0qcm>7;295~N3?<1vbn?7:182\7fM20=2weo<750;3xL1123tdh=l4?:0yK023<ugi:n7>51zJ730=zfj;h6=4>{I641>{ik8n1<7?tH556?xhd9l0;6<uG4678yke6n3:1=vF;749~jf47290:wE:85:\7fmg77=83;pD99:;|l`67<728qC8:;4}oa17?6=9rB?;85rnb07>5<6sA><96sac3794?7|@==>7p`l2783>4}O<>?0qcm=7;295~N3?<1vbn<7:182\7fM20=2weo?750;3xL1123tdh>l4?:0yK023<ugi9n7>51zJ730=zfj8h6=4>{I641>{ik;n1<7?tH556?xhd:l0;6<uG4678yke5n3:1=vF;749~jf57290:wE:85:\7fmg67=83;pD99:;|l`77<728qC8:;4}oa07?6=9rB?;85rnb17>5<6sA><96sac2794?7|@==>7p`l3783>4}O<>?0qcm<7;295~N3?<1vbn=7:182\7fM20=2weo>750;3xL1123tdh?l4?:0yK023<ugi8n7>51zJ730=zfj9h6=4>{I641>{ik:n1<7?tH556?xhd;l0;6<uG4678yke4n3:1=vF;749~jf27290:wE:85:\7fmg17=83;pD99:;|l`07<728qC8:;4}oa77?6=9rB?;85rnb67>5<6sA><96sac5794?7|@==>7p`l4783>4}O<>?0qcm;7;295~N3?<1vbn:7:182\7fM20=2weo9750;3xL1123tdh8l4?:0yK023<ugi?n7>51zJ730=zfj>h6=4>{I641>{ik=n1<7?tH556?xhd<l0;6<uG4678yke3n3:1=vF;749~jf37290:wE:85:\7fmg07=83;pD99:;|l`17<728qC8:;4}oa67?6=9rB?;85rnb77>5<6sA><96sac4794?7|@==>7p`l5783>4}O<>?0qcm:7;295~N3?<1vbn;7:182\7fM20=2weo8750;3xL1123tdh9l4?:0yK023<ugi>n7>51zJ730=zfj?h6=4>{I641>{ik<n1<7?tH556?xhd=l0;6<uG4678yke2n3:1=vF;749~jf07290:wE:85:\7fmg37=83;pD99:;|l`27<728qC8:;4}oa57?6=9rB?;85rnb47>5<6sA><96sac7794?7|@==>7p`l6783>4}O<>?0qcm97;295~N3?<1vbn87:182\7fM20=2weo;750;3xL1123tdh:l4?:0yK023<ugi=n7>51zJ730=zfj<h6=4>{I641>{ik?n1<7?tH556?xhd>l0;6<uG4678yke1n3:1=vF;749~jf17290:wE:85:\7fmg27=83;pD99:;|l`37<728qC8:;4}oa47?6=9rB?;85rnb57>5<6sA><96sac6794?7|@==>7p`l7783>4}O<>?0qcm87;295~N3?<1vbn97:182\7fM20=2weo:750;3xL1123tdh;l4?:0yK023<ugi<n7>51zJ730=zfj=h6=4>{I641>{ik>n1<7?tH556?xhd?l0;6<uG4678yke0n3:1=vF;749~jf>7290:wE:85:\7fmg=7=83;pD99:;|l`<7<728qC8:;4}oa;7?6=9rB?;85rnb:7>5<6sA><96sac9794?7|@==>7p`l8783>4}O<>?0qcm77;295~N3?<1vbn67:182\7fM20=2weo5750;3xL1123tdh4l4?:0yK023<ugi3n7>51zJ730=zfj2h6=4>{I641>{ik1n1<7?tH556?xhd0l0;6<uG4678yke?n3:1=vF;749~jf?7290:wE:85:\7fmg<7=83;pD99:;|l`=7<728qC8:;4}oa:7?6=9rB?;85rnb;7>5<6sA><96sac8794?7|@==>7p`l9783>4}O<>?0qcm67;295~N3?<1vbn77:182\7fM20=2weo4750;3xL1123tdh5l4?:0yK023<ugi2n7>51zJ730=zfj3h6=4>{I641>{ik0n1<7?tH556?xhd1l0;6<uG4678yke>n3:1=vF;749~jfg7290:wE:85:\7fmgd7=83;pD99:;|l`e7<728qC8:;4}oab7?6=9rB?;85rnbc7>5<6sA><96sac`794?7|@==>7p`la783>4}O<>?0qcmn7;295~N3?<1vbno7:182\7fM20=2weol750;3xL1123tdhml4?:0yK023<ugijn7>51zJ730=zfjkh6=4>{I641>{ikhn1<7?tH556?xhdil0;6<uG4678ykefn3:1=vF;749~jfd7290:wE:85:\7fmgg7=83;pD99:;|l`f7<728qC8:;4}oaa7?6=9rB?;85rnb`7>5<6sA><96sacc794?7|@==>7p`lb783>4}O<>?0qcmm7;295~N3?<1vbnl7:182\7fM20=2weoo750;3xL1123tdhnl4?:0yK023<ugiin7>51zJ730=zfjhh6=4>{I641>{ikkn1<7?tH556?xhdjl0;6<uG4678ykeen3:1=vF;749~jfe7290:wE:85:\7fmgf7=83;pD99:;|l`g7<728qC8:;4}oa`7?6=9rB?;85rnba7>5<6sA><96sacb794?7|@==>7p`lc783>4}O<>?0qcml7;295~N3?<1vbnm7:182\7fM20=2weon750;3xL1123tdhol4?:0yK023<ugihn7>51zJ730=zfjih6=4>{I641>{ikjn1<7?tH556?xhdkl0;6<uG4678ykedn3:1=vF;749~jfb7290:wE:85:\7fmga7=83;pD99:;|l``7<728qC8:;4}oag7?6=9rB?;85rnbf7>5<6sA><96sace794?7|@==>7p`ld783>4}O<>?0qcmk7;295~N3?<1vbnj7:182\7fM20=2weoi750;3xL1123tdhhl4?:0yK023<ugion7>51zJ730=zfjnh6=4>{I641>{ikmn1<7?tH556?xhdll0;6<uG4678ykecn3:1=vF;749~jfc7290:wE:85:\7fmg`7=83;pD99:;|l`a7<728qC8:;4}oaf7?6=9rB?;85rnbg7>5<6sA><96sacd794?7|@==>7p`le783>4}O<>?0qcmj7;295~N3?<1vbnk7:182\7fM20=2weoh750;3xL1123tdhil4?:0yK023<utwvLMMtf739=d2>??nmqMNM{1\7fCDU}zHI
\ No newline at end of file
+$713\7f4g<,[o}e~g`n;"2*413&;$>"9 > %10?*nhel%fmyz cnpfc`h(|dz$Sni fhdl[}jipV8@t>8P2bnh*kah92:87=>?4193456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0127?5650;1;495?8122?45<9'::86?>:HLSQQ<FLMXJ0<>50?37?47=AGZ^X7OKDS@?55<76;:0=<4FNQWW>uthoVof|ywPtipfwm:683:5>:5>1;KMTPR=x{elShc\7ftx]wlwct`Vkx\7fh|{<0294;4038;1EC^ZT;rqkbYbey~rSyf}erj\j`af|l6:<7>11g925?OIX\^1|\7fah_gwohZrozlyc0<>50?05?47=AGZ^X7~}of]eqijX|axn\7feQnsrgqp9772949:6?>:HLSQQ<wzfmTjxbc_ujqavnXflmjxh2>0;2=5d=6:3E^X][[:ecweZeh}g~7=<4?>0f857<H]]Z^X7|k_ecweZeh}g~7=<4?>0f857<H]]Z^X7y}_ecweZeh}g~7=<4?>0385?OIX\^1HD^N<183:47<93CE\XZ5DHRA85<76880=7AZTQWW>AIWI5:1<3?=;08LQQVR\3ND\O2?:1<2?72<:9:;>6<74:1355753:<1EC^ZT;fjj952294:86=9:NWWTPR=lf\7f\7f0>;50?f87v4789ll888"50970>2DKJ>099;:1:47?36D8;1=>9599847?3?F9;1=O959CBA1?3C53>L?7:HIF09;6>>7<22;<=<48333?=<NFY__6IGN<683:46<03CE\XZ5DH@?3?6998136B[[PTV9@JG;?3:5=<57:NWWTPR=LFH7;7>11:;7?<671;12:95667;7?D650=1J:LO7;@FGVD:76k1JHI\N<0294;?<IMNYM1??>99B@ATF48437LJKR@>1:==FLMXJ0>07;@FGVD:3611JHI\N<4<;?DBCZH6=255NDEPB828?3HNO^L27>99B@ATF40437LJKRC>3:g=FLMXI0<>50?;8EABUJ5;;255NDEPA848?3HNO^O2=>99B@ATE4:437LJKRC>7:==FLMXI0807;@FGVG:1611JHI\M<6<;?DBCZK63255NDEPA8<833HO;845NSXL@[WC@<2H84=:4B@CB7>DR:11IY^QFNGM2?F4<K?>0OL6N2:AF57=D@LI@SAGLEOQF[Q_WM;1HE95LLJC7?FJLJ:1H@_74CNONMQRBL8>0OB\J_FGMAWGSAFDTECH@7:AQADRBL81O>6JF6:FJE969>2NBM1?16:FJE949>2NBM1=16:FJE929>2NBM1;16:FJE90902NBM1950?48@LG;?7<0HDL30?48@LD;97<0HDL32?48@LD;;7<0HDL34?48@LD;=7<0HDL36?:8@LD;?3:5:6JFB=5==>BNXH6;6=08;EKSE96912NB\O2?:1<4?AOWJ5:5:6J@A=2=2>BHI5;5:6J@A=0=2>BHI595:6J@A=6=2>BHI5?5:6J@A=4=<>BHI5=1<384DNC?3;0<LFH7<384DN@?5;0<LFH7>384DN@?7;0<LFH78384DN@?1;0<LFH7:364DN@?3?69>2NDN1919:FLTD:7294<7IA_A=2==>BHXK6;6=08;EMSF96992O?7HMN029FJD5<MGH?7K9IF39E<7=AL:1MHN:4FEAF0>@CKY90JI^;;GFSA0=Aieyn=6I<;FLG5>O53@:97D?=;H01?L5?3@DBX]Q?099JJLRWW9;37D@FTQ]36==NF@^[S==7;HLJPUY7<11BBDZ__17;?LHN\YU;:55FNHVS[51>3@DBX^ZNTD58MKOSW9:<7D@FT^223>OIA]U;>:5FNHV\461<AGC_S=:8;HLJPZ62?2CEEYQ?669JJLRX8>=0ECG[_1:4?LHN\V:2;6GAIU]3E2=NF@^T<O94IOKW[5E03@DBXR>K7:KMMQY7M>1BBDZP0G58MKOSW8:<7D@FT^323>OIA]U:>:5FNHV\561<AGC_S<:8;HLJPZ72?2CEEYQ>669JJLRX9>=0ECG[_0:4?LHN\V;2;6GAIU]2E2=NF@^T=O94IOKW[4E03@DBXR?K7:KMMQY6M>1BBDZP1G58MKOSW;:<7D@FT^023>OIA]U9>:5FNHV\661<AGC_S?:8;HLJPZ42?2CEEYQ=669JJLRX:>=0ECG[_3:4?LHN\V82;6GAIU]1E2=NF@^T>O94IOKW[7E03@DBXR<K7:KMMQY5M>1BBDZP2G58MKOSW::<7D@FT^123>OIA]U8>:5FNHV\761<AGC_S>:8;HLJPZ52?2CEEYQ<669JJLRX;>=0ECG[_2:4?LHN\V92;6GAIU]0E2=NF@^T?O94IOKW[6E03@DBXR=K7:KMMQY4M>1BBDZP3G48MKOSWH<0ECG[_C18MKP43@EI>6BF2:NL2>JHIMOO;6B@GHABH1=K]];?7A[[259OQQ513E__?RJ9;MWW7ZJ33E__8;5CUU6\@0=J[NEE96CZXB[`?Hgmg{\n~~g`nb9Nmkiu^lxxeb`<;O226>H6;2D:<95A11:7?K771:1E=<:4N0320>H69:>0B<?;3:L266=I9:>0B<=?4:L2742<F89986@>3268J453<2D:?8:4N0150>H6;>>0B<=74:L27<5<F8>?7C?;059M51733G;?>95A1517?K73<=1E=9;;;O3721=I9==?7C?;859M51?43G;>86@>5168J436<2D:9?:4N0700>H6==>0B<;:4:L2132<F8?<86@>5968J43>;2D::95A1727?K719=1E=;<;;O3571=I9?>?7C?9559M53033G;=;>5A1668J415<2D:;>:4N0570>H6?<>0B<994:L2322<F8=386@>7818J4>33G;3<95A1937?K7?:=1E=5=;;O3;21=I91=?7C?7859M5=?43G;286@>9168J4?6<2D:5?:4N0;00>H61=>0B<7:4:L2=32<F83<?6@=029M645<F;887C<<3:L106=I:<90B?8<;O047>H50:1E>4=4N220?K56;2D8>>5A3218J6243G9>?6@<629M725<F:2?7C=7129M7<5<F=:?7C:?129M045<F=887C:;3:L726=I=990B8<<;O777>H2=:1E9;<4N708J24<F180B4h4NC]AQVVNFVZYC]]8;OGWSJTL<2DDBH?4O39LO4=W<2ZJ^Yo4PHL\FPUNLQh0\D@PBTQMEHC43YXN=6_l;SCNF40X[0UX5<5\129PMHYDGEFB_DAA_BJFGN0<[F_YOH94SSTBHZG03ZX]MAQM4:QPVD2<[ZXI86ZVPD10?P6(o{l%~k!hcy,`hn~(EqeyS\7fjPpovq[goiWqey<=>?_Sgpqir6;:1^<"i}f/pe+be\7f&jf`t"Cwos]q`Zvi|{UiecQwos2344YUmz\7fgx<=<;T2,cw`)zo%lou lljz,I}iuW{nT|cz}_ckm[}iu89:9S_k|umv276=R8&myj#|i/fa{*fjlp&Gsc\7fQ}d^rmpwYeagUsc\7f>?02]Qavsk|8987X> gsd-vc)`kq$h`fv Mymq[wbXxg~ySoga_ymq4563W[oxyaz>329V4*aun'xm#jmw.bnh|*K\7fg{UyhR~ats]amkY\7fg{:;<8Q]erwop4543\:$k\7fh!rg-dg}(ddbr$Aua}_sf\tkruWkceSua}0125[Wct}e~:?>5Z0.eqb+ta'nis"nbdx.O{kwYulVzex\7fQmio]{kw678>UYi~{ct010?P6(o{l%~k!hcy,`hn~(EqeyS\7fjPpovq[goiWqey<=>7_Sgpqir6;;1^<"i}f/pe+be\7f&jf`t"Cwos]q`Zvi|{UloRv`r1234ZTb{|f\7f=><4U1-dvc(un&mht#mcky-N|jtXzmU{by|Pgb]{kw6788UYi~{ct011?P6(o{l%~k!hcy,`hn~(EqeyS\7fjPpovq[beXpfx;<=<PRdqvhq74:2_;#j|i.sd,cf~)keas#@v`r^pg[uhszVmhSua}0120[Wct}e~:??5Z0.eqb+ta'nis"nbdx.O{kwYulVzex\7fQhc^zlv567<VXn\7fxb{1208Q5)`zo$yj"ilx/aoo})JpfxT~iQ\7fnup\cfY\7fg{:;<8Q]erwop4553\:$k\7fh!rg-dg}(ddbr$Aua}_sf\tkruWniTtb|?014\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZtcWyd\7f~Ril_ymq4560W[oxyaz>339V4*aun'xm#jmw.bnh|*K\7fg{UyhR~ats]dgZ~hz9:;4R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pre]sjqtXojUsc\7f>?08]Qavsk|89?7X> gsd-vc)`kq$h`fv Mymq[qkwW\7fkgyh>P0^zlv5678Vrd0<0=1268Q5)`zo$yj"ilx/aoo})JpfxTx`~Pv`nva5Y7Wqey<=>?_ym?7;56;:1^<"i}f/pe+be\7f&jf`t"Cwos]wiuYqie\7fn<R>Pxnp3456Xpf6?2<=8;T2,cw`)zo%lou lljz,I}iuW}g{S{ocud2\4Z~hz9:;<Rv`<5<2[VQ7;=1^<"i}f/pe+be\7f&jf`t"Cwos]wiuYqie\7fn>R>Pxnp3456XZly~`y?<3:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^`jjZ~hz9:;<R\jstnw565<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXj`dTtb|?013\V`urd};8?6[?/fpe*w`(ojr%oaew/LzlvZquWyd\7f~Rlfn^zlv567;VXn\7fxb{1218Q5)`zo$yj"ilx/aoo})JpfxT{\7fQ\7fnup\flhXpfx;<=:PRdqvhq74;2_;#j|i.sd,cf~)keas#@v`r^uq[uhszVhbbRv`r1231ZTb{|f\7f=>=4U1-dvc(un&mht#mcky-N|jtX\7f{U{by|Pbhl\|jt789<T^h}zlu307>S7'nxm"\7fh gbz-gim\7f'Drd~Ry}_qlwvZdnfVrd~=>?7^Pfwpjs9:90Y=!hrg,qb*adp'iggu!Bxnp\swYwf}xTnd`Pxnp345>XZly~`y?<3:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^`jjZ~hz9:;5R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXojUsc\7f>?01]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[rtXxg~ySjmPxnp3457XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^e`[}iu89:9S_k|umv277=R8&myj#|i/fa{*fjlp&Gsc\7fQxr^rmpwY`kVrd~=>?3^Pfwpjs9:80Y=!hrg,qb*adp'iggu!Bxnp\swYwf}xTknQwos2341YUmz\7fgx<==;T2,cw`)zo%lou lljz,I}iuW~xT|cz}_fa\|jt789?T^h}zlu306>S7'nxm"\7fh gbz-gim\7f'Drd~Ry}_qlwvZadWqey<=>9_Sgpqir6;;1^<"i}f/pe+be\7f&jf`t"Cwos]tvZvi|{UloRv`r1233ZTb{|f\7f=><4U1-dvc(un&mht#mcky-N|jtX\7f{U{by|Pgb]{kw6781UYi~{ct011?P6(o{l%~k!hcy,`hn~(EqeySz|Ppovq[beXpfx;<=7PRdqvhq76=2_;#j|i.sd,cf~)keas#C=>5:W3+bta&{l$knv!cmi{+K3592_;#j|i.sd,cf~)keas#\7fjPpovq[goi4949>6[?/fpe*w`(ojr%oaew/sf\tkruWkce0<>1209V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn=3=64=R8&myj#|i/fa{*fjlp&xoS}`{r^`jj949:81^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnf595><5Z0.eqb+ta'nis"nbdx.pg[uhszVhbb1:1209V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn=7=64=R8&myj#|i/fa{*fjlp&xoS}`{r^`jj909:81^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnf5=5><5Z0.eqb+ta'nis"nbdx.pg[uhszVhbb161209V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn=;=65=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ6582_;#j|i.sd,cf~)keas#\7fjPpovq[goiW88:7X> gsd-vc)`kq$h`fv re]sjqtXj`dT==<?;T2,cw`)zo%lou lljz,vaYwf}xTnd`P2328Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio]065=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ2582_;#j|i.sd,cf~)keas#\7fjPpovq[goiW<8;7X> gsd-vc)`kq$h`fv re]sjqtXj`dT:?>4U1-dvc(un&mht#mcky-q`Zvi|{UiecQ8219V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn^:14>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[<413\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flhXpfx;<=>=6:W3+bta&{l$knv!cmi{+wbXxg~ySoga_ymq4566:?1^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnfVrd~=>?2348Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio]{kw678:8=7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?01612>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[}iu89:>>;5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbRv`r123270<]9%l~k }f.e`|+ekcq%yhR~ats]amkY\7fg{:;<:<9;T2,cw`)zo%lou lljz,vaYwf}xTnd`Pxnp345>582_;#j|i.sd,cf~)keas#\7fjPpovq[be;878:7X> gsd-vc)`kq$h`fv re]sjqtXoj6:<3<?;T2,cw`)zo%lou lljz,vaYwf}xTkn2>>328Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc=0=65=R8&myj#|i/fa{*fjlp&xoS}`{r^e`868582_;#j|i.sd,cf~)keas#\7fjPpovq[be;<78;7X> gsd-vc)`kq$h`fv re]sjqtXoj6>2?>4U1-dvc(un&mht#mcky-q`Zvi|{Ulo181219V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril<6<14>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa?<;473\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cf:>68l0Y=!hrg,qb*adp'iggu!}d^rmpwY`kV::j6[?/fpe*w`(ojr%oaew/sf\tkruWniT=?>4U1-dvc(un&mht#mcky-q`Zvi|{UloR??1g9V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_33e?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]05c=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[17a3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfY29o1^<"i}f/pe+be\7f&jf`t"|k_qlwvZadW?;m7X> gsd-vc)`kq$h`fv re]sjqtXojU<=k5Z0.eqb+ta'nis"nbdx.pg[uhszVmhS5?i;T2,cw`)zo%lou lljz,vaYwf}xTknQ6279V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqab:76;=0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hi311<12>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtbo5;5>;5Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef>1:70<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlm7?3<9;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd8185>2_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnk1;1279V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqab:16;<0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hi37?05?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`4149:6[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg=;=60=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnU;>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef]263=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnU:<?;4U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\673<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmT??;4U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\073<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmT9?;4U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\273<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmT;?;4U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\<73<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmT5?74U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4:76;k0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0>24;4>3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfYf{{olSi?31?0:?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`Wm;7>3<6;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd[a7;;7827X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_e3?0;4>3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfYf{{olSi?35?0:?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`Wm;7:3<6;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd[a7;?7827X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_e3?<;4>3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfYf{{olSi?39?0;?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`Wm;T<?64U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4Y6:01^<"i}f/pe+be\7f&jf`t"|k_qlwvZadWhyyijQk1^336==R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=R<=8:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6W:837X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_e3\07><]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<Q:299V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqabYc9V<946[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2[24?3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfYf{{olSi?P83:8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aXl8U2>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSua}012360=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[}iu89::>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSua}012160=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[}iu89:8>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSua}012760=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[}iu89:>>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSua}012560=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[}iu89:<>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSua}012;60=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[}iu89:2>:5Z0.eqb+ta'nis"nbdx.vntZpfd|o;S=Qwos2345403\:$k\7fh!rg-dg}(ddbr$x`~Pv`nva7Y7Wqey<=>?209V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn=2=67=R8&myj#|i/fa{*fjlp&}yS}`{r^`jj9776;;0Y=!hrg,qb*adp'iggu!xr^rmpwYeag6:2??4U1-dvc(un&mht#mcky-tvZvi|{Uiec2=>338Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio>0:77<]9%l~k }f.e`|+ekcq%|~R~ats]amk:36;;0Y=!hrg,qb*adp'iggu!xr^rmpwYeag6>2??4U1-dvc(un&mht#mcky-tvZvi|{Uiec29>338Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio>4:77<]9%l~k }f.e`|+ekcq%|~R~ats]amk:?6;;0Y=!hrg,qb*adp'iggu!xr^rmpwYeag622?>4U1-dvc(un&mht#mcky-tvZvi|{UiecQ?219V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn^315>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[46582_;#j|i.sd,cf~)keas#z|Ppovq[goiW;8;7X> gsd-vc)`kq$h`fv ws]sjqtXj`dT??>4U1-dvc(un&mht#mcky-tvZvi|{UiecQ;219V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn^714>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[3473\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flhX?;:0Y=!hrg,qb*adp'iggu!xr^rmpwYeagU3>=5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbR7=6:W3+bta&{l$knv!cmi{+rtXxg~ySoga_ymq4567:?1^<"i}f/pe+be\7f&jf`t"y}_qlwvZdnfVrd~=>?1348Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio]{kw678:8=7X> gsd-vc)`kq$h`fv ws]sjqtXj`dTtb|?01612>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[}iu89:>>;5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbRv`r123270<]9%l~k }f.e`|+ekcq%|~R~ats]amkY\7fg{:;<:<9;T2,cw`)zo%lou lljz,swYwf}xTnd`Pxnp345>5>2_;#j|i.sd,cf~)keas#z|Ppovq[goiWqey<=>6219V4*aun'xm#jmw.bnh|*quWyd\7f~Ril<1<15>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa?558582_;#j|i.sd,cf~)keas#z|Ppovq[be;978;7X> gsd-vc)`kq$h`fv ws]sjqtXoj692?>4U1-dvc(un&mht#mcky-tvZvi|{Ulo1=1219V4*aun'xm#jmw.bnh|*quWyd\7f~Ril<5<14>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa?1;473\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cf:16;:0Y=!hrg,qb*adp'iggu!xr^rmpwY`k5=5>=5Z0.eqb+ta'nis"nbdx.uq[uhszVmh050=0:W3+bta&{l$knv!cmi{+rtXxg~ySjm39?3e?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]35c=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[4473\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfY688l0Y=!hrg,qb*adp'iggu!xr^rmpwY`kV8:j6[?/fpe*w`(ojr%oaew/vp\tkruWniT?<h4U1-dvc(un&mht#mcky-tvZvi|{UloR:>f:W3+bta&{l$knv!cmi{+rtXxg~ySjmP50d8Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc^42b>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\34`<]9%l~k }f.e`|+ekcq%|~R~ats]dgZ>6n2_;#j|i.sd,cf~)keas#z|Ppovq[beX1;<0Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hi30?04?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]bwwc`48:5>;5Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef>2:70<]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlm7>3<9;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd8685>2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnk1:1279V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqab:26;<0Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hi36?05?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]bwwc`4>49:6[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg=:=63=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumn622?;4U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\473<]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlmT=?84U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\55423\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfYf{{olS?<:;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[6423\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfYf{{olS9<:;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[0423\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfYf{{olS;<:;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[2423\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfYf{{olS5<:;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[<4>3\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfYf{{olSi?30?0b?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]bwwc`Wm;7==0=9:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb6484956[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2878512_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj><2<1=>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboVn:090=9:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb64<4956[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2838512_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj><6<1=>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboVn:050=9:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb6404946[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2[54?3\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfYf{{olSi?P13;8Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc^cpv`aXl8U:<?64U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\`4Y5:11^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1^11<>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboVn:S9<7;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[a7X=;20Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hiPd0]56==R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=R9=8:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb6W1837X> gsd-vc)`kq$h`fv ws]sjqtXojUj\7f\7fkh_e3\=73<]9%l~k }f.e`|+ekcq%|~R~ats]dgZ~hz9:;<?;4U1-dvc(un&mht#mcky-tvZvi|{UloRv`r123573<]9%l~k }f.e`|+ekcq%|~R~ats]dgZ~hz9:;>?;4U1-dvc(un&mht#mcky-tvZvi|{UloRv`r123773<]9%l~k }f.e`|+ekcq%|~R~ats]dgZ~hz9:;8?;4U1-dvc(un&mht#mcky-tvZvi|{UloRv`r123173<]9%l~k }f.e`|+ekcq%|~R~ats]dgZ~hz9:;:?;4U1-dvc(un&mht#mcky-tvZvi|{UloRv`r123373<]9%l~k }f.e`|+ekcq%|~R~ats]dgZ~hz9:;4?;4U1-dvc(un&mht#mcky-tvZvi|{UloRv`r123=6><]9%l~k }f.eo4+tc'nx:"j|kc3,q`f)JimnT~iQkc^k\eabt}k:;<=??399V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.Ob`aYulVnhSdQndeqvf567888846[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@okd^pg[aeXaVkoh~{m0123515?3\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(EhnoS\7fjPdb]j[dbc{|h;<=>>62:8Q5)`zo$yj"ic0/pg+bt6&nxoo? }db-NeabXzmUooRgPaefpqg6789;3?:5Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"Cnde]q`ZbdW`Ujhi}zb12347503\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(EhnoS\7fjPdb]j[dbc{|h;<=>;369V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.Ob`aYulVnhSdQndeqvf5678?9<7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$Aljk_sf\`fYnWhno\7fxl?012;7f=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*KflmUyhRjl_h]b`aurj9:;<Rmv<0<0<>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWjs7<3=7;T2,cw`)zo%l`= }d.eq5+aulj8%~im Mrwa[aoanV}yS\7fjPtlr\g|:66:20Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%F\7fxlPdhde[rtXzmU\7fa}Qly=0=7==R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*Kt}kUoekhPws]q`ZrjxVir0>0<8:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[f\7f;<7937X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$A~{m_ekebZquW{nTx`~Pcx>6:6><]9%l~k }f.eo4+tc'nx:"j|kc3,q`f)J{|hThdhi_vp\vaYseyUhu181399V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.OpqgYcaolT{\7fQ}d^vntZe~4>4846[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc\7f_b{?<;5?3\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(Ez\7fiSigif^uq[wbX|dzTot26>2;8Q5)`zo$yj"ic0/pg+bt6&nxoo? }db-NwpdXl`lmSz|Pre]wiuYk}}6;2>o4U1-dvc(un&mg<#|k/fp2*btck;$yhn!Bst`\`l`aW~xT~iQ{mq]oqq:687927X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$A~{m_ekebZquW{nTx`~Pltv?5;5>3\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(Ez\7fiSigif^uq[wbX|dzT`xz32?1:?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IvseWmcmjRy}_sf\phvXd|~7?3=6;T2,cw`)zo%l`= }d.eq5+aulj8%~im Mrwa[aoanV}yS\7fjPtlr\hpr;<7927X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$A~{m_ekebZquW{nTx`~Pltv?1;5>3\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(Ez\7fiSigif^uq[wbX|dzT`xz36?1:?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IvseWmcmjRy}_sf\phvXd|~7;3=6;T2,cw`)zo%l`= }d.eq5+aulj8%~im Mrwa[aoanV}yS\7fjPtlr\hpr;07927X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$A~{m_ekebZquW{nTx`~Pltv?=;5>3\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(Ez\7fiSigif^uq[wbX|dzTtb|30?1b?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IvseWmcmjRy}_sf\phvXpfx7==0<9:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[}iu484856[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc\7f_ymq878412_;#j|i.sd,ci6)zm%l~< hrea1*wbd'Dy~nRjffg]tvZtcW}g{Sua}<2<0=>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWqey090<9:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[}iu4<4856[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc\7f_ymq838412_;#j|i.sd,ci6)zm%l~< hrea1*wbd'Dy~nRjffg]tvZtcW}g{Sua}<6<0=>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWqey050<9:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[}iu4048<6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#igif^uq[wbX|dz7<3<7;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoX8;20Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]26<=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeR??289V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaV;:>55Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"|k_ea\mZ4502_;#j|i.sd,ci6)zm%l~< hrea1*wbd'{nThnQf_20;?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcT8?64U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lY2:11^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^41<>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+wbXljUbS:<7;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoX0;20Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]:74=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx1236969;;1^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^ov|567:5:5=><4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?2>0?17?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?5585=:20Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6:<3<:_RU371=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx12369776;2886[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#\7fjPdb]j[hs\7f89:90<>13017?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?55841:90Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6:<3:<4:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/sf\`fYnWd\7fs<=>=<02=04503\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;994?S^Y?369V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaVg~t=>?2=33:1YT_8997X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~78987=<0<3:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/sf\`fYnWd\7fs<=>=<03=567<]9%l~k }f.eo4+tc'nx:"j|kc3,q`f)ulVnhSdQbuy2347:66:80Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6:2<=>;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<32?11?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?6;7492_;#j|i.sd,ci6)zm%l~< hrea1*wbd'{nThnQf_lw{45654:48>6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#\7fjPdb]j[hs\7f89:90>0>309V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaVg~t=>?2=6=77=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx12369299:>0Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6?2<?>399V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaVg~t=>?2=6=547X[^:8=6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#\7fjPdb]j[hs\7f89:9080<2:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/sf\`fYnWd\7fs<=>=<4<274=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx1236909;>1^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^ov|567:5<5=<Q\W11a?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?2;76WZ]:S^Y?309V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaVg~t=>?2=5=70=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx1236919WZ];?85Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"|k_ea\mZkrp9:;>191_RU27<=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx1236919WZ]:S^Y?309V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaVg~t=>?2=:=70=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx12369>9WZ]9?<5Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"|k_ea\mZkrp9:;>171329V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaVg~t=>?2=;=5<553\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;1788?6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#\7fjPdb]j[hs\7f89:9040=0218Q5)`zo$yj"ic0/pg+bt6&nxoo? }db-q`ZbdW`Ufyu>?03>::665i2_;#j|i.sd,ci6)zm%l~< }fvdw+WGJW[NTICQIWGV26<=R8&myj#|i/fn3*wb(o{;%~kyit.PBIZTBOF__SH@>2c9V4*aun'xm#jb?.sf,cw7)zo}mx"\NM^TBHLBXN^L_=<=<;T2,cw`)zo%l`= }d.eq5+ta\7fo~$ox|}_guepZusi}oTJ^CPFGf273=R8&myj#|i/fn3*wb(o{;%~kyit.avvwYa\7fo~T\7fyo{e^DPIZ@Al8'Bb>64U1-dvc(un&mg<#|k/fp2*w`pn}%hy\7f|Pfvdw[vrf|lUM_@QIFe3.Mk76;:1^<"i}f/pe+bj7&{n$k\7f?!rguep*erz{Um{kzPsucwaZ@TEVLMh?=9;T2,cw`)zo%l`= }d.eq5+ta\7fo~$ox|}_guepZusi}oTJ^CPFGf1)Lh402_;#j|i.sd,ci6)zm%l~< }fvdw+fsuzVl|jyQ|t`vf[CUJWOLo> Ga100;?P6(o{l%~k!hl1,q`*au9'xm{kz elrw}Z`pn}Umn?94U1-dvc(un&mg<#|k/fp2*w`pn}%na}zv_guepZo5m2_;#j|i.sd,ci6)zm%l~< }fvdw+`kw|pUm{kzPi^mq4567:o1^<"i}f/pe+bj7&{n$k\7f?!rguep*cjx}sTjzh{_h]lv567888>7X> gsd-vc)`d9$yh"i}1/pescr(}zoyS{ocie0:?P6(o{l%~k!hl1,q`*auiz$y\7fy} c1-`ewt~fl~7<3<6;T2,cw`)zo%l`= }d.eqev(u{}y$o=!laspzj`r;97827X> gsd-vc)`d9$yh"i}ar,qwqu(k9%hm\7f|vndv?6;4>3\:$k\7fh!rg-dh5(ul&mym~ }suq,g5)di{xrbhz33?0:?P6(o{l%~k!hl1,q`*auiz$y\7fy} c1-`ewt~fl~783<i;T2,cw`)zo%l`= }d.eqev(u{}y$o=!hmtz-ch]7U'mf=#c>2g9V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m?/fov|+ajS8W%k`}!mr0e?P6(o{l%~k!hl1,q`*auiz$y\7fy} c1-dip~)odQ9Q#ibs/op6c=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a3+bkrp'mfW>S!glq-iv4a3\:$k\7fh!rg-dh5(ul&mym~ }suq,g5)`e|r%k`U;]/enw+kt:o1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e7'ng~t#ib[4_-chu)ez887X> gsd-vc)`d9$yh"i}ar,qwqu(k9%}=1>1229V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m?/w3?5;443\:$k\7fh!rg-dh5(ul&mym~ }suq,g5)q9585>>5Z0.eqb+ta'nf;"\7fj gscp*wus{&i;#{?33?00?P6(o{l%~k!hl1,q`*auiz$y\7fy} c1-u5929::1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e7'\7f;793<m;T2,cw`)zo%l`= }d.eqev(u{}y$o=!y1^2\ekb789::>o5Z0.eqb+ta'nf;"\7fj gscp*wus{&i;#{?P1^cm`567888i7X> gsd-vc)`d9$yh"i}ar,qwqu(k9%}=R<Paof34566:k1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e7'\7f;T?Road123444e3\:$k\7fh!rg-dh5(ul&mym~ }suq,g5)q9V>Tmcj?01226g=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a3+s7X=Vddx=>?000:?P6(o{l%~k!hl1,q`*auiz$y\7fy} c0-`ewt~fl~7<3<6;T2,cw`)zo%l`= }d.eqev(u{}y$o<!laspzj`r;97827X> gsd-vc)`d9$yh"i}ar,qwqu(k8%hm\7f|vndv?6;4>3\:$k\7fh!rg-dh5(ul&mym~ }suq,g4)di{xrbhz33?0:?P6(o{l%~k!hl1,q`*auiz$y\7fy} c0-`ewt~fl~783<i;T2,cw`)zo%l`= }d.eqev(u{}y$o<!hmtz-ch]7U'mf=#c>2g9V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m>/fov|+ajS8W%k`}!mr0e?P6(o{l%~k!hl1,q`*auiz$y\7fy} c0-dip~)odQ9Q#ibs/op6c=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a2+bkrp'mfW>S!glq-iv4a3\:$k\7fh!rg-dh5(ul&mym~ }suq,g4)`e|r%k`U;]/enw+kt:o1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e6'ng~t#ib[4_-chu)ez887X> gsd-vc)`d9$yh"i}ar,qwqu(k8%}=1>1229V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"m>/w3?5;443\:$k\7fh!rg-dh5(ul&mym~ }suq,g4)q9585>>5Z0.eqb+ta'nf;"\7fj gscp*wus{&i:#{?33?00?P6(o{l%~k!hl1,q`*auiz$y\7fy} c0-u5929::1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e6'\7f;793<m;T2,cw`)zo%l`= }d.eqev(u{}y$o<!y1^2\ekb789::>o5Z0.eqb+ta'nf;"\7fj gscp*wus{&i:#{?P1^cm`567888i7X> gsd-vc)`d9$yh"i}ar,qwqu(k8%}=R<Paof34566:k1^<"i}f/pe+bj7&{n$k\7fo|.sqww*e6'\7f;T?Road123444e3\:$k\7fh!rg-dh5(ul&mym~ }suq,g4)q9V>Tmcj?01226g=R8&myj#|i/fn3*wb(o{kx"\7f}{s.a2+s7X=Vddx=>?0003?P6(o{l%~k!hl1,q`*auiz$y\7fy} cnos476<]9%l~k }f.eo4+tc'nxj\7f#||tr-`khv6:01^<"i}f/pe+bj7&{n$k\7fo|.sqww*tfeVof|ywPfc]j75=R8&myj#|i/fn3*wb(o{kx"\7f}{s.pbiZcjx}sTjoQf_np3456492_;#j|i.sd,ci6)zm%l~l}!rrvp+wgjWlg{xtQib^k\kw6789;:j6[?/fpe*w`(oe:%~i!}al]ueiocWo}mx?=4U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov10>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|88>7X> gsd-vc)`d9$yh"|\7fnup,Ifirf}Uhcx`{1107?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphs:;>0Y=!hrg,qb*ak8'xo#\7f~ats-Ngjsi|Vidycz<259V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjq25<2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fex8<;;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw272<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~<>95Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu:10>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|0827X> gsd-vc)`d9$yh"|\7fnup,Ifirf}Uhcx`{_b{?4;4d3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSnw30?]qp7?<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~Tot2>>3a8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp6:2R|{289V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq585>n5Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]`}949W{~956[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az8685k2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fexRmv<2<\vq4>3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSnw34?0`?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs783Q}t3;8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp6>2?m4U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov\g|:26Vx\7f>45Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]`}909:j1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQly=4=[wr512_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fexRmv<6<1g>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|Vir0:0Pru0:?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs743<l;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[f\7f;07Uyx?74U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov\g|:>6;i0Y=!hrg,qb*ak8'xo#\7f~ats-Ngjsi|VidyczPcx>::Zts:h1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQwos>3:7d<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~Ttb|311<1a>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|Vrd~1??>^pw6d=R8&myj#|i/fn3*wb(zyd\7f~"Clotlw[firf}Usc\7f2>>3c8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXpfx7>3<n;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[}iu4:49m6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^zlv929:h1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQwos>6:7g<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~Ttb|36?0b?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWqey0:0=a:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZ~hz525>l5Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]{kw:>68l0Y=!hrg,qb*ak8'xo#\7f~ats-`kphs4949<6[?/fpe*w`(oe:%~i!}povq+firf}6:<3?i;T2,cw`)zo%l`= }d.psjqt(kf\7fex1?11g9V4*aun'xm#jb?.sf,vuhsz&idycz32?3e?P6(o{l%~k!hl1,q`*twf}x$ob{at=1=5c=R8&myj#|i/fn3*wb(zyd\7f~"m`uov?0;7a3\:$k\7fh!rg-dh5(ul&x{by| cnwmp9399o1^<"i}f/pe+bj7&{n$~}`{r.alqkr;>7;m7X> gsd-vc)`d9$yh"|\7fnup,gjsi|5=5=k5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~743?i;T2,cw`)zo%l`= }d.psjqt(kf\7fex1711d9V4*aun'xm#jb?.sf,vuhsz&idyczP00g8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_03e?P6(o{l%~k!hl1,q`*twf}x$ob{at^335`=R8&myj#|i/fn3*wb(zyd\7f~"m`uov\64c<]9%l~k }f.eo4+tc'{zex\7f!lotlw[67b3\:$k\7fh!rg-dh5(ul&x{by| cnwmpZ26m2_;#j|i.sd,ci6)zm%y|cz}/bmvjqY29l1^<"i}f/pe+bj7&{n$~}`{r.alqkrX>8o0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsW>;n7X> gsd-vc)`d9$yh"|\7fnup,gjsi|V2:i6[?/fpe*w`(oe:%~i!}povq+firf}U2>?5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~Th<2?>318Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?5585:2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc95;5>?5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~Th<2=>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?7;453\:$k\7fh!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\7f!lotlw[a7;?7897X> gsd-vc)`d9$yh"|\7fnup,gjsi|Vn:050=2:W3+bta&{l$ka>!re-qtkru'je~byQk1=;=64=R8&myj#|i/fn3*wb(zyd\7f~"m`uov\`4Y7:81^<"i}f/pe+bj7&{n$~}`{r.alqkrXl8U:>?5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~Th<Q>0338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\677<]9%l~k }f.eo4+tc'{zex\7f!lotlw[a7X;;;0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T8??4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?P5338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\277<]9%l~k }f.eo4+tc'{zex\7f!lotlw[a7X?;;0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T4??4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?P93;8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.abvw\7fim}6;2?74U1-dvc(un&mg<#y}/fubw+qt|z%h="mnrs{maq:66;30Y=!hrg,qb*ak8'}y#jyns/uppv)d9&ij~\7fwaeu>1:7?<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`5*efz{seiy2<>3;8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.abvw\7fim}6?2?h4U1-dvc(un&mg<#y}/fubw+qt|z%h="ibuy,di^6Z&ng:"`?=f:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n? glw{*bk\9T$la~ bs3d8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.enq}(`eR8V"jc|.lq1b>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b3,chs\7f&ngP?P hmr,nw7`<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`5*aj}q$laV:R.fop*hu5n2_;#j|i.sd,ci6)\7f{%l{l}!wrvp+f7(od\7fs"jcT5\,div(j{;90Y=!hrg,qb*ak8'}y#jyns/uppv)d9&|:0=0=3:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n? v0>2:75<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`5*p64;49?6[?/fpe*w`(oe:%{\7f!hw`q-svrt'j;$z<2<>318Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.t28185;2_;#j|i.sd,ci6)\7f{%l{l}!wrvp+f7(~86>2?l4U1-dvc(un&mg<#y}/fubw+qt|z%h="x>_1]bja6789;9n6[?/fpe*w`(oe:%{\7f!hw`q-svrt'j;$z<Q>_`lg45679;h0Y=!hrg,qb*ak8'}y#jyns/uppv)d9&|:S?Qnne234575j2_;#j|i.sd,ci6)\7f{%l{l}!wrvp+f7(~8U8Sl`k012357d<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`5*p6W=Ujbi>?0131f>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b3,r4Y2Wge\7f<=>?13;8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.abvw\7fim}6;2?74U1-dvc(un&mg<#y}/fubw+qt|z%h>"mnrs{maq:66;30Y=!hrg,qb*ak8'}y#jyns/uppv)d:&ij~\7fwaeu>1:7?<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`6*efz{seiy2<>3;8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.abvw\7fim}6?2?h4U1-dvc(un&mg<#y}/fubw+qt|z%h>"ibuy,di^6Z&ng:"`?=f:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n< glw{*bk\9T$la~ bs3d8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.enq}(`eR8V"jc|.lq1b>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b0,chs\7f&ngP?P hmr,nw7`<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`6*aj}q$laV:R.fop*hu5n2_;#j|i.sd,ci6)\7f{%l{l}!wrvp+f4(od\7fs"jcT5\,div(j{;90Y=!hrg,qb*ak8'}y#jyns/uppv)d:&|:0=0=3:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n< v0>2:75<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`6*p64;49?6[?/fpe*w`(oe:%{\7f!hw`q-svrt'j8$z<2<>318Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.t28185;2_;#j|i.sd,ci6)\7f{%l{l}!wrvp+f4(~86>2?l4U1-dvc(un&mg<#y}/fubw+qt|z%h>"x>_1]bja6789;9n6[?/fpe*w`(oe:%{\7f!hw`q-svrt'j8$z<Q>_`lg45679;h0Y=!hrg,qb*ak8'}y#jyns/uppv)d:&|:S?Qnne234575j2_;#j|i.sd,ci6)\7f{%l{l}!wrvp+f4(~8U8Sl`k012357d<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`6*p6W=Ujbi>?0131f>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b0,r4Y2Wge\7f<=>?1328Q5)`zo$yj"ic0/uq+bqf{'}xx~!lolr265=R8&myj#|i/fn3*rt(o~kx"z}{s.aliu4502_;#j|i.sd,ci6)\7f{%l{l}!wrvp+wgjWo\7fg`Rhm_h06?P6(o{l%~k!hl1,tv*apiz$|\7fy} r`o\bpjkW`8h7X> gsd-vc)`d9$|~"ixar,twqu(zhgTjxbc_h]lv5678;n0Y=!hrg,qb*ak8'}y#jyns/uppv)uidUmyabPi^mq45679:i0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GjhiQxr^fbpdYdg|d\7fSdQnde234577;j1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'DkohRy}_ecweZeh}g~TeRokd1234444k2_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(EhnoSz|Pd`vb[firf}UbSljk0123515d3\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)JimnT{\7fQkauc\gjsi|VcTmij?012226e<]9%l~k }f.eo4+qu'n}oo< xdbg{p*KflmU|~Rjnt`]`kphsW`Ujhi>?013;7g=R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HgclV}ySio{a^alqkrXaVkoh=>?031a?P6(o{l%~k!hl1,tv*aplj;%{imjxu-NeabX\7f{UomyoPcnwmpZoXimn;<=>;3c9V4*aun'xm#jb?.vp,crbd9'}oohv{/Lcg`ZquWmk\7fmRm`uov\mZgcl9:;<;=m;T2,cw`)zo%l`= xr.et`f7)\7fminty!Baef\swYci}kTob{at^k\eab789:38<5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@okd^uq[agsiVidyczPi^cg`5678Vir0<>1429V4*aun'xm#jb?.vp,crbd9'}oohv{/Lcg`ZquWmk\7fmRm`uov\mZgcl9:;<Rmv<02=54273\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)JimnT{\7fQkauc\gjsi|VcTmij?012\g|:66=>0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GjhiQxr^fbpdYdg|d\7fSdQnde2345Y\7fg{6:<3?>489V4*aun'xm#jb?.vp,crbd9'}oohv{/Lcg`ZquWmk\7fmRm`uov\mZgcl9:;<Rv`r=3=54YNF_U;8>5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@okd^uq[agsiVidyczPi^cg`5678Vrd~1<11060?P6(o{l%~k!hl1,tv*aplj;%{imjxu-NeabX\7f{UomyoPcnwmpZoXimn;<=>Pxnp?7;76<:1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'DkohRy}_ecweZeh}g~TeRokd1234Z~hz5>5=<:;;T2,cw`)zo%l`= xr.et`f7)\7fminty!Baef\swYci}kTob{at^k\eab789:Ttb|35?3251><]9%l~k }f.eo4+qu'n}oo< xdbg{p*KflmU|~Rjnt`]`kphsW`Ujhi>?01]{kw:268;:S^Y?429V4*aun'xm#jb?.vp,crbd9'}oohv{/Lcg`ZquWmk\7fmRm`uov\mZgcl9:;<Rv`r=7=57243\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)JimnT{\7fQkauc\gjsi|VcTmij?012\|jt;>7;:855Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@okd^uq[agsiVidyczPi^cg`5678Vrd~191103\WR7302_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(EhnoSz|Pd`vb[firf}UbSljk0123[}iu4>4:=<Q\W36;?P6(o{l%~k!hl1,tv*aplj;%{imjxu-NeabX\7f{UomyoPcnwmpZoXimn;<=>Pxnp?3;769VY\?964U1-dvc(un&mg<#y}/fugg4(pljosx"Cnde]tvZbf|hUhcx`{_h]b`a6789Usc\7f28>032[VQ3<:1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'DkohRy}_ecweZeh}g~TeRokd1234Z~hz5=5=?:8;T2,cw`)zo%l`= xr.et`f7)\7fminty!Baef\swYci}kTob{at^k\eab789:Ttb|37?31[VQ7<:1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'DkohRy}_ecweZeh}g~TeRokd1234Z~hz525=<:<;T2,cw`)zo%l`= xr.et`f7)\7fminty!Baef\swYci}kTob{at^k\eab789:Ttb|39?320==R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HgclV}ySio{a^alqkrXaVkoh=>?0^zlv9?998;T_Z><7:W3+bta&{l$ka>!ws-dsae6&~nhiuz Mrwa[aoanV}yS\7fjPtlr\g|:76:=0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GxyoQkigd\swYulV~f|Rmv<0<03>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,IvseWmcmjRy}_sf\phvXkp692>94U1-dvc(un&mg<#y}/fugg4(pljosx"C|uc]gmc`X\7f{UyhRzbp^az8684?2_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(Ez\7fiSigif^uq[wbX|dzTot2;>258Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.OpqgYcaolT{\7fQ}d^vntZe~4<48;6[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~$A~{m_ekebZquW{nTx`~Pcx>5:61<]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVir0:0<7:W3+bta&{l$ka>!ws-dsae6&~nhiuz Mrwa[aoanV}yS\7fjPtlr\g|:?6:=0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GxyoQkigd\swYulV~f|Rmv<8<0<>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,IvseWmcmjRy}_sf\phvXd|~7<3=6;T2,cw`)zo%l`= xr.et`f7)\7fminty!Bst`\`l`aW~xT~iQ{mq]oqq:687937X> gsd-vc)`d9$|~"ixdb3-saebp}%F\7fxlPdhde[rtXzmU\7fa}Qcuu>2:6><]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVf~x1<1399V4*aun'xm#jb?.vp,crbd9'}oohv{/LqvfZbnnoU|~R|k_uos[iss4:4846[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~$A~{m_ekebZquW{nTx`~Pltv?0;5?3\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)J{|hThdhi_vp\vaYseyUgyy2:>2:8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.OpqgYcaolT{\7fQ}d^vntZjr|5<5?55Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@}zb^fjbcYpzVxoSyc\7f_mww828402_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(Ez\7fiSigif^uq[wbX|dzT`xz38?1;?P6(o{l%~k!hl1,tv*aplj;%{imjxu-NwpdXl`lmSz|Pre]wiuYk}}622>64U1-dvc(un&mg<#y}/fugg4(pljosx"C|uc]gmc`X\7f{UyhRzbp^zlv969;01^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'Dy~nRjffg]tvZtcW}g{Sua}<02=7==R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HurjVnbjkQxr^pg[qkwWqey0<0<8:W3+bta&{l$ka>!ws-dsae6&~nhiuz Mrwa[aoanV}yS\7fjPtlr\|jt;:7937X> gsd-vc)`d9$|~"ixdb3-saebp}%F\7fxlPdhde[rtXzmU\7fa}Qwos>0:6><]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVrd~1:1399V4*aun'xm#jb?.vp,crbd9'}oohv{/LqvfZbnnoU|~R|k_uos[}iu4<4846[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~$A~{m_ekebZquW{nTx`~Pxnp?2;5?3\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)J{|hThdhi_vp\vaYseyUsc\7f28>2:8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.OpqgYcaolT{\7fQ}d^vntZ~hz525?55Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@}zb^fjbcYpzVxoSyc\7f_ymq8<85n2_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(l`lmSz|Pre]wiu:76;l0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&}ySio{a^alqkrXaV:9j6[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~${\7fQkauc\gjsi|VcT=>>4U1-dvc(un&mg<#y}/fugg4(pljosx"y}_ecweZeh}g~TeR??319V4*aun'xm#jb?.vp,crbd9'}oohv{/vp\`drfWje~byQf_031b>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,swYci}kTob{at^k\67`<]9%l~k }f.eo4+qu'n}oo< xdbg{p*quWmk\7fmRm`uov\mZ55n2_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(\7f{UomyoPcnwmpZoX<;l0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&}ySio{a^alqkrXaV?9j6[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~${\7fQkauc\gjsi|VcT:?h4U1-dvc(un&mg<#y}/fugg4(pljosx"y}_ecweZeh}g~TeR9=f:W3+bta&{l$ka>!ws-dsae6&~nhiuz ws]geqgXkf\7fexRgP83d8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.uq[agsiVidyczPi^;0=>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,swYci}kTob{at^k\eab789:7==0<8:W3+bta&{l$ka>!ws-dsae6&~nhiuz ws]geqgXkf\7fexRgPaef3456;97937X> gsd-vc)`d9$|~"ixdb3-saebp}%|~Rjnt`]`kphsW`Ujhi>?01>1:6><]9%l~k }f.eo4+qu'n}oo< xdbg{p*quWmk\7fmRm`uov\mZgcl9:;<1=1399V4*aun'xm#jb?.vp,crbd9'}oohv{/vp\`drfWje~byQf_`fg45674=4846[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~${\7fQkauc\gjsi|VcTmij?012?1;5?3\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)pzVnjxlQlotlw[lYflm:;<=29>2:8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.uq[agsiVidyczPi^cg`56785=5?55Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#z|Pd`vb[firf}UbSljk01238=8402_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(\7f{UomyoPcnwmpZoXimn;<=>39?3g?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?=5:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmp465<2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fex?<;;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw772<]9%l~k }f.eo4+qu'~zex\7f!BcnwmpZeh}g~?>95Z0.eqb+ta'nf;"z| wqlwv*Kdg|d\7fSnaznu710>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|?8?7X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{7368Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkr?:=1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by7=9:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZe~4949o6[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at^az858Xz}827X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{_b{?5;4d3\:$k\7fh!rg-dh5(pz&}{by| MbmvjqYdg|d\7fSnw31?]qp7?<]9%l~k }f.eo4+qu'~zex\7f!BcnwmpZeh}g~Tot2=>3a8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp692R|{289V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYdq595>n5Z0.eqb+ta'nf;"z| wqlwv*Kdg|d\7fSnaznu]`}959W{~956[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at^az8185k2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fexRmv<5<\vq4>3\:$k\7fh!rg-dh5(pz&}{by| MbmvjqYdg|d\7fSnw35?0`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs793Q}t3;8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp6=2?m4U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov\g|:16Vx\7f>45Z0.eqb+ta'nf;"z| wqlwv*Kdg|d\7fSnaznu]`}919:j1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=5=[wr512_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fexRmv<9<1g>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|Vir050Pru0:?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs753<l;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f\7f;17Uyx?o4U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov\|jt;878i7X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{_ymq8469:l1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQwos>24;Yu|;k0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPxnp?5;4f3\:$k\7fh!rg-dh5(pz&}{by| MbmvjqYdg|d\7fSua}<3<1e>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1=12`9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqY\7fg{6?2?o4U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov\|jt;=78j7X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{_ymq8385i2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fexRv`r=5=6d=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}Usc\7f27>3c8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx753?i;T2,cw`)zo%l`= xr.usjqt(kf\7fex1>1219V4*aun'xm#jb?.vp,suhsz&idycz311<2b>S7'nxm"\7fh gm2-sw)pxg~y#naznu>2:4`<]9%l~k }f.eo4+qu'~zex\7f!lotlw8786n2_;#j|i.sd,ci6)\7f{%||cz}/bmvjq:468l0Y=!hrg,qb*ak8'}y#z~ats-`kphs4=4:j6[?/fpe*w`(oe:%{\7f!xpovq+firf}6>2<h4U1-dvc(un&mg<#y}/vrmpw)dg|d\7f0;0>f:W3+bta&{l$ka>!ws-ttkru'je~by28>0d8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{<9<2b>S7'nxm"\7fh gm2-sw)pxg~y#naznu>::4c<]9%l~k }f.eo4+qu'~zex\7f!lotlw[57b3\:$k\7fh!rg-dh5(pz&}{by| cnwmpZ76n2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqY688o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW;;n7X> gsd-vc)`d9$|~"y\7fnup,gjsi|V9:i6[?/fpe*w`(oe:%{\7f!xpovq+firf}U?=h5Z0.eqb+ta'nf;"z| wqlwv*eh}g~T9<k4U1-dvc(un&mg<#y}/vrmpw)dg|d\7fS;?j;T2,cw`)zo%l`= xr.usjqt(kf\7fexR9>e:W3+bta&{l$ka>!ws-ttkru'je~byQ71d9V4*aun'xm#jb?.vp,suhsz&idyczP9308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?4;443\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb648:5>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<2>>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?6;453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb64:49>6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo=1:1239V4*aun'xm#jb?.vp,suhsz&idyczPd0>6:74<]9%l~k }f.eo4+qu'~zex\7f!lotlw[a7;>7897X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:0:0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk1=:=67=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`4:>6;;0Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;T<??4U1-dvc(un&mg<#y}/vrmpw)dg|d\7fSi?P1308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3\55463\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb6W;8:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:S><>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj>_502?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[0463\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb6W?8:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:S:<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj>_902?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[<453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb54949?6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>1??>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e0?5;453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb54;49>6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>1=1239V4*aun'xm#jb?.vp,suhsz&idyczPd3>7:74<]9%l~k }f.eo4+qu'~zex\7f!lotlw[a4;=7897X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn90;0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk2=5=67=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`7:?6;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm8753<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj=_102?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[4453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb5W8:9=6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>R<=1:W3+bta&{l$ka>!ws-ttkru'je~byQk2^115>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g6Z2592_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:V?9=6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>R8=1:W3+bta&{l$ka>!ws-ttkru'je~byQk2^515>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g6Z>592_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:V3::6[?/fpe*w`(elg$hb{{_h]353=R8&myj#|i/lgn+air|VcT=<94U1-dvc(un&gna"j`uu]j[466?2_;#j|i.sd,i`k(lf\7f\7fSdQ>1058Q5)`zo$yj"cjm.flqqYnW88:;6[?/fpe*w`(elg$hb{{_h]2741<]9%l~k }f.ofi*bh}}UbS<:>7:W3+bta&{l$ahc dnww[lY6=8=0Y=!hrg,qb*kbe&ndyyQf_0423>S7'nxm"\7fh mdo,`jssW`U:;<94U1-dvc(un&gna"j`uu]j[4>6?2_;#j|i.sd,i`k(lf\7f\7fSdQ>9048Q5)`zo$yj"cjm.flqqYnW;;<7X> gsd-vc)jmd%ocxzPi^0352=R8&myj#|i/lgn+air|VcT><?8;T2,cw`)zo%fi`!kotv\mZ459>1^<"i}f/pe+hcj'me~xRgP2234?P6(o{l%~k!bel-gkprXaV8?=:5Z0.eqb+ta'dof#iazt^k\60703\:$k\7fh!rg-nah)cg|~TeR<9169V4*aun'xm#`kb/emvpZoX:>;<7X> gsd-vc)jmd%ocxzPi^0;52=R8&myj#|i/lgn+air|VcT>4?9;T2,cw`)zo%fi`!kotv\mZ56?2_;#j|i.sd,i`k(lf\7f\7fSdQ<0058Q5)`zo$yj"cjm.flqqYnW:;:;6[?/fpe*w`(elg$hb{{_h]0641<]9%l~k }f.ofi*bh}}UbS>=>7:W3+bta&{l$ahc dnww[lY4<8=0Y=!hrg,qb*kbe&ndyyQf_2722>S7'nxm"\7fh mdo,`jssW`U?=;5Z0.eqb+ta'dof#iazt^k\140<]9%l~k }f.ofi*bh}}UbS;?9;T2,cw`)zo%fi`!kotv\mZ16>2_;#j|i.sd,i`k(lf\7f\7fSdQ7179V4*aun'xm#`kb/emvpZoX1830Y=!hrg,qb*kbe&ndyyQbel>3:4g<]9%l~k }f.ofi*bh}}Ufi`2>0?3b?P6(o{l%~k!bel-gkprXelg7=<0>a:W3+bta&{l$ahc dnww[hcj4885=l5Z0.eqb+ta'dof#iazt^ofi97468k0Y=!hrg,qb*kbe&ndyyQbel>20;7f3\:$k\7fh!rg-nah)cg|~Tahc314<2e>S7'nxm"\7fh mdo,`jssWdof0<811`9V4*aun'xm#`kb/emvpZkbe5;<2<o4U1-dvc(un&gna"j`uu]nah:607;j7X> gsd-vc)jmd%ocxzPmdo?5<8612_;#j|i.sd,i`k(lf\7f\7fS`kb<0<2e>S7'nxm"\7fh mdo,`jssWdof0?>11`9V4*aun'xm#`kb/emvpZkbe58:2<o4U1-dvc(un&gna"j`uu]nah:5:7;j7X> gsd-vc)jmd%ocxzPmdo?6686i2_;#j|i.sd,i`k(lf\7f\7fS`kb<36=5d=R8&myj#|i/lgn+air|Vgna1<:>0c8Q5)`zo$yj"cjm.flqqYjmd69:3?n;T2,cw`)zo%fi`!kotv\i`k;:>4:m6[?/fpe*w`(elg$hb{{_lgn87>99h1^<"i}f/pe+hcj'me~xRcjm=0::4?<]9%l~k }f.ofi*bh}}Ufi`2=>0c8Q5)`zo$yj"cjm.flqqYjmd68<3?n;T2,cw`)zo%fi`!kotv\i`k;;84:m6[?/fpe*w`(elg$hb{{_lgn86499h1^<"i}f/pe+hcj'me~xRcjm=10:4g<]9%l~k }f.ofi*bh}}Ufi`2<4?3b?P6(o{l%~k!bel-gkprXelg7?80>9:W3+bta&{l$ahc dnww[hcj4:4:56[?/fpe*w`(elg$hb{{_lgn818612_;#j|i.sd,i`k(lf\7f\7fS`kb<4<2=>S7'nxm"\7fh mdo,`jssWdof0;0>9:W3+bta&{l$ahc dnww[hcj4>4:56[?/fpe*w`(elg$hb{{_lgn8=8612_;#j|i.sd,i`k(lf\7f\7fS`kb<8<5g>S7'nxm"\7fh mdo,cgk)okgl"jlbg`,mc`ed&kgl#obd_lgn[bcim{k\7fc\7f!yamkg*fusz&xjaaa`pZ2^*wgj&{%}>R``iokw*wgj'mz2t4 }al4`?P6(o{l%~k!bel-dfh(`jdm%kocha/ldafe)jdm$naePmdo\c`hbzh~d~"xnlhf-gvru'{kf`ba\7f[0_-vdk)z&|9Scafnhv-vdk(ly3s5#|nm7a8Q5)`zo$yj"cjm.eai+aeen$ln`in.oefgf(een%i`fQbel]dakcui}ey#{ocie,`wqt(zhggcb~T2\,qeh(u'\7f8Tbbgaiu,qeh)cx0r2"\7fob6b9V4*aun'xm#`kb/f`n*bdjo'miajo!nfg`g+djo&hggRcjm^efj`tf|fx$zlbfd/appw)uidfdc}U<]/pbi+t(~;Uecd`ft/pbi*bw1q3%~lc>b:W3+bta&{l$ahc tlr\vdkXzmUnb<m4U1-dvc(un&gna"zbp^pbiZtcWld:=>5Z0.eqb+ta'{kfS\7fjPeo34?P6(o{l%~k!}al]qabir|Voe=>5Z0.eqb+ta'{kfSz|Peo3g?P6(o{l%~k!}su`oo*tcW{y\7fSl}}ef03?P6(o{l%~k!}su`oo*tcW{y\7fSl}}ef]g576<]9%l~k }f.pppgjl'{nT~~zParpfcZb59j1^<"i}f/pe+wusjea$~iQ}su]`khd6l2_;#j|i.sd,vvredb%yhR||t^alig76m2_;#j|i.sd,vvredb%yhR||t^pfc9699l1^<"i}f/pe+wusjea$~iQ}su]qab:668o0Y=!hrg,qb*tt|kf`#\7fjPrrv\v`a;:7;o7X> gsd-vc)u{}hgg"|k_sqw[wc`W9;o7X> gsd-vc)u{}hgg"|k_sqw[wc`W8;o7X> gsd-vc)u{}hgg"|k_sqw[wc`W;;o7X> gsd-vc)u{}hgg"y}_sqw[duumn8;7X> gsd-vc)u{}hgg"y}_sqw[duumnUo=?>4U1-dvc(un&xxxobd/vp\vvrXizxnkRj=1b9V4*aun'xm#\7f}{bmi,swYu{}Uhc`l>d:W3+bta&{l$~~zmlj-tvZtt|Vidao?>e:W3+bta&{l$~~zmlj-tvZtt|Vxnk1>11d9V4*aun'xm#\7f}{bmi,swYu{}Uyij2>>0f8Q5)`zo$yj"||tcnh+rtXzz~T~hiP00f8Q5)`zo$yj"||tcnh+rtXzz~T~hiP1`9VW@TXIECJ_n5ZSDP\RLUNJEO87[ML9:TJARYSQYO87ZKN3:UFFg=PZ@^NSKG]SUa8SWOSMVGDHHQNc:UQMQCXEFNNSO?k;YKOMK^*PMH+<#?/SUWA$5(6(HYHED;4XNP@]3=_[]FBN:5WSU]DJA1<PZ^TZNMm;Y]@KWCXAGLD:6Vkb^Kgb>^c`VZye`Xjrrklj46<PmgTAld`rWgqwlii991Sh`QBiomqR`ttafdh7lbborv\ahvsqk1j``a|t^dvhi0<jhi`y}j4b`ahquYji{an~>5lljf8`drfWje~by&?)e9geqgXkf\7fex%?&e:fbpdYdg|d\7f$<>&e:fbpdYdg|d\7f$<?&d:fbpdYdg|d\7f$?'k;ecweZeh}g~#?$j4d`vb[firf}"?%i5kauc\gjsi|!?"h6jnt`]`kphs ?#o7io{a^alqkr/? n0hlzn_bmvjq.?!m1omyoPcnwmp-?.l2njxlQlotlw858682njxlQlotlw847=87=0hog{esp5?aoi 9#=7iga(0+4?aoi 8:";6jfn)32-2=cag":>$94dhl+56/03mce$<:&7:fjj-72!>1oec&>6(58`lh/9>#<7iga(0:*3>bnf!;2%;5kio*1-2=cag"9<$94dhl+64/03mce$?<&7:fjj-44!>1oec&=4(58`lh/:<#<7iga(34*3>bnf!8<%:5kio*1<,1<l`d#>4'9;ekm,6/03mce$>>&7:fjj-56!>1oec&<2(58`lh/;:#<7iga(26*3>bnf!9>%;5kio*7-3=cag">%;5kio*5-3=cag"<%;5kio*;-3=cag"2%;5kio>3:2=cag6:<394dhl?54803mce0<<17:fjj9746>1oec2>4?58`lh;9<4<7iga<04=3>bnf5;<2:5kio>2<;1<l`d7=409;ekm84803mce0?>17:fjj9466>1oec2=2?58`lh;::4<7iga<36=3>bnf58>2:5kio>12;1<l`d7>:08;ekm87>9?2nbb1<6>79gmk:56>1oec2<0?58`lh;;84<7iga<20=3>bnf5982:5kio>00;?<l`d7?84?>69gmk:4=7<0hd`33?48`lh;<7<0hd`35?48`lh;>7<0hd`37?48`lh;07<0hd`39?58`jss 9#<7iazt)3*<>bh}}":<$64dnww,47.02ndyy&>2(:8`jss 89"46j`uu*20,><lf\7f\7f$<;&8:flqq.6> 20hb{{(05*<>bh}}":4$64dnww,4?.?2ndyy&=)99gkpr/:9#37iazt)02-==cg|~#>?'7;emvp-44!11ocxz'25+;?air|!8>%55kotv+63/?3me~x%<8)99gkpr/:1#37iazt)0:-2=cg|~#?$64dnww,66.02ndyy&<1(:8`jss :8"46j`uu*07,><lf\7f\7f$>:&8:flqq.4= =0hb{{(5+4?air|!?";6j`uu*5-2=cg|~#;$94dnww,=/03me~x%7&7:flqq:7611ocxz311<;?air|5;:255kotv?578?3me~x1?<>99gkpr;9=437iazt=36:==cg|~7=;07;emvp970611ocxz319<;?air|5;22:5kotv?5;><lf\7f\7f0?>18:flqq:59720hb{{<30=<>bh}}69?364dnww872902ndyy2=5?:8`jss4;<546j`uu>13;><lf\7f\7f0?618:flqq:517=0hb{{<3<;?air|59;255kotv?748?3me~x1==>99gkpr;;:437iazt=17:d=cg|~7?84?>99gkpr;;<4<7iazt=1=3>bh}}6?2:5kotv?1;1<lf\7f\7f0;08;emvp919?2ndyy27>69gkpr;1720iigi2oeg1>cjx}s8>6hffn]dakcui}eyS{:P3-"[mioip)ID^H.Heogqeqiu(8:%=#><159emciXpedsS?Ew37]1gim4:2lbjbQwloz\6N~4>V8h`f"iigm\c`hbzh~d~Rx;_2.MKKC+FFDN?n74fhdl[}jipV8@t>8P2bnh(coagVmnbh|ntnp\r1Y4$riTdl}Piov\gim:8%iTdl}Pssqw95*dW{nTj\7fk~=0.`[mgtW{nThlzn_bmvjq;6$jUoecQxievk960+kVbj\7fRy}_ecweZeh}g~6=!mPftno[cjfozUy\7fyQyam?2(fYneyfnah`{aukljZr~xl79 nQzsd]figccllnT~hi20-a\swYazl{6=!mPurg\`jssW{y\7f1<"l_tlgaw`kg~Ugcz3?,b]kevYh~lxm`by20-a\twckghnT`lzjnb{>4)eXlf\7f\7fSzgkti?02)eXezmdbRxnl<3/gZtcWmo{xe3=05:/gZnf{V\7fehh|ilnu>4)eX`hyTmac`su]eqij:8%iTdl}Prrv>5)eXlh~jSnaznu]tmaro588'oRfns^uq[del59&hSx}j_da`95*dWjefab`Pcmm`o86+kV}ySlmd_mmt95*dW{nT|cz}_vkgpm;69%iTy~kPfvdw[agsiVidycz21-a\lduXiegd\7fyQjmqvz95*dW{nThlzn_bmvjqYpam~c1<<#c^muaw`kg~Ugcz3?,b]tvZvi|{U|eizg=03/gZvugnUna}zv_u{sa86+kV}ySio{a^alqkrX\7f`n\7fd0?=,b]sv`jhimUyij}21-a\`jssW{y\7fS{oc=1.`[mgtWmk\7fmRm`uov>4)eXx{elSk{cl^vkv`uoWgolmykPv`n>6521$jU|~Rjjpuj>652?$jU{~biPelrw}ZrozlycSckhaug\rdj:=%iT|\7fah_dosp|Ys`{oxdRo|sdpw[sgk5=&hSeo|_wcoma;7$jU{~biPftno[qnumzbTm~}jru]uei;58=='obc\7foogmpZhfel7mekaPxml{[7M\7f;?U9oae#c^tbhlbXdf}6<!mPpskn[coagV~r|h3=ky3;(fYwzfmTjxbc_u{sa86+kVgnab|v_u{sa87+u;o0jdh`_ynm|Z4Lp:<T>nbd_gkekZabflxjxb|Pv5]0[}usW8>0jxbc7:kmpZekc11eknlzimf;?jpbzofd{l5\7frne\ahvsq8>0|\7fah_dosp|Ys`{oxd%>&159svjaXmdz\7fuRzgrdqk,4/6=2zycjQjmqvz[qnumzb#=='>4:rqkbYbey~rSyf}erj+6,733yxdkRkbpu{\pmtb{a"8%<:4psmd[`kw|pU\7fd\7fk|h)6*51=wzfmTi`~{y^vkv`uo <#:86~}of]fiur~W}byi~f'6(37?uthoVof|ywPtipfwm.0!8>0|\7fah_dosp|Ys`{oxd%6&159svjaXmdz\7fuRzgrdqk,</6?2zycjQjmqvz[qnumzb7==4?>0`8twi`Wlg{xtQ{hsgplZgt{lx\7f$='>b:rqkbYbey~rSyf}erj\evubz}":%<m4psmd[`kw|pU\7fd\7fk|h^cpw`ts 8:"=o5\7frne\ahvsqV~c~h}g_`qpawr/: ;i7}|`g^gntq\7fX|axn\7feQnsrgqp-5.9k1{~biPelrw}ZrozlycSl}|esv+0,7e3yxdkRkbpu{\pmtb{aUj\7f~k}t)7*5g=wzfmTi`~{y^vkv`uoWhyxi\7fz'6(3a?uthoVof|ywPtipfwmYf{zoyx%9&1c9svjaXmdz\7fuRzgrdqk[dutm{~#4$?m;qplcZcjx}sTxe|jsi]bwvcu|!3"=h5\7frne\ahvsqV~c~h}g_`qpawr;990;2<l4psmd[`kw|pU\7fd\7fk|h^lfcdrb 9#:n6~}of]fiur~W}byi~fPndebp`.6!8i0|\7fah_dosp|Ys`{oxdR`jg`vf,46.9k1{~biPelrw}ZrozlycSckhaug+6,7e3yxdkRkbpu{\pmtb{aUeijo{e)1*5g=wzfmTi`~{y^vkv`uoWgolmyk'4(3a?uthoVof|ywPtipfwmYimnk\7fi%;&1c9svjaXmdz\7fuRzgrdqk[kc`i}o#:$?m;qplcZcjx}sTxe|jsi]mabgsm!="=o5\7frne\ahvsqV~c~h}g_ogdeqc/0 ;i7}|`g^gntq\7fX|axn\7feQaefcwa-?.9l1{~biPelrw}ZrozlycSckhaug?55<7601{~biPftno56=wzfmTjxbc_ujqavn/8 ;87}|`g^dvhiYs`{oxd%?&159svjaXn|fgSyf}erj+55/6;2zycjQiumn\pmtb{a"9%<=4psmd[cskdV~c~h}g(2+27>vugnUmyabPtipfwm.3!890|\7fah_gwohZrozlyc$8'>3:rqkbYa}efTxe|jsi*5-45<x{elSk{cl^vkv`uo >#:?6~}of]eqijX|axn\7fe&7)018twi`Wo\7fg`Rzgrdqk,</6>2zycjQiumn\pmtb{a6:<7>11`9svjaXn|fgSyf}erj\evubz}";%<o4psmd[cskdV~c~h}g_`qpawr/9 ;i7}|`g^dvhiYs`{oxdRo|sdpw,46.9h1{~biPftno[qnumzbTm~}jru*1-4g<x{elSk{cl^vkv`uoWhyxi\7fz'3(3b?uthoVl~`aQ{hsgplZgt{lx\7f$9'>a:rqkbYa}efTxe|jsi]bwvcu|!?"=l5\7frne\bpjkW}byi~fParqfvq.1!8k0|\7fah_gwohZrozlycSl}|esv+3,7f3yxdkRhzlm]wlwct`Vkx\7fh|{(9+2e>vugnUmyabPtipfwmYf{zoyx%7&1e9svjaXn|fgSyf}erj\evubz}6:<7>11`9svjaXn|fgSyf}erj\j`af|l";%<o4psmd[cskdV~c~h}g_ogdeqc/9 ;i7}|`g^dvhiYs`{oxdR`jg`vf,46.9h1{~biPftno[qnumzbTbhintd*1-4g<x{elSk{cl^vkv`uoWgolmyk'3(3b?uthoVl~`aQ{hsgplZhboh~n$9'>a:rqkbYa}efTxe|jsi]mabgsm!?"=l5\7frne\bpjkW}byi~fPndebp`.1!8k0|\7fah_gwohZrozlycSckhaug+3,7f3yxdkRhzlm]wlwct`Vdnklzj(9+2e>vugnUmyabPtipfwmYimnk\7fi%7&1e9svjaXn|fgSyf}erj\j`af|l6:<7>16:pg[fjl991yhRjnt`]`kphs 9#:<6|k_ecweZeh}g~#=$?>;sf\`drfWje~by&>0(32?wbXlh~jSnaznu*25,773{nThlzn_bmvjq.5!8:0~iQkauc\gjsi|!9"==5}d^fbpdYdg|d\7f$9'>0:pg[agsiVidycz'5(33?wbXlh~jSnaznu*5-46<zmUomyoPcnwmp-1.991yhRjnt`]`kphs 1#:<6|k_ecweZeh}g~#5$??;sf\`drfWje~by2?>038vaYci}kTob{at=33:45<zmUomyoPcnwmp976294:=6|k_ecweZeh}g~7=<0>0:pg[agsiVidycz31?33?wbXlh~jSnaznu>1:46<zmUomyoPcnwmp959991yhRjnt`]`kphs4=4:<6|k_ecweZeh}g~793??;sf\`drfWje~by29>028vaYci}kTob{at=5=55=ulVnjxlQlotlw8=8682xoSio{a^alqkr;17?0~iQjn79q`Ztt|:1y\7fy94sckwawt33zxxx95{rtg:?phcm{lgcz;4v`nj`3=pzVkhg;5xr^aoo46<\7f{UomyoPcnwmp-6.991|~Rjnt`]`kphs 8#:=6y}_ecweZeh}g~#=='>1:uq[agsiVidycz'10+24>quWmk\7fmRm`uov+6,773~xThlzn_bmvjq.4!8:0{\7fQkauc\gjsi|!>"==5xr^fbpdYdg|d\7f$8'>0:uq[agsiVidycz'6(33?rtXlh~jSnaznu*4-46<\7f{UomyoPcnwmp->.991|~Rjnt`]`kphs 0#:<6y}_ecweZeh}g~7<3?>;vp\`drfWje~by2>0?30?rtXlh~jSnaznu>25?69981|~Rjnt`]`kphs48;5==5xr^fbpdYdg|d\7f0<0>0:uq[agsiVidycz32?33?rtXlh~jSnaznu>0:46<\7f{UomyoPcnwmp929991|~Rjnt`]`kphs4<4:<6y}_ecweZeh}g~7:3??;vp\`drfWje~by28>028swYci}kTob{at=:=55=pzVnjxlQlotlw8<823~xTic84ws]qwq{GHy;:>55O@y39B?2=9rY=87;6c;;9564>88=1>l?iezl7b1<63g>m97:4$5d1>1cd3tY=>7;6c;;9564>88=1>l?ie:Qe2?3f=3:1=><600596d7an2Y=>7;n5;29564>88=1>l?if:f6=c<7280:w^8;:4;`><<6;;3;=:4=a0df?sR60=0;6<4>:36:\7fV032<3h644>33;352<5i8ln7):j6;d4?S2a;38py<>>:09v554=82w/=:m51g9a1<`=83<<6>497zJ7a1=]=10?w<:51282a?7c2t.:444:9g9'0c7==0o0e;>m:188k37?290/=:k56318j41c2910c;?8:18'52c=>;90b<9k:098k347290/=:k56318j41c2;10c;?i:18'52c=>;90b<9k:298k37b290/=:k56318j41c2=10c;?k:18'52c=>;90b<9k:498k37d290/=:k56318j41c2?10c;?m:18'52c=>;90b<9k:698k37f290/=:k56318j41c2110c;?6:18'52c=>;90b<9k:898k371290/=:k56318j41c2h10c;?::18'52c=>;90b<9k:c98k0`2290/=:k56128j41c2910c8h;:18'52c=>9:0b<9k:098k0`c290/=:k56128j41c2;10c8hl:18'52c=>9:0b<9k:298k0`e290/=:k56128j41c2=10c8hn:18'52c=>9:0b<9k:498k0`>290/=:k56128j41c2?10c8h7:18'52c=>9:0b<9k:698k0`0290/=:k56128j41c2110c8h9:18'52c=>9:0b<9k:898k0`4290/=:k56128j41c2h10c8h=:18'52c=>9:0b<9k:c98m34b2900c8o<:188k0?c2900e;?;:188m36c2900c89?:18'52c==090b<9k:198k00a290/=:k55818j41c2810c88j:18'52c==090b<9k:398k00c290/=:k55818j41c2:10c88l:18'52c==090b<9k:598k00e290/=:k55818j41c2<10c886:18'52c==090b<9k:798k00?290/=:k55818j41c2>10c888:18'52c==090b<9k:998k001290/=:k55818j41c2010c88::18'52c==090b<9k:`98k003290/=:k55818j41c2k10c88<:18'52c==090b<9k:b98k005290/=:k55818j41c2m10c88>:18'52c==090b<9k:d98k007290/=:k55818j41c2o10c8;j:18'52c==090b<9k:028?j32l3:1(<9j:4;0?k70l3;:76a:5b83>!70m3?2?6`>7e826>=h=<h1<7*>7d86=6=i9>n1=>54o47b>5<#9>o194=4n05g>42<3f?>57>5$05f>0?43g;<h7?:;:m61=<72-;<i7;63:l23a<6>21d98950;&23`<21:1e=:j51698k031290/=:k55818j41c28207b;:5;29 41b2<387c?8d;3:?>i2??0;6)?8e;7:7>h6?m0:m65`56794?"6?l0>5>5a16f95g=<g<=?6=4+16g91<5<f8=o6<m4;n747?6=,8=n687<;o34`?7c32e>;?4?:%34a?3>;2d:;i4>e:9l127=83.:;h4:929m52b=9o10c88n:18'52c==090b<9k:328?j32n3:1(<9j:4;0?k70l38:76a:5583>!70m3?2?6`>7e816>=h=<91<7*>7d86=6=i9>n1>>54i404>5<#9>o199o4n05g>5=<a<8=6=4+16g911g<f8=o6<54i406>5<#9>o199o4n05g>7=<a<8?6=4+16g911g<f8=o6>54i400>5<#9>o199o4n05g>1=<a<896=4+16g911g<f8=o6854i403>5<#9>o199o4n05g>3=<a<;m6=4+16g911g<f8=o6:54i43f>5<#9>o199o4n05g>==<a<;o6=4+16g911g<f8=o6454i43`>5<#9>o199o4n05g>d=<a<;i6=4+16g911g<f8=o6o54i43b>5<#9>o199o4n05g>f=<a<;26=4+16g911g<f8=o6i54i43;>5<#9>o199o4n05g>`=<a<;<6=4+16g911g<f8=o6k54i436>5<#9>o199o4n05g>46<3`?:87>5$05f>02f3g;<h7?>;:k656<72-;<i7;;a:l23a<6:21b9<<50;&23`<2<h1e=:j51298m076290/=:k555c8j41c28>07d;>0;29 41b2<>j7c?8d;36?>o28o0;6)?8e;77e>h6?m0::65f51g94?"6?l0>8l5a16f952=<a<:o6=4+16g911g<f8=o6<64;h73g?6=,8=n68:n;o34`?7>32c>>i4?:%34a?33i2d:;i4>a:9j17e=83.:;h4:4`9m52b=9k10e8<m:18'52c===k0b<9k:0a8?l35i3:1(<9j:46b?k70l3;o76g:2883>!70m3??m6`>7e82a>=n=;21<7*>7d860d=i9>n1=k54i402>5<#9>o199o4n05g>76<3`?::7>5$05f>02f3g;<h7<>;:k64g<72-;<i7;;a:l23a<5:21b9=o50;&23`<2<h1e=:j52298m0`62900n9k::182>5<7sA>n86*>8887a0=h9>h1<75rb`394?7=83:pD9k;;%3;=?g63fk;6=44}c74>5<d>3;mh7<;9zJ7a1=]=10::vj515827?762881j7?j:b82`?772l0:>7?;:0g956<c28n1=<4>0;d9a?e=u-;357;n2:&e7??a3-?o68o?;%40>0g63-;<:7?8a:k54f<722e>on4?::k54c<722e?j;4?::m557<722c?j44?::k6f3<72-;<i7;mf:l23a<732c>nh4?:%34a?3en2d:;i4>;:k6fa<72-;<i7;mf:l23a<532c>nn4?:%34a?3en2d:;i4<;:k6fg<72-;<i7;mf:l23a<332c>nl4?:%34a?3en2d:;i4:;:k6f<<72-;<i7;mf:l23a<132c>n54?:%34a?3en2d:;i48;:k6f2<72-;<i7;mf:l23a<?32c>n84?:%34a?3en2d:;i46;:k6f1<72-;<i7;mf:l23a<f32c=<o4?::m6e3<722e==54?:%34a?05;2d:;i4?;:m552<72-;<i78=3:l23a<632e=>=4?:%34a?05;2d:;i4=;:m55c<72-;<i78=3:l23a<432e==h4?:%34a?05;2d:;i4;;:m55a<72-;<i78=3:l23a<232e==n4?:%34a?05;2d:;i49;:m55g<72-;<i78=3:l23a<032e==l4?:%34a?05;2d:;i47;:m55<<72-;<i78=3:l23a<>32e==;4?:%34a?05;2d:;i4n;:m550<72-;<i78=3:l23a<e32e>j84?:%34a?0782d:;i4?;:m6b1<72-;<i78?0:l23a<632e>ji4?:%34a?0782d:;i4=;:m6bf<72-;<i78?0:l23a<432e>jo4?:%34a?0782d:;i4;;:m6bd<72-;<i78?0:l23a<232e>j44?:%34a?0782d:;i49;:m6b=<72-;<i78?0:l23a<032e>j:4?:%34a?0782d:;i47;:m6b3<72-;<i78?0:l23a<>32e>j>4?:%34a?0782d:;i4n;:m6b7<72-;<i78?0:l23a<e32c>i:4?:%34a?3a82d:;i4?;:k6ac<72-;<i7;i0:l23a<632c>ih4?:%34a?3a82d:;i4=;:k6aa<72-;<i7;i0:l23a<432c>in4?:%34a?3a82d:;i4;;:k6ag<72-;<i7;i0:l23a<232c>il4?:%34a?3a82d:;i49;:k6a<<72-;<i7;i0:l23a<032c>i54?:%34a?3a82d:;i47;:k6a3<72-;<i7;i0:l23a<>32c>i84?:%34a?3a82d:;i4n;:k56`<722e?jh4?:%34a?3702d:;i4?;:m7ba<72-;<i7;?8:l23a<632e><;4?:%34a?3702d:;i4=;:m640<72-;<i7;?8:l23a<432e><94?:%34a?3702d:;i4;;:m646<72-;<i7;?8:l23a<232e><?4?:%34a?3702d:;i49;:m644<72-;<i7;?8:l23a<032e><=4?:%34a?3702d:;i47;:m7bc<72-;<i7;?8:l23a<>32e?jn4?:%34a?3702d:;i4n;:m7bg<72-;<i7;?8:l23a<e32e>m>4?::m6=a<722c>ok4?:%34a?3c02d:;i4?;:k6`2<72-;<i7;k8:l23a<632c>h;4?:%34a?3c02d:;i4=;:k6`0<72-;<i7;k8:l23a<432c>h94?:%34a?3c02d:;i4;;:k6`6<72-;<i7;k8:l23a<232c>h?4?:%34a?3c02d:;i49;:k6`4<72-;<i7;k8:l23a<032c>h=4?:%34a?3c02d:;i47;:k6g`<72-;<i7;k8:l23a<>32c>oi4?:%34a?3c02d:;i4n;:k551<722c>m94?::k7bd<722c=>k4?::m54`<722e==>4?::m7b2<722e==<4?::k54a<722e>;=4?:%34a?3>;2d:;i4?;:m62c<72-;<i7;63:l23a<632e>:h4?:%34a?3>;2d:;i4=;:m62a<72-;<i7;63:l23a<432e>:n4?:%34a?3>;2d:;i4;;:m62g<72-;<i7;63:l23a<232e>:44?:%34a?3>;2d:;i49;:m62=<72-;<i7;63:l23a<032e>::4?:%34a?3>;2d:;i47;:m623<72-;<i7;63:l23a<>32e>:84?:%34a?3>;2d:;i4n;:m621<72-;<i7;63:l23a<e32e>:>4?:%34a?3>;2d:;i4l;:m627<72-;<i7;63:l23a<c32e>:<4?:%34a?3>;2d:;i4j;:m625<72-;<i7;63:l23a<a32e>9h4?:%34a?3>;2d:;i4>0:9l10b=83.:;h4:929m52b=9810c8;l:18'52c==090b<9k:008?j32j3:1(<9j:4;0?k70l3;876a:5`83>!70m3?2?6`>7e820>=h=<31<7*>7d86=6=i9>n1=854o47;>5<#9>o194=4n05g>40<3f?>;7>5$05f>0?43g;<h7?8;:m613<72-;<i7;63:l23a<6021d98;50;&23`<21:1e=:j51898k011290/=:k55818j41c28k07b;85;29 41b2<387c?8d;3a?>i2?=0;6)?8e;7:7>h6?m0:o65`56194?"6?l0>5>5a16f95a=<g<=96=4+16g91<5<f8=o6<k4;n745?6=,8=n687<;o34`?7a32e>:l4?:%34a?3>;2d:;i4=0:9l10`=83.:;h4:929m52b=:810c8;;:18'52c==090b<9k:308?j32;3:1(<9j:4;0?k70l38876g:a`83>!70m3?i?6`>7e83?>o2j;0;6)?8e;7a7>h6?m0:76g:b083>!70m3?i?6`>7e81?>o2j90;6)?8e;7a7>h6?m0876g:ag83>!70m3?i?6`>7e87?>o2il0;6)?8e;7a7>h6?m0>76g:ae83>!70m3?i?6`>7e85?>o2ij0;6)?8e;7a7>h6?m0<76g:ac83>!70m3?i?6`>7e8;?>o2i00;6)?8e;7a7>h6?m0276g:a983>!70m3?i?6`>7e8b?>o2:>0;6)?8e;77e>h6?m0;76g:2783>!70m3??m6`>7e82?>o2:<0;6)?8e;77e>h6?m0976g:2583>!70m3??m6`>7e80?>o2::0;6)?8e;77e>h6?m0?76g:2383>!70m3??m6`>7e86?>o2:90;6)?8e;77e>h6?m0=76g:1g83>!70m3??m6`>7e84?>o29l0;6)?8e;77e>h6?m0376g:1e83>!70m3??m6`>7e8:?>o29j0;6)?8e;77e>h6?m0j76g:1c83>!70m3??m6`>7e8a?>o29h0;6)?8e;77e>h6?m0h76g:1883>!70m3??m6`>7e8g?>o2910;6)?8e;77e>h6?m0n76g:1683>!70m3??m6`>7e8e?>o29<0;6)?8e;77e>h6?m0:<65f50694?"6?l0>8l5a16f954=<a<;86=4+16g911g<f8=o6<<4;h726?6=,8=n68:n;o34`?7432c>=<4?:%34a?33i2d:;i4>4:9j146=83.:;h4:4`9m52b=9<10e8>i:18'52c===k0b<9k:048?l37m3:1(<9j:46b?k70l3;<76g:0e83>!70m3??m6`>7e82<>=n=9i1<7*>7d860d=i9>n1=454i40g>5<#9>o199o4n05g>4g<3`?9o7>5$05f>02f3g;<h7?m;:k66g<72-;<i7;;a:l23a<6k21b9?o50;&23`<2<h1e=:j51e98m04>290/=:k555c8j41c28o07d;=8;29 41b2<>j7c?8d;3e?>o2:80;6)?8e;77e>h6?m09<65f50494?"6?l0>8l5a16f964=<a<:i6=4+16g911g<f8=o6?<4;h73e?6=,8=n68:n;o34`?4432c?j54?::k6`g<72-;<i7;j4:l23a<732c>i>4?:%34a?3b<2d:;i4>;:k6a7<72-;<i7;j4:l23a<532c>i<4?:%34a?3b<2d:;i4<;:k6a5<72-;<i7;j4:l23a<332c>hk4?:%34a?3b<2d:;i4:;:k6``<72-;<i7;j4:l23a<132c>hi4?:%34a?3b<2d:;i48;:k6`f<72-;<i7;j4:l23a<?32c>hl4?:%34a?3b<2d:;i46;:k6`<<72-;<i7;j4:l23a<f32c>o?4?:%34a?3dj2d:;i4?;:k6gd<72-;<i7;lb:l23a<632c>o44?:%34a?3dj2d:;i4=;:k6g=<72-;<i7;lb:l23a<432c>o:4?:%34a?3dj2d:;i4;;:k6g3<72-;<i7;lb:l23a<232c>o84?:%34a?3dj2d:;i49;:k6g1<72-;<i7;lb:l23a<032c>o>4?:%34a?3dj2d:;i47;:k6g4<72-;<i7;lb:l23a<>32c>o=4?:%34a?3dj2d:;i4n;:m6e2<722e><44?::k6b4<722h?ik4?:083>5}#9131m<5G4dg8L1c33fk;6=44}c6e4?6=93:1<v*>8887a0=O<lo0D9k;;n34f?6=3th?h<4?:283>5}#9131545G4dg8L1c33A??7)hi:733?!ga2;1b944?::k51?6=3f;3<7>5;|`7`f<72:0;6=u+19;9=<=O<lo0D9k;;I77?!`a2?;;7)oi:39j1<<722c=97>5;n3;4?6=3th?h=4?:283>5}#9131545G4dg8L1c33A??7)hi:733?!ga2;1b944?::k51?6=3f;3<7>5;|`7`d<72<0;6=u+19;9=`=O<lo0D9k;;I77?!`a2?;;7)oi:39j1<<722c>o7>5;h46>5<<a8=m6=44o0:3>5<<uk>on7>53;294~"6000256F;ed9K0`2<@<>0(kh56028 d`=:2c>57>5;h46>5<<g82;6=44}c6`b?6==3:1<v*>888:a>N3ml1C8h:4H468 c`=>8:0(lh52:k6=?6=3`?h6=44i7794?=n9>l1<75`19294?=zj=n26=4;:183\7f!7?133o7E:je:J7a1=#io097d;6:188m33=831b=:h50;9l5=6=831vn9j7:187>5<7s-;3577k;I6fa>N3m=1/mk4=;h7:>5<<a??1<75f16d94?=h91:1<75rb5f4>5<3290;w)?79;;g?M2bm2B?i95+ag81?l3>2900e;;50;9j52`=831d=5>50;9~f1c5290?6=4?{%3;=??c3A>ni6F;e59'ec<53`?26=44i7794?=n9>l1<75`19294?=zj=o:6=4;:183\7f!7?133o7E:je:J7a1=#io097d;6:188m33=831b=:h50;9l5=6=831vn><l:187>5<7s-;3577k;I6fa>N3m=1/mk47;h7:>5<<a??1<75f16d94?=h91:1<75rb3`b>5<2290;w)?79;;`?M2bm2B?i95+ag81?l3>2900e;?50;9j20<722c:;k4?::m2<5<722wi>ol50;794?6|,82264m4H5gf?M2b<2.jj7<4i4;94?=n>80;66g95;29?l70n3:17b?70;29?xd5jl0;684?:1y'5=?=1j1C8hk4H5g7?!ga2;1b944?::k55?6=3`<>6=44i05e>5<<g82;6=44}c0ab?6==3:1<v*>888:g>N3ml1C8h:4$`d96>o213:17d8>:188m33=831b=:h50;9l5=6=831vn?m?:186>5<7s-;3577l;I6fa>N3m=1/mk4=;h7:>5<<a?;1<75f6483>>o6?o0;66a>8183>>{e:j;1<7;50;2x 4>>20i0D9kj;I6f0>"fn380e8750;9j24<722c=97>5;h34b?6=3f;3<7>5;|`1g7<72<0;6=u+19;9=f=O<lo0D9k;;%ce>7=n=00;66g91;29?l022900e<9i:188k4>72900qo<l3;291?6=8r.:4446c:J7a`=O<l>0(lh52:k6=?6=3`<:6=44i7794?=n9>l1<75`19294?=zj;i?6=4::183\7f!7?133h7E:je:J7a1=#io097d;6:188m37=831b:84?::k23c<722e:4=4?::\7fa6f3=83?1<7>t$0::><e<@=on7E:j4:&bb?4<a<31<75f6083>>o1=3:17d?8f;29?j7?83:17pl=bb83>0<729q/=5759b9K0`c<@=o?7)oi:39j1<<722c==7>5;h46>5<<a8=m6=44o0:3>5<<uk8ih7>55;294~"60002o6F;ed9K0`2<,hl1>6g:9;29?l062900e;;50;9j52`=831d=5>50;9~f6d?290?6=4?{%3;=??c3A>ni6F;e59'ec<53`?26=44i7794?=n9>l1<75`19294?=zj:h<6=4;:183\7f!7?133o7E:je:J7a1=#io097d;6:188m33=831b=:h50;9l5=6=831vn>hn:187>5<7s-;3577n;I6fa>N3m=1/mk4=;h7:>5<<a?;1<75f6483>>i6090;66sm3g`94?2=83:p(<66:8c8L1cb3A>n86*nf;08m0?=831b:<4?::k51?6=3f;3<7>5;|`0b`<72=0;6=u+19;9=d=O<lo0D9k;;%ce>7=n=00;66g91;29?l022900c<6?:188yg5an3:187>50z&2<<<>i2B?ih5G4d68 d`=:2c>57>5;h42>5<<a??1<75`19294?=zj=:;6=4;:183\7f!7?133j7E:je:J7a1=#io097d;6:188m37=831b:84?::m2<5<722wi8=?50;694?6|,82264o4H5gf?M2b<2.jj7<4i4;94?=n>80;66g95;29?j7?83:17pl;0383>1<729q/=5759`9K0`c<@=o?7)oi:39j1<<722c==7>5;h46>5<<g82;6=44}c637?6=<3:1<v*>888:e>N3ml1C8h:4$`d96>o213:17d8>:188m33=831d=5>50;9~f163290?6=4?{%3;=??f3A>ni6F;e59'ec<53`?26=44i7394?=n><0;66a>8183>>{e<9?1<7:50;2x 4>>20k0D9kj;I6f0>"fn380e8750;9j24<722c=97>5;n3;4?6=3th8jn4?:583>5}#91315l5G4dg8L1c33-km6?5f5883>>o193:17d8::188k4>72900qo=id;290?6=8r.:4446a:J7a`=O<l>0(lh52:k6=?6=3`<:6=44i7794?=h91:1<75rb3c0>5<4290;w)?79;d:?M2bm2B?i95+ag801>of;3:17do;:188k41>2900qo<69;290?6=8r.:444>019K0`c<@=o?7d;j:188m30=831b=5<50;9l52?=831vn?oj:180>5<7s-;357:jd:J7a`=O<l>0e8k50;9jb1<722e:;44?::\7fa6d3=8391<7>t$0::>c?<@=on7E:j4:&bb?523`k86=44i`694?=h9>31<75rb3;b>5<3290;w)?79;334>N3ml1C8h:4i4g94?=n>?0;66g>8383>>i6?00;66sm2c294?5=83:p(<66:5gg?M2bm2B?i95f5d83>>oa<3:17b?89;29?xd5i?0;6>4?:1y'5=?=n01C8hk4H5g7?!ga2:?0el=50;9je1<722e:;44?::\7fa6<d=83>1<7>t$0::>4673A>ni6F;e59j1`<722c=:7>5;h3;6?6=3f;<57>5;|`1f4<72:0;6=u+19;90`b<@=on7E:j4:k6a?6=3`l?6=44o05:>5<<uk8j;7>53;294~"6000m56F;ed9K0`2<,hl1?85fa283>>of<3:17b?89;29?xd51j0;694?:1y'5=?=99:0D9kj;I6f0>o2m3:17d89:188m4>52900c<96:188yg4e:3:1?7>50z&2<<<3mm1C8hk4H5g7?l3b2900ek:50;9l52?=831vn?o7:180>5<7s-;357h6;I6fa>N3m=1/mk4<5:kb7?6=3`k?6=44o05:>5<<uk82h7>54;294~"6000:<=5G4dg8L1c33`?n6=44i7494?=n9181<75`16;94?=zj;h86=4<:183\7f!7?13>nh6F;ed9K0`2<a<o1<75ff583>>i6?00;66sm2`;94?5=83:p(<66:g;8L1cb3A>n86*nf;16?lg42900el:50;9l52?=831vn?7j:187>5<7s-;357??0:J7a`=O<l>0e8k50;9j23<722c:4?4?::m23<<722wi>o:50;194?6|,82269kk;I6fa>N3m=1b9h4?::ke0?6=3f;<57>5;|`1ed<72:0;6=u+19;9b<=O<lo0D9k;;%ce>63<ah91<75fa583>>i6?00;66sm28d94?2=83:p(<66:023?M2bm2B?i95f5d83>>o1>3:17d?72;29?j7013:17pl=b483>6<729q/=5754df8L1cb3A>n86g:e;29?l`32900c<96:188yg4fj3:1?7>50z&2<<<a12B?ih5G4d68 d`=;<1bm>4?::kb0?6=3f;<57>5;|`1e5<72=0;6=u+19;9556<@=on7E:j4:k6a?6=3`<=6=44i0:1>5<<g8=26=44}c0a2?6=;3:1<v*>8887aa=O<lo0D9k;;h7f>5<<ao>1<75`16;94?=zj;kh6=4<:183\7f!7?13l27E:je:J7a1=#io0896gn3;29?lg32900c<96:188yg4f93:187>50z&2<<<6891C8hk4H5g7?l3b2900e;850;9j5=4=831d=:750;9~f7d029086=4?{%3;=?2bl2B?ih5G4d68m0c=831bj94?::m23<<722wi>lj50;194?6|,8226k74H5gf?M2b<2.jj7=:;hc0>5<<ah>1<75`16;94?=zj;k96=4;:183\7f!7?13;;<6F;ed9K0`2<a<o1<75f6783>>o60;0;66a>7883>>{e:k21<7=50;2x 4>>2=oo7E:je:J7a1=n=l0;66gi4;29?j7013:17pl=a583>6<729q/=575f89K0`c<@=o?7)oi:278md5=831bm94?::m23<<722wi>lh50;194?6|,82269kk;I6fa>N3m=1b9h4?::ke0?6=3f;<57>5;|`0a6<72:0;6=u+19;9b<=O<lo0D9k;;%ce>63<ah91<75fa583>>i6?00;66sm3e;94?2=83:p(<66:023?M2bm2B?i95f5d83>>o1>3:17d?72;29?j7013:17pl<ed83>6<729q/=5754df8L1cb3A>n86g:e;29?l`32900c<96:188yg5b=3:1?7>50z&2<<<a12B?ih5G4d68 d`=;<1bm>4?::kb0?6=3f;<57>5;|`0`d<72=0;6=u+19;9556<@=on7E:j4:k6a?6=3`<=6=44i0:1>5<<g8=26=44}c1e4?6=;3:1<v*>8887aa=O<lo0D9k;;h7f>5<<ao>1<75`16;94?=zj:o=6=4<:183\7f!7?13l27E:je:J7a1=#io0896gn3;29?lg32900c<96:188yg5cj3:187>50z&2<<<6891C8hk4H5g7?l3b2900e;850;9j5=4=831d=:750;9~f6`629086=4?{%3;=?2bl2B?ih5G4d68m0c=831bj94?::m23<<722wi?h950;194?6|,8226k74H5gf?M2b<2.jj7=:;hc0>5<<ah>1<75`16;94?=zj:nh6=4;:183\7f!7?13;;<6F;ed9K0`2<a<o1<75f6783>>o60;0;66a>7883>>{e;o81<7=50;2x 4>>2=oo7E:je:J7a1=n=l0;66gi4;29?j7013:17pl<e983>6<729q/=575f89K0`c<@=o?7)oi:278md5=831bm94?::m23<<722wi?ij50;694?6|,8226<>?;I6fa>N3m=1b9h4?::k52?6=3`;3>7>5;n34=?6=3th8j>4?:283>5}#91318hj4H5gf?M2b<2c>i7>5;hd7>5<<g8=26=44}c1f=?6=;3:1<v*>888e=>N3ml1C8h:4$`d970=ni:0;66gn4;29?j7013:17pl<dd83>1<729q/=5751128L1cb3A>n86g:e;29?l012900e<6=:188k41>2900qo=i4;297?6=8r.:444;ee9K0`c<@=o?7d;j:188mc2=831d=:750;9~f6cf29086=4?{%3;=?`>3A>ni6F;e59'ec<4=2cj?7>5;hc7>5<<g8=26=44}c1gb?6=<3:1<v*>888245=O<lo0D9k;;h7f>5<<a?<1<75f19094?=h9>31<75rb2d6>5<4290;w)?79;6f`>N3ml1C8h:4i4g94?=nn=0;66a>7883>>{e;lh1<7=50;2x 4>>2o30D9kj;I6f0>"fn39>7do<:188md2=831d=:750;9~f6c7290?6=4?{%3;=?7782B?ih5G4d68m0c=831b:;4?::k2<7<722e:;44?::\7fa7c0=8391<7>t$0::>1cc3A>ni6F;e59j1`<722cm87>5;n34=?6=3th8in4?:283>5}#9131j45G4dg8L1c33-km6>;4i`194?=ni=0;66a>7883>>{e;l;1<7:50;2x 4>>28:;7E:je:J7a1=n=l0;66g96;29?l7?:3:17b?89;29?xd4n>0;6>4?:1y'5=?=<ln0D9kj;I6f0>o2m3:17dh;:188k41>2900qo=jd;297?6=8r.:444i9:J7a`=O<l>0(lh5349je6<722cj87>5;n34=?6=3th8i?4?:583>5}#9131==>4H5gf?M2b<2c>i7>5;h45>5<<a8296=44o05:>5<<uk9m47>53;294~"6000?ii5G4dg8L1c33`?n6=44ig694?=h9>31<75rb2g7>5<4290;w)?79;d:?M2bm2B?i95+ag801>of;3:17do;:188k41>2900qo=jf;297?6=8r.:444;ee9K0`c<@=o?7d;j:188mc2=831d=:750;9~f661290?6=4?{%3;=?7782B?ih5G4d68m0c=831b:;4?::k2<7<722e:;44?::\7fa753=83>1<7>t$0::>4673A>ni6F;e59j1`<722c=:7>5;h3;6?6=3f;<57>5;|`041<72=0;6=u+19;9556<@=on7E:j4:k6a?6=3`<=6=44i0:1>5<<g8=26=44}c137?6=<3:1<v*>888245=O<lo0D9k;;h7f>5<<a?<1<75f19094?=h9>31<75rb221>5<3290;w)?79;334>N3ml1C8h:4i4g94?=n>?0;66g>8383>>i6?00;66sm31394?2=83:p(<66:023?M2bm2B?i95f5d83>>o1>3:17d?72;29?j7013:17pl<1e83>1<729q/=5751128L1cb3A>n86g:e;29?l012900e<6=:188k41>2900qo=>c;290?6=8r.:444>019K0`c<@=o?7d;j:188m30=831b=5<50;9l52?=831vn>?m:187>5<7s-;357??0:J7a`=O<l>0e8k50;9j23<722c:4?4?::m23<<722wi?<o50;694?6|,8226<>?;I6fa>N3m=1b9h4?::k52?6=3`;3>7>5;n34=?6=3th8=44?:583>5}#9131==>4H5gf?M2b<2c>i7>5;h45>5<<a8296=44o05:>5<<uk9:47>54;294~"6000:<=5G4dg8L1c33`?n6=44i7494?=n9181<75`16;94?=zj:3:6=4;:183\7f!7?13;;<6F;ed9K0`2<a<o1<75f6783>>o60;0;66a>7883>>{e;0:1<7:50;2x 4>>28:;7E:je:J7a1=n=l0;66g96;29?l7?:3:17b?89;29?xd40o0;694?:1y'5=?=99:0D9kj;I6f0>o2m3:17d89:188m4>52900c<96:188yg5?m3:187>50z&2<<<6891C8hk4H5g7?l3b2900e;850;9j5=4=831d=:750;9~f6>c290?6=4?{%3;=?7782B?ih5G4d68m0c=831b:;4?::k2<7<722e:;44?::\7fa7=e=83>1<7>t$0::>4673A>ni6F;e59j1`<722c=:7>5;h3;6?6=3f;<57>5;|`0e=<72=0;6=u+19;9556<@=on7E:j4:k6a?6=3`<=6=44i0:1>5<<g8=26=44}c1b3?6=<3:1<v*>888245=O<lo0D9k;;h7f>5<<a?<1<75f19094?=h9>31<75rb2c5>5<3290;w)?79;334>N3ml1C8h:4i4g94?=n>?0;66g>8383>>i6?00;66sm3`794?2=83:p(<66:023?M2bm2B?i95f5d83>>o1>3:17d?72;29?j7013:17pl<a583>1<729q/=5751128L1cb3A>n86g:e;29?l012900e<6=:188k41>2900qo=n3;290?6=8r.:444>019K0`c<@=o?7d;j:188m30=831b=5<50;9l52?=831vn<m;:187>5<7s-;3577n;I6fa>N3m=1/mk4=;h7:>5<<a?;1<75f6483>>i6090;66sm1ba94?2=83:p(<66:8c8L1cb3A>n86*nf;08m0?=831b:<4?::k51?6=3f;3<7>5;|`2gg<72=0;6=u+19;9=d=O<lo0D9k;;%ce>7=n=00;66g91;29?l022900c<6?:188yg7di3:187>50z&2<<<>i2B?ih5G4d68 d`=:2c>57>5;h42>5<<a??1<75`19294?=zj8i26=4;:183\7f!7?133j7E:je:J7a1=#io097d;6:188m37=831b:84?::m2<5<722wi=n650;694?6|,82264o4H5gf?M2b<2.jj7<4i4;94?=n>80;66g95;29?j7?83:17pl>c683>1<729q/=5759`9K0`c<@=o?7)oi:39j1<<722c==7>5;h46>5<<g82;6=44}c3`2?6=<3:1<v*>888:e>N3ml1C8h:4$`d96>o213:17d8>:188m33=831d=5>50;9~f4e2290?6=4?{%3;=??f3A>ni6F;e59'ec<53`?26=44i7394?=n><0;66a>8183>>{e9j91<7:50;2x 4>>20k0D9kj;I6f0>"fn380e8750;9j24<722c=97>5;n3;4?6=3th:o?4?:583>5}#91315l5G4dg8L1c33-km6?5f5883>>o193:17d8::188k4>72900qo<<1;290?6=8r.:4446a:J7a`=O<l>0(lh52:k6=?6=3`<:6=44i7794?=h91:1<75rb31:>5<3290;w)?79;;b?M2bm2B?i95+ag81?l3>2900e;?50;9j20<722e:4=4?::\7fa66>=83>1<7>t$0::><g<@=on7E:j4:&bb?4<a<31<75f6083>>o1=3:17b?70;29?xd5;>0;694?:1y'5=?=1h1C8hk4H5g7?!ga2;1b944?::k55?6=3`<>6=44o0:3>5<<uk88:7>54;294~"60002m6F;ed9K0`2<,hl1>6g:9;29?l062900e;;50;9l5=6=831vn?=::187>5<7s-;3577n;I6fa>N3m=1/mk4=;h7:>5<<a?;1<75f6483>>i6090;66sm22694?2=83:p(<66:8c8L1cb3A>n86*nf;08m0?=831b:<4?::k51?6=3f;3<7>5;|`176<72=0;6=u+19;9=d=O<lo0D9k;;%ce>7=n=00;66g91;29?l022900c<6?:188yg44:3:187>50z&2<<<>i2B?ih5G4d68 d`=:2c>57>5;h42>5<<a??1<75`19294?=zj;9;6=4;:183\7f!7?133j7E:je:J7a1=#io097d;6:188m37=831b:84?::m2<5<722wi>?h50;694?6|,82264o4H5gf?M2b<2.jj7<4i4;94?=n>80;66g95;29?j7?83:17pl=7b83>1<729q/=5759`9K0`c<@=o?7)oi:39j1<<722c==7>5;h46>5<<g82;6=44}c0;0?6=<3:1<v*>888:e>N3ml1C8h:4$`d96>o213:17d8>:188m33=831d=5>50;9~f7>4290?6=4?{%3;=??f3A>ni6F;e59'ec<53`?26=44i7394?=n><0;66a>8183>>{e:181<7:50;2x 4>>20k0D9kj;I6f0>"fn380e8750;9j24<722c=97>5;n3;4?6=3th94<4?:583>5}#91315l5G4dg8L1c33-km6?5f5883>>o193:17d8::188k4>72900qo<70;290?6=8r.:4446a:J7a`=O<l>0(lh52:k6=?6=3`<:6=44i7794?=h91:1<75rb35e>5<3290;w)?79;;b?M2bm2B?i95+ag81?l3>2900e;?50;9j20<722e:4=4?::\7fa62c=83>1<7>t$0::><g<@=on7E:j4:&bb?4<a<31<75f6083>>o1=3:17b?70;29?xd5?m0;694?:1y'5=?=1h1C8hk4H5g7?!ga2;1b944?::k55?6=3`<>6=44o0:3>5<<uk8<n7>54;294~"60002m6F;ed9K0`2<,hl1>6g:9;29?l062900e;;50;9l5=6=831vn?9n:187>5<7s-;3577n;I6fa>N3m=1/mk4=;h7:>5<<a?;1<75f6483>>i6090;66sm21d94?2=83:p(<66:8c8L1cb3A>n86*nf;08m0?=831b:<4?::k51?6=3f;3<7>5;|`152<72=0;6=u+19;9=d=O<lo0D9k;;%ce>7=n=00;66g91;29?l022900c<6?:188yg46>3:187>50z&2<<<>i2B?ih5G4d68 d`=:2c>57>5;h42>5<<a??1<75`19294?=zj;;>6=4;:183\7f!7?133j7E:je:J7a1=#io097d;6:188m37=831b:84?::m2<5<722wi><:50;694?6|,82264o4H5gf?M2b<2.jj7<4i4;94?=n>80;66g95;29?j7?83:17pl=1283>1<729q/=5759`9K0`c<@=o?7)oi:39j1<<722c==7>5;h46>5<<g82;6=44}c026?6=<3:1<v*>888:e>N3ml1C8h:4$`d96>o213:17d8>:188m33=831d=5>50;9~f776290?6=4?{%3;=??f3A>ni6F;e59'ec<53`?26=44i7394?=n><0;66a>8183>>{e:8:1<7:50;2x 4>>20k0D9kj;I6f0>"fn380e8750;9j24<722c=97>5;n3;4?6=3th9<h4?:583>5}#91315l5G4dg8L1c33-km6?5f5883>>o193:17d8::188k4>72900qo<?d;290?6=8r.:4446a:J7a`=O<l>0(lh52:k6=?6=3`<:6=44i7794?=h91:1<75rb345>5<3290;w)?79;;b?M2bm2B?i95G559'bc<1991/mk4=;h7:>5<<a?;1<75f6483>>i6090;66sm27g94?2=83:p(<66:8c8L1cb3A>n86F:4:&eb?0682.jj7<4i4;94?=n>80;66g95;29?j7?83:17pl=6e83>1<729q/=5759`9K0`c<@=o?7E;;;%de>3773-km6?5f5883>>o193:17d8::188k4>72900qo<9c;290?6=8r.:4446a:J7a`=O<l>0D8:4$gd9246<,hl1>6g:9;29?l062900e;;50;9l5=6=831vn?8m:187>5<7s-;3577n;I6fa>N3m=1C995+fg8555=#io097d;6:188m37=831b:84?::m2<5<722wi>;o50;694?6|,82264o4H5gf?M2b<2B>86*if;424>"fn380e8750;9j24<722c=97>5;n3;4?6=3th9:44?:583>5}#91315l5G4dg8L1c33A??7)hi:733?!ga2;1b944?::k55?6=3`<>6=44o0:3>5<<uk8=47>54;294~"60002m6F;ed9K0`2<@<>0(kh56028 d`=:2c>57>5;h42>5<<a??1<75`19294?=zj;<<6=4;:183\7f!7?133j7E:je:J7a1=O==1/jk49119'ec<53`?26=44i7394?=n><0;66a>8183>>{e:??1<7:50;2x 4>>20k0D9kj;I6f0>N2<2.mj78>0:&bb?4<a<31<75f6083>>o1=3:17b?70;29?xd5>=0;694?:1y'5=?=1h1C8hk4H5g7?M333-lm6;??;%ce>7=n=00;66g91;29?l022900c<6?:188yg7a13:187>50z&2<<<>i2B?ih5G4d68L02<,ol1:<>4$`d96>o213:17d8>:188m33=831d=5>50;9~f766290?6=4?{%3;=??f3A>ni6F;e59K11=#no0===5+ag81?l3>2900e;?50;9j20<722e:4=4?::\7fa656=83>1<7>t$0::><g<@=on7E:j4:J60>"an3<:<6*nf;08m0?=831b:<4?::k51?6=3f;3<7>5;|`2bc<72=0;6=u+19;9=d=O<lo0D9k;;I77?!`a2?;;7)oi:39j1<<722c==7>5;h46>5<<g82;6=44}c3ea?6=<3:1<v*>888:e>N3ml1C8h:4H468 c`=>8:0(lh52:k6=?6=3`<:6=44i7794?=h91:1<75rb0dg>5<3290;w)?79;;b?M2bm2B?i95G559'bc<1991/mk4=;h7:>5<<a?;1<75f6483>>i6090;66sm1ga94?2=83:p(<66:8c8L1cb3A>n86F:4:&eb?0682.jj7<4i4;94?=n>80;66g95;29?j7?83:17pl>fc83>1<729q/=5759`9K0`c<@=o?7E;;;%de>3773-km6?5f5883>>o193:17d8::188k4>72900qo?ia;290?6=8r.:4446a:J7a`=O<l>0D8:4$gd9246<,hl1>6g:9;29?l062900e;;50;9l5=6=831vn<h7:187>5<7s-;3577n;I6fa>N3m=1C995+fg8555=#io097d;6:188m37=831b:84?::m2<5<722wi=k950;694?6|,82264o4H5gf?M2b<2B>86*if;424>"fn380e8750;9j24<722c=97>5;n3;4?6=3th:i>4?:583>5}#91315l5G4dg8L1c33-km6?5f5883>>o193:17d8::188k4>72900qo?jb;290?6=8r.:4446a:J7a`=O<l>0(lh52:k6=?6=3`<:6=44i7794?=h91:1<75rb0gb>5<3290;w)?79;;b?M2bm2B?i95+ag81?l3>2900e;?50;9j20<722e:4=4?::\7fa5`?=83>1<7>t$0::><g<@=on7E:j4:&bb?4<a<31<75f6083>>o1=3:17b?70;29?xd6m10;694?:1y'5=?=1h1C8hk4H5g7?!ga2;1b944?::k55?6=3`<>6=44o0:3>5<<uk;n;7>54;294~"60002m6F;ed9K0`2<,hl1>6g:9;29?l062900e;;50;9l5=6=831vn<k9:187>5<7s-;3577n;I6fa>N3m=1/mk4=;h7:>5<<a?;1<75f6483>>i6090;66sm1d794?2=83:p(<66:8c8L1cb3A>n86*nf;08m0?=831b:<4?::k51?6=3f;3<7>5;|`2a1<72=0;6=u+19;9=d=O<lo0D9k;;%ce>7=n=00;66g91;29?l022900c<6?:188yg7b:3:187>50z&2<<<>i2B?ih5G4d68 d`=:2c>57>5;h42>5<<a??1<75`19294?=zj8o:6=4;:183\7f!7?133j7E:je:J7a1=#io097d;6:188m37=831b:84?::m2<5<722wi>8>50;694?6|,82264o4H5gf?M2b<2.jj7<4i4;94?=n>80;66g95;29?j7?83:17pl=5983>1<729q/=5759`9K0`c<@=o?7)oi:39j1<<722c==7>5;h46>5<<g82;6=44}c063?6=<3:1<v*>888:e>N3ml1C8h:4$`d96>o213:17d8>:188m33=831d=5>50;9~f731290?6=4?{%3;=??f3A>ni6F;e59'ec<53`?26=44i7394?=n><0;66a>8183>>{e:<?1<7:50;2x 4>>20k0D9kj;I6f0>"fn380e8750;9j24<722c=97>5;n3;4?6=3th9994?:583>5}#91315l5G4dg8L1c33-km6?5f5883>>o193:17d8::188k4>72900qo<:3;290?6=8r.:4446a:J7a`=O<l>0(lh52:k6=?6=3`<:6=44i7794?=h91:1<75rb371>5<3290;w)?79;;b?M2bm2B?i95+ag81?l3>2900e;?50;9j20<722e:4=4?::\7fa607=83>1<7>t$0::><g<@=on7E:j4:&bb?4<a<31<75f6083>>o1=3:17b?70;29?xd5<o0;694?:1y'5=?=1h1C8hk4H5g7?!ga2;1b944?::k55?6=3`<>6=44o0:3>5<<uk8?i7>54;294~"60002m6F;ed9K0`2<,hl1>6g:9;29?l062900e;;50;9l5=6=831vn>87:186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd4?90;684?:1y'5=?=1k1C8hk4H5g7?!ga2;1b944?::k6g?6=3`<:6=44i7794?=h91:1<75rb24f>5<2290;w)?79;;a?M2bm2B?i95+ag81?l3>2900e8m50;9j24<722c=97>5;n3;4?6=3th8:i4?:483>5}#91315o5G4dg8L1c33-km6?5f5883>>o2k3:17d8>:188m33=831d=5>50;9~f60a290>6=4?{%3;=??e3A>ni6F;e59'ec<53`?26=44i4a94?=n>80;66g95;29?j7?83:17pl<6c83>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj:<j6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`02f<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn>88:186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd4>?0;684?:1y'5=?=1l1C8hk4H5g7?!ga211b944?::k6g?6=3`<>6=44i05e>5<<g82;6=44}c15=?6==3:1<v*>888:f>N3ml1C8h:4$`d96>o213:17d;l:188m37=831b:84?::m2<5<722wi?8>50;194?6|,82269kk;I6fa>N3m=1b9h4?::ke0?6=3f;<57>5;|`01d<72:0;6=u+19;90`b<@=on7E:j4:k6a?6=3`l?6=44o05:>5<<uk9?h7>54;294~"6000:<=5G4dg8L1c33`?n6=44i7494?=n9181<75`16;94?=zj:?26=4<:183\7f!7?13>nh6F;ed9K0`2<a<o1<75ff583>>i6?00;66sm35`94?2=83:p(<66:023?M2bm2B?i95f5d83>>o1>3:17d?72;29?j7013:17pl<5983>6<729q/=5754df8L1cb3A>n86g:e;29?l`32900c<96:188yg5313:187>50z&2<<<6891C8hk4H5g7?l3b2900e;850;9j5=4=831d=:750;9~f63029086=4?{%3;=?2bl2B?ih5G4d68m0c=831bj94?::m23<<722wi?9950;694?6|,8226<>?;I6fa>N3m=1b9h4?::k52?6=3`;3>7>5;n34=?6=3th89;4?:283>5}#91318hj4H5gf?M2b<2c>i7>5;hd7>5<<g8=26=44}c171?6=<3:1<v*>888245=O<lo0D9k;;h7f>5<<a?<1<75f19094?=h9>31<75rb276>5<4290;w)?79;6f`>N3ml1C8h:4i4g94?=nn=0;66a>7883>>{e;=91<7:50;2x 4>>28:;7E:je:J7a1=n=l0;66g96;29?l7?:3:17b?89;29?xd4==0;6>4?:1y'5=?=<ln0D9kj;I6f0>o2m3:17dh;:188k41>2900qo=;1;290?6=8r.:444>019K0`c<@=o?7d;j:188m30=831b=5<50;9l52?=831vn>;<:180>5<7s-;357:jd:J7a`=O<l>0e8k50;9jb1<722e:;44?::\7fa76`=83>1<7>t$0::>4673A>ni6F;e59j1`<722c=:7>5;h3;6?6=3f;<57>5;|`017<72:0;6=u+19;90`b<@=on7E:j4:k6a?6=3`l?6=44o05:>5<<uk98h7>54;294~"6000:<=5G4dg8L1c33`?n6=44i7494?=n9181<75`16;94?=zj:>m6=4<:183\7f!7?13>nh6F;ed9K0`2<a<o1<75ff583>>i6?00;66sm32`94?2=83:p(<66:023?M2bm2B?i95f5d83>>o1>3:17d?72;29?j7013:17pl<7d83>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj:2=6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`0<0<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn>6;:186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd40:0;684?:1y'5=?=1k1C8hk4H5g7?!ga2;1b944?::k6g?6=3`<:6=44i7794?=h91:1<75rb2:1>5<2290;w)?79;;a?M2bm2B?i95+ag81?l3>2900e8m50;9j24<722c=97>5;n3;4?6=3th84<4?:483>5}#91315o5G4dg8L1c33-km6?5f5883>>o2k3:17d8>:188m33=831d=5>50;9~f6>7290>6=4?{%3;=??e3A>ni6F;e59'ec<53`?26=44i4a94?=n>80;66g95;29?j7?83:17pl<7g83>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj:=o6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`03f<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn?h;:187>5<7s-;3577n;I6fa>N3m=1/mk4=;h7:>5<<a?;1<75f6483>>i6090;66sm2g394?2=83:p(<66:8c8L1cb3A>n86*nf;08m0?=831b:<4?::k51?6=3f;3<7>5;|`1bg<72=0;6=u+19;9=d=O<lo0D9k;;%ce>7=n=00;66g91;29?l022900c<6?:188yg4a03:187>50z&2<<<>l2B?ih5G4d68 d`=02c>57>5;h46>5<<a8=m6=44o0:3>5<<uk8m;7>54;294~"60002h6F;ed9K0`2<,hl146g:9;29?l022900e<9i:188k4>72900qo:;9;291?6=8r.:4446b:J7a`=O<l>0(lh52:k6=?6=3`?h6=44i7394?=n><0;66a>8183>>{e<<;1<7;50;2x 4>>20h0D9kj;I6f0>"fn380e8750;9j1f<722c==7>5;h46>5<<g82;6=44}c67b?6==3:1<v*>888:f>N3ml1C8h:4$`d96>o213:17d;l:188m37=831b:84?::m2<5<722wi89k50;794?6|,82264l4H5gf?M2b<2.jj7<4i4;94?=n=j0;66g91;29?l022900c<6?:188yg2283:197>50z&2<<<>j2B?ih5G4d68 d`=:2c>57>5;h7`>5<<a?;1<75f6483>>i6090;66sm45a94?3=83:p(<66:8`8L1cb3A>n86*nf;08m0?=831b9n4?::k55?6=3`<>6=44o0:3>5<<uk>?n7>55;294~"60002n6F;ed9K0`2<,hl1>6g:9;29?l3d2900e;?50;9j20<722e:4=4?::\7fa01b=83?1<7>t$0::><d<@=on7E:j4:&bb?4<a<31<75f5b83>>o193:17d8::188k4>72900qo:;8;291?6=8r.:4446e:J7a`=O<l>0(lh58:k6=?6=3`?h6=44i7794?=n9>l1<75`19294?=zj=><6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`70d<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn9=>:180>5<7s-;357:jd:J7a`=O<l>0e8k50;9jb1<722e:;44?::\7fa06d=8391<7>t$0::>1cc3A>ni6F;e59j1`<722cm87>5;n34=?6=3th?>h4?:583>5}#9131==>4H5gf?M2b<2c>i7>5;h45>5<<a8296=44o05:>5<<uk>8m7>53;294~"6000?ii5G4dg8L1c33`?n6=44ig694?=h9>31<75rb50`>5<3290;w)?79;334>N3ml1C8h:4i4g94?=n>?0;66g>8383>>i6?00;66sm42;94?5=83:p(<66:5gg?M2bm2B?i95f5d83>>oa<3:17b?89;29?xd3:h0;694?:1y'5=?=99:0D9kj;I6f0>o2m3:17d89:188m4>52900c<96:188yg2403:1?7>50z&2<<<3mm1C8hk4H5g7?l3b2900ek:50;9l52?=831vn9<7:187>5<7s-;357??0:J7a`=O<l>0e8k50;9j23<722c:4?4?::m23<<722wi8>950;194?6|,82269kk;I6fa>N3m=1b9h4?::ke0?6=3f;<57>5;|`763<72=0;6=u+19;9556<@=on7E:j4:k6a?6=3`<=6=44i0:1>5<<g8=26=44}c602?6=;3:1<v*>8887aa=O<lo0D9k;;h7f>5<<ao>1<75`16;94?=zj=8?6=4;:183\7f!7?13;;<6F;ed9K0`2<a<o1<75f6783>>o60;0;66a>7883>>{e<:?1<7=50;2x 4>>2=oo7E:je:J7a1=n=l0;66gi4;29?j7013:17pl;2383>1<729q/=5751128L1cb3A>n86g:e;29?l012900e<6=:188k41>2900qo:<4;297?6=8r.:444;ee9K0`c<@=o?7d;j:188mc2=831d=:750;9~f147290?6=4?{%3;=?7782B?ih5G4d68m0c=831b:;4?::k2<7<722e:;44?::\7fa065=8391<7>t$0::>1cc3A>ni6F;e59j1`<722cm87>5;n34=?6=3th?=h4?:583>5}#9131==>4H5gf?M2b<2c>i7>5;h45>5<<a8296=44o05:>5<<uk>8<7>53;294~"6000?ii5G4dg8L1c33`?n6=44ig694?=h9>31<75rb53`>5<3290;w)?79;334>N3ml1C8h:4i4g94?=n>?0;66g>8383>>i6?00;66sm47294?3=83:p(<66:8`8L1cb3A>n86*nf;08m0?=831b9n4?::k55?6=3`<>6=44o0:3>5<<uk>>h7>55;294~"60002i6F;ed9K0`2<,hl146g:9;29?l3d2900e;;50;9j52`=831d=5>50;9~f13b290>6=4?{%3;=??e3A>ni6F;e59'ec<53`?26=44i4a94?=n>80;66g95;29?j7?83:17pl;6283>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj=<:6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`727<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn989:186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd3>=0;684?:1y'5=?=1k1C8hk4H5g7?!ga2;1b944?::k6g?6=3`<:6=44i7794?=h91:1<75rb546>5<2290;w)?79;;a?M2bm2B?i95+ag81?l3>2900e8m50;9j24<722c=97>5;n3;4?6=3th?::4?:483>5}#91315o5G4dg8L1c33-km6?5f5883>>o2k3:17d8>:188m33=831d=5>50;9~f13a290>6=4?{%3;=??e3A>ni6F;e59'ec<53`?26=44i4a94?=n>80;66g95;29?j7?83:17pl;7483>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj==o6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`73f<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn99m:186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd3?h0;684?:1y'5=?=1k1C8hk4H5g7?!ga2;1b944?::k6g?6=3`<:6=44i7794?=h91:1<75rb55:>5<2290;w)?79;;a?M2bm2B?i95+ag81?l3>2900e8m50;9j24<722c=97>5;n3;4?6=3th?;54?:483>5}#91315o5G4dg8L1c33-km6?5f5883>>o2k3:17d8>:188m33=831d=5>50;9~f110290>6=4?{%3;=??e3A>ni6F;e59'ec<53`?26=44i4a94?=n>80;66g95;29?j7?83:17pl;7783>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj==?6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`736<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn97m:186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd31h0;684?:1y'5=?=1k1C8hk4H5g7?!ga2;1b944?::k6g?6=3`<:6=44i7794?=h91:1<75rb5;:>5<2290;w)?79;;a?M2bm2B?i95+ag81?l3>2900e8m50;9j24<722c=97>5;n3;4?6=3th?554?:483>5}#91315o5G4dg8L1c33-km6?5f5883>>o2k3:17d8>:188m33=831d=5>50;9~f1?0290>6=4?{%3;=??e3A>ni6F;e59'ec<53`?26=44i4a94?=n>80;66g95;29?j7?83:17pl;9783>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj=3?6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`7=6<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn97=:186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd3180;684?:1y'5=?=1k1C8hk4H5g7?!ga2;1b944?::k6g?6=3`<:6=44i7794?=h91:1<75rb5;3>5<2290;w)?79;;a?M2bm2B?i95+ag81?l3>2900e8m50;9j24<722c=97>5;n3;4?6=3th?4k4?:483>5}#91315o5G4dg8L1c33-km6?5f5883>>o2k3:17d8>:188m33=831d=5>50;9~f1>b290>6=4?{%3;=??e3A>ni6F;e59'ec<53`?26=44i4a94?=n>80;66g95;29?j7?83:17pl;8e83>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj=2h6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`7<g<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn966:186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd3010;684?:1y'5=?=1k1C8hk4H5g7?!ga2;1b944?::k6g?6=3`<:6=44i7794?=h91:1<75rb5:4>5<2290;w)?79;;a?M2bm2B?i95+ag81?l3>2900e8m50;9j24<722c=97>5;n3;4?6=3th?4;4?:483>5}#91315o5G4dg8L1c33-km6?5f5883>>o2k3:17d8>:188m33=831d=5>50;9~f1>2290>6=4?{%3;=??e3A>ni6F;e59'ec<53`?26=44i4a94?=n>80;66g95;29?j7?83:17pl;8583>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj=286=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`7<7<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn96>:186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd3090;684?:1y'5=?=1k1C8hk4H5g7?!ga2;1b944?::k6g?6=3`<:6=44i7794?=h91:1<75rb5c2>5<2290;w)?79;;a?M2bm2B?i95+ag81?l3>2900e8m50;9j24<722c=97>5;n3;4?6=3th?m=4?:483>5}#91315o5G4dg8L1c33-km6?5f5883>>o2k3:17d8>:188m33=831d=5>50;9~f1?a290>6=4?{%3;=??e3A>ni6F;e59'ec<53`?26=44i4a94?=n>80;66g95;29?j7?83:17pl;9d83>0<729q/=5759c9K0`c<@=o?7)oi:39j1<<722c>o7>5;h42>5<<a??1<75`19294?=zj=3o6=4::183\7f!7?133i7E:je:J7a1=#io097d;6:188m0e=831b:<4?::k51?6=3f;3<7>5;|`7=f<72<0;6=u+19;9=g=O<lo0D9k;;%ce>7=n=00;66g:c;29?l062900e;;50;9l5=6=831vn97::186>5<7s-;3577m;I6fa>N3m=1/mk4=;h7:>5<<a<i1<75f6083>>o1=3:17b?70;29?xd30h0;684?:1y'5=?=1k1C8hk4H5g7?!ga2;1b944?::k6g?6=3`<:6=44i7794?=h91:1<75rb55e>5<2290;w)?79;;a?M2bm2B?i95+ag81?l3>2900e8m50;9j24<722c=97>5;n3;4?6=3th?;h4?:483>5}#91315o5G4dg8L1c33-km6?5f5883>>o2k3:17d8>:188m33=831d=5>50;9~f1bb29086=4?{%3;=?`>3A>ni6F;e59'ec<582cj?7>5;hc7>5<<g8=26=44}c6g7?6=;3:1<v*>888e=>N3ml1C8h:4$`d965=ni:0;66gn4;29?j7013:17pl>b583>6<729q/=575f89K0`c<@=o?7)oi:318md5=831bm94?::m23<<722wi=o=50;194?6|,8226k74H5gf?M2b<2.jj7<<;hc0>5<<ah>1<75`16;94?=zj8h96=4<:183\7f!7?13l27E:je:J7a1=#io09?6gn3;29?lg32900c<96:188yg7e93:1?7>50z&2<<<a12B?ih5G4d68 d`=::1bm>4?::kb0?6=3f;<57>5;|`2f5<72:0;6=u+19;9b<=O<lo0D9k;;%ce>75<ah91<75fa583>>i6?00;66sm1`d94?5=83:p(<66:g;8L1cb3A>n86*nf;00?lg42900el:50;9l52?=831vn<oj:180>5<7s-;357h6;I6fa>N3m=1/mk4=3:kb7?6=3`k?6=44o05:>5<<uk;jh7>53;294~"6000m56F;ed9K0`2<,hl1>>5fa283>>of<3:17b?89;29?xd6ij0;6>4?:1y'5=?=n01C8hk4H5g7?!ga2;90el=50;9je1<722e:;44?::\7fa5dd=8391<7>t$0::>c?<@=on7E:j4:&bb?443`k86=44i`694?=h9>31<75rb0;`>5<4290;w)?79;d:?M2bm2B?i95+ag817>of;3:17do;:188k41>2900qo?6b;297?6=8r.:444i9:J7a`=O<l>0(lh5229je6<722cj87>5;n34=?6=3th:5l4?:283>5}#9131j45G4dg8L1c33-km6?=4i`194?=ni=0;66a>7883>>{e9031<7=50;2x 4>>2o30D9kj;I6f0>"fn3887do<:188md2=831d=:750;9~f4??29086=4?{%3;=?`>3A>ni6F;e59'ec<5;2cj?7>5;hc7>5<<g8=26=44}c3:3?6=;3:1<v*>888e=>N3ml1C8h:4$`d966=ni:0;66gn4;29?j7013:17pl>9783>6<729q/=575f89K0`c<@=o?7)oi:318md5=831bm94?::m23<<722wi=4;50;194?6|,8226k74H5gf?M2b<2.jj7<<;hc0>5<<ah>1<75`16;94?=zj83?6=4<:183\7f!7?13l27E:je:J7a1=#io09?6gn3;29?lg32900c<96:188yg7>;3:1?7>50z&2<<<a12B?ih5G4d68 d`=::1bm>4?::kb0?6=3f;<57>5;|`1b6<72=0;6=u+19;9bd=O<lo0D9k;;%ce>7g<ah91<75fa583>>of=3:17b?89;29?xd5nh0;684?:1y'5=?=nm1C8hk4H5g7?!ga2<h0el=50;9je1<722cj97>5;hc5>5<<g8=26=44}c0e2?6==3:1<v*>888e`>N3ml1C8h:4$`d962=ni:0;66gn4;29?lg22900el850;9l52?=831vn9??:180>5<7s-;357h6;I6fa>N3m=1/mk4=0:kb7?6=3`k?6=44o05:>5<<uk8nj7>54;294~"6000mm6F;ed9K0`2<,hl1>85fa283>>of<3:17do::188k41>2900qo?6e;291?6=8r.:444id:J7a`=O<l>0(lh5399je6<722cj87>5;hc6>5<<ah<1<75`16;94?=zj;on6=4::183\7f!7?13lo7E:je:J7a1=#io09>6gn3;29?lg32900el;50;9je3<722e:;44?::\7fa0fd=8391<7>t$0::>c?<@=on7E:j4:&bb??43`k86=44i`694?=h9>31<75rb2`7>5<4290;w)?79;d:?M2bm2B?i95+ag801>of;3:17do;:188k41>2900qo=6d;297?6=8r.:444i9:J7a`=O<l>0(lh5349je6<722cj87>5;n34=?6=3th8>44?:283>5}#9131j45G4dg8L1c33-km6>;4i`194?=ni=0;66a>7883>>{e;881<7=50;2x 4>>2o30D9kj;I6f0>"fn39>7do<:188md2=831d=:750;9~f6d4290>6=4?{%3;=?`c3A>ni6F;e59'ec<4>2cj?7>5;hc7>5<<ah?1<75fa783>>i6?00;66sm38a94?3=83:p(<66:gf8L1cb3A>n86*nf;15?lg42900el:50;9je0<722cj:7>5;n34=?6=3th8>54?:483>5}#9131ji5G4dg8L1c33-km6>84i`194?=ni=0;66gn5;29?lg12900c<96:188yg5693:197>50z&2<<<al2B?ih5G4d68 d`=;?1bm>4?::kb0?6=3`k>6=44i`494?=h9>31<75rb3a4>5<2290;w)?79;dg?M2bm2B?i95+ag82g>of;3:17do;:188md3=831bm;4?::m23<<722wi?o<50;794?6|,8226kj4H5gf?M2b<2.jj7=9;hc0>5<<ah>1<75fa483>>of>3:17b?89;29?xd41k0;684?:1y'5=?=nm1C8hk4H5g7?!ga2:<0el=50;9je1<722cj97>5;hc5>5<<g8=26=44}c113?6==3:1<v*>888e`>N3ml1C8h:4$`d973=ni:0;66gn4;29?lg22900el850;9l52?=831vn>??:186>5<7s-;357hk;I6fa>N3m=1/mk4<6:kb7?6=3`k?6=44i`794?=ni?0;66a>7883>>{e;k;1<7;50;2x 4>>2on0D9kj;I6f0>"fn39=7do<:188md2=831bm84?::kb2?6=3f;<57>5;|`0=d<72<0;6=u+19;9ba=O<lo0D9k;;%ce>60<ah91<75fa583>>of=3:17do9:188k41>2900qo==6;291?6=8r.:444id:J7a`=O<l>0(lh5379je6<722cj87>5;hc6>5<<ah<1<75`16;94?=zj::m6=4::183\7f!7?13lo7E:je:J7a1=#io08:6gn3;29?lg32900el;50;9je3<722e:;44?::\7fa7g6=83?1<7>t$0::>cb<@=on7E:j4:&bb?513`k86=44i`694?=ni<0;66gn6;29?j7013:17pl<9883>0<729q/=575fe9K0`c<@=o?7)oi:248md5=831bm94?::kb1?6=3`k=6=44o05:>5<<uk9997>55;294~"6000mh6F;ed9K0`2<,hl1?;5fa283>>of<3:17do::188md0=831d=:750;9~f66b290>6=4?{%3;=?`c3A>ni6F;e59'ec<4>2cj?7>5;hc7>5<<ah?1<75fa783>>i6?00;66sm33g94?2=83:p(<66:gc8L1cb3A>n86*nf;;;?lg42900el:50;9je0<722e:;44?::\7fa7gg=83?1<7>t$0::>cb<@=on7E:j4:&bb?313`k86=44i`694?=ni<0;66gn6;29?j7013:17pl<ag83>0<729q/=575fe9K0`c<@=o?7)oi:248md5=831bm94?::kb1?6=3`k=6=44o05:>5<<uk9;h7>55;294~"6000mh6F;ed9K0`2<,hl1?;5fa283>>of<3:17do::188md0=831d=:750;9~f6??290>6=4?{%3;=?`c3A>ni6F;e59'ec<4>2cj?7>5;hc7>5<<ah?1<75fa783>>i6?00;66sm33694?3=83:p(<66:gf8L1cb3A>n86*nf;15?lg42900el:50;9je0<722cj:7>5;n34=?6=3th:m94?:283>5}#9131j45G4dg8L1c33-km6?=4i`194?=ni=0;66a>7883>>{e90n1<7=50;2x 4>>2o30D9kj;I6f0>"fn39>7do<:188md2=831d=:750;9~f7b229086=4?{%3;=?`>3A>ni6F;e59'ec<582cj?7>5;hc7>5<<g8=26=44}c1`=?6=;3:1<v*>888e=>N3ml1C8h:4$`d966=ni:0;66gn4;29?j7013:17pl=d683>1<729q/=575f`9K0`c<@=o?7)oi:0`8md5=831bm94?::kb1?6=3f;<57>5;|`0gd<72=0;6=u+19;9bd=O<lo0D9k;;%ce>7><ah91<75fa583>>of=3:17b?89;29?xd5l00;684?:1y'5=?=nm1C8hk4H5g7?!ga2;>0el=50;9je1<722cj97>5;hc5>5<<g8=26=44}c1`f?6==3:1<v*>888e`>N3ml1C8h:4$`d96<=ni:0;66gn4;29?lg22900el850;9l52?=831vn?h?:180>5<7s-;357h6;I6fa>N3m=1/mk4=3:kb7?6=3`k?6=44o05:>5<<uk8on7>54;294~"6000mm6F;ed9K0`2<,hl1?=5fa283>>of<3:17do::188k41>2900qo<kf;291?6=8r.:444id:J7a`=O<l>0(lh5389je6<722cj87>5;hc6>5<<ah<1<75`16;94?=zj:in6=4<:183\7f!7?13l27E:je:J7a1=#io0896gn3;29?lg32900c<96:188yg5dn3:187>50z&2<<<ai2B?ih5G4d68 d`==h1bm>4?::kb0?6=3`k>6=44o05:>5<<uk;j47>53;294~"6000m56F;ed9K0`2<,hl1>>5fa283>>of<3:17b?89;29?xd6i;0;6>4?:1y'5=?=n01C8hk4H5g7?!ga2;90el=50;9je1<722e:;44?::\7fa5d3=83>1<7>t$0::>cg<@=on7E:j4:&bb?503`k86=44i`694?=ni<0;66a>7883>>{e:m:1<7:50;2x 4>>2ok0D9kj;I6f0>"fn38n7do<:188md2=831bm84?::m23<<722wi>nk50;794?6|,8226kj4H5gf?M2b<2.jj794i`194?=ni=0;66gn5;29?lg12900c<96:188yg4bj3:1?7>50z&2<<<a12B?ih5G4d68 d`=:91bm>4?::kb0?6=3f;<57>5;|`1af<72:0;6=u+19;9b<=O<lo0D9k;;%ce>7b<ah91<75fa583>>i6?00;66sm2df94?3=83:p(<66:gf8L1cb3A>n86*nf;;7?lg42900el:50;9je0<722cj:7>5;n34=?6=3th9ok4?:583>5}#9131jl5G4dg8L1c33-km6;5fa283>>of<3:17do::188k41>2900qo<lb;297?6=8r.:444i9:J7a`=O<l>0(lh52e9je6<722cj87>5;n34=?6=3th9oi4?:483>5}#9131ji5G4dg8L1c33-km64:4i`194?=ni=0;66gn5;29?lg12900c<96:188yg4b;3:197>50z&2<<<al2B?ih5G4d68 d`==:1bm>4?::kb0?6=3`k>6=44i`494?=h9>31<75rb2a`>5<2290;w)?79;dg?M2bm2B?i95+ag81g>of;3:17do;:188md3=831bm;4?::m23<<722wi=5o50;194?6|,8226k74H5gf?M2b<2.jj7<<;hc0>5<<ah>1<75`16;94?=zj:>n6=4=:183\7f!7?13l37E:je:J7a1=#io0:56gn3;29?j7013:17pl<4b83>7<729q/=575f99K0`c<@=o?7)oi:0;8md5=831d=:750;9~f62f29096=4?{%3;=?`?3A>ni6F;e59'ec<612cj?7>5;n34=?6=3th8854?:383>5}#9131j55G4dg8L1c33-km6<74i`194?=h9>31<75rb265>5<5290;w)?79;d;?M2bm2B?i95+ag82=>of;3:17b?89;29?xd4<=0;6?4?:1y'5=?=n11C8hk4H5g7?!ga2830el=50;9l52?=831vn>:=:181>5<7s-;357h7;I6fa>N3m=1/mk4>9:kb7?6=3f;<57>5;|`005<72;0;6=u+19;9b==O<lo0D9k;;%ce>4?<ah91<75`16;94?=zj:9n6=4=:183\7f!7?13l37E:je:J7a1=#io0:56gn3;29?j7013:17pl<3b83>7<729q/=575f99K0`c<@=o?7)oi:0;8md5=831d=:750;9~f14a29096=4?{%3;=?`?3A>ni6F;e59'ec<612cj?7>5;n34=?6=3th?>i4?:383>5}#9131j55G4dg8L1c33-km6<74i`194?=h9>31<75rb50a>5<5290;w)?79;d;?M2bm2B?i95+ag82=>of;3:17b?89;29?xd3:00;6?4?:1y'5=?=n11C8hk4H5g7?!ga2830el=50;9l52?=831vn9<8:181>5<7s-;357h7;I6fa>N3m=1/mk4>9:kb7?6=3f;<57>5;|`760<72;0;6=u+19;9b==O<lo0D9k;;%ce>4?<ah91<75`16;94?=zj=886=4=:183\7f!7?13l37E:je:J7a1=#io0:56gn3;29?j7013:17pl;2083>7<729q/=575f99K0`c<@=o?7)oi:0;8md5=831d=:750;9~f17a29096=4?{%3;=?`?3A>ni6F;e59'ec<612cj?7>5;n34=?6=3th?=i4?:383>5}#9131j55G4dg8L1c33-km6<74i`194?=h9>31<75rb272>5<5290;w)?79;d;?M2bm2B?i95+ag82=>of;3:17b?89;29?xd3;;0;6?4?:1y'5=?=n11C8hk4H5g7?!ga2830el=50;9l52?=831vn<6m:187>5<7s-;357hn;I6fa>N3m=1/mk4<7:kb7?6=3`k?6=44i`794?=h9>31<75rb0:g>5<3290;w)?79;db?M2bm2B?i95+ag803>of;3:17do;:188md3=831d=:750;9~f4>a290?6=4?{%3;=?`f3A>ni6F;e59'ec<4?2cj?7>5;hc7>5<<ah?1<75`16;94?=zj83:6=4;:183\7f!7?13lj7E:je:J7a1=#io08;6gn3;29?lg32900el;50;9l52?=831vn<o>:187>5<7s-;357hn;I6fa>N3m=1/mk4<7:kb7?6=3`k?6=44i`794?=h9>31<75rb3g4>5<2290;w)?79;dg?M2bm2B?i95+ag861>of;3:17do;:188md3=831bm;4?::m23<<722wi?i650;194?6|,8226k74H5gf?M2b<2.jj7<k;hc0>5<<ah>1<75`16;94?=zj;oj6=4::183\7f!7?13lo7E:je:J7a1=#io02;6gn3;29?lg32900el;50;9je3<722e:;44?::\7fa7fb=83>1<7>t$0::>cg<@=on7E:j4:&bb?4b3`k86=44i`694?=ni<0;66a>7883>>{e:jk1<7;50;2x 4>>2on0D9kj;I6f0>"fn38m7do<:188md2=831bm84?::kb2?6=3f;<57>5;|`1`4<72<0;6=u+19;9ba=O<lo0D9k;;%ce>7`<ah91<75fa583>>of=3:17do9:188k41>2900qo<k3;291?6=8r.:444id:J7a`=O<l>0(lh51`9je6<722cj87>5;hc6>5<<ah<1<75`16;94?=zj;o>6=4::183\7f!7?13lo7E:je:J7a1=#io09=6gn3;29?lg32900el;50;9je3<722e:;44?::\7fa6`>=83?1<7>t$0::>cb<@=on7E:j4:&bb?4d3`k86=44i`694?=ni<0;66gn6;29?j7013:17pl=c883>0<729q/=575fe9K0`c<@=o?7)oi:3a8md5=831bm94?::kb1?6=3`k=6=44o05:>5<<uk9o<7>54;294~"6000mm6F;ed9K0`2<,hl1>h5fa283>>of<3:17do::188k41>2900qo=k6;291?6=8r.:444id:J7a`=O<l>0(lh5289je6<722cj87>5;hc6>5<<ah<1<75`16;94?=zj:n:6=4::183\7f!7?13lo7E:je:J7a1=#io09j6gn3;29?lg32900el;50;9je3<722e:;44?::\7fa7a1=83?1<7>t$0::>cb<@=on7E:j4:&bb?4>3`k86=44i`694?=ni<0;66gn6;29?j7013:17pl<d383>0<729q/=575fe9K0`c<@=o?7)oi:3d8md5=831bm94?::kb1?6=3`k=6=44o05:>5<<uk9h97>55;294~"6000mh6F;ed9K0`2<,hl1>k5fa283>>of<3:17do::188md0=831d=:750;9~f6b4290>6=4?{%3;=?`c3A>ni6F;e59'ec<5k2cj?7>5;hc7>5<<ah?1<75fa783>>i6?00;66sm3b594?3=83:p(<66:gf8L1cb3A>n86*nf;1b?lg42900el:50;9je0<722cj:7>5;n34=?6=3th9i94?:483>5}#9131ji5G4dg8L1c33-km6?m4i`194?=ni=0;66gn5;29?lg12900c<96:188yg7f?3:197>50z&2<<<al2B?ih5G4d68 d`=;11bm>4?::kb0?6=3`k>6=44i`494?=h9>31<75rb0cb>5<2290;w)?79;dg?M2bm2B?i95+ag812>of;3:17do;:188md3=831bm;4?::m23<<722wi=4<50;794?6|,8226kj4H5gf?M2b<2.jj7<9;hc0>5<<ah>1<75fa483>>of>3:17b?89;29?xd6i00;694?:1y'5=?=nh1C8hk4H5g7?!ga2:=0el=50;9je1<722cj97>5;n34=?6=3th9i=4?:483>5}#9131ji5G4dg8L1c33-km6?:4i`194?=ni=0;66gn5;29?lg12900c<96:188yg5c=3:197>50z&2<<<al2B?ih5G4d68 d`=:o1bm>4?::kb0?6=3`k>6=44i`494?=h9>31<75rb2f7>5<2290;w)?79;dg?M2bm2B?i95+ag81=>of;3:17do;:188md3=831bm;4?::m23<<722wi=l>50;794?6|,8226kj4H5gf?M2b<2.jj7<9;hc0>5<<ah>1<75fa483>>of>3:17b?89;29?xd61o0;684?:1y'5=?=nm1C8hk4H5g7?!ga2:20el=50;9je1<722cj97>5;hc5>5<<g8=26=44}c3b2?6==3:1<v*>888e`>N3ml1C8h:4$`d963=ni:0;66gn4;29?lg22900el850;9l52?=831vn<7?:186>5<7s-;357hk;I6fa>N3m=1/mk4=6:kb7?6=3`k?6=44i`794?=ni?0;66a>7883>>{e91o1<7;50;2x 4>>2on0D9kj;I6f0>"fn38=7do<:188md2=831bm84?::kb2?6=3f;<57>5;|`2e6<72=0;6=u+19;9bd=O<lo0D9k;;%ce>61<ah91<75fa583>>of=3:17b?89;29?xd60j0;684?:1y'5=?=nm1C8hk4H5g7?!ga2;<0el=50;9je1<722cj97>5;hc5>5<<g8=26=44}c1`<?6=:3:1<v*>888e6>N3ml1C8h:4i`094?=h9>31<75rb5a5>5<3:3:1<v*>8882<4=O<lo0D9k;;[7;>d}f2k08=7==:07953<4;3;<6>:5198~ `c=<2.nj7:4$`590>"f03>0(l754:&be?2<,hh186*nc;68 4>22:1/=5853:&a4?2<,k;186*m2;68 g5=<2.i87:4$c790>"e>3>0(o954:&a<?2<,k3186*ma;68 gd=<2.io7:4$cf90>"em3>0(oh54:&`4?2<,j;186*l2;68 f5=<2.h87:4$b790>"d>3>0(n954:&`<?2<,j3186*la;68 fd=<2.ho7:4$bf90>"dm3>0(nh54:&g4?2<,m;186*k2;68 a5=<2.o87:4$e790>"c>3>0(i954:&g<?2<,m3186*ka;68 ad=<2.oo7:4$ef90>"cm3>0(ih54:&f4?2<,l;186*j2;68 `5=<2.n87:4$d790>"b>3>0(h954:&f<?2<,l3186*ja;68 `d=<2.no7:4$df90>"3mk0?i45+ae87?!7?;3;<46*i0;18 c7=;2.?il4;e89'e`<33`?m6=44i7294?=n1<0;66g66;29?l7??3:17d?78;29?l2b?3:17d:j8;29?l5c290/=:k53b9m52b=821b8;4?:%34a?5d3g;<h7?4;h66>5<#9>o1?n5a16f96>=n<=0;6)?8e;1`?k70l3907d:<:18'52c=;j1e=:j54:9j07<72-;<i7=l;o34`?3<3`>:6=4+16g97f=i9>n1:65f4183>!70m39h7c?8d;58?l5a290/=:k53b9m52b=021b?h4?:%34a?5d3g;<h774;h1a>5<#9>o1?n5a16f9e>=n<00;6)?8e;6;?k70l3:07d;=:18'52c=<11e=:j51:9j14<72-;<i7:7;o34`?4<3`?;6=4+16g90==i9>n1?65f4g83>!70m3>37c?8d;68?l2b290/=:k5499m52b==21b8i4?:%34a?2?3g;<h784;h6`>5<#9>o1855a16f93>=n<k0;6)?8e;6;?k70l3207d:n:18'52c=<11e=:j59:9j02<72-;<i7:7;o34`?g<3`<m6=4+16g92`=i9>n1<65f6e83>!70m3<n7c?8d;38?l0d290/=:k56d9m52b=:21b:o4?:%34a?0b3g;<h7=4;h4b>5<#9>o1:h5a16f90>=n>00;6)?8e;4f?k70l3?07d87:18'52c=>l1e=:j56:9j22<72-;<i78j;o34`?1<3`=36=4+16g932=i9>n1<65f7783>!70m3=<7c?8d;38?l12290/=:k5769m52b=:21b;94?:%34a?103g;<h7=4;h50>5<#9>o1;:5a16f90>=n?;0;6)?8e;54?k70l3?07d9>:18'52c=?>1e=:j56:9j35<72-;<i798;o34`?1<3`=j6=4+16g93<=i9>n1<65f7b83>!70m3=i7c?8d;28?j>2290/=:k5859m52b=821d4>4?:%34a?>33g;<h7?4;n:1>5<#9>o1495a16f96>=h080;6)?8e;:7?k70l3907b6?:18'52c=0=1e=:j54:9l3c<72-;<i76;;o34`?3<3f=n6=4+16g9<1=i9>n1:65`7e83>!70m32?7c?8d;58?j?7290/=:k58g9m52b=821d4h4?:%34a?>c3g;<h7>4;n:`>5<#9>o14i5a16f95>=h0k0;6)?8e;:g?k70l3807b6n:18'52c=0m1e=:j53:9l<<<72-;<i76k;o34`?2<3f236=4+16g9<a=i9>n1965`8683>!70m32o7c?8d;48?j>1290/=:k58e9m52b=?21d5?4?:%34a??63g;<h7>4;|`7g2<72=81<7>t$0::>4>63A>ni6F;e59Y1=<fsh0i6>?533821?712:91=:4<4;3;>x"bm3>0(hh54:&b3?2<,h2186*n9;68 dg=<2.jn7:4$`a90>"60<087)?76;18 g6=<2.i=7:4$c090>"e;3>0(o:54:&a1?2<,k<186*m7;68 g>=<2.i57:4$cc90>"ej3>0(om54:&a`?2<,ko186*mf;68 f6=<2.h=7:4$b090>"d;3>0(n:54:&`1?2<,j<186*l7;68 f>=<2.h57:4$bc90>"dj3>0(nm54:&``?2<,jo186*lf;68 a6=<2.o=7:4$e090>"c;3>0(i:54:&g1?2<,m<186*k7;68 a>=<2.o57:4$ec90>"cj3>0(im54:&g`?2<,mo186*kf;68 `6=<2.n=7:4$d090>"b;3>0(h:54:&f1?2<,l<186*j7;68 `>=<2.n57:4$dc90>"bj3>0(hm54:&f`?2<,=oi69k6;%cg>1=#9191=:64$g297>"a9390(9kn:5g:?!gb2=1b9k4?::k54?6=3`3>6=44i8494?=n91=1<75f19:94?=n<l=1<75f4d:94?=n;m0;6)?8e;1`?k70l3:07d:9:18'52c=;j1e=:j51:9j00<72-;<i7=l;o34`?4<3`>?6=4+16g97f=i9>n1?65f4283>!70m39h7c?8d;68?l25290/=:k53b9m52b==21b8<4?:%34a?5d3g;<h784;h63>5<#9>o1?n5a16f93>=n;o0;6)?8e;1`?k70l3207d=j:18'52c=;j1e=:j59:9j7g<72-;<i7=l;o34`?g<3`>26=4+16g90==i9>n1<65f5383>!70m3>37c?8d;38?l36290/=:k5499m52b=:21b9=4?:%34a?2?3g;<h7=4;h6e>5<#9>o1855a16f90>=n<l0;6)?8e;6;?k70l3?07d:k:18'52c=<11e=:j56:9j0f<72-;<i7:7;o34`?1<3`>i6=4+16g90==i9>n1465f4`83>!70m3>37c?8d;;8?l20290/=:k5499m52b=i21b:k4?:%34a?0b3g;<h7>4;h4g>5<#9>o1:h5a16f95>=n>j0;6)?8e;4f?k70l3807d8m:18'52c=>l1e=:j53:9j2d<72-;<i78j;o34`?2<3`<26=4+16g92`=i9>n1965f6983>!70m3<n7c?8d;48?l00290/=:k56d9m52b=?21b;54?:%34a?103g;<h7>4;h55>5<#9>o1;:5a16f95>=n?<0;6)?8e;54?k70l3807d9;:18'52c=?>1e=:j53:9j36<72-;<i798;o34`?2<3`=96=4+16g932=i9>n1965f7083>!70m3=<7c?8d;48?l17290/=:k5769m52b=?21b;l4?:%34a?1>3g;<h7>4;h5`>5<#9>o1;o5a16f94>=h0<0;6)?8e;:7?k70l3:07b6<:18'52c=0=1e=:j51:9l<7<72-;<i76;;o34`?4<3f2:6=4+16g9<1=i9>n1?65`8183>!70m32?7c?8d;68?j1a290/=:k5859m52b==21d;h4?:%34a?>33g;<h784;n5g>5<#9>o1495a16f93>=h190;6)?8e;:e?k70l3:07b6j:18'52c=0m1e=:j50:9l<f<72-;<i76k;o34`?7<3f2i6=4+16g9<a=i9>n1>65`8`83>!70m32o7c?8d;18?j>>290/=:k58e9m52b=<21d454?:%34a?>c3g;<h7;4;n:4>5<#9>o14i5a16f92>=h0?0;6)?8e;:g?k70l3=07b7=:18'52c=181e=:j50:9~f1e?290?>7>50z&2<<<6081C8hk4H5g7?_3?2hqj6o4<1;11>43=9?08?7?8:2695=<z,lo186*jf;68 d1=<2.j47:4$`;90>"fi3>0(ll54:&bg?2<,82>6>5+19497>"e83>0(o?54:&a6?2<,k9186*m4;68 g3=<2.i:7:4$c590>"e03>0(o754:&ae?2<,kh186*mc;68 gb=<2.ii7:4$cd90>"d83>0(n?54:&`6?2<,j9186*l4;68 f3=<2.h:7:4$b590>"d03>0(n754:&`e?2<,jh186*lc;68 fb=<2.hi7:4$bd90>"c83>0(i?54:&g6?2<,m9186*k4;68 a3=<2.o:7:4$e590>"c03>0(i754:&ge?2<,mh186*kc;68 ab=<2.oi7:4$ed90>"b83>0(h?54:&f6?2<,l9186*j4;68 `3=<2.n:7:4$d590>"b03>0(h754:&fe?2<,lh186*jc;68 `b=<2.?io4;e89'ea<33-;3?7?88:&e4?5<,o;1?6*;e`87a<=#il0?7d;i:188m36=831b584?::k:2?6=3`;3;7>5;h3;<?6=3`>n;7>5;h6f<?6=3`9o6=4+16g97f=i9>n1<65f4783>!70m39h7c?8d;38?l22290/=:k53b9m52b=:21b894?:%34a?5d3g;<h7=4;h60>5<#9>o1?n5a16f90>=n<;0;6)?8e;1`?k70l3?07d:>:18'52c=;j1e=:j56:9j05<72-;<i7=l;o34`?1<3`9m6=4+16g97f=i9>n1465f3d83>!70m39h7c?8d;;8?l5e290/=:k53b9m52b=i21b844?:%34a?2?3g;<h7>4;h71>5<#9>o1855a16f95>=n=80;6)?8e;6;?k70l3807d;?:18'52c=<11e=:j53:9j0c<72-;<i7:7;o34`?2<3`>n6=4+16g90==i9>n1965f4e83>!70m3>37c?8d;48?l2d290/=:k5499m52b=?21b8o4?:%34a?2?3g;<h764;h6b>5<#9>o1855a16f9=>=n<>0;6)?8e;6;?k70l3k07d8i:18'52c=>l1e=:j50:9j2a<72-;<i78j;o34`?7<3`<h6=4+16g92`=i9>n1>65f6c83>!70m3<n7c?8d;18?l0f290/=:k56d9m52b=<21b:44?:%34a?0b3g;<h7;4;h4;>5<#9>o1:h5a16f92>=n>>0;6)?8e;4f?k70l3=07d97:18'52c=?>1e=:j50:9j33<72-;<i798;o34`?7<3`=>6=4+16g932=i9>n1>65f7583>!70m3=<7c?8d;18?l14290/=:k5769m52b=<21b;?4?:%34a?103g;<h7;4;h52>5<#9>o1;:5a16f92>=n?90;6)?8e;54?k70l3=07d9n:18'52c=?01e=:j50:9j3f<72-;<i79m;o34`?6<3f2>6=4+16g9<1=i9>n1<65`8283>!70m32?7c?8d;38?j>5290/=:k5859m52b=:21d4<4?:%34a?>33g;<h7=4;n:3>5<#9>o1495a16f90>=h?o0;6)?8e;:7?k70l3?07b9j:18'52c=0=1e=:j56:9l3a<72-;<i76;;o34`?1<3f3;6=4+16g9<c=i9>n1<65`8d83>!70m32o7c?8d;28?j>d290/=:k58e9m52b=921d4o4?:%34a?>c3g;<h7<4;n:b>5<#9>o14i5a16f97>=h000;6)?8e;:g?k70l3>07b67:18'52c=0m1e=:j55:9l<2<72-;<i76k;o34`?0<3f2=6=4+16g9<a=i9>n1;65`9383>!70m33:7c?8d;28?xd3k00;69<50;2x 4>>282:7E:je:J7a1=]=10jwl4m:23977<6=3;=6>=516800?7?2t.ni7:4$dd90>"f?3>0(l654:&b=?2<,hk186*nb;68 de=<2.:484<;%3;2?5<,k:186*m1;68 g4=<2.i?7:4$c690>"e=3>0(o854:&a3?2<,k2186*m9;68 gg=<2.in7:4$ca90>"el3>0(ok54:&ab?2<,j:186*l1;68 f4=<2.h?7:4$b690>"d=3>0(n854:&`3?2<,j2186*l9;68 fg=<2.hn7:4$ba90>"dl3>0(nk54:&`b?2<,m:186*k1;68 a4=<2.o?7:4$e690>"c=3>0(i854:&g3?2<,m2186*k9;68 ag=<2.on7:4$ea90>"cl3>0(ik54:&gb?2<,l:186*j1;68 `4=<2.n?7:4$d690>"b=3>0(h854:&f3?2<,l2186*j9;68 `g=<2.nn7:4$da90>"bl3>0(9km:5g:?!gc2=1/=5=516:8 c6=;2.m=7=4$5gb>1c>3-kn695f5g83>>o183:17d7::188m<0=831b=5950;9j5=>=831b8h950;9j0`>=831b?i4?:%34a?5d3g;<h7>4;h65>5<#9>o1?n5a16f95>=n<<0;6)?8e;1`?k70l3807d:;:18'52c=;j1e=:j53:9j06<72-;<i7=l;o34`?2<3`>96=4+16g97f=i9>n1965f4083>!70m39h7c?8d;48?l27290/=:k53b9m52b=?21b?k4?:%34a?5d3g;<h764;h1f>5<#9>o1?n5a16f9=>=n;k0;6)?8e;1`?k70l3k07d:6:18'52c=<11e=:j50:9j17<72-;<i7:7;o34`?7<3`?:6=4+16g90==i9>n1>65f5183>!70m3>37c?8d;18?l2a290/=:k5499m52b=<21b8h4?:%34a?2?3g;<h7;4;h6g>5<#9>o1855a16f92>=n<j0;6)?8e;6;?k70l3=07d:m:18'52c=<11e=:j58:9j0d<72-;<i7:7;o34`??<3`><6=4+16g90==i9>n1m65f6g83>!70m3<n7c?8d;28?l0c290/=:k56d9m52b=921b:n4?:%34a?0b3g;<h7<4;h4a>5<#9>o1:h5a16f97>=n>h0;6)?8e;4f?k70l3>07d86:18'52c=>l1e=:j55:9j2=<72-;<i78j;o34`?0<3`<<6=4+16g92`=i9>n1;65f7983>!70m3=<7c?8d;28?l11290/=:k5769m52b=921b;84?:%34a?103g;<h7<4;h57>5<#9>o1;:5a16f97>=n?:0;6)?8e;54?k70l3>07d9=:18'52c=?>1e=:j55:9j34<72-;<i798;o34`?0<3`=;6=4+16g932=i9>n1;65f7`83>!70m3=27c?8d;28?l1d290/=:k57c9m52b=821d484?:%34a?>33g;<h7>4;n:0>5<#9>o1495a16f95>=h0;0;6)?8e;:7?k70l3807b6>:18'52c=0=1e=:j53:9l<5<72-;<i76;;o34`?2<3f=m6=4+16g9<1=i9>n1965`7d83>!70m32?7c?8d;48?j1c290/=:k5859m52b=?21d5=4?:%34a?>a3g;<h7>4;n:f>5<#9>o14i5a16f94>=h0j0;6)?8e;:g?k70l3;07b6m:18'52c=0m1e=:j52:9l<d<72-;<i76k;o34`?5<3f226=4+16g9<a=i9>n1865`8983>!70m32o7c?8d;78?j>0290/=:k58e9m52b=>21d4;4?:%34a?>c3g;<h794;n;1>5<#9>o15<5a16f94>=zj;nh6=4::183\7f!7?13li7E:je:J7a1=#io09n6gn3;29?lg32900el;50;9lb0<722e:;44?::\7fa6`7=83>1<7>t$0::>ce<@=on7E:j4:&bb?4b3`k86=44i`694?=ni<0;66ai5;29?xd5m?0;6;4?:1y'5=?=nl1C8hk4H5g7?!ga2;l0el=50;9je1<722cj97>5;hc5>5<<go?1<75`16;94?=zj;o96=4;:183\7f!7?13lh7E:je:J7a1=#io09i6gn3;29?lg32900el;50;9lb0<722wi>ij50;694?6|,8226km4H5gf?M2b<2.jj7<j;hc0>5<<ah>1<75fa483>>ia=3:17pl=cb83>3<729q/=575fd9K0`c<@=o?7)oi:49je6<722cj87>5;hc6>5<<ah<1<75`f483>>i6?00;66s|61`94?0|V?:i70<i3;c6?84ai3k=70<i6;c5?84bn3k>70<je;c6?xu28>0;65<t^42:?[2a?2T==>5Q6038Z1`13W<;i6P:a79]244<V<k<7S;lc:\7b`=Y<on0R8>9;_731>X28=1U9==4^421?[3792T><=5Q4gd8Z1`d3W>mn63;eg8b4>;3lh0=963;cg851>;3l00=963;d9851>;3l>0=963;e3851>;3m80=963=b`823c=::kh1=:h4=3`f>41a348ij7?8f:?1g5<6?o16>n?516d897e528=m70<l3;34b>;5k=0:;k522b7952`<5;hh6<9i;<0a`?70n278<;496:?040<1>278<9496:?046<1>278<?496:?044<1>278=i496:?05f<1>278=o496:?05d<1>278=4496:?05=<1>2785<496:?0=5<1>2784k496:?0<`<1>2784i496:?0<f<1>278m5496:?0e2<1>278m;496:?0e0<1>278m9496:?0e6<1>2788i496:?00g<1>27884496:?002<1>27888496:?006<1>2788<496:?07c<1>278?i496:?07g<1>27?>h496:?76f<1>27?>l496:?76=<1>27?>;496:?761<1>27?>?496:?765<1>27?=h496:?75f<1>27?o;4>869>0f0=<l2019m9:6:891e12><019m9:67891e12>>019m9:61891e12>8019m9:63891e12>:019m9:6a891e0282<70:l7;6f<>;3k>0<463;c6842>;3k>0<963;c6840>;3k>0<?63;c6846>;3k>0<=63;c6844>;3k>0<o63;c982<2=:<j218h64=5a;>2><5=i36:84=5a;>23<5=i36::4=5a;>25<5=i36:<4=5a;>27<5=i36:>4=5a;>2e<5=i26<68;<6`=?2b027?o4488:?7g<<0>27?o4485:?7g<<0<27?o4483:?7g<<0:27?o4481:?7g<<0827?o448c:\7fp25b=839pR;>k;<6ge?70n27?ok4>7g9~w0?c2909wS;6d:?1b=<6091v\7f;<j:180\7f[05m27?==4n4:?0fd<f=2wx9k?50;:0\7f[3a927?h<4:9:?7`5<2127?ok4:9:?7`<<2127?h54:9:?7`2<21278>n4:9:?1fd<21279no4:9:?1f`<21279nk4:9:?1g5<21279o<4:9:?1g7<21279o>4:9:?1g1<21279o84:9:?1ff<21279ni4:9:?174<21279?44:9:?17=<21279?:4:9:?173<21279?84:9:?171<21279?>4:9:?177<21279?=4:9:?16c<21279;n4:9:?1<1<212794>4:9:?1<7<212794<4:9:?1<5<21279;k4:9:?13`<21279;i4:9:?13g<21279;l4:9:?123<21279:h4:9:?12a<21279:n4:9:?12g<21279:l4:9:?12<<21279:54:9:?122<21279:84:9:?121<2127:i>4:9:?2ag<2127:il4:9:?2a<<2127:i54:9:?2a2<2127:i;4:9:?2a0<2127:i94:9:?2a7<2127:i<4:9:?02=<21278;=4:9:?02`<21278:i4:9:?02c<21278:o4:9:?02d<21278:n4:9:?022<21278:;4:9:?02<<21278;h4:9:?0<3<21278484:9:?0<1<212784>4:9:?0<7<212784<4:9:?0<5<21278;k4:9:?03a<21278;n4:9:?1b1<21279j<4:9:?1bg<21279j54:9:?1b2<2127?5o4:9:?7=d<2127?544:9:?7==<2127?5:4:9:?7=3<2127?594:9:?7=6<2127?5?4:9:?7=4<2127?5=4:9:?7<c<2127?4h4:9:?7<a<2127?4n4:9:?7<g<2127?444:9:?7<=<2127?4:4:9:?7<3<2127?484:9:?7<1<2127?4>4:9:?7<7<2127?4<4:9:?7<5<2127?m<4:9:?7e5<2127?5k4:9:?7=`<2127?5i4:9:?7=f<2127?584:9:?7<d<2127?;k4:9:?73`<2127?o;490:?7g2<1827?o5490:?7g<<182wx9l=50;0xZ0g4349i47?70:\7fp242=83<>wS8>4:?7`f<2127?hl4:9:?7`g<2127?i?4:9:?7a4<21278n54:9:?0f2<21278jl4:9:?0bg<21278jh4:9:?0bc<2127?<=4:9:?744<2127?<?4:9:?746<2127?<94:9:?740<21278jn4:9:?0ba<2127:o94:9:?2gf<2127:oo4:9:?2gd<2127:o44:9:?2g=<2127:o:4:9:?2g3<2127:o84:9:?2g6<2127:o?4:9:?14c<21279=:4:9:?153<21279=84:9:?151<21279=>4:9:?157<21279=<4:9:?155<21279<h4:9:?14a<2127:j44:9:?144<21279<=4:9:?2bc<2127:jh4:9:?2ba<2127:jn4:9:?2bg<2127:jl4:9:?2b=<2127:j:4:9:?115<21279954:9:?112<212799;4:9:?110<21279994:9:?116<212799?4:9:?114<212798k4:9:?10`<2127?844:9:?714<2127?8k4:9:?70`<2127?9=4:9:?70f<2127?8o4:9:?70a<2127?854:9:?702<2127?8l4:9:?725<2127?9i4:9:?71`<2127?:>4:9:?724<2127?:?4:9:?723<2127?:94:9:?720<2127?::4:9:?71c<2127?;84:9:?73a<2127?;n4:9:?73g<2127?;l4:9:?73<<2127?;54:9:?732<2127?;;4:9:?731<2127?;>4:9:?7g3<2n27?o:4:f:?7g=<2n27?o44:f:\7fp272=838pR;?7;<1e`?7?82wx:?<50;0xZ370349mo7?70:\7fp27b=838pR;<?;<631?7?82wx:?m50;0xZ37a34>;87?70:\7fp27d=838pR;?j;<637?7?82wx:?o50;0xZ37c34>;>7?70:\7fp27?=838pR;?l;<635?7?82wx:?650;0xZ37e34>;<7?70:\7fp271=838pR;?n;<1eb?7?82wx:?850;0xZ37>349mi7?70:\7fp273=838pR;?9;<1ef?7?82wx:??50;0xZ372349mm7?70:\7fp1<2=838pR89?;<6:f?7?82wx94<50;0xZ00a34>2m7?70:\7fp1<7=838pR88j;<6:=?7?82wx94>50;0xZ00c34>247?70:\7fp1=`=838pR88l;<6:3?7?82wx95k50;0xZ00e34>2:7?70:\7fp1=e=838pR886;<6:0?7?82wx95l50;0xZ00?34>2?7?70:\7fp1=g=838pR888;<6:6?7?82wx95750;0xZ00134>2=7?70:\7fp1=>=838pR88:;<6:4?7?82wx95950;0xZ00334>3j7?70:\7fp1=0=838pR88<;<6;a?7?82wx95;50;0xZ00534>3h7?70:\7fp1=2=838pR88>;<6;g?7?82wx95=50;0xZ00734>3n7?70:\7fp1=7=838pR8;j;<6;=?7?82wx95>50;0xZ03c34>347?70:\7fp12`=838pR8;l;<6;3?7?82wx9:k50;0xZ03e34>3:7?70:\7fp12b=838pR8;n;<6;1?7?82wx9:m50;0xZ03>34>387?70:\7fp12d=838pR8;7;<6;7?7?82wx9:o50;0xZ03034>3>7?70:\7fp12?=838pR8;9;<6;5?7?82wx9:650;0xZ03234>3<7?70:\7fp1<d=838pR899;<6b5?7?82wx94o50;0xZ01234>j<7?70:\7fp1<?=838pR89;;<6:b?7?82wx94650;0xZ01434>2i7?70:\7fp1<1=838pR89=;<6:`?7?82wx94850;0xZ01634>2o7?70:\7fp1<3=838pR88n;<6:1?7?82wx95j50;0xZ03a34>3m7?70:\7fp1=4=838pR8;;;<64b?7?82wx9:950;0xZ03434><i7?70:\7fp257=838pR8h:;<0a`?7?82wx9kh50;0xZ0`3348io7?70:\7fp25g=838pR8hk;<0`1?7?82wx:=750;0xZ0`d348h87?70:\7fp25>=838pR8hm;<0`7?7?82wx:=950;0xZ0`f348h>7?70:\7fp250=838pR8h6;<0`5?7?82wx:=;50;0xZ0`?348h<7?70:\7fp252=838pR8h8;<0ab?7?82wx:==50;0xZ0`1348ii7?70:\7fp254=838pR8h<;<0af?7?82wx9kk50;0xZ0`5348im7?70:\7fp11d=838pR8<8;<6`=?1f3ty>844?:3y]170<5=i26;h4}r77<?6=:rT>>8524b;92a=z{<><6=4={_710>;3k00=o6s|55494?4|V<8870:l9;4a?xu2<<0;6?uQ530891e>2?k0q~;;3;296~X2:9168n75689~w0252909wS;>f:?7g<<102wx99?50;0xZ07b34>h5788;|q605<72;qU9<j4=5a;>2g<uz?8j7>52z\65f=:<j21:k5rs41f>5<5sW?:n63;c985`>{t=:n1<7<t^43b?82d03<h7p}:3b83>7}Y=83019m7:7`8yv34j3:1>vP:199>0f>=>h1v\7f8=n:181\7f[36?27?o5499:\7fp16>=838pR8?:;<6`<?0?3ty>?:4?:3y]142<5=i36;94}r702?6=:rT>=>524b593d=z{<9>6=4={_726>;3k>0=j6s|52694?4|V<;:70:l7;4g?xu2;:0;6?uQ502891e02?i0q~;<2;296~X28o168n956c9~w0562909wS;?e:?7g2<1i2wx9>>50;0xZ06c34>h;786;|q66c<72;qU9=m4=5a4>3><uz?>>7>52z\66a=:<j=1::5rs472>5<5sW?9o63;c784e>{t=<:1<7<t^40a?82d>3<m7p}:4g83>7}Y=;k019m9:7f8yv33m3:1>vP:289>0f0=>j1v\7f8:k:181\7f[35027?o;49b:\7fp11e=838pR8<>;<6`2?0f3ty>894?:3y]140<5=i=6;74}r70=?6=:rT><o524b492==z{<8n6=4={_73e>;3k?0=;6s|11694?76s4>m<7?8b:?1=<<2m279mh4:e:?0`<<2m278ih4:e:?044<2m278=54:e:?0<f<2m278m>4:e:?00c<2m278?o4:e:?775<2m27?=n4:e:?7g3<>=27?o:465:?7g=<>=27?o4465:\7fp0a6=839p19j>:77891b7282;70:lf;7`?xu3l80;6?u24e395=6<5=n86l=4}r6gf?6=;r7?hn495:?7`d<2k27?ho4>819~w1bd2909w0:kc;3;4>;3ll0j?6s|4bd94?5|5=n;6;;4=5ae>4>734>o?7o;;|q7`d<72:q68io5192891be2??019jj:`68yv2c:3:18v3;d8823c=:<m21=:h4=5f4>41a34>o?7?89:\7fp0a0=838iw0:k9;3;4>;4:j0:;k522cc924=::kh1:<522cg924=::kl1:<522b2924=::j;1:<522b0924=::j91:<522b6924=::j?1:<522ca924=::kn1:<5237:924=:;>:1:<5237g924=:;?n1:<5237d924=:;?h1:<5237c924=:;?i1:<52375924=:;?<1=:h4=24:>37<5:=n6;?4=2:5>37<5:2>6;?4=2:7>37<5:286;?4=2:1>37<5:2:6;?4=2:3>37<5:=m6;?4=25g>37<5:=h6;?4=3d7>37<5;l:6;?4=3da>37<5;l36<9i;<0e3?70n279o:4n4:?1gf<f>2wx8i;50;0g\7f82c03;3<63=30855>;5;00==63=39855>;5;>0==63=37855>;5;<0==63=35855>;5;:0==63=33855>;5;90==63=2g855>;5?j0==63=85855>;50:0==63=83855>;5080==63=81855>;5?o0==63=7d855>;5?m0==63=7c855>;5?h0==63=67855>;5>l0==63=6e855>;5>j0==63=6c855>;5>h0==63=68855>;5>10==63=66855>;5><0==63=65855>;6m:0==63>ec855>;6mh0==63>e8855>;6m10==63>e6855>;6m?0==63>e4855>;6m=0==63>e3855>;6m80==6s|4e694?4fs4>o;7?70:?7=g<1927?5l491:?7=<<1927?55491:?7=2<1927?5;491:?7=1<1927?5>491:?7=7<1927?5<491:?7=5<1927?4k491:?7<`<1927?4i491:?7<f<1927?4o491:?7<<<1927?45491:?7<2<1927?4;491:?7<0<1927?49491:?7<6<1927?4?491:?7<4<1927?4=491:?7e4<1927?m=491:?7=c<1927?5h491:?7=a<1927?5n491:?7=0<1927?4l491:?73c<1927?;h491:?7gg<f<27?o;4>899>0f1=912019m7:0:;?82d13;346s|4ef94?5|5=o96<9i;<6f5?70n27?hh4>789~w1c72908<v3;e382<5=:;k21=:h4=2`4>41a349mm78>;<1ef?06349mi78>;<1eb?0634>;<78>;<635?0634>;>78>;<637?0634>;878>;<631?06349mo78>;<1e`?0634>?578>;<665?0634>?j78>;<67a?0634>><78>;<67g?0634>?n78>;<67`?0634>?47?8f:?702<1927?8l491:?725<1927?9i4>7g9>00c=>8168;=5609>037=>8168;<5609>030=>8168;:5609>033=>8168;95609>00`=>8168:;5609>02b=>8168:m5609>02d=>8168:o5609>02?=>8168:65609>021=>8168:85609>022=>8168:=5609~w1ba2909hv3;e082<5=:9j>1:<521ba924=:9jh1:<521bc924=:9j31:<521b:924=:9j=1:<521b4924=:9j?1:<521b1924=:9j81:<5221d924=::8=1:<52204924=::8?1:<52206924=::891:<52200924=::8;1:<52202924=::9o1:<5221f924=:9o31:<52213924=::9:1:<521gd924=:9oo1:<521gf924=:9oi1:<521g`924=:9ok1:<521g:924=:9o=1:<52242924=::<21:<52245924=::<<1:<52247924=::<>1:<52241924=::<81:<52243924=::=l1:<5225g924=z{:8o6=4={<11g?023499i7?89:\7fp77e=839p1><l:0:3?84a>3k870<je;c0?xu5k?0;6?u22cc920=::j=1=:74}r0g0?6=:r79no495:?1`0<6?01v\7f?j9:181\7f84em3<>70<k7;34=>{t:m21<7<t=3`e>33<5;n26<96;|q1`d<72;q6>n>5649>6ad=9>30q~<ke;296~;5k80=963=dg823<=z{;o;6=4={<0`6?02348n<7?89:\7fp6`5=838p1?m<:77897c428=27p}=e683>7}::j>1:8522d5952?<uz8n57>52z?1g0<1=279ii4>789~w7e?2909w0<mc;46?84dl3;<56s|2e094?4|5;ho6;;4=3f0>41>3ty8n44?:2y>7g>=><16?o95649>7gg=9>30q~=m7;297~;4j>0:4=524029e6=:;kk1m95rs2d:>5<5s49mm78:;<1fa?7012wx8=950;0x96`e2??01>m7:05:?xu3810;6?u23gg920=:;j31=:74}r63=?6=:r78jk495:?0gd<6?01v\7f9>n:181\7f82783<>70=lb;34=>{t<9h1<7<t=522>33<5:in6<96;|q74f<72;q68=<5649>7f`=9>30q~:?d;296~;38:0=963<d5823<=z{=:n6=4={<630?02349o:7?89:\7fp05`=838p19>::77896b028=27p};0783>7}:;oi1:8523b5952?<uz9h87>52z?0ba<1=278o84>789~w743290>w0<n3;c0?84>13<=70<=f;3;4>;48m0j:63<258b2>{t;>;1<76t=3c0>d2<5:=h6<6?;<3:g?g3349;h7o:;<6`2?2034>h;7:8;<6`<?2034>h57:8;|q1e6<72:q6>l=516;897?>282970<ne;d7?xu5100;6>u228;952?<5;3j68k4=3`3>0c<uz8i57>52z?1e`<6?016>n95a79~w741290>w0<n5;c0?84>i3<=70<<0;3;4>;48m0j863<258b0>{t;>91<77t=3c6>d2<5:=o6<6?;<3:g?g434;2n7o;;<13`?g434>h:7:n;<6`3?2f34>h47:n;<6`=?2f3ty9m84?:2y>6d3=9>301?7n:0:1?84e83l?7p}=9`83>6}::0k1=:74=3;a>0c<5;h:68k4}r0:<?6=0r79n=4>789>6a3=i:16>i95a49>6a?=i?16>no5a59>6ae=i=16>h85a59>6ab=i=1v\7f?<8:186\7f84f>3k870<6b;45?844:3;3<63<248b2>;48l0j:6s|36694??|5;k=6l:4=25e>4>734;2n7o<;<3:e?g3349;i7o:;<6`2?2e34>h;7:m;<6`<?2e34>h57:m;|q1e3<72:q6>l8516;897?e282970<m1;d7?xu51k0;6>u228`952?<5;3h68k4=3`1>0c<uz8287>57z?1f4<6?016>i95a59>6a?=i:16>no5a49>6ae=i<16>h85a49>6ab=i<1v\7f?<7:186\7f84f?3k870<6c;45?844;3;3<63<248b0>;48l0j86s|36794??|5;k<6l:4=2:3>4>734;2m7o<;<3:=?g3349;i7o<;<6`2?2d34>h;7:l;<6`<?2d34>h57:l;|q1e2<72:q6>l9516;897?d282970<m2;d7?xu51j0;6>u228a952?<5;3o68k4=3`0>0c<uz8297>56z?1f7<6?016>i75a59>6fg=i:16>h:5a49>6ae=i:16>h85a29~w74>290>w0<n8;c0?84>l3<=70<<4;3;4>;4:?0j:63<0g8b2>{t;><1<77t=3c;>d2<5:2:6<6?;<3:=?g434;247o;;<13b?g234>h:7:k;<6`3?2c34>h47:k;<6`=?2c3ty9m54?:2y>6d>=9>301?7k:0:1?84e;3l?7p}=9e83>6}::0n1=:74=3;f>0c<5;h?68k4}r0:2?6=0r79n>4>789>6ad=i=16>ih5a59>6a6=i=16>h:5a59>6`7=i:16>h85a79>6`4=i:1v\7f?<n:186\7f84f13k870<6e;45?844=3;3<63<278b0>;48o0j86s|36594??|5;k26l:4=2:1>4>734;247o<;<3:3?g3349;j7o<;<6`2?2b34>h;7:j;<6`<?2b34>h57:j;|q1e<<72:q6>l7516;897?b282970<m4;d7?xu51l0;6>u228g952?<5;3m68k4=3`6>0c<uz82;7>59z?1f1<6?016>ih5a49>6a6=i<16>h=5a59>6`3=i<16>h65a49>6`6=i:16>h?5a59>6`4=i=1v\7f?<m:186\7f84fi3k870<6f;45?844>3;3<63<268b2>;4990j:6s|36:94??|5;kj6l:4=2:0>4>734;2;7o<;<3:2?g3349:<7o:;<6`2?2a34>h;7:i;<6`<?2a34>h57:i;|q1ed<72:q6>lo516;897?a282970<m5;d7?xu51o0;6>u228d952?<5;k;68k4=3`5>0c<uz83j7>59z?1f0<6?016>nk5a59>6fg=i?16>i?5a59>6`3=i:16>h65a59>6`2=i:16>h>5a59>6`7=i<1v\7f?<l:186\7f84fj3k870<n0;45?844?3;3<63<268b0>;4990j86s|36;94??|5;ki6l:4=2:7>4>734;2:7o<;<3:1?g3349:<7o<;<6`2?3734>h;7;?;<6`<?3734>h57;?;|q1eg<72:q6>ll516;897g7282970<m6;d7?xu5i90;6>u22`2952?<5;k:68k4=3`4>0c<uz82<7>57z?1f3<6?016>nk5a29>6`5=i:16>ho5a29>6a7=i:16>h65a29>6`4=i<1v\7f?<k:186\7f84fk3k870<n1;45?84403;3<63<298b2>;4980j:6s|36c94??|5;kh6l:4=2:6>4>734;297o<;<3:0?g3349:=7o:;<6`2?3634>h;7;>;<6`<?3634>h57;>;|q1ef<72:q6>lm516;897g6282970<m7;d7?xu5i80;6>u22`3952?<5;k968k4=3`;>0c<uz82=7>57z?1f2<6?016>hl5a59>6f`=i=16>h95a59>6`g=i=16>i?5a79>6f?=i=1v\7f?<j:186\7f84fl3k870<n2;45?84413;3<63<298b0>;4980j86s|36`94??|5;ko6l:4=2:5>4>734;287o<;<3:7?g3349:=7o<;<6`2?3534>h;7;=;<6`<?3534>h57;=;|q1ea<72:q6>lj516;897g5282970<m8;d7?xu5i;0;6?u22`0952?<5;km68k4}r0:6?6=>r79n54>789>6`d=i:16>hm5a59>6f`=i:16>i?5a49>6f?=i:1v\7f?<::187\7f84f<3k870<<1;3;4>;4:00j?63<138b7>{t;>81<77t=3c7>d2<58o86;;4=25f>4>734;2?7o<;<126?g334>h:7:6;<6`3?2>34>h47:6;<6`=?2>3ty9m94?:3y>6d2=9>301?oi:g68yv4>;3:18v3=ag823<=::jl1m8522b`9e1=::m91m>5rs0`4>5<3s49n?7o<;<3`6?7?8278mk4n6:?0==<f>2wx8;650;:x96c42h>01>j6:7489114282;70?m4;c7?82d>39i70:l7;1a?82d039i70:l9;1a?xu4m:0;6>u23d1952?<5:n26<6=;<1fa?`33ty8h44?:2y>7a?=9>301>jn:4g896`72<o0q~?m9;290~;4m<0j?63>c282<5=:;hl1m95238:9e1=z{=<j6=46{<1f1?g3349om789;<640?7?827:n94n3:?2f6<f<27?o;4<e:?7g2<4m27?o54<e:?7g<<4m2wx?h;50;1x96c228=270=ka;3;6>;4n90m86s|3ec94?5|5:nj6<96;<1gf?3b349m=7;j;|q0g3<721q6?k>516;896e>2h>01>mn:`7896ee2h<01>ml:`6896ec2h?01>j::`6896e?2h80q~?ma;290~;4m?0j?63>c482<5=:;k:1m;5238;9e3=z{=<i6=46{<1f2?g3349on789;<642?7?827:n>4n3:?2f7<f<27?o;4<f:?7g2<4n27?o54<f:?7g<<4n2wx?h850;1x96c128=270=kb;3;6>;4n80m86s|3e`94?5|5:ni6<96;<1gg?3b349m>7;j;|q0g5<72>q6?k?516;896e>2h901>mn:`1896ee2h901>ml:`7896ec2h>01>j::`78yv7ej3:18v3<e68b7>;6k?0:4=523c29e1=:;031m95rs54`>5<>s49n;7o;;<1gg?0134><;7?70:?2f7<f;27:n<4n4:?7g3<3827?o:4;0:?7g=<3827?o44;0:\7fp7`1=839p1>k8:05:?85ck3;3>63<f38e0>{t;mi1<7=t=2f`>41>349oh7;j;<1e7?3b3ty8o<4?:7y>7c4=9>301>mn:`6896ee2h?01>ml:`1896ec2h901>j::`18yv7ek3:18v3<e98b7>;6k>0:4=523c39e3=:;0k1m;5rs54g>5<>s49n47o;;<1g`?0134><47?70:?2f4<f;27:n=4n4:?7g3<3927?o:4;1:?7g=<3927?o44;1:\7fp7`>=839p1>k7:05:?85cl3;3>63<f28e0>{t;mn1<7=t=2fg>41>349oi7;j;<1e0?3b3ty8o?4?:9y>7c5=9>301>mm:`6896ed2h<01>j?:`1896b62h901>j=:`1896b42h901>j::`48yv7el3:18v3<e88b7>;6k10:4=523c39e1=:;0k1m95rs54f>5<>s49n57o;;<1ga?0134><57?70:?2f5<f;27:mk4n4:?7g3<3:27?o:4;2:?7g=<3:27?o44;2:\7fp7`?=839p1>k6:05:?85cm3;3>63<f58e0>{t;mo1<7=t=2ff>41>349oj7;j;<1e1?3b3ty8o>4?:9y>7c2=9>301>mj:`1896ea2h901>j?:`6896b62h?01>j=:`6896b42h>01>j;:`78yv7em3:18v3<e`8b7>;6k00:4=523c09e3=:;0h1m;5rs54e>5<>s49nm7o;;<1gb?0134><m7?70:?2ec<f;27:mh4n4:?7g3<3;27?o:4;3:?7g=<3;27?o44;3:\7fp7`g=839p1>kn:05:?85cn3;3>63<f48e0>{t;ml1<7=t=2fe>41>349n<7;j;<1e2?3b3ty8no4?:6y>7c3=9>301>mi:`6896b72h?01>j>:`4896b52h?01>j<:`7896b32h90q~?mf;290~;4mk0j?63>c`82<5=:;k81m95238`9e1=z{==;6=46{<1ff?g3349n<789;<64f?7?827:mh4n3:?2ea<f<27?o;4;4:?7g2<3<27?o54;4:?7g<<3<2wx?hl50;1x96ce28=270=j0;3;6>;4n?0m86s|3d294?5|5:o;6<96;<1f5?3b349m;7;j;|q0ff<72<q6?k8516;896b?2h901>j9:`1896b62h>01>j;:`68yv2093:15v3<eb8b7>;4m80=:63;7b82<5=:9hn1m>521`a9e1=:<j<188524b5900=:<j2188524b;900=z{8i;6=4;{<1fg?g334;hn7?70:?0f6<f>2785n4n6:\7fp7`e=839p1>kl:05:?85b93;3>63<f68e0>{t;l;1<7=t=2g2>41>349n>7;j;<1e<?3b3ty8ni4?:5y>7c1=9>301>j7:`6896b12h>01>j8:`18yv20:3:15v3<ee8b7>;4m;0=:63;7e82<5=:9hi1m>521``9e1=:<j<18;524b5903=:<j218;524b;903=z{8i:6=4;{<1f`?g334;ho7?70:?0f6<f<2785n4n4:\7fp7`b=839p1>kk:05:?85b:3;3>63<f98e0>{t;l81<7<t=2g1>41>349nj7;j;|q0f`<72=q6?k6516;896b02h>01>j=:`4896b42h<0q~:99;29<~;4m=0j?63=51851>;3?<0:4=521``9e6=:<j<1?i524b597a=:<j21?i524b;97a=z{8h36=4;{<1f0?g334;h87?70:?0f1<f<2785i4n4:\7fp7`2=838p1>k;:05:?85bn3l?7p}<bg83>6}:;ll1=:74=2a6>d5<5:i<6l=4}r134?6=:r78<;4:e:?040<6?01v\7f>>l:181\7f857>3;3>63<13823<=z{:8j6=4={<132?701278>h4n5:\7fp6c`=838p1>>::4g8966328=27p}<0c83>7}:;9?1=5<4=232>41>3ty9jh4?:3y>752==l16?==516;8yv57i3:1>v3<0582<7=:;8:1=:74}r0e`?6=:r78<>4:e:?047<6?01v\7f>>6:181\7f857;3;3>63<0g823<=z{;lh6=4={<136?3b349;=7?89:\7fp75>=838p1>>=:0:1?857m3;<56s|31594?4|5:::6<6=;<13`?7012wx?<950;0x967c2<o01>?l:05:?xu4::0;6?u230f95=4<5:826<96;|q06g<72;q6?<j516;8964b2h90q~=>6;296~;49j0>i63<1c823<=z{:896=4={<12g?7?:278>54>789~w6722909w0=>b;7f?856i3;<56s|33394?4|5:;i6<6=;<113?7012wx?<:50;0x967f2<o01>?6:05:?xu4:90;6?u230c95=4<5:8=6<96;|q056<72;q6?<755d9>74>=9>30q~=>f;296~;4900:4?52337952?<uz9:i7>52z?05=<60;16??:516;8yv5?j3:1>v3<9086a>;4190:;45rs2;4>5<5s492=7?72:?0=a<6?01v\7f>l::181\7f85>93;<563<b`8b7>{t;1k1<7<t=2;3>0c<5:2m6<96;|q0=3<72;q6?4>5190896?d28=27p}<8883>7}:;1l19h5239g952?<uz9297>52z?0<c<60;16?4l516;8yv5?03:1>v3<8d86a>;40m0:;45rs2;7>5<5s493i7?72:?0=d<6?01v\7f>68:181\7f85?l3?n70=7c;34=>{t;091<7<t=2:g>4>5349257?89:\7fp7<4=838p1>6l:0:1?85>03;<56s|3`094?4|5:k368k4=2c4>41>3ty8mh4?:3y>7d>=91801>l;:05:?xu4j?0;6?u23`:952?<5:hj6l84}r1b5?6=:r78m:4:e:?0e3<6?01v\7f>ok:181\7f85f?3;3>63<b2823<=z{:k;6=4={<1b2?3b349j97?89:\7fp7de=838p1>o9:0:1?85e:3;<56s|38d94?4|5:k>68k4=2c7>41>3ty8mo4?:3y>7d3=91801>l>:05:?xu41l0;6?u23`691`=:;h91=:74}r1be?6=:r78m94>839>7g6=9>30q~=n9;296~;4i:0:4?523`d952?<uz8;?7>55z?2g1<1=279<k4>819>5=g=i=16=5l5a49>5=e=i=1v\7f<mk:181\7f87dk3<>70?7a;34=>{t9jo1<7:t=0aa>33<582i6<96;<3;`?g234;3i7o<;|q2gc<72;q6=no5649>5=e=9>30q~?k0;290~;6k00=963>8e823<=:91l1m8521829e6=z{8n:6=4={<3`<?0234;3i7?89:\7fp5a4=83>p1<m8:77894>a28=270?61;c6?87>:3k=7p}>d283>7}:9j<1:852182952?<uz;o87>53z?2g0<1=27:5<4>789>5d7=i<1v\7f<j::181\7f87d;3<>70?62;34=>{t:;91<7<t=0a1>33<58k:6<96;|q135<72<q6>>?5649>62e=91:01<o=:`6894gf2h<01<o<:`68yv44i3:1?v3=38851>;6i;0:;45218d9e6=z{;9i6=4={<00<?0234;j?7?89:\7fp614=83<p1?=8:77894g32h901<o::`7894g02h<01<on:05:?87f>3k>7p}=3b83>7}:::<1:8521`6952?<uz88h7>52z?170<1=27:m84>789~w75b2909w0<<4;46?87f>3;<56s|22d94?2|5;986;;4=0c;>d5<58k<6<96;<3b=?g23ty98=4?:3y>664=><16=l6516;8yv4393:1>v3=31851>;6i00:;45rs301>5<5s489j78:;<3:b?7012wx>8o50;0x971d2??01?89:0:3?xu5>:0;6?u2296920=::?o1=5>4}r04=?6=<r79494>819>5d4=i:16=lo5a49>5d5=i:1v\7f?8=:181\7f84?;3<>70<9d;3;4>{t:>21<7:t=3:0>4>734;2i7o;;<3be?g334;j?7o:;|q124<72;q6>5<5649>63e=91:0q~<87;297~;50;0:4=5218g9e6=:9hk1m>5rs343>5<5s483=78:;<05f?7?82wx>:850;4x97>6282;70?6e;c5?87f<3k?70?n5;c7?87f?3k>70?n6;c7?xu5=o0;6?u2292920=::?k1=5>4}r041?6==r794=4>819>5<c=i<16=l;5a29>5d1=i=16=l85a29~w73b2909w0<8f;46?84113;3<6s|26694?2|5;=m6<6?;<3:`?g334;2j7o:;<3b2?g13ty99i4?:3y>62c=><16>;651928yv40;3:1?v3=7d82<5=:90n1m>521`29e6=z{;?h6=4={<04`?02348=;7?70:\7fp624=83>p1?9k:0:3?87f03k?70?n9;c7?87f83k?7p}=5c83>7}::>h1:85227795=6<uz8<=7>53z?13g<60916=l75a29>5d6=i<1v\7f?;6:181\7f840i3<>70<94;3;4>{t:?l1<7<t=35b>4>734;j<7o9;|q2aa<72;q6>=h5649>5c?=91:0q~?i6;296~;59>0=963=0082<5=z{;:h6=4;{<023?7?827:4l4n3:?2<g<f<27:4n4n3:\7fp5c3=838p1??9:7789767282;7p}=0c83>6}::8<1=5>4=0:a>d5<582h6l;4}r3e0?6=:r79=8495:?2bc<6091v\7f?>n:187\7f846=3;3<63>8e8b0>;60l0j863>8b8b2>{t9o91<7<t=337>33<58ln6<6?;|q14<<72:q6><:5192894>c2h901<6j:`78yv7a:3:1>v3=12851>;6nm0:4=5rs32;>5<3s48:?7?70:?2<c<f<27:5=4n4:?2<`<f>2wx=k?50;0x97752??01<hl:0:3?xu58>0;6>u220095=6<582m6l=4=0;3>d3<uz;m<7>52z?154<1=27:jo4>819~w761290?w0<>1;3;4>;6180j863>938b1>;6190j:6s|1dd94?4|5;;;6;;4=0db>4>73ty9<84?:2y>646=91:01<7>:`1894?52h>0q~?je;296~;58l0=963>f982<5=z{;:?6=4<{<03a?7?827:m<4n4:?2=7<f;2wx=hm50;0x976c2??01<h8:0:3?xu58;0;6?u221f95=6<58k:6l=4}r070?6=:r79:;495:?115<6091v\7f?:k:181\7f841m3<>70<:8;3;4>{t:=i1<7<t=34g>33<5;?<6<6?;|q10g<72;q6>;m5649>600=91:0q~<;a;296~;5>k0=963=5482<5=z{;>26=4={<05e?02348>87?70:\7fp61>=838p1?86:7789734282;7p}=4683>7}::?21:85224095=6<uz8?:7>52z?122<1=2799<4>819~w7222909w0<95;46?843n3;3<6s|25194?4|5;<?6;;4=36f>4>73ty:h:4?:3y>5c?=><16=h=51928yv7b83:1>v3=00851>;6mk0:4=5rs0fe>5<5s48;<78:;<3fe?7?82wx=ik50;0x94`a2??01<k6:0:3?xu6lm0;6?u21gg920=:9l21=5>4}r3gg?6=:r7:ji495:?2a2<6091v\7f<jm:181\7f87ak3<>70?j6;3;4>{t9mk1<7<t=0da>33<58o>6<6?;|q2`<<72;q6=ko5649>5`2=91:0q~?k8;296~;6n10=963>e382<5=z{8n=6=4={<3e3?0234;n=7?70:\7fp64>=838p1<km:77894?428=27p}=1883>7}:9lk1:852186952?<uz8:m7>52z?2a<<1=27:584>789~w77e2909w0?j8;46?87>>3;<56s|20a94?4|58o<6;;4=0;4>41>3ty9=i4?:3y>5`0=><16=46516;8yv46m3:1>v3>e4851>;6100:;45rs33e>5<5s4;n878:;<3:e?7012wx>?>50;0x94c52??01<7m:05:?xu5:80;6?u21d3920=:90i1=:74}r0;1?6=:r7995495:?2eg<6?01v\7f?69:181\7f842?3<>70?nc;34=>{t:1=1<7<t=375>33<58ko6<96;|q1<=<72;q6>8;5649>5dc=9>30q~<79;296~;5==0=963>ag823<=z{;2j6=4={<067?0234;i<7?89:\7fp6=d=838p1?;=:77894d628=27p}=8b83>7}::<;1:8521c0952?<uz83h7>52z?10c<1=27:n>4>789~w7>b2909w0<;e;46?87e<3;<56s|4ba94?7>s49=47;l;<144?3d349=i7;l;<15`?3d349=j7;l;<15f?3d349=m7;l;<15g?3d349=;7;l;<152?3d349=57;l;<14a?3d3493:7;l;<1;1?3d349387;l;<1;7?3d3493>7;l;<1;5?3d3493<7;l;<14b?3d349<h7;l;<14g?3d348ni7?89:?7gg<f;278>h4n4:\7fp764=838p1>87:778963728=27p}<5b83>1}:;?21=5>4=25f>33<5:826l:4=272>d5<uz98m7>52z?035<1=2789l4>789~w602290?w0=80;3;4>;40?0=963<298b7>;4<l0j?6s|32:94?4|5:<n6;;4=27;>41>3ty8:>4?:5y>73c=91:01>6;:77896402h901>:n:`18yv54?3:1>v3<6e851>;4=>0:;45rs241>5<3s49=h7?70:?0<6<1=278>:4n5:?00=<f;2wx?>750;0x960a2??01>;6:05:?xu4>=0;69u237d95=6<5:2>6;;4=20;>d3<5:>h6l=4}r101?6=:r78:o495:?010<6?01v\7f>8?:187\7f851j3;3<63<80851>;4:?0j963<458b7>{t;:>1<7<t=24b>33<5:??6<96;|q01c<72=q6?;o5192896>72??01><::`1896252h90q~=<6;296~;4>j0=963<57823<=z{:<:6=4;{<15g?7?82784?495:?063<f;2788;4n3:\7fp767=838p1>88:778963528=27p}<5e83>1}:;?=1=5>4=25g>33<5:8?6l=4=21f>d5<uz98<7>52z?023<1=2788k4>789~w63e290?w0=96;3;4>;4?j0=963<258b1>;4;j0j?6s|32194?4|5:<26;;4=270>41>3ty89h4?:5y>73?=91:01>9i:77896422h?01>:?:`18yv53l3:1>v3<5186a>;4<m0:;45rs272>5<5s49><7h;;<165?7012wx?9l50;1x963f2<o01>:k:4g8962e28=27p}<4d83>6}:;<k1j95235f95=4<5:>n6<96;|q00<<72:q6?8755d9>71d==l16?97516;8yv53k3:1?v3<588e0>;4<k0:4?5235a952?<uz9?;7>53z?01=<2m278844:e:?002<6?01v\7f>:n:180\7f85203l?70=;9;3;6>;4<h0:;45rs266>5<4s49>;7;j;<173?3b349?97?89:\7fp71>=839p1>;8:g689620282970=;8;34=>{t;=91<7=t=275>0c<5:>>68k4=260>41>3ty88;4?:2y>700=n=16?9;51908962128=27p}<4083>6}:;<?19h5235191`=:;=;1=:74}r170?6=;r78984i4:?006<60;16?9:516;8yv54n3:1?v3<5586a>;4<80>i63<3g823<=z{:>96=4<{<160?`3349?=7?72:?007<6?01v\7f>=k:180\7f852;3?n70=<f;7f?854l3;<56s|35294?5|5:?86k:4=21e>4>5349?<7?89:\7fp76d=839p1>;=:4g8965c2<o01>=m:05:?xu4;l0;6>u23409b1=:;:n1=5<4=21f>41>3ty8?n4?:2y>71`=n=16?>l51908965d28=27p}=f483>7}::o>1:8522g4952?<uz8m87>58z?1b1<60916>k=5a59>6cg=i<16>k85a49>6``=i:16>hk5a59>6c6=i=16>nm5a59~w7`52908w0<i1;46?84aj3<>70<i3;34=>{t:o;1<76t=3d2>4>7348m?7o<;<0ee?g3348m:7o;;<0fb?g3348ni7o9;<0e4?g4348ho7o:;|q1bg<72:q6>kl5192897e02h?01?ml:`18yv4a13:1?v3=f9851>;5n>0=963=f`823<=z{;l<6=4={<0e3?7?8279jl4n3:\7fp0fc=838=w0:;9;7`?82293?h70:;f;7`?823m3?h70::0;7`?823k3?h70:;b;7`?823l3?h70:;8;7`?823?3?h70:;a;7`?82183?h70::d;7`?822m3?h70:93;7`?82193?h70:92;7`?821>3?h70:94;7`?821=3?h70:97;7`?822n3?h70:85;7`?820l3?h70:8c;7`?820j3?h70:8a;7`?82013?h70:88;7`?820?3?h70:86;7`?820<3?h70:83;7`?82683;<563;c787a2=:<j=18h94=5a;>1c034>h57:j7:\7fp045=838p19:6:778915628=27p};3e83>1}:<=31=5>4=57e>33<5:h?6l=4=511>d5<uz>:n7>52z?714<1=27??o4>789~w121290?w0::1;3;4>;3>>0=963<b28b7>;3:o0j?6s|40;94?4|5=>m6;;4=51:>41>3ty?894?:5y>01`=91:0198::77896d52h9019<m:`18yv2603:1>v3;4d851>;3;10:;45rs560>5<3s4>?i7?70:?721<1=278n?4n5:?76<<f;2wx8<o50;0x91372??019=n:05:?xu3<<0;69u244295=6<5=<=6;;4=2`0>d3<5=8o6l=4}r622?6=:r7?8n495:?773<6?01v\7f9:>:187\7f823k3;3<63;63851>;4j80j963;248b7>{t<8?1<7<t=56a>33<5=9>6<96;|q705<72=q689l5192891062??01>l?:`1891442h90q~:>7;296~;3<m0=963;36823<=z{=>96=4;{<67`?7?827?:>495:?0f4<f;27?>:4n3:\7fp044=838p19:7:778915428=27p};3d83>1}:<=21=5>4=57f>33<5:km6l=4=53e>d5<uz>:=7>52z?702<1=27??=4>789~w15d290?w0:;7;3;4>;3=m0=963<ag8b1>;39m0j?6s|40694?4|5=>j6;;4=517>41>3ty??k4?:5y>01g=91:0198?:77896d72h?019<>:`18yv25m3:1>v3;3086a>;3:l0:;45rs511>5<5s4>8=7h;;<606?7012wx8?m50;1x915e2<o019<j:4g8914d28=27p};2g83>6}:<:h1j95243g95=4<5=8m6<96;|q76d<72:q68>o55d9>07e==l168?o516;8yv25l3:1?v3;3`8e0>;3:j0:4?5243f952?<uz>947>53z?77<<2m27?>l4:e:?76=<6?01v\7f9<m:180\7f82413l?70:=a;3;6>;3:k0:;45rs505>5<4s4>847;j;<61<?3b34>9:7?89:\7fp07?=839p19=7:g68914?282970:=9;34=>{t<;>1<7=t=514>0c<5=8=68k4=507>41>3ty?>:4?:2y>061=n=168?851908914028=27p};2383>6}:<:<19h5243691`=:<;81=:74}r611?6=;r7??;4i4:?761<60;168?;516;8yv2583:1?v3;3486a>;3:;0>i63;21823<=z{=886=4<{<601?`334>9>7?72:?766<6?01v\7f9?j:180\7f824<3?n70:=0;7f?826m3;<56s|43394?5|5=9?6k:4=503>4>534>9=7?89:\7fp04e=839p19=<:4g8917b2<o019?l:05:?xu39o0;6>u24219b1=:<8o1=5<4=53e>41>3ty?=i4?:2y>066=n=168<m51908917c28=27p};5483>6}:<?:1=5>4=555>33<5:326l;4}r666?6=;r7?9i4>819>025=><16?465a49~w1332908w0::e;3;4>;3?=0=963<998b7>{t<<21<7=t=540>4>734><578:;<1:e?g43ty?9;4?:2y>037=91:01998:77896?>2h90q~::7;297~;3>;0:4=5246:920=:;0k1m85rs57a>5<4s4>=:7?70:?73f<1=2785n4n5:\7fp00?=839p198;:0:3?820i3<>70=6b;c6?xu3=h0;6>u247795=6<5==i6;;4=2;a>d5<uz>>o7>53z?722<609168:j5649>7<e=i:1v\7f9;<:180\7f822n3;3<63;74851>;41m0j?6s|4bf94?42s4>2n7;l;<6:e?3d34>257;l;<6:<?3d34>2;7;l;<6:2?3d34>287;l;<6:7?3d34>2>7;l;<6:5?3d34>2<7;l;<6;b?3d34>3i7;l;<6;`?3d34>3o7;l;<6;f?3d34>357;l;<6;<?3d34>3;7;l;<6;2?3d34>397;l;<6;0?3d34>3?7;l;<6;6?3d34>3=7;l;<6;4?3d34>j=7;l;<6b4?3d34>2j7;l;<6:a?3d34>2h7;l;<6:g?3d34>297;l;<6;e?3d34><j7;l;<64a?3d348nj7?89:\7fp0gc=838p197m:77891e>2080q~:md;296~;31h0=963;c88;a>{t<ki1<7<t=5;:>33<5=i265m4}r6af?6=:r7?55495:?7g<<?j2wx8oo50;0x91?02??019m6:9c8yv2e13:1>v3;97851>;3k00356s|4c594?4|5=3?6;;4=5a:>=><uz>i:7>52z?7=6<1=27?o4477:\7fp0g3=838p197=:77891e>21<0q~:m4;296~;3180=963;c98:6>{t<k91<7<t=5;3>33<5=i365k4}r6a6?6=:r7?4k495:?7g=<?k2wx8o?50;0x91>b2??019m7:9`8yv2e83:1>v3;8e851>;3k103m6s|4`d94?4|5=2h6;;4=5a;>=?<uz>ji7>52z?7<g<1=27?o5478:\7fp0de=838p1966:77891e?21=0q~:nb;296~;3010=963;c98;2>{t<hk1<7<t=5:4>33<5=i<64<4}r6b=?6=:r7?4;495:?7g2<?m2wx8l650;0x91>22??019m8:9a8yv2f?3:1>v3;85851>;3k>03n6s|4`494?4|5=286;;4=5a4>=g<uz>j97>52z?7<7<1=27?o:479:\7fp0d2=838p196>:77891e02120q~:n3;296~;3090=963;c68;3>{t<j?1<7<t=5c2>33<5=i<6584}r6`0?6=:r7?m=495:?7g3<>:2wx8n=50;0x91?a2??019m9:9g8yv2d:3:1>v3;9d851>;3k?03o6s|4b394?4|5=3o6;;4=5a5>=d<uz>h<7>52z?7=f<1=27?o;47a:\7fp0g`=838p197::77891e12130q~:m8;296~;30h0=963;c78;<>{t<hn1<7<t=55e>33<5=i=6594}r6b6?6=:r7?;h495:?7g3<?>2wx=o850;0x94?b28=270?6f;c7?xu3kh0;68u24b`952?<5=i=6484=5a4><0<5=i36484=5a:><0<uz99j7>52z?1g2<f;279j=4>789~w4d22909w0?6d;34=>;6i>0j?6s|17394?e|5;n>6l:4=3f4>d5<5;n26l;4=3fa>d5<5;nm6l=4=3g`>d5<5;ii6l=4=3g4>d5<5;o>6l:4=3g3>d3<5;no6l=4=3a`>41>3ty:::4?:4y>6ad=i<16>ih5a79>6`g=i<16>i=5a59>6ae=9>30q~?94;297~;4kl0j863<cg8b1>;4kj0:;45rs052>5<5s48o<7o<;<0`g?`23ty:<>4?:2y>6a6=9>301?mj:`4897b42h?0q~?9f;296~;5kl0j963=db8e1>{t9?81<7:t=3af>41>348nh7o9;<0``?g1348n;7o9;|q1ag<72;q6>hl516;897cc2h>0q~<jc;296~;5mj0:;4522df9e6=z{;oj6=4={<0f`?g2348nm7?89:\7fp6fc=838p1?mi:05:?84dl3k?7p}=cc83>7}::jh1=:74=3ag>d5<uz8h57>52z?1ga<f=279o44>789~w4142909w0<j3;c6?84b<3;<56s|16694?4|5;o86l84=3g6>41>3ty:<84?:3y>6`1=i<16>h6516;8yv77k3:1?v3<d9823<=:;j?1m;523b59e3=z{88n6=4={<0fe?g1348n=7h:;|q211<72<q6?nj516;896b12h?01>j8:`7896e22h>01>m8:`68yv7203:1>v3=c`823<=::j31m85rs07b>5<5s48o=7?89:?1`6<f>2wx=8m50;1x97c22h<01?k?:`4897c128=27p}>7183>7}::l21m;522d49b0=z{8<;6=4={<0`=?g1348n>7h:;|q220<72;q6?i>516;896b12h<0q~?98;296~;4l80:;4523e59e3=z{8<j6=4={<1g6?701278o84n5:\7fp53d=838p1>j<:05:?85d?3k>7p}>6b83>7}::l>1m;522ef9b0=z{8<o6=4={<1g1?701278h94n6:\7fp53c=838p1<o?:05:?87>n3k=7ps|55`94?4|V<8<70;8:404?!2b;3;<>6s|55;94?4|V<8=70;8:405?!2b;3;<?6s|55:94?4|V<8>70;8:406?!2b;3;<86s|55594?4|V<8?70;8:407?!2b;3;<96s|55494?4|V<8870;8:400?!2b;3;;96s|55794?4|V<8970;8:401?!2b;3;;46s|55194?4|V<8;70;8:403?!2b;3;;o6s|55094?4|V<;m70;8:43e?!2b;3;;h6s|55394?4|V<;n70;8:43f?!2b;3;:46s|55294?4|V<;o70;8:43g?!2b;3;9?6s|52d94?4|V<;h70;8:43`?!2b;3;9i6s|52g94?4|V<;i70;8:43a?!2b;3;8;6s|52f94?4|V<;j70;8:43b?!2b;3;?<6s|52a94?4|V<;270;8:43:?!2b;3;?56s|52`94?4|V<;370;8:43;?!2b;3;>>6s|52c94?4|V<;<70;8:434?!2b;3;>?6s|52:94?4|V<;>70;8:436?!2b;3;>86s|52594?4|V<;?70;8:437?!2b;3;>96s|52494?4|V<;870;8:430?!2b;3;>:6s|52794?4|V<;970;8:431?!2b;3;>;6s|52694?4|V<;:70;8:432?!2b;3;>46s|52194?4|V<;;70;8:433?!2b;3;>56s|52094?4|V<:m70;8:42e?!2b;3;>m6s|52394?4|V<:n70;8:42f?!2b;3;>n6s|52294?4|V<:o70;8:42g?!2b;3;>o6s|53d94?4|V<:h70;8:42`?!2b;3;>h6s|54094?4|V<8o70;8:40g?!2b;3;>i6s|54394?4|V<8h70;8:40`?!2b;3;>j6s|54294?4|V<8i70;8:40a?!2b;3;=<6s|55d94?4|V<8j70;8:40b?!2b;3;==6s|55g94?4|V<8270;8:40:?!2b;3;=>6s|55f94?4|V<8370;8:40;?!2b;3;=?6s|55a94?4|V<8:70;8:402?!2b;3;=86s|55694?4|V<;=70;8:435?!2b;3;=:6s|52;94?4|V<:i70;8:42a?!2b;3;=;6s|53g94?4|V<:j70;8:42b?!2b;3;=56s|5g394?4|V<l:70;8:4d2?!2b;3;;:6s|61`94?4|V?:i70;8:72a?!2b;3;;;6s|61f94?4|V?:o70;8:72g?!2b;3;;56s|60694?4|V?;?70;8:737?!2b;3;;m6s|63g94?4|V?8n70;8:70f?!2b;3;;n6s|58694?4|V<=;70;8:453?!2b;3;;i6s|58094?4|V<<m70;8:44e?!2b;3;;j6s|58394?4|V<<n70;8:44f?!2b;3;:<6s|58294?4|V<<o70;8:44g?!2b;3;:=6s|59d94?4|V<<h70;8:44`?!2b;3;:>6s|59g94?4|V<<i70;8:44a?!2b;3;:?6s|59a94?4|V<<270;8:44:?!2b;3;:86s|59`94?4|V<<370;8:44;?!2b;3;:96s|59c94?4|V<<<70;8:444?!2b;3;::6s|59;94?4|V<<=70;8:445?!2b;3;:;6s|59:94?4|V<<>70;8:446?!2b;3;:56s|59594?4|V<<?70;8:447?!2b;3;:m6s|59494?4|V<<870;8:440?!2b;3;:n6s|59794?4|V<<970;8:441?!2b;3;:o6s|59694?4|V<<:70;8:442?!2b;3;:h6s|59194?4|V<<;70;8:443?!2b;3;:i6s|59394?4|V<?n70;8:47f?!2b;3;:j6s|59294?4|V<?o70;8:47g?!2b;3;9<6s|56d94?4|V<?h70;8:47`?!2b;3;9=6s|56g94?4|V<?i70;8:47a?!2b;3;9>6s|56f94?4|V<?j70;8:47b?!2b;3;986s|56a94?4|V<?270;8:47:?!2b;3;996s|56`94?4|V<?370;8:47;?!2b;3;9:6s|56c94?4|V<?<70;8:474?!2b;3;9;6s|56;94?4|V<?=70;8:475?!2b;3;946s|56:94?4|V<?>70;8:476?!2b;3;956s|58`94?4|V<==70;8:455?!2b;3;9m6s|58c94?4|V<=>70;8:456?!2b;3;9n6s|58;94?4|V<=?70;8:457?!2b;3;9o6s|58:94?4|V<=870;8:450?!2b;3;9h6s|58594?4|V<=970;8:451?!2b;3;9j6s|58494?4|V<=:70;8:452?!2b;3;8<6s|58794?4|V<<j70;8:44b?!2b;3;8=6s|59f94?4|V<?m70;8:47e?!2b;3;8>6s|59094?4|V<??70;8:477?!2b;3;8?6s|56594?4|V<?870;8:470?!2b;3;886s|58f94?4|V<3o70;8:4;g?!2b;3;896s|5`194?4|V<k870;8:4c0?!2b;3;8:6s|61394?4|V<l>70;8:4d6?!2b;3;846s|5gd94?4|V<l?70;8:4d7?!2b;3;856s|61c94?4|V<lo70;8:4dg?!2b;3;8m6s|61;94?4|V<lh70;8:4d`?!2b;3;8n6s|61:94?4|V<li70;8:4da?!2b;3;8o6s|61594?4|V<lj70;8:4db?!2b;3;8h6s|61494?4|V<l270;8:4d:?!2b;3;8i6s|61794?4|V<l370;8:4d;?!2b;3;8j6s|61694?4|V<l<70;8:4d4?!2b;3;?=6s|61194?4|V<l=70;8:4d5?!2b;3;?>6s|61094?4|V<l870;8:4d0?!2b;3;??6s|5gg94?4|V<l970;8:4d1?!2b;3;?86s|63694?4|V?;370;8:73;?!2b;3;?96s|63094?4|V?;<70;8:734?!2b;3;?:6s|63f94?4|V?8;70;8:703?!2b;3;?;6s|63a94?4|V?;m70;8:73e?!2b;3;?46s|63`94?4|V?;n70;8:73f?!2b;3;?m6s|63c94?4|V?;o70;8:73g?!2b;3;?n6s|63;94?4|V?;h70;8:73`?!2b;3;?o6s|63:94?4|V?;i70;8:73a?!2b;3;?h6s|63594?4|V?;j70;8:73b?!2b;3;?i6s|63494?4|V?;270;8:73:?!2b;3;?j6s|63794?4|V?;=70;8:735?!2b;3;><6s|63394?4|V?;>70;8:736?!2b;3;>=6srnd5;>5<5sA>n86sae6;94?4|@=o?7p`j7`83>7}O<l>0qck8b;296~N3m=1vbh9l:181\7fM2b<2wei:j50;0xL1c33tdn;h4?:3yK0`2<ugo<j7>52zJ7a1=zfl2;6=4={I6f0>{im1;1<7<tH5g7?xhb0;0;6?uG4d68ykc?;3:1>vF;e59~j`>32909wE:j4:\7fma=3=838pD9k;;|lf<3<72;qC8h:4}og;3?6=:rB?i95rnd:;>5<5sA>n86sae9;94?4|@=o?7p`j8`83>7}O<l>0qck7b;296~N3m=1vbh6l:181\7fM2b<2wei5j50;0xL1c33tdn4h4?:3yK0`2<ugo3j7>52zJ7a1=zfl3;6=4={I6f0>{im0;1<7<tH5g7?xhb1;0;6?uG4d68ykc>;3:1>vF;e59~j`?32909wE:j4:\7fma<3=838pD9k;;|lf=3<72;qC8h:4}og:3?6=:rB?i95rnd;;>5<5sA>n86sae8;94?4|@=o?7p`j9`83>7}O<l>0qck6b;296~N3m=1vbh7l:181\7fM2b<2wei4j50;0xL1c33tdn5h4?:3yK0`2<ugo2j7>52zJ7a1=zflk;6=4={I6f0>{imh;1<7<tH5g7?xhbi;0;6?uG4d68ykcf;3:1>vF;e59~j`g32909wE:j4:\7fmad3=838pD9k;;|lfe3<72;qC8h:4}ogb3?6=:rB?i95rndc;>5<5sA>n86sae`;94?4|@=o?7p`ja`83>7}O<l>0qcknb;296~N3m=1vbhol:181\7fM2b<2weilj50;0xL1c33tdnmh4?:3yK0`2<ugojj7>52zJ7a1=zflh;6=4={I6f0>{imk;1<7<tH5g7?xhbj;0;6?uG4d68ykce;3:1>vF;e59~j`d32909wE:j4:\7fmag3=838pD9k;;|lff3<72;qC8h:4}oga3?6=:rB?i95rnd`;>5<5sA>n86saec;94?4|@=o?7p`jb`83>7}O<l>0qckmb;296~N3m=1vbhll:181\7fM2b<2weioj50;0xL1c33tdnnh4?:3yK0`2<ugoij7>52zJ7a1=zfli;6=4={I6f0>{imj;1<7<tH5g7?xhbk;0;6?uG4d68ykcd;3:1>vF;e59~j`e32909wE:j4:\7fmaf3=838pD9k;;|lfg3<72;qC8h:4}og`3?6=:rB?i95rnda;>5<5sA>n86saeb;94?4|@=o?7p`jc`83>7}O<l>0qcklb;296~N3m=1vbhml:181\7fM2b<2weinj50;0xL1c33tdnoh4?:3yK0`2<ugohj7>52zJ7a1=zfln;6=4={I6f0>{imm;1<7<tH5g7?xhbl;0;6?uG4d68ykcc;3:1>vF;e59~j`b32909wE:j4:\7fmaa3=838pD9k;;|lf`3<72;qC8h:4}ogg3?6=:rB?i95rndf;>5<5sA>n86saee;94?4|@=o?7p`jd`83>7}O<l>0qckkb;296~N3m=1vbhjl:181\7fM2b<2weiij50;0xL1c33tdnhh4?:3yK0`2<ugi8<7>51zJ7a1=zfj3<6=4>{I6f0>{ik021<7?tH5g7?xhd100;6<uG4d68yke>i3:1=vF;e59~jf?e290:wE:j4:\7fmg<e=83;pD9k;;|l`=a<728qC8h:4}oa:a?6=9rB?i95rnb;e>5<6sA>n86sac`294?7|@=o?7p`la083>4}O<l>0qcmn2;295~N3m=1vbno<:182\7fM2b<2weol:50;3xL1c33tdhm84?:0yK0`2<ugij:7>51zJ7a1=zfjk<6=4>{I6f0>{ikh21<7?tH5g7?xhdi00;6<uG4d68ykefi3:1=vF;e59~jfge290:wE:j4:\7fmgde=83;pD9k;;|l`ea<728qC8h:4}oaba?6=9rB?i95rnbce>5<6sA>n86sacc294?7|@=o?7p`lb083>4}O<l>0qcmm2;295~N3m=1vbnl<:182\7fM2b<2weoo:50;3xL1c33tdhn84?:0yK0`2<ugii:7>51zJ7a1=zfjh<6=4>{I6f0>{ikk21<7?tH5g7?xhdj00;6<uG4d68ykeei3:1=vF;e59~jfde290:wE:j4:\7fmgge=83;pD9k;;|l`fa<728qC8h:4}oaaa?6=9rB?i95rnb`e>5<6sA>n86sacb294?7|@=o?7p`lc083>4}O<l>0qcml2;295~N3m=1vbnm<:182\7fM2b<2weon:50;3xL1c33tdho84?:0yK0`2<ugih:7>51zJ7a1=zfji<6=4>{I6f0>{ikj21<7?tH5g7?xhdk00;6<uG4d68ykedi3:1=vF;e59~jfee290:wE:j4:\7fmgfe=83;pD9k;;|l`ga<728qC8h:4}oa`a?6=9rB?i95rnbae>5<6sA>n86sace294?7|@=o?7p`ld083>4}O<l>0qcmk2;295~N3m=1vbnj<:182\7fM2b<2weoi:50;3xL1c33tdhh84?:0yK0`2<ugio:7>51zJ7a1=zfjn<6=4>{I6f0>{ikm21<7?tH5g7?xhdl00;6<uG4d68ykeci3:1=vF;e59~jfbe290:wE:j4:\7fmgae=83;pD9k;;|l``a<728qC8h:4}oaga?6=9rB?i95rnbfe>5<6sA>n86sacd294?7|@=o?7p`le083>4}O<l>0qcmj2;295~N3m=1vbnk<:182\7fM2b<2weoh:50;3xL1c33tdhi84?:0yK0`2<ugin:7>51zJ7a1=zfjo<6=4>{I6f0>{ikl21<7?tH5g7?xhdm00;6<uG4d68ykebi3:1=vF;e59~jfce290:wE:j4:\7fmg`e=83;pD9k;;|l`aa<728qC8h:4}oafa?6=9rB?i95rnbge>5<6sA>n86sacg294?7|@=o?7p`lf083>4}O<l>0qcmi2;295~N3m=1vbnh<:182\7fM2b<2weok:50;3xL1c33tdhj84?:0yK0`2<ugim:7>51zJ7a1=zfjl<6=4>{I6f0>{iko21<7?tH5g7?xhdn00;6<uG4d68ykeai3:1=vF;e59~jf`e290:wE:j4:\7fmgce=83;pD9k;;|l`ba<728qC8h:4}oaea?6=9rB?i95rnbde>5<6sA>n86sad1294?7|@=o?7p`k0083>4}O<l>0qcj?2;295~N3m=1vbi><:182\7fM2b<2weh=:50;3xL1c33tdo<84?:0yK0`2<ugn;:7>51zJ7a1=zfm:<6=4>{I6f0>{il921<7?tH5g7?xhc800;6<uG4d68ykb7i3:1=vF;e59~ja6e290:wE:j4:\7fm`5e=83;pD9k;;|lg4a<728qC8h:4}of3a?6=9rB?i95rne2e>5<6sA>n86sad0294?7|@=o?7p`k1083>4}O<l>0qcj>2;295~N3m=1vbi?<:182\7fM2b<2weh<:50;3xL1c33tdo=84?:0yK0`2<ugn::7>51zJ7a1=zfm;<6=4>{I6f0>{il821<7?tH5g7?xhc900;6<uG4d68ykb6i3:1=vF;e59~ja7e290:wE:j4:\7fm`4e=83;pD9k;;|lg5a<728qC8h:4}of2a?6=9rB?i95rne3e>5<6sA>n86sad3294?7|@=o?7p`k2083>4}O<l>0qcj=2;295~N3m=1vbi<<:182\7fM2b<2weh?:50;3xL1c33tdo>84?:0yK0`2<ugn9:7>51zJ7a1=zfm8<6=4>{I6f0>{il;21<7?tH5g7?xhc:00;6<uG4d68ykb5i3:1=vF;e59~ja4e290:wE:j4:\7fm`7e=83;pD9k;;|lg6a<728qC8h:4}of1a?6=9rB?i95rne0e>5<6sA>n86sad2294?7|@=o?7p`k3083>4}O<l>0qcj<2;295~N3m=1vbi=<:182\7fM2b<2weh>:50;3xL1c33tdo?84?:0yK0`2<ugn8:7>51zJ7a1=zfm9<6=4>{I6f0>{il:21<7?tH5g7?xhc;00;6<uG4d68ykb4i3:1=vF;e59~ja5e290:wE:j4:\7fm`6e=83;pD9k;;|lg7a<728qC8h:4}of0a?6=9rB?i95rne1e>5<6sA>n86sad5294?7|@=o?7p`k4083>4}O<l>0qcj;2;295~N3m=1vbi:<:182\7fM2b<2weh9:50;3xL1c33tdo884?:0yK0`2<ugn?:7>51zJ7a1=zfm><6=4>{I6f0>{il=21<7?tH5g7?xhc<00;6<uG4d68ykb3i3:1=vF;e59~ja2e290:wE:j4:\7fm`1e=83;pD9k;;|lg0a<728qC8h:4}of7a?6=9rB?i95rne6e>5<6sA>n86sad4294?7|@=o?7p`k5083>4}O<l>0qcj:2;295~N3m=1vbi;<:182\7fM2b<2weh8:50;3xL1c33tdo984?:0yK0`2<ugn>:7>51zJ7a1=zfm?<6=4>{I6f0>{il<21<7?tH5g7?xhc=00;6<uG4d68ykb2i3:1=vF;e59~ja3e290:wE:j4:\7fm`0e=83;pD9k;;|lg1a<728qC8h:4}of6a?6=9rB?i95rne7e>5<6sA>n86sad7294?7|@=o?7p`k6083>4}O<l>0qcj92;295~N3m=1vbi8<:182\7fM2b<2weh;:50;3xL1c33tdo:84?:0yK0`2<ugn=:7>51zJ7a1=zfm<<6=4>{I6f0>{il?21<7?tH5g7?xhc>00;6<uG4d68ykb1i3:1=vF;e59~ja0e290:wE:j4:\7fm`3e=83;pD9k;;|lg2a<728qC8h:4}of5a?6=9rB?i95rne4e>5<6sA>n86sad6294?7|@=o?7p`k7083>4}O<l>0qcj82;295~N3m=1vbi9<:182\7fM2b<2weh::50;3xL1c33tdo;84?:0yK0`2<ugn<:7>51zJ7a1=zfm=<6=4>{I6f0>{il>21<7?tH5g7?xhc?00;6<uG4d68ykb0i3:1=vF;e59~ja1e290:wE:j4:\7fm`2e=83;pD9k;;|lg3a<728qC8h:4}of4a?6=9rB?i95rne5e>5<6sA>n86sad9294?7|@=o?7p`k8083>4}O<l>0qcj72;295~N3m=1vbi6<:182\7fM2b<2weh5:50;3xL1c33tdo484?:0yK0`2<ugn3:7>51zJ7a1=zfm2<6=4>{I6f0>{il121<7?tH5g7?xhc000;6<uG4d68ykb?i3:1=vF;e59~ja>e290:wE:j4:\7fm`=e=83;pD9k;;|lg<a<728qC8h:4}of;a?6=9rB?i95rne:e>5<6sA>n86sad8294?7|@=o?7p`k9083>4}O<l>0qcj62;295~N3m=1vbi7<:182\7fM2b<2weh4:50;3xL1c33tdo584?:0yK0`2<ugn2:7>51zJ7a1=zfm3<6=4>{I6f0>{il021<7?tH5g7?xhc100;6<uG4d68ykb>i3:1=vF;e59~ja?e290:wE:j4:\7fm`<e=83;pD9k;;|lg=a<728qC8h:4}of:a?6=9rB?i95rne;e>5<6sA>n86sad`294?7|@=o?7p`ka083>4}O<l>0qcjn2;295~N3m=1vbio<:182\7fM2b<2wehl:50;3xL1c33tdom84?:0yK0`2<ugnj:7>51zJ7a1=zfmk<6=4>{I6f0>{ilh21<7?tH5g7?xhci00;6<uG4d68ykbfi3:1=vF;e59~jage290:wE:j4:\7fm`de=83;pD9k;;|lgea<728qC8h:4}ofba?6=9rB?i95rnece>5<6sA>n86sadc294?7|@=o?7p`kb083>4}O<l>0qcjm2;295~N3m=1vbil<:182\7fM2b<2weho:50;3xL1c33tdon84?:0yK0`2<ugni:7>51zJ7a1=zfmh<6=4>{I6f0>{ilk21<7?tH5g7?xhcj00;6<uG4d68ykbei3:1=vF;e59~jade290:wE:j4:\7fm`ge=83;pD9k;;|lgfa<728qC8h:4}ofaa?6=9rB?i95rne`e>5<6sA>n86sadb294?7|@=o?7p`kc083>4}O<l>0qcjl2;295~N3m=1vbim<:182\7fM2b<2wehn:50;3xL1c33tdoo84?:0yK0`2<ugnh:7>51zJ7a1=zfmi<6=4>{I6f0>{ilj21<7?tH5g7?xhck00;6<uG4d68ykbdi3:1=vF;e59~jaee290:wE:j4:\7fm`fe=83;pD9k;;|lgga<728qC8h:4}of`a?6=9rB?i95rneae>5<6sA>n86sade294?7|@=o?7p`kd083>4}O<l>0qcjk2;295~N3m=1vbij<:182\7fM2b<2wehi:50;3xL1c33tdoh84?:0yK0`2<ugno:7>51zJ7a1=zfmn<6=4>{I6f0>{ilm21<7?tH5g7?xhcl00;6<uG4d68ykbci3:1=vF;e59~jabe290:wE:j4:\7fm`ae=83;pD9k;;|lg`a<728qC8h:4}ofga?6=9rB?i95rnefe>5<6sA>n86sadd294?7|@=o?7p`ke083>4}O<l>0qcjj2;295~N3m=1vbik<:182\7fM2b<2wehh:50;3xL1c33tdoi84?:0yK0`2<ugnn:7>51zJ7a1=zfmo<6=4>{I6f0>{ill21<7?tH5g7?xhcm00;6<uG4d68ykbbi3:1=vF;e59~jace290:wE:j4:\7fm``e=83;pD9k;;|lgaa<728qC8h:4}offa?6=9rB?i95rnege>5<6sA>n86sadg294?7|@=o?7p`kf083>4}O<l>0qcji2;295~N3m=1vbih<:182\7fM2b<2wehk:50;3xL1c33tdoj84?:0yK0`2<ugnm:7>51zJ7a1=zfml<6=4>{I6f0>{ilo21<7?tH5g7?xhcn00;6<uG4d68ykbai3:1=vF;e59~ja`e290:wE:j4:\7fm`ce=83;pD9k;;|lgba<728qC8h:4}ofea?6=9rB?i95rnede>5<6sA>n86sae1294?7|@=o?7p`j0083>4}O<l>0qck?2;295~N3m=1vbh><:182\7fM2b<2wei=:50;3xL1c33tdn<84?:0yK0`2<ugo;:7>51zJ7a1=zfl:<6=4>{I6f0>{im921<7?tH5g7?xhb800;6<uG4d68ykc7i3:1=vF;e59~j`6e290:wE:j4:\7fma5e=83;pD9k;;|lf4a<728qC8h:4}og3a?6=9rB?i95rnd2e>5<6sA>n86sae0294?7|@=o?7p`j1083>4}O<l>0qck>2;295~N3m=1vbh?<:182\7fM2b<2wei<:50;3xL1c33tdn=84?:0yK0`2<ugo::7>51zJ7a1=zfl;<6=4>{I6f0>{im821<7?tH5g7?xhb900;6<uG4d68ykc6i3:1=vF;e59~j`7e290:wE:j4:\7fma4e=83;pD9k;;|lf5a<728qC8h:4}og2a?6=9rB?i95rnd3e>5<6sA>n86sae3294?7|@=o?7p`j2083>4}O<l>0qck=2;295~N3m=1vbh<<:182\7fM2b<2wei?:50;3xL1c33tdn>84?:0yK0`2<ugo9:7>51zJ7a1=zfl8<6=4>{I6f0>{im;21<7?tH5g7?xhb:00;6<uG4d68ykc5i3:1=vF;e59~j`4e290:wE:j4:\7fma7e=83;pD9k;;|lf6a<728qC8h:4}og1a?6=9rB?i95rnd0e>5<6sA>n86sae2294?7|@=o?7p`j3083>4}O<l>0qck<2;295~N3m=1vbh=<:182\7fM2b<2wei>:50;3xL1c33tdn?84?:0yK0`2<ugo8:7>51zJ7a1=zfl9<6=4>{I6f0>{im:21<7?tH5g7?xhb;00;6<uG4d68ykc4i3:1=vF;e59~j`5e290:wE:j4:\7fma6e=83;pD9k;;|lf7a<728qC8h:4}og0a?6=9rB?i95rnd1e>5<6sA>n86sae5294?7|@=o?7p`j4083>4}O<l>0qck;2;295~N3m=1vbh:<:182\7fM2b<2wei9:50;3xL1c33tdn884?:0yK0`2<ugo?:7>51zJ7a1=zfl><6=4>{I6f0>{im=21<7?tH5g7?xhb<00;6<uG4d68ykc3i3:1=vF;e59~j`2e290:wE:j4:\7fma1e=83;pD9k;;|lf0a<728qC8h:4}og7a?6=9rB?i95rnd6e>5<6sA>n86sae4294?7|@=o?7p`j5083>4}O<l>0qck:2;295~N3m=1vbh;<:182\7fM2b<2wei8:50;3xL1c33tdn984?:0yK0`2<ugo>:7>51zJ7a1=zfl?<6=4>{I6f0>{im<21<7?tH5g7?xhb=00;6<uG4d68ykc2i3:1=vF;e59~j`3e290:wE:j4:\7fma0e=83;pD9k;;|lf1a<728qC8h:4}og6a?6=9rB?i95rnd7e>5<6sA>n86sae7294?7|@=o?7p`j6083>4}O<l>0qck92;295~N3m=1vbh8<:182\7fM2b<2wei;:50;3xL1c33tdn:84?:0yK0`2<ugo=:7>51zJ7a1=zfl<<6=4>{I6f0>{im?21<7?tH5g7?xhb>00;6<uG4d68ykc1i3:1=vF;e59~j`0e290:wE:j4:\7fma3e=83;pD9k;;|lf2a<728qC8h:4}og5a?6=9rB?i95rnd4e>5<6sA>n86sae6294?7|@=o?7p`j7083>4}O<l>0qck82;295~N3m=1vbh9<:182\7fM2b<2wei::50;3xL1c33tdn;84?:0yK0`2<ugo<:7>51zJ7a1=zfl=<6=4>{I6f0>{zutJKOv?>2985==>6l;3vLMLt0|BCT~{GH
\ No newline at end of file
index ab6729a939938972f0c8d7e91338ea6f702f39ba..5d56b5c9840c66809c41ce0caf57afd0b6a57958 100644 (file)
@@ -1,7 +1,7 @@
 VERSION 5
 BEGIN SYMBOL fifo_xlnx_2Kx36_2clk
 SYMBOLTYPE BLOCK
-TIMESTAMP 2008 7 14 23 44 58
+TIMESTAMP 2009 9 3 17 25 13
 SYMPIN 0 80 Input din[35:0]
 SYMPIN 0 144 Input wr_en
 SYMPIN 0 176 Input wr_clk
@@ -10,9 +10,9 @@ SYMPIN 0 272 Input rd_clk
 SYMPIN 144 704 Input rst
 SYMPIN 576 80 Output dout[35:0]
 SYMPIN 576 208 Output full
-SYMPIN 576 368 Output wr_data_count[10:0]
+SYMPIN 576 368 Output wr_data_count[11:0]
 SYMPIN 576 432 Output empty
-SYMPIN 576 592 Output rd_data_count[10:0]
+SYMPIN 576 592 Output rd_data_count[11:0]
 BEGIN DISPLAY 32 32 TEXT fifo_xlnx_2Kx36_2clk
     FONT 40 "Arial"
 END DISPLAY
@@ -56,7 +56,7 @@ BEGIN DISPLAY 540 208 PIN full ATTR PinName
 END DISPLAY
 BEGIN LINE W 576 368 544 368 
 END LINE
-BEGIN DISPLAY 540 368 PIN wr_data_count[10:0] ATTR PinName
+BEGIN DISPLAY 540 368 PIN wr_data_count[11:0] ATTR PinName
     ALIGNMENT RIGHT
     FONT 24 "Arial"
 END DISPLAY
@@ -67,7 +67,7 @@ BEGIN DISPLAY 540 432 PIN empty ATTR PinName
 END DISPLAY
 BEGIN LINE W 576 592 544 592 
 END LINE
-BEGIN DISPLAY 540 592 PIN rd_data_count[10:0] ATTR PinName
+BEGIN DISPLAY 540 592 PIN rd_data_count[11:0] ATTR PinName
     ALIGNMENT RIGHT
     FONT 24 "Arial"
 END DISPLAY
index c45dacdad568de6244a3df6ae75df30d66cc4c3c..0762b3ae9ce18f4e3f8428bb7c6b92213ef0e8fa 100644 (file)
@@ -60,15 +60,15 @@ input wr_en;
 output [35 : 0] dout;
 output empty;
 output full;
-output [10 : 0] rd_data_count;
-output [10 : 0] wr_data_count;
+output [11 : 0] rd_data_count;
+output [11 : 0] wr_data_count;
 
 // synthesis translate_off
 
       FIFO_GENERATOR_V4_3 #(
                .C_COMMON_CLOCK(0),
                .C_COUNT_TYPE(0),
-               .C_DATA_COUNT_WIDTH(11),
+               .C_DATA_COUNT_WIDTH(12),
                .C_DEFAULT_VALUE("BlankString"),
                .C_DIN_WIDTH(36),
                .C_DOUT_RST_VAL("0"),
@@ -108,19 +108,19 @@ output [10 : 0] wr_data_count;
                .C_PROG_FULL_THRESH_ASSERT_VAL(2047),
                .C_PROG_FULL_THRESH_NEGATE_VAL(2046),
                .C_PROG_FULL_TYPE(0),
-               .C_RD_DATA_COUNT_WIDTH(11),
+               .C_RD_DATA_COUNT_WIDTH(12),
                .C_RD_DEPTH(2048),
                .C_RD_FREQ(1),
                .C_RD_PNTR_WIDTH(11),
                .C_UNDERFLOW_LOW(0),
-               .C_USE_DOUT_RST(0),
+               .C_USE_DOUT_RST(1),
                .C_USE_ECC(0),
                .C_USE_EMBEDDED_REG(0),
                .C_USE_FIFO16_FLAGS(0),
-               .C_USE_FWFT_DATA_COUNT(0),
+               .C_USE_FWFT_DATA_COUNT(1),
                .C_VALID_LOW(0),
                .C_WR_ACK_LOW(0),
-               .C_WR_DATA_COUNT_WIDTH(11),
+               .C_WR_DATA_COUNT_WIDTH(12),
                .C_WR_DEPTH(2048),
                .C_WR_FREQ(1),
                .C_WR_PNTR_WIDTH(11),
index bb691ff4d524fa4f2ebdee634de041076e4fb48d..af9191555f8c4c0d1316efa4ca4bc991b0979a20 100644 (file)
@@ -41,8 +41,8 @@ fifo_xlnx_2Kx36_2clk YourInstanceName (
        .dout(dout), // Bus [35 : 0] 
        .empty(empty),
        .full(full),
-       .rd_data_count(rd_data_count), // Bus [10 : 0] 
-       .wr_data_count(wr_data_count)); // Bus [10 : 0] 
+       .rd_data_count(rd_data_count), // Bus [11 : 0] 
+       .wr_data_count(wr_data_count)); // Bus [11 : 0] 
 
 // INST_TAG_END ------ End INSTANTIATION Template ---------
 
index 834abf2718ec4a2c5baf1347b293ca0c25ff3016..53033dc97e3d23e57f97b3bfa637e8edbf6dba42 100644 (file)
@@ -51,8 +51,8 @@ ENTITY fifo_xlnx_2Kx36_2clk IS
        dout: OUT std_logic_VECTOR(35 downto 0);
        empty: OUT std_logic;
        full: OUT std_logic;
-       rd_data_count: OUT std_logic_VECTOR(10 downto 0);
-       wr_data_count: OUT std_logic_VECTOR(10 downto 0));
+       rd_data_count: OUT std_logic_VECTOR(11 downto 0);
+       wr_data_count: OUT std_logic_VECTOR(11 downto 0));
 END fifo_xlnx_2Kx36_2clk;
 
 ARCHITECTURE fifo_xlnx_2Kx36_2clk_a OF fifo_xlnx_2Kx36_2clk IS
@@ -68,8 +68,8 @@ component wrapped_fifo_xlnx_2Kx36_2clk
        dout: OUT std_logic_VECTOR(35 downto 0);
        empty: OUT std_logic;
        full: OUT std_logic;
-       rd_data_count: OUT std_logic_VECTOR(10 downto 0);
-       wr_data_count: OUT std_logic_VECTOR(10 downto 0));
+       rd_data_count: OUT std_logic_VECTOR(11 downto 0);
+       wr_data_count: OUT std_logic_VECTOR(11 downto 0));
 end component;
 
 -- Configuration specification 
@@ -88,7 +88,7 @@ end component;
                        c_use_embedded_reg => 0,
                        c_has_wr_rst => 0,
                        c_wr_freq => 1,
-                       c_use_dout_rst => 0,
+                       c_use_dout_rst => 1,
                        c_underflow_low => 0,
                        c_has_meminit_file => 0,
                        c_has_overflow => 0,
@@ -102,21 +102,21 @@ end component;
                        c_has_rd_rst => 0,
                        c_has_almost_full => 0,
                        c_has_rst => 1,
-                       c_data_count_width => 11,
+                       c_data_count_width => 12,
                        c_has_wr_ack => 0,
                        c_use_ecc => 0,
                        c_wr_ack_low => 0,
                        c_common_clock => 0,
                        c_rd_pntr_width => 11,
-                       c_use_fwft_data_count => 0,
+                       c_use_fwft_data_count => 1,
                        c_has_almost_empty => 0,
-                       c_rd_data_count_width => 11,
+                       c_rd_data_count_width => 12,
                        c_enable_rlocs => 0,
                        c_wr_pntr_width => 11,
                        c_overflow_low => 0,
                        c_prog_empty_type => 0,
                        c_optimization_mode => 0,
-                       c_wr_data_count_width => 11,
+                       c_wr_data_count_width => 12,
                        c_preload_regs => 1,
                        c_dout_rst_val => "0",
                        c_has_data_count => 0,
index 3fd2e43f1625892cc772895121a91267a4eaf6ab..5165b0bc417c5ec51964c2cf3f9f0be7086ed3f8 100644 (file)
@@ -40,8 +40,8 @@ component fifo_xlnx_2Kx36_2clk
        dout: OUT std_logic_VECTOR(35 downto 0);
        empty: OUT std_logic;
        full: OUT std_logic;
-       rd_data_count: OUT std_logic_VECTOR(10 downto 0);
-       wr_data_count: OUT std_logic_VECTOR(10 downto 0));
+       rd_data_count: OUT std_logic_VECTOR(11 downto 0);
+       wr_data_count: OUT std_logic_VECTOR(11 downto 0));
 end component;
 
 -- Synplicity black box declaration
index 3afc64a1015857ae850dafdf3377804baef03f89..e25ad38da6eea6891ebe8cfdef59ae9146c97bdc 100644 (file)
@@ -1,7 +1,7 @@
 ##############################################################
 #
-# Xilinx Core Generator version K.37
-# Date: Mon Jul 14 23:45:29 2008
+# Xilinx Core Generator version K.39
+# Date: Thu Sep  3 17:25:43 2009
 #
 ##############################################################
 #
@@ -39,7 +39,7 @@ CSET almost_empty_flag=false
 CSET almost_full_flag=false
 CSET component_name=fifo_xlnx_2Kx36_2clk
 CSET data_count=false
-CSET data_count_width=11
+CSET data_count_width=12
 CSET disable_timing_violations=false
 CSET dout_reset_value=0
 CSET empty_threshold_assert_value=4
@@ -61,22 +61,22 @@ 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=true
-CSET read_data_count_width=11
+CSET read_data_count_width=12
 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_dout_reset=true
 CSET use_embedded_registers=false
-CSET use_extra_logic=false
+CSET use_extra_logic=true
 CSET valid_flag=false
 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=true
-CSET write_data_count_width=11
+CSET write_data_count_width=12
 # END Parameters
 GENERATE
-# CRC: a8b698f5
+# CRC: 2ae9f6ef
 
index 7089f8c2d95acdaa8d97c1da9bd0c7f2af05c627..5108be2c5a745eb076cb7ce24d5dd5ff16ef8d5a 100644 (file)
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-<document OS="lin64" product="ISE" version="10.1.02">
+<document OS="lin64" product="ISE" version="10.1.03">
 
   <!--The data in this file is primarily intended for consumption by Xilinx tools.
     The structure and the elements are likely to change over the next few releases.
     This means code written to parse this file will need to be revisited each subsequent release.-->
 
-  <application stringID="Xst" timeStamp="Mon Jul 14 16:45:03 2008">
+  <application stringID="Xst" timeStamp="Thu Sep  3 10:25:17 2009">
     <section stringID="XST_HDL_SYNTHESIS_REPORT">
-      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="2"></item>
+      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item>
       <item dataType="int" stringID="XST_COUNTERS" value="2">
         <item dataType="int" stringID="XST_11BIT_UP_COUNTER" value="2"/>
       </item>
       <item dataType="int" stringID="XST_REGISTERS" value="31">
         <item dataType="int" stringID="XST_1BIT_REGISTER" value="15"/>
-        <item dataType="int" stringID="XST_11BIT_REGISTER" value="13"/>
+        <item dataType="int" stringID="XST_11BIT_REGISTER" value="11"/>
         <item dataType="int" stringID="XST_2BIT_REGISTER" value="1"/>
         <item dataType="int" stringID="XST_3BIT_REGISTER" value="1"/>
         <item dataType="int" stringID="XST_36BIT_REGISTER" value="1"/>
     </section>
     <section stringID="XST_ADVANCED_HDL_SYNTHESIS_REPORT">
       <item dataType="int" stringID="XST_FSMS" value="1"/>
-      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="2"></item>
+      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item>
       <item dataType="int" stringID="XST_COUNTERS" value="2">
         <item dataType="int" stringID="XST_11BIT_UP_COUNTER" value="2"/>
       </item>
-      <item dataType="int" stringID="XST_REGISTERS" value="199">
-        <item dataType="int" stringID="XST_FLIPFLOPS" value="199"/>
+      <item dataType="int" stringID="XST_REGISTERS" value="189">
+        <item dataType="int" stringID="XST_FLIPFLOPS" value="189"/>
       </item>
       <item dataType="int" stringID="XST_XORS" value="91">
         <item dataType="int" stringID="XST_1BIT_XOR2" value="90"/>
@@ -38,8 +38,8 @@
       </item>
     </section>
     <section stringID="XST_FINAL_REGISTER_REPORT">
-      <item dataType="int" stringID="XST_REGISTERS" value="218">
-        <item dataType="int" stringID="XST_FLIPFLOPS" value="218"/>
+      <item dataType="int" stringID="XST_REGISTERS" value="222">
+        <item dataType="int" stringID="XST_FLIPFLOPS" value="222"/>
       </item>
     </section>
     <section stringID="XST_PARTITION_REPORT">
     </section>
     <section stringID="XST_FINAL_REPORT">
       <section stringID="XST_FINAL_RESULTS">
-        <item stringID="XST_TOP_LEVEL_OUTPUT_FILE_NAME" value="tmp/_cg/fifo_xlnx_2Kx36_2clk_fifo_generator_v4_3_xst_1.ngc"/>
+        <item stringID="XST_TOP_LEVEL_OUTPUT_FILE_NAME" value="/home/matt/coregen/tmp/_cg/fifo_xlnx_2Kx36_2clk_fifo_generator_v4_3_xst_1.ngc"/>
         <item stringID="XST_OUTPUT_FORMAT" value="NGC"/>
         <item stringID="XST_OPTIMIZATION_GOAL" value="SPEED"/>
         <item stringID="XST_KEEP_HIERARCHY" value="no"/>
       </section>
       <section stringID="XST_DESIGN_STATISTICS">
-        <item stringID="XST_IOS" value="195"/>
+        <item stringID="XST_IOS" value="198"/>
       </section>
       <section stringID="XST_CELL_USAGE">
-        <item dataType="int" stringID="XST_BELS" value="234">
+        <item dataType="int" stringID="XST_BELS" value="283">
           <item dataType="int" stringID="XST_GND" value="1"/>
+          <item dataType="int" stringID="XST_INV" value="1"/>
           <item dataType="int" stringID="XST_LUT1" value="22"/>
-          <item dataType="int" stringID="XST_LUT2" value="55"/>
-          <item dataType="int" stringID="XST_LUT2L" value="1"/>
-          <item dataType="int" stringID="XST_LUT3" value="11"/>
-          <item dataType="int" stringID="XST_LUT4" value="33"/>
-          <item dataType="int" stringID="XST_LUT4L" value="2"/>
+          <item dataType="int" stringID="XST_LUT2" value="63"/>
+          <item dataType="int" stringID="XST_LUT3" value="19"/>
+          <item dataType="int" stringID="XST_LUT3D" value="1"/>
+          <item dataType="int" stringID="XST_LUT3L" value="3"/>
+          <item dataType="int" stringID="XST_LUT4" value="62"/>
+          <item dataType="int" stringID="XST_LUT4D" value="2"/>
           <item dataType="int" stringID="XST_MUXCY" value="64"/>
           <item dataType="int" stringID="XST_VCC" value="1"/>
           <item dataType="int" stringID="XST_XORCY" value="44"/>
         </item>
-        <item dataType="int" stringID="XST_FLIPFLOPSLATCHES" value="218">
+        <item dataType="int" stringID="XST_FLIPFLOPSLATCHES" value="222">
           <item dataType="int" stringID="XST_FD" value="4"/>
-          <item dataType="int" stringID="XST_FDC" value="112"/>
-          <item dataType="int" stringID="XST_FDCE" value="52"/>
-          <item dataType="int" stringID="XST_FDE" value="36"/>
-          <item dataType="int" stringID="XST_FDP" value="9"/>
+          <item dataType="int" stringID="XST_FDC" value="103"/>
+          <item dataType="int" stringID="XST_FDCE" value="88"/>
+          <item dataType="int" stringID="XST_FDP" value="10"/>
           <item dataType="int" stringID="XST_FDPE" value="5"/>
         </item>
         <item dataType="int" stringID="XST_RAMS" value="4">
     </section>
     <section stringID="XST_DEVICE_UTILIZATION_SUMMARY">
       <item stringID="XST_SELECTED_DEVICE" value="3s2000fg456-5"/>
-      <item AVAILABLE="20480" dataType="int" stringID="XST_NUMBER_OF_SLICES" value="138"/>
-      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_SLICE_FLIP_FLOPS" value="218"/>
-      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_4_INPUT_LUTS" value="124"/>
-      <item dataType="int" stringID="XST_NUMBER_OF_IOS" value="195"/>
+      <item AVAILABLE="20480" dataType="int" stringID="XST_NUMBER_OF_SLICES" value="162"/>
+      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_SLICE_FLIP_FLOPS" value="222"/>
+      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_4_INPUT_LUTS" value="173"/>
+      <item dataType="int" stringID="XST_NUMBER_OF_IOS" value="198"/>
       <item AVAILABLE="333" dataType="int" stringID="XST_NUMBER_OF_BONDED_IOBS" value="0"/>
       <item AVAILABLE="40" dataType="int" stringID="XST_NUMBER_OF_BRAMS" value="4"/>
     </section>
@@ -97,8 +98,8 @@
     </section>
     <section stringID="XST_ERRORS_STATISTICS">
       <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_ERRORS" value="0"/>
-      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_WARNINGS" value="199"/>
-      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_INFOS" value="28"/>
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_WARNINGS" value="196"/>
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_INFOS" value="29"/>
     </section>
   </application>
 
index 86b8f03e15ebe63b27c14df0f432d757d1296e99..1879503a9831a2e5cd1cab5bc28c12fab3307fa9 100644 (file)
@@ -1,5 +1,5 @@
 The following files were generated for 'fifo_xlnx_2Kx36_2clk' in directory 
-/home/matt/usrp2/fpga/coregen:
+/home/matt/gnuradio.git/usrp2/fpga/coregen/:
 
 fifo_xlnx_2Kx36_2clk.asy:
    Graphical symbol information file. Used by the ISE tools and some
index 618ccf76683c8161e78e80cc89113f30b280e7c2..55486485a44fde0928dc2ecef147fb8dcfced4a8 100644 (file)
@@ -1,3 +1,3 @@
 XILINX-XDB 0.1 STUB 0.1 ASCII
 XILINX-XDM V1.4e
-$4::\7f40<,[o}e~g`n;"2*413&;$8,)=;;.jli`)ji}~$ob|jgdl,phv(Wjm$jdh`_ynm|Z36:q9=S?mck/ldk4=712:;<=>?01274>6789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123457<9:1:"=?4200877<NFY__6IGN<2394;753:81EC^ZT;FJF956294:?6==:NWWTPR=LFK7?<4?>01877<H]]Z^X7J@B=12>5833:99?<<4378JJUSS2mce0>;50?37?60=G\^[YY4kotv?70<76;184i5<s3234ca3=?'>=6:>1:69MKVR\3NB\L2<:1<25>2=AGZ^X7JFPC>0>586:2>1CXZ_UU8GKUG;;3:5=?5;:NWWTPR=LFZI0>4?>0956>0><2<25;:468C26>0B<22?><?4959:45?530<?74899008=?OIX\^1MIJ]A=:94;75300BB][[:@FGVG:?294:i675IORVP?vugnUna}zv_ujqavn;03:5>856:HLSQQ<wzfmTi`~{y^vkv`uoWhyxi\7fz38;2=60=>2@D[YY4\7frne\ahvsqV~c~h}g_ogdeqc;03:5=i56:HLSQQ<wzfmTjxbc_ujqavn;03:5>956:HLSQQ<wzfmTjxbc_ujqavnXizyn~y27:1<10>?=AGZ^X7~}of]eqijX|axn\7feQaefcwa9>=87;3744@UURVP?bf|hUhcx`{<983:4d<13E^X][[:sf\`drfWje~by27:1<2f>?=G\^[YY4xr^fbpdYdg|d\7f054?>99B@ATF49437LJKR@>2:==FLMXJ0?07;@FGVD:4611JHI\N<5<;?DBCZH6>255NDEPB838?3HNO^L28>`9B@ATF410;255NDEPB8=8?3HNO^O2?>99B@ATE48437LJKRC>1:==FLMXI0>07;@FGVG:3611JHI\M<4<;?DBCZK6=255NDEPA828f3HNO^O27:1<;?DBCZK63245NSXL@[WC@;2H^>55MUR]JJCI63J>0OL6N2:AF57=D@LI@SAGLEOQF[Q_WM;1HE95LLJC7?FJLJ:1H@_74CNONMQRBL8>0OB\J_FGMAWGSAFDTECH@7:AQADRBL81O>6JF6:FJE969?2NBM1??>69GMD:697=0HDO313<4?AOF4895;6JFA=37:2=CAH6:9394DHC?53803MCJ0<917:FJE97?6>1OEL2>9?48@LG;97=0HDO321<4?AOF4;;5;6JFA=01:2=CAH69?394DHC?61803MCJ0?;17:FJE9416>1OEL2=7?58@LG;:14<7IGN<3;=2>BNI585;6JFA=13:<=CAH68=7>17:FJE9566?1OEL2<>79GMD:36?1OEL2:>79GMD:16?1OEL28>79GMD:?6?1OEL26>79GMG:76>1OEO2>0?58@LD;984<7IGM<00=3>BNJ5;82:5KIC>20;1<L@H7=808;EKA8409?2NBN1?8>69GMG:607=0HDL318<5?AOE484<7IGM<32=3>BNJ58:2:5KIC>16;1<L@H7>>08;EKA8729?2NBN1<:>69GMG:5>7=0HDL326<4?AOE4;25;6JFB=0::3=CAK692:5KIC>04;?<L@H7?<4?>69GMG:497<0HDL33?48@LD;<7<0HDL35?48@LD;>7<0HDL37?48@LD;07<0HDL39?58@LVF494<7IG_A=3=3>BNXH69245KIQC?7?69?2NB\L2<>69GMUD;87=0HD^M<0<4?AOWJ58556JFPC>0>5803MC[N1=16:FLE969?2NDM1??>69GKD:697=0HBO313<4?AIF4895;6J@A=37:2=CGH6:9394DNC?53803MEJ0<917:FLE97?6>1OCL2>9?48@JG;97=0HBO321<4?AIF4;;5;6J@A=01:2=CGH69?394DNC?61803MEJ0?;17:FLE9416>1OCL2=7?58@JG;:14<7IAN<3;=2>BHI585;6J@A=13:<=CGH68=7>17:FLE9566?1OCL2<>79GKD:36?1OCL2:>79GKD:16?1OCL28>79GKD:?6?1OCL26>79GKG:76>1OCO2>0?58@JD;984<7IAM<00=3>BHJ5;82:5KOC>20;1<LFH7=808;EMA8409?2NDN1?8>69GKG:607=0HBL318<5?AIE484<7IAM<32=3>BHJ58:2:5KOC>16;1<LFH7>>08;EMA8729?2NDN1<:>69GKG:5>7=0HBL326<4?AIE4;25;6J@B=0::3=CGK692:5KOC>04;?<LFH7?<4?>69GKG:497<0HBL33?48@JD;<7<0HBL35?48@JD;>7<0HBL37?48@JD;07<0HBL39?58@JVF494<7IA_A=3=3>BHXH69245KOQC?7?69?2ND\L2<>69GKUD;87=0HB^M<0<4?AIWJ58556J@PC>0>5803ME[N1=13:GME6=BFK>0J?H?2:D;6>@C;2LOO95IDBG0?CBB;2LO\95IDQG6?Cgk{l;0K>5HNE08M54<A880E?<4I2:8MKOSXV:;46GAIUR\44><AGC_\R>=8:KMMQVX8:20ECG[P^27<>OIA]ZT<864IOKWTZ6102CEEY^P06;8MKOS[]K_I:5FNHV\451<AGC_S=?8;HLJPZ65?2CEEYQ?369JJLRX8==0ECG[_174?LHN\V:=;6GAIU]332=NF@^T<594IOKW[5?03@DBXR>N7:KMMQY7J>1BBDZP0B58MKOSW9N<7D@FT^2F3>OIA]U;J:5FNHV\551<AGC_S<?8;HLJPZ75?2CEEYQ>369JJLRX9==0ECG[_074?LHN\V;=;6GAIU]232=NF@^T=594IOKW[4?03@DBXR?N7:KMMQY6J>1BBDZP1B58MKOSW8N<7D@FT^3F3>OIA]U:J:5FNHV\651<AGC_S??8;HLJPZ45?2CEEYQ=369JJLRX:==0ECG[_374?LHN\V8=;6GAIU]132=NF@^T>594IOKW[7?03@DBXR<N7:KMMQY5J>1BBDZP2B58MKOSW;N<7D@FT^0F3>OIA]U9J:5FNHV\751<AGC_S>?8;HLJPZ55?2CEEYQ<369JJLRX;==0ECG[_274?LHN\V9=;6GAIU]032=NF@^T?594IOKW[6?03@DBXR=N7:KMMQY4J>1BBDZP3B58MKOSW:N<7D@FT^1F3>OIA]U8J;5FNHV\E3=NF@^TN>5FOC08HL4<DF<0@BOKEE58HJANKHF?7A[[159OQQ413E__>RB;;MWW73=K]]9T@95CUU66?HU@GG?0AXVLYb9Neoiu^lxxeb`l;LkmkwPbzzcdb?5A129M552<F8::86@>0318J4733G;:995A1047?K76?=1E=<6;;O32=6=I9;>0B<<?4:L2642<F88986@>2268J443<2D:>8:4N0050>H6:>>0B<<74:L26<5<F89?7C?<059M56733G;8>95A1217?K74<=1E=>;;;O3021=I9:=?7C?<859M56?43G;?86@>4168J426<2D:8?:4N0600>H6<=>0B<::4:L2032<F8><86@>4968J42>;2D:995A1427?K729=1E=8<;;O3631=I9<2?7C?:929M532<F8<;86@>6068J405<2D::>:4N0470>H6><>0B<874:L22<5<F8=?7C?8059M52733G;<>95A1617?K70<=1E=:;;;O3426=I9190B<7<;O037>H59:1E>?=4N310?K43;2D99>5A2718J7143G83?6@=929M755<F:;87C==3:L076=I;=90B>;<;O157>H4?:1E?5=4N2;0?K27;2D?=?5A639M37=I0;1E5>5A9718J<143G32j6@M_CWPTLHXX[E[_:5AEUULVN2<FFDN=6A=;NI2?U2<XHX_m6^FN^@VWLB_j2ZBBRLZSOCNA6=WZL;0]h5]AL@22ZU4>VY8:<5\129PMHYDGEFB_DAA_BJFGN0<[F_YOH94SSTBHZG03ZX]MAQM4:QPVD2<[ZXI86ZVPD11?P6(o{l%~k!hcy,`hn~(EqeyS\7fjPpovq[beXpfx;<=>PRdqvhq74:2_;#j|i.sd,cf~)keas#@v`r^pg[uhszVmhSua}0122[Wct}e~:??5Z0.eqb+ta'nis"nbdx.O{kwYulVzex\7fQhc^zlv567:VXn\7fxb{1208Q5)`zo$yj"ilx/aoo})JpfxT~iQ\7fnup\cfY\7fg{:;<>Q]erwop4553\:$k\7fh!rg-dg}(ddbr$Aua}_sf\tkruWniTtb|?016\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZtcWyd\7f~Ril_ymq4562W[oxyaz>339V4*aun'xm#jmw.bnh|*K\7fg{UyhR~ats]dgZ~hz9:;:R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pre]sjqtXojUsc\7f>?06]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[rtXxg~ySjmPxnp3456XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^e`[}iu89::S_k|umv277=R8&myj#|i/fa{*fjlp&Gsc\7fQxr^rmpwY`kVrd~=>?2^Pfwpjs9:80Y=!hrg,qb*adp'iggu!Bxnp\swYwf}xTknQwos2346YUmz\7fgx<==;T2,cw`)zo%lou lljz,I}iuW~xT|cz}_fa\|jt789>T^h}zlu306>S7'nxm"\7fh gbz-gim\7f'Drd~Ry}_qlwvZadWqey<=>:_Sgpqir6;;1^<"i}f/pe+be\7f&jf`t"Cwos]tvZvi|{UloRv`r1232ZTb{|f\7f=><4U1-dvc(un&mht#mcky-N|jtX\7f{U{by|Pgb]{kw678>UYi~{ct002?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?4;463\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flh;978:7X> gsd-vc)`kq$h`fv re]sjqtXj`d7>3<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`33?02?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?0;463\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flh;=78:7X> gsd-vc)`kq$h`fv re]sjqtXj`d7:3<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`37?02?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?<;473\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flhX8;:0Y=!hrg,qb*adp'iggu!}d^rmpwYeagU:>=5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbR<=0:W3+bta&{l$knv!cmi{+wbXxg~ySoga_203?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\076<]9%l~k }f.e`|+ekcq%yhR~ats]amkY2:91^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnfV<9<6[?/fpe*w`(ojr%oaew/sf\tkruWkceS:<?;T2,cw`)zo%lou lljz,vaYwf}xTnd`P8348Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio]{kw67898<7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?012263=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ~hz9:;=?94U1-dvc(un&mht#mcky-q`Zvi|{UiecQwos234475>2_;#j|i.sd,cf~)keas#\7fjPpovq[goiWqey<=>=269V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn^zlv567:88=7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?01113>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[}iu89:8>?84U1-dvc(un&mht#mcky-q`Zvi|{UiecQwos2341403\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flhXpfx;<=:>279V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn^zlv567=;=0Y=!hrg,qb*adp'iggu!}d^rmpwYeagUsc\7f>?04312>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[}iu89:=>n5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbRv`r123247X[^:9o6[?/fpe*w`(ojr%oaew/sf\tkruWkceSua}012554YT_88<7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?014163=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ~hz9:;;?94U1-dvc(un&mht#mcky-q`Zvi|{UiecQwos23427582_;#j|i.sd,cf~)keas#\7fjPpovq[be;878;7X> gsd-vc)`kq$h`fv re]sjqtXoj6:2?>4U1-dvc(un&mht#mcky-q`Zvi|{Ulo1<1219V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril<2<14>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa?0;473\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cf:26;:0Y=!hrg,qb*adp'iggu!}d^rmpwY`k5<5>=5Z0.eqb+ta'nis"nbdx.pg[uhszVmh0:0=0:W3+bta&{l$knv!cmi{+wbXxg~ySjm38?3e?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]35c=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[47a3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfY59o1^<"i}f/pe+be\7f&jf`t"|k_qlwvZadW:;m7X> gsd-vc)`kq$h`fv re]sjqtXojU?=k5Z0.eqb+ta'nis"nbdx.pg[uhszVmhS8?i;T2,cw`)zo%lou lljz,vaYwf}xTknQ91g9V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_63e?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb];63=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumn6;2?84U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde?5;413\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfYf{{ol0?0=6:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfc959:?1^<"i}f/pe+be\7f&jf`t"|k_qlwvZadWhyyij2;>348Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`a;=78=7X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh<7<12>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtbo5=5>;5Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef>;:73<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmT<?;4U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\573<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmT>?;4U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\773<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmT8?;4U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\173<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmT:?;4U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\373<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmT4?74U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4:76;30Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0>2:7?<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<2=>3;8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aXl8682?74U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4:36;30Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0>6:7?<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<29>3;8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aXl86<2?74U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4:?6;20Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0]36==R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=R?=8:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6W;837X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_e3\77><]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<Q;299V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqabYc9V?946[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2[34?3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfYf{{olSi?P73:8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aXl8U3>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSua}012360=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[}iu89::>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSua}012160=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[}iu89:8>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSua}012760=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[}iu89:>>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSua}012560=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[}iu89:<><5Z0.eqb+ta'nis"nbdx.uq[uhszVhbb1>1209V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn=3=64=R8&myj#|i/fa{*fjlp&}yS}`{r^`jj949:81^<"i}f/pe+be\7f&jf`t"y}_qlwvZdnf595><5Z0.eqb+ta'nis"nbdx.uq[uhszVhbb1:1209V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn=7=64=R8&myj#|i/fa{*fjlp&}yS}`{r^`jj909:81^<"i}f/pe+be\7f&jf`t"y}_qlwvZdnf5=5><5Z0.eqb+ta'nis"nbdx.uq[uhszVhbb161219V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn^214>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[4473\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flhX:;:0Y=!hrg,qb*adp'iggu!xr^rmpwYeagU8>=5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbR:=0:W3+bta&{l$knv!cmi{+rtXxg~ySoga_403?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl\276<]9%l~k }f.e`|+ekcq%|~R~ats]amkY0:91^<"i}f/pe+be\7f&jf`t"y}_qlwvZdnfV29:6[?/fpe*w`(ojr%oaew/vp\tkruWkceSua}012362=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ~hz9:;<<<9;T2,cw`)zo%lou lljz,swYwf}xTnd`Pxnp34575?2_;#j|i.sd,cf~)keas#z|Ppovq[goiWqey<=>>1348Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio]{kw678;8<7X> gsd-vc)`kq$h`fv ws]sjqtXj`dTtb|?010263=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ~hz9:;??94U1-dvc(un&mht#mcky-tvZvi|{UiecQwos234645>2_;#j|i.sd,cf~)keas#z|Ppovq[goiWqey<=>;269V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn^zlv567<88=7X> gsd-vc)`kq$h`fv ws]sjqtXj`dTtb|?01713>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[}iu89:>=?84U1-dvc(un&mht#mcky-tvZvi|{UiecQwos23434d3\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flhXpfx;<=8>1^QT47e<]9%l~k }f.e`|+ekcq%|~R~ats]amkY\7fg{:;<;?>_RU262=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ~hz9:;:?<9;T2,cw`)zo%lou lljz,swYwf}xTnd`Pxnp34515?2_;#j|i.sd,cf~)keas#z|Ppovq[goiWqey<=>81328Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc=2=65=R8&myj#|i/fa{*fjlp&}yS}`{r^e`848582_;#j|i.sd,cf~)keas#z|Ppovq[be;:78;7X> gsd-vc)`kq$h`fv ws]sjqtXoj682?>4U1-dvc(un&mht#mcky-tvZvi|{Ulo1:1219V4*aun'xm#jmw.bnh|*quWyd\7f~Ril<4<14>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa?2;473\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cf:06;:0Y=!hrg,qb*adp'iggu!xr^rmpwY`k525=k5Z0.eqb+ta'nis"nbdx.uq[uhszVmhS=?i;T2,cw`)zo%lou lljz,swYwf}xTknQ>1g9V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_33e?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]05c=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[17a3\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfY29o1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadW?;m7X> gsd-vc)`kq$h`fv ws]sjqtXojU<=k5Z0.eqb+ta'nis"nbdx.uq[uhszVmhS5<9;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd8585>2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnk1?1279V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqab:56;<0Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hi33?05?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]bwwc`4=49:6[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg=7=63=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumn6=2?84U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde?3;413\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfYf{{ol050=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZ65=2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkR?=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZ45=2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkR==5:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZ25=2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkR;=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZ05=2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkR9=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZ>512_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj><1<1=>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboVn:0<0=9:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb64;4956[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2868512_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj><5<1=>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboVn:080=9:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb64?4956[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2828512_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj><9<1<>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboVn:S=<7;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[a7X9;20Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hiPd0]16==R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=R==8:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb6W=837X> gsd-vc)`kq$h`fv ws]sjqtXojUj\7f\7fkh_e3\17><]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlmTh<Q9299V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc9V=946[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2[=423\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfY\7fg{:;<=<:;T2,cw`)zo%lou lljz,swYwf}xTknQwos2344423\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfY\7fg{:;<?<:;T2,cw`)zo%lou lljz,swYwf}xTknQwos2346423\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfY\7fg{:;<9<:;T2,cw`)zo%lou lljz,swYwf}xTknQwos2340423\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfY\7fg{:;<;<:;T2,cw`)zo%lou lljz,swYwf}xTknQwos23424f3\:$k\7fh!rg-dh5(ul&my=#|iwgv,VDKXZMUNBRHXFU31g>S7'nxm"\7fh gm2-va)`z8$yjzh{/SCN[WBXMGUM[KZ>_00:?P6(o{l%~k!hl1,q`*au9'xm{kz R@O\V@AH]]UNB<=<;T2,cw`)zo%l`= }d.eq5+ta\7fo~$ox|}_guepZusi}oTJ^CPFGf273=R8&myj#|i/fn3*wb(o{;%~kyit.avvwYa\7fo~T\7fyo{e^DPIZ@Al8'Bb>64U1-dvc(un&mg<#|k/fp2*w`pn}%hy\7f|Pfvdw[vrf|lUM_@QIFe3.Mk76;:1^<"i}f/pe+bj7&{n$k\7f?!rguep*erz{Um{kzPsucwaZ@TEVLMh?=9;T2,cw`)zo%l`= }d.eq5+ta\7fo~$ox|}_guepZusi}oTJ^CPFGf1)Lh402_;#j|i.sd,ci6)zm%l~< }fvdw+fsuzVl|jyQ|t`vf[CUJWOLo> Ga100;?P6(o{l%~k!hl1,q`*au9'xm{kz elrw}Z`pn}Umn?94U1-dvc(un&mg<#|k/fp2*w`pn}%na}zv_guepZo5m2_;#j|i.sd,ci6)zm%l~< }fvdw+`kw|pUm{kzPi^mq4567:o1^<"i}f/pe+bj7&{n$k\7f?!rguep*cjx}sTjzh{_h]lv567889j7X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#@}zb^pg[aeXaVy~n=>?0^az8584i2_;#j|i.sd,ci6)zm%l~l}!gsf`5+tck&GxyoQ}d^f`[lYt}k:;<=Qly=3=7d=R8&myj#|i/fn3*wb(o{kx"j|kc0,q`f)J{|hT~iQkc^k\wpd789:Tot2=>2c8Q5)`zo$yj"ic0/pg+btf{'myhn?!rea,IvseW{nThnQf_rwa4567Wjs7?3=n;T2,cw`)zo%l`= }d.eqev(`zmi:"\7fjl/LqvfZtcWmiTeR}zb1234Ze~4=48m6[?/fpe*w`(oe:%~i!hr`q-cwbd9'xoo"C|uc]q`ZbdW`Uxyo>?01]`}939;h1^<"i}f/pe+bj7&{n$k\7fo|.fpgg4(ulj%F\7fxlPre]ggZoX{|h;<=>Pcx>5:6g<]9%l~k }f.eo4+tc'nxj\7f#i}db3-vae(Ez\7fiS\7fjPdb]j[vse89:;Snw37?1a?P6(o{l%~k!hl1,q`*auiz$l~im>.sf`+HurjVxoSimPi^qvf5678Vf~x1>13c9V4*aun'xm#jb?.sf,cwgt&nxoo< }db-NwpdXzmUooRgPst`3456Xd|~7=3=m;T2,cw`)zo%l`= }d.eqev(`zmi:"\7fjl/LqvfZtcWmiTeR}zb1234Zjr|585?o5Z0.eqb+ta'nf;"\7fj gscp*btck8$yhn!Bst`\vaYckVcT\7fxl?012\hpr;;79i7X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#@}zb^pg[aeXaVy~n=>?0^nvp929;k1^<"i}f/pe+bj7&{n$k\7fo|.fpgg4(ulj%F\7fxlPre]ggZoX{|h;<=>Pltv?1;5e3\:$k\7fh!rg-dh5(ul&mym~ hrea2*wbd'Dy~nR|k_ea\mZurj9:;<Rbzt=4=7g=R8&myj#|i/fn3*wb(o{kx"j|kc0,q`f)J{|hT~iQkc^k\wpd789:T`xz37?1a?P6(o{l%~k!hl1,q`*auiz$l~im>.sf`+HurjVxoSimPi^qvf5678Vf~x1613c9V4*aun'xm#jb?.sf,cwgt&nxoo< }db-NwpdXzmUooRgPst`3456Xpfx7<3=m;T2,cw`)zo%l`= }d.eqev(`zmi:"\7fjl/LqvfZtcWmiTeR}zb1234Z~hz5;5?o5Z0.eqb+ta'nf;"\7fj gscp*btck8$yhn!Bst`\vaYckVcT\7fxl?012\|jt;:79i7X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#@}zb^pg[aeXaVy~n=>?0^zlv959;k1^<"i}f/pe+bj7&{n$k\7fo|.fpgg4(ulj%F\7fxlPre]ggZoX{|h;<=>Pxnp?0;5e3\:$k\7fh!rg-dh5(ul&mym~ hrea2*wbd'Dy~nR|k_ea\mZurj9:;<Rv`r=7=7g=R8&myj#|i/fn3*wb(o{kx"j|kc0,q`f)J{|hT~iQkc^k\wpd789:Ttb|36?1a?P6(o{l%~k!hl1,q`*auiz$l~im>.sf`+HurjVxoSimPi^qvf5678Vrd~1913c9V4*aun'xm#jb?.sf,cwgt&nxoo< }db-NwpdXzmUooRgPst`3456Xpfx743<6;T2,cw`)zo%l`= }d.eqev(`zmi:"\7fjl/sf\`fYnW9827X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#\7fjPdb]j[44>3\:$k\7fh!rg-dh5(ul&mym~ hrea2*wbd'{nThnQf_30:?P6(o{l%~k!hl1,q`*auiz$l~im>.sf`+wbXljUbS><6;T2,cw`)zo%l`= }d.eqev(`zmi:"\7fjl/sf\`fYnW=827X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#\7fjPdb]j[04>3\:$k\7fh!rg-dh5(ul&mym~ hrea2*wbd'{nThnQf_70:?P6(o{l%~k!hl1,q`*auiz$l~im>.sf`+wbXljUbS:<6;T2,cw`)zo%l`= }d.eqev(`zmi:"\7fjl/sf\`fYnW1997X> gsd-vc)`d9$yh"i}ar,dvae6&{nh#\7fjPdb]j[vse89:;0=0<2:W3+bta&{l$ka>!re-dvdu)o{nh=#|kc.pg[aeXaVy~n=>?0=3=77=R8&myj#|i/fn3*wb(o{kx"j|kc0,q`f)ulVnhSdQ|uc2345:56:80Y=!hrg,qb*ak8'xo#j|ns/eq`f7)zmi$~iQkc^k\wpd789:7?3==;T2,cw`)zo%l`= }d.eqev(`zmi:"\7fjl/sf\`fYnWz\7fi<=>?<5<06>S7'nxm"\7fh gm2-va)`zhy%k\7fjl1/pgg*tcWmiTeR}zb1234939;;1^<"i}f/pe+bj7&{n$k\7fo|.fpgg4(ulj%yhRjl_h]pqg67896=2><4U1-dvc(un&mg<#|k/fpbw+aulj;%~im re]ggZoX{|h;<=>37?11?P6(o{l%~k!hl1,q`*auiz$l~im>.sf`+wbXljUbS~{m01238=8512_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(khxyuck{<1<1=>S7'nxm"\7fh gm2-va)`zhy%~~z|/b2,gdtuqgo\7f0<0=9:W3+bta&{l$ka>!re-dvdu)zz~x#n> c`pq}kcs4;4956[?/fpe*w`(oe:%~i!hr`q-vvrt'j:$ol|}yogw8685n2_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(od\7fs"jcT0\,di4(j9;l0Y=!hrg,qb*ak8'xo#j|ns/pppv)d8&mfyu hmZ3^*bkt&dy9j6[?/fpe*w`(oe:%~i!hr`q-vvrt'j:$k`{w.foX6X(`ez$f\7f?h4U1-dvc(un&mg<#|k/fpbw+tt|z%h<"ibuy,di^5Z&ngx"`}=f:W3+bta&{l$ka>!re-dvdu)zz~x#n> glw{*bk\<T$la~ bs318Q5)`zo$yj"ic0/pg+btf{'xxx~!l0.t28585;2_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(~86:2?=4U1-dvc(un&mg<#|k/fpbw+tt|z%h<"x><3<17>S7'nxm"\7fh gm2-va)`zhy%~~z|/b2,r4:46;90Y=!hrg,qb*ak8'xo#j|ns/pppv)d8&|:090=b:W3+bta&{l$ka>!re-dvdu)zz~x#n> v0]3[dhc89:;=?l4U1-dvc(un&mg<#|k/fpbw+tt|z%h<"x>_0]bja6789;9n6[?/fpe*w`(oe:%~i!hr`q-vvrt'j:$z<Q=_`lg45679;h0Y=!hrg,qb*ak8'xo#j|ns/pppv)d8&|:S>Qnne234575j2_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(~8U?Sca{012357?<]9%l~k }f.eo4+tc'nxj\7f#||tr-`5*efz{seiy2?>3;8Q5)`zo$yj"ic0/pg+btf{'xxx~!l1.abvw\7fim}6:2?74U1-dvc(un&mg<#|k/fpbw+tt|z%h="mnrs{maq:56;30Y=!hrg,qb*ak8'xo#j|ns/pppv)d9&ij~\7fwaeu>0:7`<]9%l~k }f.eo4+tc'nxj\7f#||tr-`5*aj}q$laV>R.fo2*h75n2_;#j|i.sd,ci6)zm%l~l}!rrvp+f7(od\7fs"jcT1\,div(j{;l0Y=!hrg,qb*ak8'xo#j|ns/pppv)d9&mfyu hmZ0^*bkt&dy9j6[?/fpe*w`(oe:%~i!hr`q-vvrt'j;$k`{w.foX7X(`ez$f\7f?h4U1-dvc(un&mg<#|k/fpbw+tt|z%h="ibuy,di^2Z&ngx"`}=3:W3+bta&{l$ka>!re-dvdu)zz~x#n? v0>3:75<]9%l~k }f.eo4+tc'nxj\7f#||tr-`5*p64849?6[?/fpe*w`(oe:%~i!hr`q-vvrt'j;$z<2=>318Q5)`zo$yj"ic0/pg+btf{'xxx~!l1.t28685;2_;#j|i.sd,ci6)zm%l~l}!rrvp+f7(~86?2?l4U1-dvc(un&mg<#|k/fpbw+tt|z%h="x>_1]bja6789;9n6[?/fpe*w`(oe:%~i!hr`q-vvrt'j;$z<Q>_`lg45679;h0Y=!hrg,qb*ak8'xo#j|ns/pppv)d9&|:S?Qnne234575j2_;#j|i.sd,ci6)zm%l~l}!rrvp+f7(~8U8Sl`k012357d<]9%l~k }f.eo4+tc'nxj\7f#||tr-`5*p6W=Uecy>?01314>S7'nxm"\7fh gm2-va)`zhy%~~z|/bmnt5473\:$k\7fh!rg-dh5(ul&mym~ }suq,gjkw9;30Y=!hrg,qb*ak8'xo#j|ns/pppv)uidUna}zv_g`\m66<]9%l~k }f.eo4+tc'nxj\7f#||tr-qehYbey~rSklPi^mq4567;81^<"i}f/pe+bj7&{n$k\7fo|.sqww*tfeVof|ywPfc]j[jt789::>>5Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu07?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphs9;>0Y=!hrg,qb*ak8'xo#\7f~ats-Ngjsi|Vidycz=259V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjq55<2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fex9<;;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw172<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~=>95Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu510>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|1827X> gsd-vc)`d9$yh"|\7fnup,Ifirf}Uhcx`{_b{?4;4d3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSnw30?]qp7?<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~Tot2>>3a8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp6:2R|{289V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq585>n5Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]`}949W{~956[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az8685k2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fexRmv<2<\vq4>3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSnw34?0`?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWjs783Q}t3;8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp6>2?m4U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov\g|:26Vx\7f>45Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]`}909:j1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQly=4=[wr512_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fexRmv<6<1g>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|Vir0:0Pru0b?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;"\7fj rqlwv*Kdg|d\7fSnaznu]{kw:56;k0Y=!hrg,qb*ak8'xo#\7f~ats-Ngjsi|VidyczPxnp?7;4f3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSua}<5<1e>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|Vrd~1;12`9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqY\7fg{6=2?o4U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov\|jt;?78j7X> gsd-vc)`d9$yh"|\7fnup,Ifirf}Uhcx`{_ymq8=85l2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fexRv`r=:=[wr6n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:768l0Y=!hrg,qb*ak8'xo#\7f~ats-`kphs484:j6[?/fpe*w`(oe:%~i!}povq+firf}692<h4U1-dvc(un&mg<#|k/srmpw)dg|d\7f0>0>f:W3+bta&{l$ka>!re-qtkru'je~by2;>0d8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<4<2b>S7'nxm"\7fh gm2-va)uxg~y#naznu>5:4`<]9%l~k }f.eo4+tc'{zex\7f!lotlw8286n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:?68o0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsW9;n7X> gsd-vc)`d9$yh"|\7fnup,gjsi|V;:i6[?/fpe*w`(oe:%~i!}povq+firf}U9=h5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~T?<k4U1-dvc(un&mg<#|k/srmpw)dg|d\7fS9?j;T2,cw`)zo%l`= }d.psjqt(kf\7fexR;>e:W3+bta&{l$ka>!re-qtkru'je~byQ91d9V4*aun'xm#jb?.sf,vuhsz&idyczP70g8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_901?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;"\7fj rqlwv*eh}g~Th<2=>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?7;453\:$k\7fh!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\7f!lotlw[a7;?7897X> gsd-vc)`d9$yh"|\7fnup,gjsi|Vn:050=1:W3+bta&{l$ka>!re-qtkru'je~byQk1^215>S7'nxm"\7fh gm2-va)uxg~y#naznu]g5Z7592_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V89=6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R==1:W3+bta&{l$ka>!re-qtkru'je~byQk1^615>S7'nxm"\7fh gm2-va)uxg~y#naznu]g5Z3592_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V<9=6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R9=1:W3+bta&{l$ka>!re-qtkru'je~byQk1^:76>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*Kt}kU|~Rjnt`]`kphsW`Uxyo>?01]`}969<;1^<"i}f/pe+bj7&~x$kzo|.fugg5(plj%F\7fxlPws]geqgXkf\7fexRgPst`3456Xkp6:29<4U1-dvc(un&mg<#y}/fubw+aplj:%{im Mrwa[rtXlh~jSnaznu]j[vse89:;Snw32?61?P6(o{l%~k!hl1,tv*apiz$l{im?.vf`+HurjV}ySio{a^alqkrXaVy~n=>?0^az8683:2_;#j|i.sd,ci6)\7f{%l{l}!gvf`4+qck&GxyoQxr^fbpdYdg|d\7fSdQ|uc2345Ydq5>58?5Z0.eqb+ta'nf;"z| gvcp*bqck9$|hn!Bst`\swYci}kTob{at^k\wpd789:Tot2:>508Q5)`zo$yj"ic0/uq+bqf{'m|hn>!wea,IvseW~xThlzn_bmvjqYnWz\7fi<=>?_b{?2;253\:$k\7fh!rg-dh5(pz&m|m~ hwea3*rbd'Dy~nRy}_ecweZeh}g~TeR}zb1234Ze~4>4??6[?/fpe*w`(oe:%{\7f!hw`q-crbd8'}oo"C|uc]tvZbf|hUhcx`{_h]pqg6789Ugyy2?>518Q5)`zo$yj"ic0/uq+bqf{'m|hn>!wea,IvseW~xThlzn_bmvjqYnWz\7fi<=>?_mww8483;2_;#j|i.sd,ci6)\7f{%l{l}!gvf`4+qck&GxyoQxr^fbpdYdg|d\7fSdQ|uc2345Yk}}6929=4U1-dvc(un&mg<#y}/fubw+aplj:%{im Mrwa[rtXlh~jSnaznu]j[vse89:;Sa{{<2<77>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*Kt}kU|~Rjnt`]`kphsW`Uxyo>?01]oqq:36=90Y=!hrg,qb*ak8'}y#jyns/et`f6)\7fmi$A~{m_vp\`drfWje~byQf_rwa4567We\7f\7f080;3:W3+bta&{l$ka>!ws-dsdu)o~nh<#ykc.OpqgYpzVnjxlQlotlw[lYt}k:;<=Qcuu>5:15<]9%l~k }f.eo4+qu'n}j\7f#ixdb2-sae(Ez\7fiSz|Pd`vb[firf}UbS~{m0123[iss4>4??6[?/fpe*w`(oe:%{\7f!hw`q-crbd8'}oo"C|uc]tvZbf|hUhcx`{_h]pqg6789Ugyy27>518Q5)`zo$yj"ic0/uq+bqf{'m|hn>!wea,IvseW~xThlzn_bmvjqYnWz\7fi<=>?_ymq8583;2_;#j|i.sd,ci6)\7f{%l{l}!gvf`4+qck&GxyoQxr^fbpdYdg|d\7fSdQ|uc2345Y\7fg{6:29=4U1-dvc(un&mg<#y}/fubw+aplj:%{im Mrwa[rtXlh~jSnaznu]j[vse89:;Sua}<3<77>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*Kt}kU|~Rjnt`]`kphsW`Uxyo>?01]{kw:46=90Y=!hrg,qb*ak8'}y#jyns/et`f6)\7fmi$A~{m_vp\`drfWje~byQf_rwa4567Wqey090;3:W3+bta&{l$ka>!ws-dsdu)o~nh<#ykc.OpqgYpzVnjxlQlotlw[lYt}k:;<=Qwos>6:15<]9%l~k }f.eo4+qu'n}j\7f#ixdb2-sae(Ez\7fiSz|Pd`vb[firf}UbS~{m0123[}iu4?4??6[?/fpe*w`(oe:%{\7f!hw`q-crbd8'}oo"C|uc]tvZbf|hUhcx`{_h]pqg6789Usc\7f28>518Q5)`zo$yj"ic0/uq+bqf{'m|hn>!wea,IvseW~xThlzn_bmvjqYnWz\7fi<=>?_ymq8=8492_;#j|i.sd,ci6)\7f{%l{l}!gvf`4+qck&}ySio{a^alqkrXaV:8=6[?/fpe*w`(oe:%{\7f!hw`q-crbd8'}oo"y}_ecweZeh}g~TeR?<1:W3+bta&{l$ka>!ws-dsdu)o~nh<#ykc.uq[agsiVidyczPi^005>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*quWmk\7fmRm`uov\mZ5492_;#j|i.sd,ci6)\7f{%l{l}!gvf`4+qck&}ySio{a^alqkrXaV>8=6[?/fpe*w`(oe:%{\7f!hw`q-crbd8'}oo"y}_ecweZeh}g~TeR;<1:W3+bta&{l$ka>!ws-dsdu)o~nh<#ykc.uq[agsiVidyczPi^405>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*quWmk\7fmRm`uov\mZ1492_;#j|i.sd,ci6)\7f{%l{l}!gvf`4+qck&}ySio{a^alqkrXaV28m6[?/fpe*w`(oe:%{\7f!hw`q-crbd8'}oo"y}_ecweZeh}g~TeR}zb1234969;h1^<"i}f/pe+bj7&~x$kzo|.fugg5(plj%|~Rjnt`]`kphsW`Uxyo>?01>2:6g<]9%l~k }f.eo4+qu'n}j\7f#ixdb2-sae(\7f{UomyoPcnwmpZoX{|h;<=>32?1b?P6(o{l%~k!hl1,tv*apiz$l{im?.vf`+rtXlh~jSnaznu]j[vse89:;0>0<a:W3+bta&{l$ka>!ws-dsdu)o~nh<#ykc.uq[agsiVidyczPi^qvf56785>5?l5Z0.eqb+ta'nf;"z| gvcp*bqck9$|hn!xr^fbpdYdg|d\7fSdQ|uc2345:26:k0Y=!hrg,qb*ak8'}y#jyns/et`f6)\7fmi${\7fQkauc\gjsi|VcT\7fxl?012?2;5f3\:$k\7fh!rg-dh5(pz&m|m~ hwea3*rbd'~xThlzn_bmvjqYnWz\7fi<=>?<6<0e>S7'nxm"\7fh gm2-sw)`\7fhy%kzjl0/ugg*quWmk\7fmRm`uov\mZurj9:;<161289V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m>/bcqv|hb|5:5>45Z0.eqb+ta'nf;"z| gvcp*rus{&i:#no}rxlfp979:01^<"i}f/pe+bj7&~x$kzo|.vqww*e6'jky~t`jt=0=6<=R8&myj#|i/fn3*rt(o~kx"z}{s.a2+fguzpdnx1=12g9V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m>/fov|+ajS9W%k`?!m00e?P6(o{l%~k!hl1,tv*apiz$|\7fy} c0-dip~)odQ:Q#ibs/op6c=R8&myj#|i/fn3*rt(o~kx"z}{s.a2+bkrp'mfW?S!glq-iv4a3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g4)`e|r%k`U<]/enw+kt:o1^<"i}f/pe+bj7&~x$kzo|.vqww*e6'ng~t#ib[5_-chu)ez887X> gsd-vc)`d9$|~"ixar,twqu(k8%}=1>1229V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m>/w3?5;443\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g4)q9585>>5Z0.eqb+ta'nf;"z| gvcp*rus{&i:#{?33?00?P6(o{l%~k!hl1,tv*apiz$|\7fy} c0-u5929:k1^<"i}f/pe+bj7&~x$kzo|.vqww*e6'\7f;T<Road123444e3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g4)q9V;Tmcj?01226g=R8&myj#|i/fn3*rt(o~kx"z}{s.a2+s7X:Vkeh=>?000a?P6(o{l%~k!hl1,tv*apiz$|\7fy} c0-u5Z5Xign;<=>>2c9V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m>/w3\0Zhh|9:;<<<6;T2,cw`)zo%l`= xr.etev(p{}y$o?!laspzj`r;87827X> gsd-vc)`d9$|~"ixar,twqu(k;%hm\7f|vndv?5;4>3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g7)di{xrbhz32?0:?P6(o{l%~k!hl1,tv*apiz$|\7fy} c3-`ewt~fl~7?3<i;T2,cw`)zo%l`= xr.etev(p{}y$o?!hmtz-ch]7U'mf=#c>2g9V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m=/fov|+ajS8W%k`}!mr0e?P6(o{l%~k!hl1,tv*apiz$|\7fy} c3-dip~)odQ9Q#ibs/op6c=R8&myj#|i/fn3*rt(o~kx"z}{s.a1+bkrp'mfW>S!glq-iv4a3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g7)`e|r%k`U;]/enw+kt::1^<"i}f/pe+bj7&~x$kzo|.vqww*e5'\7f;7<3<<;T2,cw`)zo%l`= xr.etev(p{}y$o?!y1=3=66=R8&myj#|i/fn3*rt(o~kx"z}{s.a1+s7;:7887X> gsd-vc)`d9$|~"ixar,twqu(k;%}=1=1229V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m=/w3?0;4e3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,g7)q9V:Tmcj?01226g=R8&myj#|i/fn3*rt(o~kx"z}{s.a1+s7X9Vkeh=>?000a?P6(o{l%~k!hl1,tv*apiz$|\7fy} c3-u5Z4Xign;<=>>2c9V4*aun'xm#jb?.vp,crgt&~y\7f\7f"m=/w3\7Zgil9:;<<<m;T2,cw`)zo%l`= xr.etev(p{}y$o?!y1^6\jjr789::>=5Z0.eqb+ta'nf;"z| gvcp*rus{&ida}?=0:W3+bta&{l$ka>!ws-dsdu)\7fz~x#nabp30;?P6(o{l%~k!hl1,tv*apiz$|\7fy} r`o\bpjkWohTe?;4U1-dvc(un&mg<#y}/fubw+qt|z%ym`Qiumn\m7e<]9%l~k }f.eo4+qu'n}j\7f#y|tr-qehYa}efTeRa}01236a=R8&myj#|i/fn3*rt(o~kx"z}{s.pbiZ`rdeUbSb|?01225a=R8&myj#|i/fn3*rt(zhgT{\7fQjn^k266=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}8?7X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{1368Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkr5:=1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by==4:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmp1433\:$k\7fh!rg-dh5(pz&}{by| MbmvjqYdg|d\7f9?:4U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov561=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}=986[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at90:?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7<3<l;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f\7f;87Uyx?74U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov\g|:66;i0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPcx>2:Zts:01^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=0=6f=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}Uhu1<1_sv1=>S7'nxm"\7fh 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\7f;<78h7X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{_b{?0;Yu|;30Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPcx>6:7e<]9%l~k }f.eo4+qu'~zex\7f!BcnwmpZeh}g~Tot2:>^pw6<=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}Uhu1812b9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYdq5<5S\7fz=9:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZe~4>49o6[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at^az828Xz}8j7X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{_ymq8585i2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fexRv`r=3=6d=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}Usc\7f2=>3c8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx7?3<n;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[}iu4=49m6[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at^zlv939:h1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQwos>5:7g<]9%l~k }f.eo4+qu'~zex\7f!BcnwmpZeh}g~Ttb|37?0b?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWqey050=d:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZ~hz525S\7fz>f:W3+bta&{l$ka>!ws-ttkru'je~by2?>0d8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{<0<2b>S7'nxm"\7fh gm2-sw)pxg~y#naznu>1:4`<]9%l~k }f.eo4+qu'~zex\7f!lotlw8686n2_;#j|i.sd,ci6)\7f{%||cz}/bmvjq:368l0Y=!hrg,qb*ak8'}y#z~ats-`kphs4<4:j6[?/fpe*w`(oe:%{\7f!xpovq+firf}6=2<h4U1-dvc(un&mg<#y}/vrmpw)dg|d\7f0:0>f:W3+bta&{l$ka>!ws-ttkru'je~by27>0g8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_13f?P6(o{l%~k!hl1,tv*qwf}x$ob{at^32a>S7'nxm"\7fh gm2-sw)pxg~y#naznu]15`=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\74c<]9%l~k }f.eo4+qu'~zex\7f!lotlw[17b3\:$k\7fh!rg-dh5(pz&}{by| cnwmpZ36m2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqY19l1^<"i}f/pe+bj7&~x${}`{r.alqkrX?8o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW1897X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:0=0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk1=3=67=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`4:56;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;7?3<=;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj><5<16>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g5939:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl86=2?<4U1-dvc(un&mg<#y}/vrmpw)dg|d\7fSi?37?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f28=8592_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc9V:9=6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo=R?=1:W3+bta&{l$ka>!ws-ttkru'je~byQk1^015>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g5Z5592_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc9V>9=6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo=R;=1:W3+bta&{l$ka>!ws-ttkru'je~byQk1^415>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g5Z1592_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc9V29>6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>1>1239V4*aun'xm#jb?.vp,suhsz&idyczPd3>2:74<]9%l~k }f.eo4+qu'~zex\7f!lotlw[a4;:7897X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn90>0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk2=6=67=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`7:26;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm87:3<=;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj=<6<16>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g69>9:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl;U;><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th?Q>209V4*aun'xm#jb?.vp,suhsz&idyczPd3]164=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`7Y4:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl;U?><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th?Q:209V4*aun'xm#jb?.vp,suhsz&idyczPd3]564=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`7Y0:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl;U3=;5Z0.eqb+ta'dof#iazt^k\440<]9%l~k }f.ofi*bh}}UbS<?8;T2,cw`)zo%fi`!kotv\mZ779>1^<"i}f/pe+hcj'me~xRgP1034?P6(o{l%~k!bel-gkprXaV;9=:5Z0.eqb+ta'dof#iazt^k\56703\:$k\7fh!rg-nah)cg|~TeR?;169V4*aun'xm#`kb/emvpZoX9<;<7X> gsd-vc)jmd%ocxzPi^3552=R8&myj#|i/lgn+air|VcT=:?8;T2,cw`)zo%fi`!kotv\mZ7?9>1^<"i}f/pe+hcj'me~xRgP1835?P6(o{l%~k!bel-gkprXaV8:;6[?/fpe*w`(elg$hb{{_h]1441<]9%l~k }f.ofi*bh}}UbS??>7:W3+bta&{l$ahc dnww[lY5:8=0Y=!hrg,qb*kbe&ndyyQf_3123>S7'nxm"\7fh mdo,`jssW`U98<94U1-dvc(un&gna"j`uu]j[736?2_;#j|i.sd,i`k(lf\7f\7fSdQ=6058Q5)`zo$yj"cjm.flqqYnW;=:;6[?/fpe*w`(elg$hb{{_h]1<41<]9%l~k }f.ofi*bh}}UbS?7>6:W3+bta&{l$ahc dnww[lY49>1^<"i}f/pe+hcj'me~xRgP3134?P6(o{l%~k!bel-gkprXaV9:=:5Z0.eqb+ta'dof#iazt^k\77703\:$k\7fh!rg-nah)cg|~TeR=<169V4*aun'xm#`kb/emvpZoX;=;<7X> gsd-vc)jmd%ocxzPi^1653=R8&myj#|i/lgn+air|VcT8<84U1-dvc(un&gna"j`uu]j[0713\:$k\7fh!rg-nah)cg|~TeR8>6:W3+bta&{l$ahc dnww[lY09?1^<"i}f/pe+hcj'me~xRgP8048Q5)`zo$yj"cjm.flqqYnW0;27X> gsd-vc)jmd%ocxzPmdo?4;7f3\:$k\7fh!rg-nah)cg|~Tahc311<2e>S7'nxm"\7fh mdo,`jssWdof0<?11`9V4*aun'xm#`kb/emvpZkbe5;92<o4U1-dvc(un&gna"j`uu]nah:6;7;j7X> gsd-vc)jmd%ocxzPmdo?5186i2_;#j|i.sd,i`k(lf\7f\7fS`kb<07=5d=R8&myj#|i/lgn+air|Vgna1?9>0c8Q5)`zo$yj"cjm.flqqYjmd6:;3?n;T2,cw`)zo%fi`!kotv\i`k;914:m6[?/fpe*w`(elg$hb{{_lgn84?9901^<"i}f/pe+hcj'me~xRcjm=3=5d=R8&myj#|i/lgn+air|Vgna1<?>0c8Q5)`zo$yj"cjm.flqqYjmd69=3?n;T2,cw`)zo%fi`!kotv\i`k;:;4:m6[?/fpe*w`(elg$hb{{_lgn87599h1^<"i}f/pe+hcj'me~xRcjm=07:4g<]9%l~k }f.ofi*bh}}Ufi`2=5?3b?P6(o{l%~k!bel-gkprXelg7>;0>a:W3+bta&{l$ahc dnww[hcj4;=5=l5Z0.eqb+ta'dof#iazt^ofi94?68k0Y=!hrg,qb*kbe&ndyyQbel>1=;7>3\:$k\7fh!rg-nah)cg|~Tahc32?3b?P6(o{l%~k!bel-gkprXelg7?=0>a:W3+bta&{l$ahc dnww[hcj4:;5=l5Z0.eqb+ta'dof#iazt^ofi95568k0Y=!hrg,qb*kbe&ndyyQbel>07;7f3\:$k\7fh!rg-nah)cg|~Tahc335<2e>S7'nxm"\7fh mdo,`jssWdof0>;1189V4*aun'xm#`kb/emvpZkbe595=45Z0.eqb+ta'dof#iazt^ofi929901^<"i}f/pe+hcj'me~xRcjm=7=5<=R8&myj#|i/lgn+air|Vgna181189V4*aun'xm#`kb/emvpZkbe5=5=45Z0.eqb+ta'dof#iazt^ofi9>9901^<"i}f/pe+hcj'me~xRcjm=;=2`=R8&myj#|i/lgn+bdj&nhfk#immfc-jbcdk'hfk"lck^ofiZabflxjxb| v`nj`+et|{%ym`b`oqY3Y+tfe'x$z?Qaohljp+tfe&n{?;v<6/pbi45<]9%l~k }f.pbiZtcWld:;6[?/fpe*w`(zhgT~hi`uu]fj45<]9%l~k }f.pbiZquWld:h6[?/fpe*w`(zz~i`f!}d^pppZgtzlm9<6[?/fpe*w`(zz~i`f!}d^pppZgtzlmTh<<?;T2,cw`)zo%y\7fylck.pg[wusWhyyijQk20a8Q5)`zo$yj"||tcnh+wbXzz~Tobcm1e9V4*aun'xm#\7f}{bmi,vaYu{}Uhc`l>1d9V4*aun'xm#\7f}{bmi,vaYu{}Uyij2>>0g8Q5)`zo$yj"||tcnh+wbXzz~T~hi32?3g?P6(o{l%~k!}su`oo*tcW{y\7fS\7fkh_03g?P6(o{l%~k!}su`oo*tcW{y\7fS\7fkh_33g?P6(o{l%~k!}su`oo*quW{y\7fSl}}ef03?P6(o{l%~k!}su`oo*quW{y\7fSl}}ef]g576<]9%l~k }f.pppgjl'~xT~~zParpfcZb59j1^<"i}f/pe+wusjea${\7fQ}su]`khd6l2_;#j|i.sd,vvredb%|~R||t^alig76m2_;#j|i.sd,vvredb%|~R||t^pfc9699l1^<"i}f/pe+wusjea${\7fQ}su]qab:668n0Y=!hrg,qb*tt|kf`#z|Prrv\v`aX88n0Y=!hrg,qb*tt|kf`#z|Prrv\v`aX9h1^_H\PAMKBWf=R[LXTZD]FBMG0?SED12\BIZQ[YQG0?RCF;2]NNo5XRHVF[COU[]i0[_G[E^OL@@YFk2]YEYKPMNFF[G7c3QCGECV"XE@#4+7'[]_I,= > @Q@ML3<PFXHU;5WSUNJF2=_[]ULBI94XRV\RFEe3QUHC_KPIODL2>^cjVCoj6Vkh^RqmhPbzzcdb<>4Xeo\Idlhz_oy\7fdaa119[`hYJageyZh||inl`?djjgz~Ti`~{yc9bhhit|Vl~`a84b`ahqub<jhi`y}Qbasifv6=ddbn0hlzn_bmvjq.7!m1omyoPcnwmp-7.l2njxlQlotlw,7/c3mk\7fmRm`uov+7,b<lh~jSnaznu*7-a=ci}kTob{at)7*`>bf|hUhcx`{(7+g?agsiVidycz'7(f8`drfWje~by&7)e9geqgXkf\7fex1>1f:fbpdYdg|d\7f054?>69gflrbz{<0hd`'0(48`lh/9 =0hd`'11+4?aoi 8;";6jfn)31-2=cag":?$94dhl+51/03mce$<;&7:fjj-71!>1oec&>7(58`lh/91#<7iga(0;*2>bnf!8";6jfn)03-2=cag"9=$94dhl+67/03mce$?=&7:fjj-43!>1oec&=5(58`lh/:?#<7iga(35*3>bnf!83%:5kio*1=,0<l`d#?$94dhl+75/03mce$>?&7:fjj-55!>1oec&<3(58`lh/;=#<7iga(27*2>bnf!>":6jfn)7*2>bnf!<":6jfn)5*2>bnf!2":6jfn);*2>bnf5:5;6jfn=33:2=cag6:=394dhl?57803mce0<=17:fjj9736>1oec2>5?58`lh;9?4<7iga<05=3>bnf5;32:5kio>2=;0<l`d7=394dhl?65803mce0??17:fjj9456>1oec2=3?58`lh;:=4<7iga<37=3>bnf58=2:5kio>13;1<l`d7>508;ekm87?9>2nbb1<17:fjj9576>1oec2<1?58`lh;;;4<7iga<21=3>bnf59?245kio>01?69?2nbb1=:>79gmk:46?1oec2;>79gmk:26?1oec29>79gmk:06?1oec27>79gmk:>6>1ocxz'0(58`jss 8#37iazt)33-==cg|~#=<'7;emvp-75!11ocxz'12+;?air|!;?%55kotv+50/?3me~x%?9)99gkpr/9>#37iazt)3;-==cg|~#=4'8;emvp-4.02ndyy&=0(:8`jss ;;"46j`uu*16,><lf\7f\7f$?=&8:flqq.5< 20hb{{(37*<>bh}}"9:$64dnww,71.02ndyy&=8(:8`jss ;3";6j`uu*0-==cg|~#?='7;emvp-56!11ocxz'33+;?air|!98%55kotv+71/?3me~x%=:)69gkpr/< =0hb{{(4+4?air|!<";6j`uu*4-2=cg|~#4$94dnww,</03me~x1>18:flqq:68720hb{{<03=<>bh}}6:>364dnww845902ndyy2>4?:8`jss48?546j`uu>22;><lf\7f\7f0<918:flqq:60720hb{{<0;=3>bh}}6:255kotv?658?3me~x1<>>99gkpr;:;437iazt=00:==cg|~7>907;emvp942611ocxz327<;?air|58<255kotv?6=8?3me~x1<6>69gkpr;:720hb{{<22=<>bh}}68=364dnww864902ndyy2<3?:8`jss4:>5m6j`uu>01?6902ndyy2<5?58`jss4:4<7iazt=6=3>bh}}6>2:5kotv?2;1<lf\7f\7f0:08;emvp9>9?2ndyy26>99f`l`5fnn>7hc\7ftx0e?coagVmnbh|ntnp\r1Y4$)Rb`d`w BMQA%Abflxjxb|/11,250=aaoeTta`w_431|60X:jf`?>5iigm\|ih\7fW<;9t>8P2bnh(coagVmnbh|ntnp\r1Y4$GEEI!@@ND1`7>`nnfUs`cvP500{73Y5kea'jdh`_fgmawgsg{U}8R=#{b]kevYnf}Uh`f3?,b]kevYtzz~6<!mPre]ev`w:9%iTdl}Pre]geqgXkf\7fex0?#c^fjjZqnl}b6?;"l_icp[rtXlh~jSnaznu?2(fYa}efTjaohs^pppZpfd4;'oRgbpmgnakrf|`eeSyw\7fe<0/gZstmVofnhjkee]qab;7$jU|~Rh}ep?2(fYr{lUocxzPrrv>4)eX}gnn~kb`w^nls86+kVbj\7fRayesdokr;7$jU{~hb`ae]oeqcikp7; nQkotv\slbs`49= nQbsfmm[sgk58&hS\7fjPddrwl836:%iTdl}Puoffvcjh\7f4:'oRfns^coijusWo\7fg`0>#c^jbwZtt|4;'oRjnt`]`kphsW~coxe36,b]kevYpzVkhg0>#c^wpaZcdk4:'oRm`mlmm[fjhkb7; nQxr^c`oZjh\7f4:'oR|k_qlwvZqnl}b65!mPurg\br`sWmk\7fmRm`uov>4)eX`hyTmac`su]fiur~59&hS\7fjPd`vb[firf}U|eizg=8.`[jpbzofd{Rb`w<2/gZquWyd\7f~Ryfduj>=)eXx{elShc\7ftx]w}uc:8%iT{\7fQkauc\gjsi|V}bhyf29-a\twckghnT~hi|=0.`[air|VxxxRxnl<2/gZnf{VnjxlQlotlw95*dWyxdkRhzlm]wlwct`Vdnklzj_wco9077$jU|~Rjjpuj>144+kVzycjQjmqvz[qnumzbTbhintd]uei;2$jU{~biPelrw}ZrozlycSl}|esv\rdj:<%iTdl}Pv`nj`86+kVzycjQiumn\pmtb{aUj\7f~k}t^tbh8369%ida}aaeov\jdkb5ocmcRvcny]657~4>V8h`f"l_wcomaYkg~7; nQ\7frho\bl`hW}s{i0;>2y15(fYwzfmTjxbc_u{sa86+kVgnab|v_u{sa87+u;l0jdh`_ynm|Z36:q9=S?mck^djbjY`mgoymya}_w6\7Z~t|V;?7k{cl69jjqYddb20bjmmuhng<>iqm{lgczo4psmd[`kw|p;?7}|`g^gntq\7fX|axn\7fe&?)068twi`Wlg{xtQ{hsgpl-7.9=1{~biPelrw}Zrozlyc$?'>4:rqkbYbey~rSyf}erj+7,733yxdkRkbpu{\pmtb{a"?%<:4psmd[`kw|pU\7fd\7fk|h)7*51=wzfmTi`~{y^vkv`uo ?#:86~}of]fiur~W}byi~f'7(37?uthoVof|ywPtipfwm.?!8<0|\7fah_dosp|Ys`{oxd1650?3a?uthoVof|ywPtipfwmYf{zoyx%>&1c9svjaXmdz\7fuRzgrdqk[dutm{~#=$?m;qplcZcjx}sTxe|jsi]bwvcu|!8"=o5\7frne\ahvsqV~c~h}g_`qpawr/; ;i7}|`g^gntq\7fX|axn\7feQnsrgqp-2.9k1{~biPelrw}ZrozlycSl}|esv+1,7e3yxdkRkbpu{\pmtb{aUj\7f~k}t)4*5g=wzfmTi`~{y^vkv`uoWhyxi\7fz'7(3a?uthoVof|ywPtipfwmYf{zoyx%6&1e9svjaXmdz\7fuRzgrdqk[dutm{~747>11c9svjaXmdz\7fuRzgrdqk[kc`i}o#<$?m;qplcZcjx}sTxe|jsi]mabgsm!;"=o5\7frne\ahvsqV~c~h}g_ogdeqc/: ;i7}|`g^gntq\7fX|axn\7feQaefcwa-5.9k1{~biPelrw}ZrozlycSckhaug+0,7e3yxdkRkbpu{\pmtb{aUeijo{e)7*5g=wzfmTi`~{y^vkv`uoWgolmyk'6(3a?uthoVof|ywPtipfwmYimnk\7fi%9&1c9svjaXmdz\7fuRzgrdqk[kc`i}o#4$?k;qplcZcjx}sTxe|jsi]mabgsm521<374psmd[cskd890|\7fah_gwohZrozlyc$='>3:rqkbYa}efTxe|jsi*2-45<x{elSk{cl^vkv`uo ;#:?6~}of]eqijX|axn\7fe&<)018twi`Wo\7fg`Rzgrdqk,1/6;2zycjQiumn\pmtb{a">%<=4psmd[cskdV~c~h}g(7+27>vugnUmyabPtipfwm.0!890|\7fah_gwohZrozlyc$5'>5:rqkbYa}efTxe|jsi>;>586i2zycjQiumn\pmtb{aUj\7f~k}t)2*5d=wzfmTjxbc_ujqavnXizyn~y&>)0c8twi`Wo\7fg`Rzgrdqk[dutm{~#>$?n;qplcZ`rdeU\7fd\7fk|h^cpw`ts :#:m6~}of]eqijX|axn\7feQnsrgqp-2.9h1{~biPftno[qnumzbTm~}jru*6-4g<x{elSk{cl^vkv`uoWhyxi\7fz'6(3b?uthoVl~`aQ{hsgplZgt{lx\7f$:'>a:rqkbYa}efTxe|jsi]bwvcu|!2"=n5\7frne\bpjkW}byi~fParqfvq:?294:m6~}of]eqijX|axn\7feQaefcwa-6.9h1{~biPftno[qnumzbTbhintd*2-4g<x{elSk{cl^vkv`uoWgolmyk'2(3b?uthoVl~`aQ{hsgplZhboh~n$>'>a:rqkbYa}efTxe|jsi]mabgsm!>"=l5\7frne\bpjkW}byi~fPndebp`.2!8k0|\7fah_gwohZrozlycSckhaug+2,7f3yxdkRhzlm]wlwct`Vdnklzj(6+2e>vugnUmyabPtipfwmYimnk\7fi%6&1b9svjaXn|fgSyf}erj\j`af|l636=09;sf\gim682xoSio{a^alqkr/8 ;;7\7fjPd`vb[firf}":%<>4re]geqgXkf\7fex%<&119q`Zbf|hUhcx`{(2+24>tcWmk\7fmRm`uov+0,773{nThlzn_bmvjq.2!8:0~iQkauc\gjsi|!<"==5}d^fbpdYdg|d\7f$:'>0:pg[agsiVidycz'8(33?wbXlh~jSnaznu>3:46<zmUomyoPcnwmp979991yhRjnt`]`kphs4;4:<6|k_ecweZeh}g~7?3??;sf\`drfWje~by2;>028vaYci}kTob{at=7=55=ulVnjxlQlotlw838682xoSio{a^alqkr;?7;97\7fjPd`vb[firf}636=0>0:pg[agsiVidycz38?78vaYbf?1yhR||t29qwq1<{kc\7fi\7f|;;rppp1=sz|o27x`kesdokr3<~hfbh;5xr^c`o3=pzVigg<>4ws]geqgXkf\7fex%>&119tvZbf|hUhcx`{(0+24>quWmk\7fmRm`uov+6,773~xThlzn_bmvjq.4!8:0{\7fQkauc\gjsi|!>"==5xr^fbpdYdg|d\7f$8'>0:uq[agsiVidycz'6(33?rtXlh~jSnaznu*4-46<\7f{UomyoPcnwmp->.991|~Rjnt`]`kphs494:<6y}_ecweZeh}g~7=3??;vp\`drfWje~by2=>028swYci}kTob{at=1=55=pzVnjxlQlotlw818682}ySio{a^alqkr;=7;;7z|Pd`vb[firf}6=2<>4ws]geqgXkf\7fex191139tvZbf|hUhcx`{<983:46<\7f{UomyoPcnwmp9>9=2}ySh`9;vp\vvrzHIzhjh5O@y39B?2=9rY?o7;?d;4956410<21?;jj4zl72=<63g>=57:4$545>1073tY?m7;?d;4956410<21?;jj4:Q203<29?0;6<==697;>60cm<1X8l4:1783>455>1?36>8ke69g146=83;1=v];c;73`?0=9:8=486537ff0>pS9j81<7?51;3`e~U3k3?;h7851205<0>=;?nn86*;5`8202=Q<?=1>v{>5182?p7293:0q)?ma;33?g3683:1:<4<:73xL13?3S>:69u=9;0b>`<c2t.:o:4:119'033==9l0e88n:188k03a290/=om557:8j4de2910c8;j:18'5ge==?20b<lm:098k03c290/=om557:8j4de2;10c8;l:18'5ge==?20b<lm:298k03e290/=om557:8j4de2=10c8;n:18'5ge==?20b<lm:498k03>290/=om557:8j4de2?10c8;7:18'5ge==?20b<lm:698k030290/=om557:8j4de2110e868:188k01d290/=om55978j4de2910c89m:18'5ge==1?0b<lm:098k01f290/=om55978j4de2;10c896:18'5ge==1?0b<lm:298k01?290/=om55978j4de2=10c898:18'5ge==1?0b<lm:498k011290/=om55978j4de2?10c89::18'5ge==1?0b<lm:698k013290/=om55978j4de2110c8?;:188k06b2900e89<:188m00d2900c9k>:18'5ge==9>0b<lm:198k1c7290/=om55168j4de2810c9ji:18'5ge==9>0b<lm:398k1bb290/=om55168j4de2:10c9jk:18'5ge==9>0b<lm:598k1bd290/=om55168j4de2<10c9jn:18'5ge==9>0b<lm:798k1b>290/=om55168j4de2>10c9j7:18'5ge==9>0b<lm:998k1b0290/=om55168j4de2010c9j9:18'5ge==9>0b<lm:`98k1b2290/=om55168j4de2k10c9j;:18'5ge==9>0b<lm:b98k1b4290/=om55168j4de2m10c9j=:18'5ge==9>0b<lm:d98k1b6290/=om55168j4de2o10c9mi:18'5ge==9>0b<lm:028?j2dm3:1(<ll:427?k7ej3;:76a;ce83>!7ek3?;86`>bc826>=h<ji1<7*>bb8641=i9kh1=>54o5aa>5<#9ki19=:4n0`a>42<3f>hm7>5$0``>0633g;in7?:;:m7g<<72-;io7;?4:l2fg<6>21d8n650;&2ff<28=1e=ol51698k1e0290/=om55168j4de28207b:l6;29 4dd2<:?7c?mb;3:?>i3m>0;6)?mc;730>h6jk0:m65`4d494?"6jj0><95a1c`95g=<g=o>6=4+1ca9152<f8hi6<m4;n6f0?6=,8hh68>;;o3af?7c32e?i>4?:%3ag?37<2d:no4>e:9l0`4=83.:nn4:059m5gd=9o10c9jm:18'5ge==9>0b<lm:328?j2c83:1(<ll:427?k7ej38:76a;c483>!7ek3?;86`>bc816>=h<j>1<7*>bb8641=i9kh1>>54i5;;>5<#9ki18ol4n0`a>5=<a=3<6=4+1ca90gd<f8hi6<54i5;5>5<#9ki18ol4n0`a>7=<a=3>6=4+1ca90gd<f8hi6>54i5;7>5<#9ki18ol4n0`a>1=<a=386=4+1ca90gd<f8hi6854i5;2>5<#9ki18ol4n0`a>3=<a=3;6=4+1ca90gd<f8hi6:54i5:e>5<#9ki18ol4n0`a>==<a=2n6=4+1ca90gd<f8hi6454i5:g>5<#9ki18ol4n0`a>d=<a=2h6=4+1ca90gd<f8hi6o54i5:a>5<#9ki18ol4n0`a>f=<a=2j6=4+1ca90gd<f8hi6i54i5::>5<#9ki18ol4n0`a>`=<a=236=4+1ca90gd<f8hi6k54i5:5>5<#9ki18ol4n0`a>46<3`>397>5$0``>1de3g;in7?>;:k7<1<72-;io7:mb:l2fg<6:21b85=50;&2ff<3jk1e=ol51298m1>5290/=om54c`8j4de28>07d:71;29 4dd2=hi7c?mb;36?>o3090;6)?mc;6af>h6jk0::65f46d94?"6jj0?no5a1c`952=<a==n6=4+1ca90gd<f8hi6<64;h64`?6=,8hh69lm;o3af?7>32c?5h4?:%3ag?2ej2d:no4>a:9j0<b=83.:nn4;bc9m5gd=9k10e97l:18'5ge=<kh0b<lm:0a8?l2>j3:1(<ll:5`a?k7ej3;o76g;9`83>!7ek3>in6`>bc82a>=n<031<7*>bb87fg=i9kh1=k54i5;1>5<#9ki18ol4n0`a>76<3`>3;7>5$0``>1de3g;in7<>;:k73f<72-;io7:mb:l2fg<5:21b8:l50;&2ff<3jk1e=ol52298m0312900n9;6:182>5<7sA>>46*>c6871<=h9k31<75rbg194?7=83:pD9;7;%3`3?`43fl96=44}c63>5<e93;<i7?lazJ71==]<80::v<=:3496<<5;38j6?;5e;f962<5038?6?652`8f>7?=::0o6?9527811?432;81q)?l7;727>"6<:0m=6*;5;725>"3j3?:>6*>b582f==h<?k1<75f57`94?=n=;;1<7*>bb8667=i9kh1<65f53294?"6jj0>>?5a1c`95>=n=8l1<7*>bb8667=i9kh1>65f50g94?"6jj0>>?5a1c`97>=n=8n1<7*>bb8667=i9kh1865f50a94?"6jj0>>?5a1c`91>=n=8h1<7*>bb8667=i9kh1:65f50c94?"6jj0>>?5a1c`93>=n=831<7*>bb8667=i9kh1465`52594?=n=?o1<75`56394?=n==k1<7*>bb860g=i9kh1<65f55;94?"6jj0>8o5a1c`95>=n==21<7*>bb860g=i9kh1>65f55594?"6jj0>8o5a1c`97>=n==<1<7*>bb860g=i9kh1865f55794?"6jj0>8o5a1c`91>=n==>1<7*>bb860g=i9kh1:65f55194?"6jj0>8o5a1c`93>=n==81<7*>bb860g=i9kh1465f57c94?=h=8=1<75`50:94?=n<?n1<75`54d94?"6jj0>:55a1c`94>=h=<o1<7*>bb862==i9kh1=65`54f94?"6jj0>:55a1c`96>=h=<i1<7*>bb862==i9kh1?65`54`94?"6jj0>:55a1c`90>=h=<k1<7*>bb862==i9kh1965`54;94?"6jj0>:55a1c`92>=h=<21<7*>bb862==i9kh1;65`54594?"6jj0>:55a1c`9<>=n=;h1<7*>bb866f=i9kh1<65f53c94?"6jj0>>n5a1c`95>=n=;31<7*>bb866f=i9kh1>65f53:94?"6jj0>>n5a1c`97>=n=;=1<7*>bb866f=i9kh1865f53494?"6jj0>>n5a1c`91>=n=;?1<7*>bb866f=i9kh1:65f53694?"6jj0>>n5a1c`93>=n=;91<7*>bb866f=i9kh1465f59594?=h=>i1<7*>bb86<0=i9kh1<65`56`94?"6jj0>485a1c`95>=h=>k1<7*>bb86<0=i9kh1>65`56;94?"6jj0>485a1c`97>=h=>21<7*>bb86<0=i9kh1865`56594?"6jj0>485a1c`91>=h=><1<7*>bb86<0=i9kh1:65`56794?"6jj0>485a1c`93>=h=>>1<7*>bb86<0=i9kh1465`50694?=h=9o1<75f55294?"6jj0>8<5a1c`94>=n=:l1<7*>bb8604=i9kh1=65f52g94?"6jj0>8<5a1c`96>=n=:n1<7*>bb8604=i9kh1?65f52a94?"6jj0>8<5a1c`90>=n=:h1<7*>bb8604=i9kh1965f52c94?"6jj0>8<5a1c`92>=n=:31<7*>bb8604=i9kh1;65f52:94?"6jj0>8<5a1c`9<>=n=>91<75f50794?=n<?o1<75f59:94?=h=?n1<75`56094?=h=>:1<75f57a94?=h<l;1<7*>bb8641=i9kh1<65`4d294?"6jj0><95a1c`95>=h<ml1<7*>bb8641=i9kh1>65`4eg94?"6jj0><95a1c`97>=h<mn1<7*>bb8641=i9kh1865`4ea94?"6jj0><95a1c`91>=h<mk1<7*>bb8641=i9kh1:65`4e;94?"6jj0><95a1c`93>=h<m21<7*>bb8641=i9kh1465`4e594?"6jj0><95a1c`9=>=h<m<1<7*>bb8641=i9kh1m65`4e794?"6jj0><95a1c`9f>=h<m>1<7*>bb8641=i9kh1o65`4e194?"6jj0><95a1c`9`>=h<m81<7*>bb8641=i9kh1i65`4e394?"6jj0><95a1c`9b>=h<jl1<7*>bb8641=i9kh1==54o5af>5<#9ki19=:4n0`a>47<3f>hh7>5$0``>0633g;in7?=;:m7gf<72-;io7;?4:l2fg<6;21d8nl50;&2ff<28=1e=ol51598k1ef290/=om55168j4de28?07b:l9;29 4dd2<:?7c?mb;35?>i3k10;6)?mc;730>h6jk0:;65`4b594?"6jj0><95a1c`95==<g=i=6=4+1ca9152<f8hi6<74;n6f3?6=,8hh68>;;o3af?7f32e?i;4?:%3ag?37<2d:no4>b:9l0`3=83.:nn4:059m5gd=9j10c9k;:18'5ge==9>0b<lm:0f8?j2b;3:1(<ll:427?k7ej3;n76a;e383>!7ek3?;86`>bc82b>=h<mh1<7*>bb8641=i9kh1>=54o5f3>5<#9ki19=:4n0`a>77<3f>h97>5$0``>0633g;in7<=;:m7g1<72-;io7;?4:l2fg<5;21b84650;&2ff<3jk1e=ol50:9j0<1=83.:nn4;bc9m5gd=921b84850;&2ff<3jk1e=ol52:9j0<3=83.:nn4;bc9m5gd=;21b84:50;&2ff<3jk1e=ol54:9j0<5=83.:nn4;bc9m5gd==21b84?50;&2ff<3jk1e=ol56:9j0<6=83.:nn4;bc9m5gd=?21b85h50;&2ff<3jk1e=ol58:9j0=c=83.:nn4;bc9m5gd=121b85j50;&2ff<3jk1e=ol5a:9j0=e=83.:nn4;bc9m5gd=j21b85l50;&2ff<3jk1e=ol5c:9j0=g=83.:nn4;bc9m5gd=l21b85750;&2ff<3jk1e=ol5e:9j0=>=83.:nn4;bc9m5gd=n21b85850;&2ff<3jk1e=ol51198m1>2290/=om54c`8j4de28;07d:74;29 4dd2=hi7c?mb;31?>o30:0;6)?mc;6af>h6jk0:?65f49094?"6jj0?no5a1c`951=<a=2:6=4+1ca90gd<f8hi6<;4;h6;4?6=,8hh69lm;o3af?7132c?;k4?:%3ag?2ej2d:no4>7:9j02c=83.:nn4;bc9m5gd=9110e99k:18'5ge=<kh0b<lm:0;8?l2>m3:1(<ll:5`a?k7ej3;j76g;9e83>!7ek3>in6`>bc82f>=n<0i1<7*>bb87fg=i9kh1=n54i5;a>5<#9ki18ol4n0`a>4b<3`>2m7>5$0``>1de3g;in7?j;:k7=<<72-;io7:mb:l2fg<6n21b84<50;&2ff<3jk1e=ol52198m1>0290/=om54c`8j4de2;;07d:8c;29 4dd2=hi7c?mb;01?>o3?k0;6)?mc;6af>h6jk09?65`47`94?=n<?i1<75f54694?"6jj0>985a1c`94>=n=<91<7*>bb8610=i9kh1=65f54094?"6jj0>985a1c`96>=n=<;1<7*>bb8610=i9kh1?65f54294?"6jj0>985a1c`90>=n==l1<7*>bb8610=i9kh1965f55g94?"6jj0>985a1c`92>=n==n1<7*>bb8610=i9kh1;65f55a94?"6jj0>985a1c`9<>=h<>=1<7*>bb873<=i9kh1<65`46494?"6jj0?;45a1c`95>=h<>?1<7*>bb873<=i9kh1>65`46694?"6jj0?;45a1c`97>=h<>91<7*>bb873<=i9kh1865`46094?"6jj0?;45a1c`91>=h<>;1<7*>bb873<=i9kh1:65`46294?"6jj0?;45a1c`93>=h<?l1<7*>bb873<=i9kh1465f52794?"6jj0>?;5a1c`94>=n=:>1<7*>bb8673=i9kh1=65f52194?"6jj0>?;5a1c`96>=n=:81<7*>bb8673=i9kh1?65f52394?"6jj0>?;5a1c`90>=n=::1<7*>bb8673=i9kh1965f53d94?"6jj0>?;5a1c`92>=n=;o1<7*>bb8673=i9kh1;65f53f94?"6jj0>?;5a1c`9<>=h<>k1<75f54494?=e<?91<7?50;2x 4e02o90D98=;I66<>ia:3:17pl;6583>4<729q/=n9544;8L1053A>>46a>b883>>{e<==1<7=50;2x 4e02lh0D98=;I66<>N4n2.:<=4=;h61>5<<a=n1<75`1cg94?=zj=?;6=4<:183\7f!7d?3oi7E:92:J71==O;o1/==>52:k76?6=3`>o6=44o0`f>5<<uk>?:7>53;294~"6k>0nn6F;639K00><@:l0(<>?:39j07<722c?h7>5;n3aa?6=3th?8h4?:483>5}#9j=1j=5G4708L13?3A9m7)??0;08m14=831b894?::k7`?6=3`;ih7>5;n3aa?6=3th?8k4?:283>5}#9j=1io5G4708L13?3A9m7)??0;08m14=831b8i4?::m2f`<722wi89;50;794?6|,8i<6k>4H541?M2202B8j6*>0181?l252900e9:50;9j0a<722c:ni4?::m2f`<722wi89j50;694?6|,8i<6hh4H541?M2202.:<=4=;h61>5<<a=n1<75f1cf94?=h9ko1<75rb56`>5<3290;w)?l7;ge?M21:2B?955+11296>o3:3:17d:k:188m4dc2900c<lj:188yg22>3:187>50z&2g2<bn2B?:?5G44:8 4672;1b8?4?::k7`?6=3`;ih7>5;n3aa?6=3th?984?:583>5}#9j=1ik5G4708L13?3-;;<7<4i5094?=n<m0;66g>be83>>i6jl0;66sm2gf94?2=83:p(<m8:dd8L1053A>>46*>0186?l252900e9j50;9j5gb=831d=ok50;9~f7e4290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;i?6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?m::187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb3a5>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f7e0290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;i36=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?m6:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb3ab>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f7ee290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj:3h6=4;:183\7f!7d?3om7E:92:J71==#99:1>6g;2;29?l2c2900e<lk:188k4db2900qo=6b;290?6=8r.:o:4jf:J727=O<<20(<>?:39j07<722c?h7>5;h3a`?6=3f;ii7>5;|`024<72=0;6=u+1b59af=O<?80D9;7;%334?4<a=81<75f4883>>o3l3:17b?me;29?xd4>;0;694?:1y'5f1=mj1C8;<4H57;?!778380e9<50;9j0<<722c?h7>5;n3aa?6=3th8:>4?:583>5}#9j=1in5G4708L13?3-;;<7<4i5094?=n<00;66g;d;29?j7em3:17pl<6583>1<729q/=n95eb9K034<@=?37)??0;08m14=831b844?::k7`?6=3f;ii7>5;|`020<72=0;6=u+1b59af=O<?80D9;7;%334?4<a=81<75f4883>>o3l3:17b?me;29?xd4>?0;694?:1y'5f1=mj1C8;<4H57;?!778380e9<50;9j0<<722c?h7>5;n3aa?6=3th8::4?:583>5}#9j=1in5G4708L13?3-;;<7<4i5094?=n<00;66g;d;29?j7em3:17pl<6983>1<729q/=n95eb9K034<@=?37)??0;08m14=831b844?::k7`?6=3f;ii7>5;|`02<<72=0;6=u+1b59af=O<?80D9;7;%334?4<a=81<75f4883>>o3l3:17b?me;29?xd5j80;6>4?:1y'5f1=9=30D98=;I66<>"6890:o6gi4;29?l`22900c<l8:188yg4f13:187>50z&2g2<6<o1C8;<4H57;?l212900e9k50;9j5f6=831d=o950;9~f7df29086=4?{%3`3?2192B?:?5G44:8m10=831b=9:50;9l5g1=831vn?l=:180>5<7s-;h;7?;9:J727=O<<20(<>?:0a8mc2=831bj84?::m2f2<722wi>lo50;694?6|,8i<6<:i;I656>N3=11b8;4?::k7a?6=3`;h<7>5;n3a3?6=3th9no4?:283>5}#9j=18;?4H541?M2202c?:7>5;h370?6=3f;i;7>5;|`1f6<72:0;6=u+1b5951?<@=<97E::8:&245<6k2cm87>5;hd6>5<<g8h<6=44}c0bf?6=<3:1<v*>c6820c=O<?80D9;7;h65>5<<a=o1<75f1b294?=h9k=1<75rb3``>5<4290;w)?l7;655>N3>;1C8864i5494?=n9=>1<75`1c594?=zj;h?6=4<:183\7f!7d?3;?56F;639K00><,8:;6<m4ig694?=nn<0;66a>b683>>{e:hi1<7:50;2x 4e028>m7E:92:J71==n<?0;66g;e;29?l7d83:17b?m7;29?xd5jm0;6>4?:1y'5f1=<?;0D98=;I66<>o3>3:17d?;4;29?j7e?3:17pl=b483>6<729q/=n9515;8L1053A>>46*>0182g>oa<3:17dh::188k4d02900qo<nd;290?6=8r.:o:4>4g9K034<@=?37d:9:188m1c=831b=n>50;9l5g1=831vn?lj:180>5<7s-;h;7:91:J727=O<<20e9850;9j512=831d=o950;9~f7d129086=4?{%3`3?7312B?:?5G44:8 46728i0ek:50;9jb0<722e:n:4?::\7fa6dc=83>1<7>t$0a4>42a3A>=>6F;599j03<722c?i7>5;h3`4?6=3f;i;7>5;|`1fc<72:0;6=u+1b59037<@=<97E::8:k72?6=3`;?87>5;n3a3?6=3th9n:4?:283>5}#9j=1=974H541?M2202.:<=4>c:ke0?6=3`l>6=44o0`4>5<<uk8jj7>54;294~"6k>0:8k5G4708L13?3`>=6=44i5g94?=n9j:1<75`1c594?=zj;i;6=4<:183\7f!7d?3>==6F;639K00><a=<1<75f15694?=h9k=1<75rb3`;>5<4290;w)?l7;37=>N3>;1C8864$023>4e<ao>1<75ff483>>i6j>0;66sm2c294?2=83:p(<m8:06e?M21:2B?955f4783>>o3m3:17d?l0;29?j7e?3:17pl=c083>6<729q/=n954738L1053A>>46g;6;29?l73<3:17b?m7;29?xd5j00;6>4?:1y'5f1=9=30D98=;I66<>"6890:o6gi4;29?l`22900c<l8:188yg4d:3:1?7>50z&2g2<3>81C8;<4H57;?l212900e<:;:188k4d02900qo=;f;297?6=8r.:o:4>489K034<@=?37)??0;3`?l`32900ek;50;9l5g1=831vn>:8:187>5<7s-;h;7?;f:J727=O<<20e9850;9j0`<722c:o=4?::m2f2<722wi?8650;194?6|,8i<698>;I656>N3=11b8;4?::k201<722e:n:4?::\7fa706=8391<7>t$0a4>42>3A>=>6F;599'556=9j1bj94?::ke1?6=3f;i;7>5;|`00=<72=0;6=u+1b5951`<@=<97E::8:k72?6=3`>n6=44i0a3>5<<g8h<6=44}c16=?6=;3:1<v*>c68724=O<?80D9;7;h65>5<<a8>?6=44o0`4>5<<uk9>=7>53;294~"6k>0:845G4708L13?3-;;<7?l;hd7>5<<ao?1<75`1c594?=zj:>26=4;:183\7f!7d?3;?j6F;639K00><a=<1<75f4d83>>o6k90;66a>b683>>{e;<k1<7=50;2x 4e02=<:7E:92:J71==n<?0;66g>4583>>i6j>0;66sm34094?5=83:p(<m8:06:?M21:2B?955+11295f=nn=0;66gi5;29?j7e?3:17pl<4`83>1<729q/=n9515d8L1053A>>46g;6;29?l2b2900e<m?:188k4d02900qo=:b;297?6=8r.:o:4;609K034<@=?37d:9:188m4232900c<l8:188yg52;3:1?7>50z&2g2<6<01C8;<4H57;?!7783;h7dh;:188mc3=831d=o950;9~f62e290?6=4?{%3`3?73n2B?:?5G44:8m10=831b8h4?::k2g5<722e:n:4?::\7fa70e=8391<7>t$0a4>1063A>=>6F;599j03<722c:894?::m2f2<722wi?8:50;194?6|,8i<6<:6;I656>N3=11/==>51b9jb1<722cm97>5;n3a3?6=3th88n4?:583>5}#9j=1=9h4H541?M2202c?:7>5;h6f>5<<a8i;6=44o0`4>5<<uk9>h7>53;294~"6k>0?:<5G4708L13?3`>=6=44i067>5<<g8h<6=44}c161?6=;3:1<v*>c6820<=O<?80D9;7;%334?7d3`l?6=44ig794?=h9k=1<75rb26g>5<3290;w)?l7;37b>N3>;1C8864i5494?=n<l0;66g>c183>>i6j>0;66sm34g94?5=83:p(<m8:542?M21:2B?955f4783>>o6<=0;66a>b683>>{e;<<1<7=50;2x 4e028>27E:92:J71==#99:1=n5ff583>>oa=3:17b?m7;29?xd4<l0;694?:1y'5f1=9=l0D98=;I66<>o3>3:17d:j:188m4e72900c<l8:188yg52n3:1?7>50z&2g2<3>81C8;<4H57;?l212900e<:;:188k4d02900qo=:7;297?6=8r.:o:4>489K034<@=?37)??0;3`?l`32900ek;50;9l5g1=831vn>8?:180>5<7s-;h;7:91:J727=O<<20e9850;9j512=831d=o950;9~f7bc290?6=4?{%3`3?73n2B?:?5G44:8m10=831b8h4?::k2g5<722e:n:4?::\7fa6ae=83>1<7>t$0a4>42a3A>=>6F;599j03<722c?i7>5;h3`4?6=3f;i;7>5;|`1`g<72=0;6=u+1b5951`<@=<97E::8:k72?6=3`>n6=44i0a3>5<<g8h<6=44}c0ge?6=<3:1<v*>c6820c=O<?80D9;7;h65>5<<a=o1<75f1b294?=h9k=1<75rb3f:>5<3290;w)?l7;37b>N3>;1C8864i5494?=n<l0;66g>c183>>i6j>0;66sm2g294?2=83:p(<m8:06e?M21:2B?955f4783>>o3m3:17d?l0;29?j7e?3:17pl=eg83>1<729q/=n9515d8L1053A>>46g;6;29?l2b2900e<m?:188k4d02900qo<je;290?6=8r.:o:4>4g9K034<@=?37d:9:188m1c=831b=n>50;9l5g1=831vn?kk:187>5<7s-;h;7?;f:J727=O<<20e9850;9j0`<722c:o=4?::m2f2<722wi>hm50;694?6|,8i<6<:i;I656>N3=11b8;4?::k7a?6=3`;h<7>5;n3a3?6=3th8;o4?:583>5}#9j=1=9h4H541?M2202c?:7>5;h6f>5<<a8i;6=44o0`4>5<<uk9<m7>54;294~"6k>0:8k5G4708L13?3`>=6=44i5g94?=n9j:1<75`1c594?=zj:=26=4;:183\7f!7d?3;?j6F;639K00><a=<1<75f4d83>>o6k90;66a>b683>>{e;>21<7:50;2x 4e028>m7E:92:J71==n<?0;66g;e;29?l7d83:17b?m7;29?xd4?>0;694?:1y'5f1=9=l0D98=;I66<>o3>3:17d:j:188m4e72900c<l8:188yg5?m3:187>50z&2g2<6<o1C8;<4H57;?l212900e9k50;9j5f6=831d=o950;9~f6>c290?6=4?{%3`3?73n2B?:?5G44:8m10=831b8h4?::k2g5<722e:n:4?::\7fa7=e=83>1<7>t$0a4>42a3A>=>6F;599j03<722c?i7>5;h3`4?6=3f;i;7>5;|`0<g<72=0;6=u+1b5951`<@=<97E::8:k72?6=3`>n6=44i0a3>5<<g8h<6=44}c1;e?6=<3:1<v*>c6820c=O<?80D9;7;h65>5<<a=o1<75f1b294?=h9k=1<75rb0g:>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f4c?290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj8o<6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn<k9:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb0g6>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f4c3290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj8o86=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn<k=:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb0g2>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f72e290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;>j6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?:6:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb36;>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f720290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;>=6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?:::187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb367>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f724290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;386=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?7=:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb3;2>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f7?7290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;2m6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?6j:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb3:g>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f7>d290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;2i6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?=>:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb313>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f74a290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;8n6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?<k:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb30`>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f74e290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;8j6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?<6:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb3:2>5<3290;w)?l7;g`?M21:2B?955G3g9'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;2;6=4;:183\7f!7d?3oh7E:92:J71==O;o1/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb35e>5<3290;w)?l7;g`?M21:2B?955G3g9'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;=n6=4;:183\7f!7d?3oh7E:92:J71==O;o1/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb35g>5<3290;w)?l7;g`?M21:2B?955G3g9'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;=h6=4;:183\7f!7d?3oh7E:92:J71==O;o1/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb35a>5<3290;w)?l7;g`?M21:2B?955G3g9'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;=j6=4;:183\7f!7d?3oh7E:92:J71==O;o1/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb35:>5<3290;w)?l7;g`?M21:2B?955G3g9'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;;m6=4;:183\7f!7d?3oh7E:92:J71==O;o1/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb33f>5<3290;w)?l7;g`?M21:2B?955G3g9'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;;o6=4;:183\7f!7d?3oh7E:92:J71==O;o1/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb33`>5<3290;w)?l7;g`?M21:2B?955G3g9'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;;i6=4;:183\7f!7d?3oh7E:92:J71==O;o1/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb33b>5<3290;w)?l7;g`?M21:2B?955G3g9'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;;26=4;:183\7f!7d?3oh7E:92:J71==O;o1/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb33;>5<3290;w)?l7;g`?M21:2B?955G3g9'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;;<6=4;:183\7f!7d?3oh7E:92:J71==O;o1/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb32g>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f76d290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;:i6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?>n:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb32:>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f76?290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;:<6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?>9:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb326>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f70a290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;<n6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?8k:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb34`>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f70e290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj;<j6=4;:183\7f!7d?3oh7E:92:J71==#99:1>6g;2;29?l2>2900e9j50;9l5gc=831vn?86:187>5<7s-;h;7kl;I656>N3=11/==>52:k76?6=3`>26=44i5f94?=h9ko1<75rb34;>5<3290;w)?l7;g`?M21:2B?955+11296>o3:3:17d:6:188m1b=831d=ok50;9~f700290?6=4?{%3`3?cd3A>=>6F;599'556=:2c?>7>5;h6:>5<<a=n1<75`1cg94?=zj:9?6=4::183\7f!7d?3oo7E:92:J71==#99:1>6g;2;29?l232900e9750;9j0a<722e:nh4?::\7fa765=83?1<7>t$0a4>`b<@=<97E::8:&245<53`>96=44i5694?=n<00;66g;d;29?j7em3:17pl<3383>0<729q/=n95ee9K034<@=?37)??0;08m14=831b894?::k7=?6=3`>o6=44o0`f>5<<uk98=7>55;294~"6k>0nh6F;639K00><,8:;6?5f4383>>o3<3:17d:6:188m1b=831d=ok50;9~f657290>6=4?{%3`3?cc3A>=>6F;599'556=:2c?>7>5;h67>5<<a=31<75f4e83>>i6jl0;66sm33d94?3=83:p(<m8:df8L1053A>>46*>0181?l252900e9:50;9j0<<722c?h7>5;n3aa?6=3th8>i4?:483>5}#9j=1ii5G4708L13?3-;;<7<4i5094?=n<=0;66g;9;29?l2c2900c<lj:188yg55k3:197>50z&2g2<a82B?:?5G44:8 4672<1b8?4?::k70?6=3`>o6=44i0`g>5<<g8hn6=44}c11a?6==3:1<v*>c68f`>N3>;1C8864$023>7=n<;0;66g;4;29?l2>2900e9j50;9l5gc=831vn><>:180>5<7s-;h;7:91:J727=O<<20e9850;9j512=831d=o950;9~f64729086=4?{%3`3?2192B?:?5G44:8m10=831b=9:50;9l5g1=831vn>?8:187>5<7s-;h;7?;f:J727=O<<20e9850;9j0`<722c:o=4?::m2f2<722wi?<h50;194?6|,8i<698>;I656>N3=11b8;4?::k201<722e:n:4?::\7fa743=83>1<7>t$0a4>42a3A>=>6F;599j03<722c?i7>5;h3`4?6=3f;i;7>5;|`05`<72:0;6=u+1b59037<@=<97E::8:k72?6=3`;?87>5;n3a3?6=3th8=>4?:583>5}#9j=1=9h4H541?M2202c?:7>5;h6f>5<<a8i;6=44o0`4>5<<uk9:h7>53;294~"6k>0?:<5G4708L13?3`>=6=44i067>5<<g8h<6=44}c125?6=<3:1<v*>c6820c=O<?80D9;7;h65>5<<a=o1<75f1b294?=h9k=1<75rb23`>5<4290;w)?l7;655>N3>;1C8864i5494?=n9=>1<75`1c594?=zj::m6=4;:183\7f!7d?3;?j6F;639K00><a=<1<75f4d83>>o6k90;66a>b683>>{e;8h1<7=50;2x 4e02=<:7E:92:J71==n<?0;66g>4583>>i6j>0;66sm31f94?2=83:p(<m8:06e?M21:2B?955f4783>>o3m3:17d?l0;29?j7e?3:17pl<1`83>6<729q/=n954738L1053A>>46g;6;29?l73<3:17b?m7;29?xd48k0;694?:1y'5f1=9=l0D98=;I66<>o3>3:17d:j:188m4e72900c<l8:188yg5613:1?7>50z&2g2<3>81C8;<4H57;?l212900e<:;:188k4d02900qo=?9;290?6=8r.:o:4>4g9K034<@=?37d:9:188m1c=831b=n>50;9l5g1=831vn>:9:186>5<7s-;h;7kk;I656>N3=11/==>52:k76?6=3`>?6=44i5;94?=n<m0;66a>bd83>>{e;=?1<7;50;2x 4e02ln0D98=;I66<>"689097d:=:188m12=831b844?::k7`?6=3f;ii7>5;|`001<72<0;6=u+1b59aa=O<?80D9;7;%334?4<a=81<75f4583>>o313:17d:k:188k4db2900qo=;3;291?6=8r.:o:4jd:J727=O<<20(<>?:39j07<722c?87>5;h6:>5<<a=n1<75`1cg94?=zj:>96=4::183\7f!7d?3oo7E:92:J71==#99:1>6g;2;29?l232900e9750;9j0a<722e:nh4?::\7fa717=83?1<7>t$0a4>`b<@=<97E::8:&245<53`>96=44i5694?=n<00;66g;d;29?j7em3:17pl<4183>0<729q/=n95ee9K034<@=?37)??0;08m14=831b894?::k7=?6=3`>o6=44o0`f>5<<uk98j7>55;294~"6k>0nh6F;639K00><,8:;6?5f4383>>o3<3:17d:6:188m1b=831d=ok50;9~f65b290>6=4?{%3`3?cc3A>=>6F;599'556=:2c?>7>5;h67>5<<a=31<75f4e83>>i6jl0;66sm2`094?2=83:p(<m8:da8L1053A>>46*>0181?l252900e9750;9j0a<722e:nh4?::\7fa6<`=83>1<7>t$0a4>`e<@=<97E::8:&245<53`>96=44i5;94?=n<m0;66a>bd83>>{e:h<1<7:50;2x 4e02ll0D98=;I66<>"6890>7d:=:188m1b=831b=oj50;9l5gc=831vn?o::187>5<7s-;h;7ki;I656>N3=11/==>55:k76?6=3`>o6=44i0`g>5<<g8hn6=44}c1g0?6==3:1<v*>c68f`>N3>;1C8864$023>7=n<;0;66g;4;29?l2>2900e9j50;9l5gc=831vn>j<:186>5<7s-;h;7kk;I656>N3=11/==>52:k76?6=3`>?6=44i5;94?=n<m0;66a>bd83>>{e;m81<7;50;2x 4e02ln0D98=;I66<>"689097d:=:188m12=831b844?::k7`?6=3f;ii7>5;|`0`4<72<0;6=u+1b59aa=O<?80D9;7;%334?4<a=81<75f4583>>o313:17d:k:188k4db2900qo=k0;291?6=8r.:o:4jd:J727=O<<20(<>?:39j07<722c?87>5;h6:>5<<a=n1<75`1cg94?=zj:im6=4::183\7f!7d?3oo7E:92:J71==#99:1>6g;2;29?l232900e9750;9j0a<722e:nh4?::\7fa7fb=83?1<7>t$0a4>c6<@=<97E::8:&245<23`>96=44i5694?=n<m0;66g>be83>>i6jl0;66sm3ba94?3=83:p(<m8:df8L1053A>>46*>0181?l252900e9:50;9j0<<722c?h7>5;n3aa?6=3th8oh4?:483>5}#9j=1ii5G4708L13?3-;;<7<4i5094?=n<=0;66g;9;29?l2c2900c<lj:188yg5d93:1?7>50z&2g2<3>81C8;<4H57;?l212900e<:;:188k4d02900qo=l0;297?6=8r.:o:4;609K034<@=?37d:9:188m4232900c<l8:188yg5e?3:187>50z&2g2<6<o1C8;<4H57;?l212900e9k50;9j5f6=831d=o950;9~f6da29086=4?{%3`3?2192B?:?5G44:8m10=831b=9:50;9l5g1=831vn>l::187>5<7s-;h;7?;f:J727=O<<20e9850;9j0`<722c:o=4?::m2f2<722wi?ok50;194?6|,8i<698>;I656>N3=11b8;4?::k201<722e:n:4?::\7fa7g5=83>1<7>t$0a4>42a3A>=>6F;599j03<722c?i7>5;h3`4?6=3f;i;7>5;|`0fa<72:0;6=u+1b59037<@=<97E::8:k72?6=3`;?87>5;n3a3?6=3th8n<4?:583>5}#9j=1=9h4H541?M2202c?:7>5;h6f>5<<a8i;6=44o0`4>5<<uk9io7>53;294~"6k>0?:<5G4708L13?3`>=6=44i067>5<<g8h<6=44}c1bb?6=<3:1<v*>c6820c=O<?80D9;7;h65>5<<a=o1<75f1b294?=h9k=1<75rb2`a>5<4290;w)?l7;655>N3>;1C8864i5494?=n9=>1<75`1c594?=zj:ko6=4;:183\7f!7d?3;?j6F;639K00><a=<1<75f4d83>>o6k90;66a>b683>>{e;kk1<7=50;2x 4e02=<:7E:92:J71==n<?0;66g>4583>>i6j>0;66sm3``94?2=83:p(<m8:06e?M21:2B?955f4783>>o3m3:17d?l0;29?j7e?3:17pl<b883>6<729q/=n954738L1053A>>46g;6;29?l73<3:17b?m7;29?xd4i00;694?:1y'5f1=9=l0D98=;I66<>o3>3:17d:j:188m4e72900c<l8:188yg5b83:197>50z&2g2<bl2B?:?5G44:8 4672;1b8?4?::k70?6=3`>26=44i5f94?=h9ko1<75rb2ff>5<2290;w)?l7;d3?M21:2B?955+11291>o3:3:17d:;:188m1b=831b=oj50;9l5gc=831vn>ji:186>5<7s-;h;7kk;I656>N3=11/==>52:k76?6=3`>?6=44i5;94?=n<m0;66a>bd83>>{e;l;1<7;50;2x 4e02ln0D98=;I66<>"689097d:=:188m12=831b844?::k7`?6=3f;ii7>5;|`0a7<72<0;6=u+1b59aa=O<?80D9;7;%334?4<a=81<75f4583>>o313:17d:k:188k4db2900qo=j3;291?6=8r.:o:4jd:J727=O<<20(<>?:39j07<722c?87>5;h6:>5<<a=n1<75`1cg94?=zj:o?6=4::183\7f!7d?3oo7E:92:J71==#99:1>6g;2;29?l232900e9750;9j0a<722e:nh4?::\7fa7`3=83?1<7>t$0a4>`b<@=<97E::8:&245<53`>96=44i5694?=n<00;66g;d;29?j7em3:17pl<e783>0<729q/=n95ee9K034<@=?37)??0;08m14=831b894?::k7=?6=3`>o6=44o0`f>5<<uk9m47>55;294~"6k>0nh6F;639K00><,8:;6?5f4383>>o3<3:17d:6:188m1b=831d=ok50;9~f6`0290>6=4?{%3`3?cc3A>=>6F;599'556=:2c?>7>5;h67>5<<a=31<75f4e83>>i6jl0;66sm3g494?3=83:p(<m8:df8L1053A>>46*>0181?l252900e9:50;9j0<<722c?h7>5;n3aa?6=3th8j84?:483>5}#9j=1ii5G4708L13?3-;;<7<4i5094?=n<=0;66g;9;29?l2c2900c<lj:188yg5a<3:197>50z&2g2<bl2B?:?5G44:8 4672;1b8?4?::k70?6=3`>26=44i5f94?=h9ko1<75rb2d0>5<2290;w)?l7;gg?M21:2B?955+11296>o3:3:17d:;:188m1?=831b8i4?::m2f`<722wi?k<50;794?6|,8i<6hj4H541?M2202.:<=4=;h61>5<<a=>1<75f4883>>o3l3:17b?me;29?xd4n80;684?:1y'5f1=mm1C8;<4H57;?!778380e9<50;9j01<722c?57>5;h6g>5<<g8hn6=44}c1e4?6==3:1<v*>c68f`>N3>;1C8864$023>7=n<;0;66g;4;29?l2>2900e9j50;9l5gc=831vn9?9:187>5<7s-;h;7kj;I656>N3=11/==>52:k76?6=3`>?6=44i5f94?=h9ko1<75rb536>5<3290;w)?l7;gf?M21:2B?955+11296>o3:3:17d:;:188m1b=831d=ok50;9~f173290?6=4?{%3`3?cb3A>=>6F;599'556=:2c?>7>5;h67>5<<a=n1<75`1cg94?=zj=;86=4;:183\7f!7d?3on7E:92:J71==#99:1>6g;2;29?l232900e9j50;9l5gc=831vn9?=:187>5<7s-;h;7kj;I656>N3=11/==>52:k76?6=3`>?6=44i5f94?=h9ko1<75rb532>5<3290;w)?l7;gf?M21:2B?955+11296>o3:3:17d:;:188m1b=831d=ok50;9~f16a290?6=4?{%3`3?cb3A>=>6F;599'556=:2c?>7>5;h67>5<<a=n1<75`1cg94?=zj=:n6=4;:183\7f!7d?3on7E:92:J71==#99:1>6g;2;29?l232900e9j50;9l5gc=831vn9>k:187>5<7s-;h;7kj;I656>N3=11/==>52:k76?6=3`>?6=44i5f94?=h9ko1<75rb52`>5<3290;w)?l7;gf?M21:2B?955+11296>o3:3:17d:;:188m1b=831d=ok50;9~f16e290?6=4?{%3`3?cb3A>=>6F;599'556=:2c?>7>5;h67>5<<a=n1<75`1cg94?=zj=:j6=4;:183\7f!7d?3on7E:92:J71==#99:1>6g;2;29?l232900e9j50;9l5gc=831vn9>6:187>5<7s-;h;7kj;I656>N3=11/==>52:k76?6=3`>?6=44i5f94?=h9ko1<75rb52;>5<3290;w)?l7;gf?M21:2B?955+11296>o3:3:17d:;:188m1b=831d=ok50;9~f160290?6=4?{%3`3?cb3A>=>6F;599'556=:2c?>7>5;h67>5<<a=n1<75`1cg94?=zj=:=6=4;:183\7f!7d?3on7E:92:J71==#99:1>6g;2;29?l232900e9j50;9l5gc=831vn9>;:187>5<7s-;h;7kj;I656>N3=11/==>52:k76?6=3`>?6=44i5f94?=h9ko1<75rb520>5<3290;w)?l7;gf?M21:2B?955+11296>o3:3:17d:;:188m1b=831d=ok50;9~f165290?6=4?{%3`3?cb3A>=>6F;599'556=:2c?>7>5;h67>5<<a=n1<75`1cg94?=zj=::6=4;:183\7f!7d?3on7E:92:J71==#99:1>6g;2;29?l232900e9j50;9l5gc=831vn9>?:187>5<7s-;h;7kj;I656>N3=11/==>52:k76?6=3`>?6=44i5f94?=h9ko1<75rb2de>5<3290;w)?l7;gf?M21:2B?955+11296>o3:3:17d:;:188m1b=831d=ok50;9~f6`b290?6=4?{%3`3?cb3A>=>6F;599'556=:2c?>7>5;h67>5<<a=n1<75`1cg94?=zj:lo6=4;:183\7f!7d?3on7E:92:J71==#99:1>6g;2;29?l232900e9j50;9l5gc=831vn>hl:187>5<7s-;h;7kj;I656>N3=11/==>52:k76?6=3`>?6=44i5f94?=h9ko1<75rb2da>5<3290;w)?l7;gf?M21:2B?955+11296>o3:3:17d:;:188m1b=831d=ok50;9~f17d290?6=4?{%3`3?cb3A>=>6F;599'556=:2c?>7>5;h67>5<<a=n1<75`1cg94?=zj=;i6=4;:183\7f!7d?3on7E:92:J71==#99:1>6g;2;29?l232900e9j50;9l5gc=831vn9?n:187>5<7s-;h;7kj;I656>N3=11/==>52:k76?6=3`>?6=44i5f94?=h9ko1<75rb53:>5<3290;w)?l7;gf?M21:2B?955+11296>o3:3:17d:;:188m1b=831d=ok50;9~f17?290?6=4?{%3`3?cb3A>=>6F;599'556=:2c?>7>5;h67>5<<a=n1<75`1cg94?=zj=;<6=4;:183\7f!7d?3on7E:92:J71==#99:1>6g;2;29?l232900e9j50;9l5gc=831vn9??:187>5<7s-;h;7kj;I656>N3=11/==>52:k76?6=3`>?6=44i5f94?=h9ko1<75rb526>5<3290;w)?l7;gf?M21:2B?955+11296>o3:3:17d:;:188m1b=831d=ok50;9~f6`f290?6=4?{%3`3?cb3A>=>6F;599'556=:2c?>7>5;h67>5<<a=n1<75`1cg94?=zj:l26=4;:183\7f!7d?3on7E:92:J71==#99:1>6g;2;29?l232900e9j50;9l5gc=831vn9;=:180>5<7s-;h;7?;9:J727=O<<20(<>?:038mc2=831bj84?::m2f2<722wi89750;194?6|,8i<6<:6;I656>N3=11/==>5109jb1<722cm97>5;n3a3?6=3th98i4?:283>5}#9j=1=974H541?M2202.:<=4>6:ke0?6=3`l>6=44o0`4>5<<uk;nn7>53;294~"6k>0:845G4708L13?3-;;<7?9;hd7>5<<ao?1<75`1c594?=zj8n<6=4<:183\7f!7d?3;?56F;639K00><,8:;6<84ig694?=nn<0;66a>b683>>{e9m<1<7=50;2x 4e028>27E:92:J71==#99:1=;5ff583>>oa=3:17b?m7;29?xd6l<0;6>4?:1y'5f1=9=30D98=;I66<>"6890::6gi4;29?l`22900c<l8:188yg7c<3:1?7>50z&2g2<6<01C8;<4H57;?!7783;=7dh;:188mc3=831d=o950;9~f4b429086=4?{%3`3?7312B?:?5G44:8 46728<0ek:50;9jb0<722e:n:4?::\7fa5a4=8391<7>t$0a4>42>3A>=>6F;599'556=9?1bj94?::ke1?6=3f;i;7>5;|`2`4<72:0;6=u+1b5951?<@=<97E::8:&245<6>2cm87>5;hd6>5<<g8h<6=44}c3g4?6=;3:1<v*>c6820<=O<?80D9;7;%334?713`l?6=44ig794?=h9k=1<75rb0ae>5<4290;w)?l7;37=>N3>;1C8864$023>40<ao>1<75ff483>>i6j>0;66sm1bg94?5=83:p(<m8:06:?M21:2B?955+112953=nn=0;66gi5;29?j7e?3:17pl>ce83>6<729q/=n9515;8L1053A>>46*>01822>oa<3:17dh::188k4d02900qo?lc;297?6=8r.:o:4>489K034<@=?37)??0;35?l`32900ek;50;9l5g1=831vn<mm:180>5<7s-;h;7?;9:J727=O<<20(<>?:048mc2=831bj84?::m2f2<722wi=no50;194?6|,8i<6<:6;I656>N3=11/==>5179jb1<722cm97>5;n3a3?6=3th:o44?:283>5}#9j=1=974H541?M2202.:<=4>6:ke0?6=3`l>6=44o0`4>5<<uk;h47>53;294~"6k>0:845G4708L13?3-;;<7?9;hd7>5<<ao?1<75`1c594?=zj;>m6=4;:183\7f!7d?3;?n6F;639K00><,8:;6<k4ig694?=nn<0;66gi6;29?j7e?3:17pl>ee83>1<729q/=n9515`8L1053A>>46*>0182a>oa<3:17dh::188mc0=831d=o950;9~f7g6290?6=4?{%3`3?73j2B?:?5G44:8 46728k0ek:50;9jb0<722cm:7>5;n3a3?6=3th99<4?:483>5}#9j=1=9j4H541?M2202.:<=4>8:ke0?6=3`l>6=44ig494?=nn>0;66a>b683>>{e9ll1<7;50;2x 4e028>o7E:92:J71==#99:1=55ff583>>oa=3:17dh9:188mc1=831d=o950;9~f7g?290>6=4?{%3`3?73l2B?:?5G44:8 4672=90ek:50;9jb0<722cm:7>5;hd4>5<<g8h<6=44}c0b0?6==3:1<v*>c6820a=O<?80D9;7;%334?7>3`l?6=44ig794?=nn?0;66gi7;29?j7e?3:17pl<9g83>6<729q/=n9515;8L1053A>>46*>0184?l`32900ek;50;9l5g1=831vn?7j:187>5<7s-;h;7?;b:J727=O<<20(<>?:g9jb1<722cm97>5;hd5>5<<g8h<6=44}c067?6=;3:1<v*>c6820<=O<?80D9;7;%334?713`l?6=44ig794?=h9k=1<75rb0d2>5<4290;w)?l7;37=>N3>;1C8864$023>40<ao>1<75ff483>>i6j>0;66sm24794?2=83:p(<m8:06a?M21:2B?955+11295`=nn=0;66gi5;29?l`12900c<l8:188yg7a;3:187>50z&2g2<6<k1C8;<4H57;?!7783;n7dh;:188mc3=831bj;4?::m2f2<722wi>4m50;794?6|,8i<6<:k;I656>N3=11/==>5c:ke0?6=3`l>6=44ig494?=nn>0;66a>b683>>{e:<=1<7;50;2x 4e028>o7E:92:J71==#99:1=55ff583>>oa=3:17dh9:188mc1=831d=o950;9~f4`2290>6=4?{%3`3?73l2B?:?5G44:8 4672820ek:50;9jb0<722cm:7>5;hd4>5<<g8h<6=44}c1:<?6=;3:1<v*>c6820<=O<?80D9;7;%334?7d3`l?6=44ig794?=h9k=1<75rb2:6>5<4290;w)?l7;37=>N3>;1C8864$023>4e<ao>1<75ff483>>i6j>0;66sm2gc94?5=83:p(<m8:06:?M21:2B?955+11295f=nn=0;66gi5;29?j7e?3:17pl=e683>6<729q/=n9515;8L1053A>>46*>0182g>oa<3:17dh::188k4d02900qo=67;291?6=8r.:o:4>4e9K034<@=?37)??0;3g?l`32900ek;50;9jb3<722cm;7>5;n3a3?6=3th8494?:483>5}#9j=1=9j4H541?M2202.:<=4>d:ke0?6=3`l>6=44ig494?=nn>0;66a>b683>>{e:o31<7;50;2x 4e028>o7E:92:J71==#99:1=i5ff583>>oa=3:17dh9:188mc1=831d=o950;9~f7c1290>6=4?{%3`3?73l2B?:?5G44:8 46728h0ek:50;9jb0<722cm:7>5;hd4>5<<g8h<6=44}c1:2?6==3:1<v*>c6820a=O<?80D9;7;%334?7c3`l?6=44ig794?=nn?0;66gi7;29?j7e?3:17pl<8283>0<729q/=n9515f8L1053A>>46*>0182`>oa<3:17dh::188mc0=831bj:4?::m2f2<722wi>k650;794?6|,8i<6<:k;I656>N3=11/==>51e9jb1<722cm97>5;hd5>5<<ao=1<75`1c594?=zj;o>6=4::183\7f!7d?3;?h6F;639K00><,8:;6<l4ig694?=nn<0;66gi6;29?l`02900c<l8:188yg5>=3:197>50z&2g2<6<m1C8;<4H57;?!7783;o7dh;:188mc3=831bj;4?::ke3?6=3f;i;7>5;|`0<7<72<0;6=u+1b5951b<@=<97E::8:&245<6l2cm87>5;hd6>5<<ao<1<75ff683>>i6j>0;66sm2g594?3=83:p(<m8:06g?M21:2B?955+11295a=nn=0;66gi5;29?l`12900ek950;9l5g1=831vn?k;:186>5<7s-;h;7?;d:J727=O<<20(<>?:0`8mc2=831bj84?::ke2?6=3`l<6=44o0`4>5<<uk8mj7>54;294~"6k>0:8o5G4708L13?3-;;<7kn;hd7>5<<ao?1<75ff783>>i6j>0;66sm38g94?3=83:p(<m8:06g?M21:2B?955+1129a<=nn=0;66gi5;29?l`12900ek950;9l5g1=831vn>7;:186>5<7s-;h;7?;d:J727=O<<20(<>?:0f8mc2=831bj84?::ke2?6=3`l<6=44o0`4>5<<uk93=7>55;294~"6k>0:8i5G4708L13?3-;;<7?k;hd7>5<<ao?1<75ff783>>oa?3:17b?m7;29?xd5n?0;684?:1y'5f1=9=n0D98=;I66<>"6890:h6gi4;29?l`22900ek850;9jb2<722e:n:4?::\7fa6`5=83?1<7>t$0a4>42c3A>=>6F;599'556=9k1bj94?::ke1?6=3`l=6=44ig594?=h9k=1<75rb23;>5<5290;w)?l7;37<>N3>;1C8864$023>2=nn=0;66a>b683>>{e;8<1<7<50;2x 4e028>37E:92:J71==#99:1;6gi4;29?j7e?3:17pl<1583>7<729q/=n9515:8L1053A>>46*>0184?l`32900c<l8:188yg56:3:1>7>50z&2g2<6<11C8;<4H57;?!7783=0ek:50;9l5g1=831vn>??:181>5<7s-;h;7?;8:J727=O<<20(<>?:69jb1<722e:n:4?::\7fa75c=8381<7>t$0a4>42?3A>=>6F;599'556=?2cm87>5;n3a3?6=3th8<n4?:383>5}#9j=1=964H541?M2202.:<=48;hd7>5<<g8h<6=44}c13e?6=:3:1<v*>c6820==O<?80D9;7;%334?1<ao>1<75`1c594?=zj:h36=4=:183\7f!7d?3;?46F;639K00><,8:;6:5ff583>>i6j>0;66sm3c494?4=83:p(<m8:06;?M21:2B?955+11293>oa<3:17b?m7;29?xd4j=0;6?4?:1y'5f1=9=20D98=;I66<>"6890<7dh;:188k4d02900qo=m2;296?6=8r.:o:4>499K034<@=?37)??0;58mc2=831d=o950;9~f6d729096=4?{%3`3?7302B?:?5G44:8 4672>1bj94?::m2f2<722wi?lk50;094?6|,8i<6<:7;I656>N3=11/==>57:ke0?6=3f;i;7>5;|`0ef<72;0;6=u+1b5951><@=<97E::8:&245<03`l?6=44o0`4>5<<uk9jm7>52;294~"6k>0:855G4708L13?3-;;<794ig694?=h9k=1<75rb201>5<5290;w)?l7;37<>N3>;1C8864$023>2=nn=0;66a>b683>>{e;j81<7<50;2x 4e028>37E:92:J71==#99:1;6gi4;29?j7e?3:17pl>f883>0<729q/=n9515f8L1053A>>46*>0182<>oa<3:17dh::188mc0=831bj:4?::m2f2<722wi=kl50;794?6|,8i<6<:k;I656>N3=11/==>51g9jb1<722cm97>5;hd5>5<<ao=1<75`1c594?=zj;?i6=4::183\7f!7d?3;?h6F;639K00><,8:;6<64ig694?=nn<0;66gi6;29?l`02900c<l8:188yg42l3:197>50z&2g2<6<m1C8;<4H57;?!7783;m7dh;:188mc3=831bj;4?::ke3?6=3f;i;7>5;|`1=a<72<0;6=u+1b5951b<@=<97E::8:&245<d3`l?6=44ig794?=nn?0;66gi7;29?j7e?3:17pl;4083>dg=83:p(<m8:0`e?M21:2B?955U408b\7f76=:803644>2;30>d<6<3h1=84r$01e>1=#9=:186*i8;68 c?=<2.mm7:4$g`90>"ak3>0(kj54:&2g6<43-;h87=4$022>1=#998186*>0287?!77<3>0(<>::59'550=<2.:<:4;;%33<?2<,8:2695+11c90>"68k0?7)??c;68 46c2=1/==k54:&24c<33-;:<7:4$032>1=#988186*>1287?!76<3>0(<?::59'540=<2.:=:4;;%32<?2<,8;2695+10c90>"69k0?7)?>c;68 47c2=1/=<k54:&25c<33-;9<7:4$002>1=#9;8186*>2287?!75<3>0(<<::59'570=<2.:>:4;;%31<?2<,882695+13c90>"6:k0?7)?=c;68 44c2=1/=?k54:&26c<33-;8<7:4$012>1=#9:8186*>3287?!74<3>0(<=::59'560=<2.:?:4;;%30<?2<,892695+12c90>"6;k0?7)?<c;68 45c2=1/=>k54:&71c<3=m1/jh4;;%3`5?7e>2.:8<4<;%376?5<,=?n69;k;%de>1=n<>0;66g;8;29?lc02900eh650;9j5f3=831b=n850;9j00d=831b88m50;9j71<72-;io7=<;o3af?6<3`996=4+1ca976=i9kh1=65f3083>!7ek3987c?mb;08?l57290/=om5329m5gd=;21b>k4?:%3ag?543g;in7:4;h0f>5<#9ki1?>5a1c`91>=n:m0;6)?mc;10?k7ej3<07d<l:18'5ge=;:1e=ol57:9j6g<72-;io7=<;o3af?><3`9n6=4+1ca97a=i9kh1<65f3b83>!7ek39o7c?mb;38?l5e290/=om53e9m5gd=:21b?l4?:%3ag?5c3g;in7=4;h1:>5<#9ki1?i5a1c`90>=n;10;6)?mc;1g?k7ej3?07d=8:18'5ge=;m1e=ol56:9j73<72-;io7=k;o3af?1<3`9>6=4+1ca97a=i9kh1465f6983>!7ek3<<7c?mb;28?l01290/=om5669m5gd=921b:94?:%3ag?003g;in7<4;h40>5<#9ki1::5a1c`97>=n>;0;6)?mc;44?k7ej3>07d8>:18'5ge=>>1e=ol55:9j25<72-;io788;o3af?0<3`?m6=4+1ca922=i9kh1;65f5d83>!7ek3<<7c?mb;:8?l3c290/=om5669m5gd=121b9n4?:%3ag?003g;in7o4;h7a>5<#9ki1::5a1c`9f>=n=00;6)?mc;44?k7ej3i07d;7:18'5ge=>>1e=ol5d:9j12<72-;io788;o3af?c<3`?=6=4+1ca922=i9kh1j65f5483>!7ek3<<7c?mb;33?>o2<3:1(<ll:758j4de28;07d;<:18'5ge=>>1e=ol51398m04=83.:nn497:l2fg<6;21b9<4?:%3ag?003g;in7?;;:k64?6=,8hh6;94n0`a>43<3`<m6=4+1ca922=i9kh1=;54i7g94?"6jj0=;6`>bc823>=n>m0;6)?mc;44?k7ej3;376g9c;29 4dd2?=0b<lm:0;8?l0e290/=om5669m5gd=9h10e;o50;&2ff<1?2d:no4>b:9j2<<72-;io788;o3af?7d32c=97>5$0``>31<f8hi6<j4;h7b>5<#9ki1::5a1c`95`=<a=l1<7*>bb853>h6jk0:j65f8883>!7ek3237c?mb;28?l>0290/=om5899m5gd=921b484?:%3ag?>?3g;in7<4;h:7>5<#9ki1455a1c`97>=n0:0;6)?mc;:;?k7ej3>07d6=:18'5ge=011e=ol55:9j<4<72-;io767;o3af?0<3`2;6=4+1ca9<==i9kh1;65f7g83>!7ek3237c?mb;:8?l1b290/=om5899m5gd=121b;i4?:%3ag?>?3g;in7o4;h5`>5<#9ki1455a1c`9f>=n?h0;6)?mc;:;?k7ej3i07d96:18'5ge=011e=ol5d:9j3=<72-;io767;o3af?c<3`=<6=4+1ca9<==i9kh1j65f7783>!7ek3237c?mb;33?>o0=3:1(<ll:9:8j4de28;07d9;:18'5ge=011e=ol51398m25=83.:nn478:l2fg<6;21b;?4?:%3ag?>?3g;in7?;;:k45?6=,8hh6564n0`a>43<3`3;6=4+1ca9<==i9kh1=;54i9d94?"6jj0346`>bc823>=n0l0;6)?mc;:;?k7ej3;376g7d;29 4dd2120b<lm:0;8?l>d290/=om5899m5gd=9h10e5l50;&2ff<?02d:no4>b:9j<d<72-;io767;o3af?7d32c3:7>5$0``>=><f8hi6<j4;h5a>5<#9ki1455a1c`95`=<a>:1<7*>bb8;<>h6jk0:j65f9483>!7ek33?7c?mb;28?l?4290/=om5959m5gd=921b5?4?:%3ag??33g;in7<4;h;2>5<#9ki1595a1c`97>=n1h0;6)?mc;;:?k7ej3:07d77:18'5ge=101e=ol51:9j=2<72-;io776;o3af?4<3`3=6=4+1ca9=<=i9kh1?65`b583>!7ek3h87c?mb;28?jd5290/=om5b29m5gd=921dn=4?:%3ag?d43g;in7<4;nce>5<#9ki1n>5a1c`97>=hil0;6)?mc;`0?k7ej3>07bok:18'5ge=j:1e=ol55:9lef<72-;io7l<;o3af?0<3fki6=4+1ca9f6=i9kh1;65`a`83>!7ek3h87c?mb;:8?jg>290/=om5b29m5gd=121dm54?:%3ag?d43g;in7o4;nc4>5<#9ki1n>5a1c`9f>=hi<0;6)?mc;`0?k7ej3i07bo;:18'5ge=j:1e=ol5d:9le6<72-;io7l<;o3af?c<3fk96=4+1ca9f6=i9kh1j65`a083>!7ek3h87c?mb;33?>if83:1(<ll:c18j4de28;07b7i:18'5ge=j:1e=ol51398k<c=83.:nn4m3:l2fg<6;21d5i4?:%3ag?d43g;in7?;;:m:g?6=,8hh6o=4n0`a>43<3fhi6=4+1ca9f6=i9kh1=;54occ94?"6jj0i?6`>bc823>=hj00;6)?mc;`0?k7ej3;376am8;29 4dd2k90b<lm:0;8?jd0290/=om5b29m5gd=9h10co850;&2ff<e;2d:no4>b:9lf0<72-;io7l<;o3af?7d32ei=7>5$0``>g5<f8hi6<j4;nc5>5<#9ki1n>5a1c`95`=<g0h1<7*>bb8a7>h6jk0:j65`e083>!7ek3o;7c?mb;28?jba290/=om5e19m5gd=921dhh4?:%3ag?c73g;in7<4;nfg>5<#9ki1i=5a1c`97>=hl<0;6)?mc;f7?k7ej3:07bj<:18'5ge=l=1e=ol51:9l`4<72-;io7j;;o3af?4<3fn;6=4+1ca9`1=i9kh1?65`cg83>!7ek3n?7c?mb;68?jeb290/=om5d59m5gd==21doi4?:%3ag?b33g;in784;na`>5<#9ki1h95a1c`93>=hkk0;6)?mc;f7?k7ej3207bmn:18'5ge=l=1e=ol59:9lg<<72-;io7j;;o3af?g<3fi36=4+1ca9`1=i9kh1n65`c783>!7ek3n?7c?mb;a8?je2290/=om5d59m5gd=l21do94?:%3ag?b33g;in7k4;na0>5<#9ki1h95a1c`9b>=hk;0;6)?mc;f7?k7ej3;;76al1;29 4dd2m>0b<lm:038?je7290/=om5d59m5gd=9;10coh50;&2ff<c<2d:no4>3:9lf`<72-;io7j;;o3af?7332eih7>5$0``>a2<f8hi6<;4;nf`>5<#9ki1h95a1c`953=<gmh1<7*>bb8g0>h6jk0:;65`d`83>!7ek3n?7c?mb;3;?>ic13:1(<ll:e68j4de28307bj7:18'5ge=l=1e=ol51`98ka1=83.:nn4k4:l2fg<6j21dh;4?:%3ag?b33g;in7?l;:mg6?6=,8hh6i:4n0`a>4b<3fi<6=4+1ca9`1=i9kh1=h54oca94?"6jj0o86`>bc82b>=hm?0;6)?mc;g6?k7ej3:07bk;:18'5ge=m<1e=ol51:9la6<72-;io7k:;o3af?4<3fo96=4+1ca9a0=i9kh1?65rb0d4>5<4290;w)?l7;37e>N3>;1C8864$023>40<ao>1<75ff483>>i6<<0;66sm1g:94?2=83:p(<m8:06`?M21:2B?955+112952=nn=0;66gi5;29?l`12900c<:::188yg4213:1?7>50z&2g2<6<h1C8;<4H57;?!7783;=7dh;:188mc3=831d=9;50;9~f73f290?6=4?{%3`3?73k2B?:?5G44:8 46728=0ek:50;9jb0<722cm:7>5;n371?6=3ty>:l4?:6y]13g<5;k:6k84=3c;>c1<5;k?6k94=3;f>c2<5;3h6k:4=3;g>c2<uz><47>564y]02g<V=<i7S;82:\635=Y<?k0R88k;_723>X2?81U9<64^414?[20?2T?;;5Q4678Z1133W><?6P;739]027<V==;7S:9f:?726<a:27?8h4;d:?700<3l27?8i4;d:?70f<3l27?9;4;d:?710<3l279hi4;e:?1`f<3m279ho4;e:?1`d<3m279h44;e:?1b5<3m279ik4;e:?1a`<3m279ii4;e:?1af<3m278;o4;e:?03d<3m278;44;e:?03=<3m278;:4;e:?0<`<3m2784i4;e:?0<f<3m2784o4;e:?0<d<3m278=:4;e:?050<3m278=>4;e:?054<3m278<k4;e:?04a<3m278<o4;e:?04<<3m278n:4;e:?0f0<3m278n>4;e:?0f4<3m278mk4;e:?0ea<3m278mo4;e:?0e<<3m27?8<4>c49>017=9j<019:>:57`?823932270:;1;:4?823932>70:;1;:7?823932870:;1;:1?823932:70:;1;:3?82393=m70:;1;5f?82393=o70:;1;5`?82393=j70:;1;5:?82393=370:;1;54?82393==70:;1;56?82393=?70:;1;50?82393=970:;1;52?823933;70:;1;:e?823932n70:;1;:g?823932h70:;1;:a?823932j70:;1;:5?82393=i70:;1;53?823933j70:;1;;;?823933<70:;1;;5?xu2>j0;6>uQ57a8912b28ho70:;5;3a`>{t=9o1<7<t^42f?84f>3;ii6s|59594?5|V<2<70=6f;d7?85>m3l?7p}:5783>3`|V<?=70:;7;61?823>3>970:;5;61?823l3>970:;c;61?84al3>970<l3;61?84d<3>970<l5;61?84d>3>970<l7;61?84d03>970<l9;61?84di3>970<lb;61?843j3>970<;a;61?84313>970<;8;61?843?3>970<;6;61?843=3>970<;4;61?843;3>970<63;61?84>:3>970<61;61?84>83>970<7f;61?84?m3>970<7d;61?84?k3>970<7b;61?84?93>970<70;61?840n3>970<8e;61?840l3>970<8c;61?840j3>970<8a;61?84013>970<?d;61?847k3>970<?b;61?847i3>970<?9;61?84703>970<?7;61?847>3>970<?5;61?854<3>970=<3;61?854:3>970=<1;61?85483>970==f;61?855l3>970==c;61?855m3>970=;6;61?853=3>970=;4;61?853;3>970=;2;61?85393>970=;0;61?854n3>970=<e;61?84f:3>970<6f;61?84f>3>970<n5;61?826>3>970:>5;61?826<3>970:>3;61?826:3>970:>1;61?827n3>970:?e;61?827l3>970:?c;61?827j3>970:?a;61?82713>970:?8;61?827?3>970:?6;61?827<3>970:?3;61?827:3>970:?1;61?82783>970=if;61?85am3>970=id;61?85ak3>970=ib;61?826k3>970:>b;61?826i3>970:>9;61?82603>970:>7;61?82683>970:?5;61?85ai3>970=i9;61?82393>37p}:1583>7}Y=8>01>7l:0`f?xu2?:0;68?t^450?82283>970:;e;61?823n3>970::6;61?822=3>970=6c;61?85>j3>970=91;61?851:3>970=93;61?851<3>970=95;61?851>3>970=97;61?85103>970=99;61?87b13>970?j8;61?87b?3>970?j6;61?87b=3>970?j4;61?87b;3>970?j2;61?87b93>970<<1;61?84483>970<=f;61?845m3>970<=d;61?845k3>970<=b;61?845i3>970<=9;61?846n3>970<>e;61?846l3>970<>c;61?846j3>970<>a;61?84613>970<>8;61?846?3>970<9f;61?841m3>970<9d;61?841k3>970<9b;61?841i3>970<99;61?84103>970<97;61?85c<3>970=k3;61?85c:3>970=k1;61?85c83>970=lf;61?85dl3>970=lc;61?85dm3>970=j0;61?85cm3>970=kf;61?85b93>970=j2;61?85b;3>970=j4;61?85b=3>970=j6;61?85a03>970=i7;61?85a>3>970=i5;61?85a<3>970=i3;61?85a:3>970=i1;61?85a83>970:;1;64?xu20?0;6?uQ56a8960>28hn7p}:8583>7}Y=>h01>87:0`f?xu20:0;6?uQ56c8960028hn7p}:8383>7}Y=>301>89:0`f?xu2080;6?uQ56:8960228hn7p}:8183>7}Y=>=01>8;:0`f?xu2?o0;6?uQ5648960428hn7p}:7d83>7}Y=>?01>8=:0`f?xu2?m0;6?uQ5668960628hn7p}:0483>7}Y<l;019?9:0`f?xu28:0;6?uQ4d28917228hn7p}:0383>7}Y<ml019?;:0`f?xu2880;6?uQ4eg8917428hn7p}:0183>7}Y<mn019?=:0`f?xu3no0;6?uQ4ea8917628hn7p};fe83>7}Y<mk019>i:0`f?xu3nj0;6?uQ4e;8916b28hn7p};fc83>7}Y<m2019>k:0`f?xu3nh0;6?uQ4e58916d28hn7p};f883>7}Y<m<019>m:0`f?xu3n10;6?uQ4e78916f28hn7p};f683>7}Y<m>019>6:0`f?xu3n?0;6?uQ4e18916?28hn7p};f483>7}Y<m8019>8:0`f?xu3n=0;6?uQ4e38916128hn7p};f383>7}Y<jl019>;:0`f?xu3n80;6?uQ4bg8916428hn7p};f183>7}Y<jn019>=:0`f?xu3mo0;6?uQ4ba8916628hn7p};ed83>7}Y<jh019>?:0`f?xu3mm0;6?uQ4bc896`a28hn7p};eb83>7}Y<j301>hj:0`f?xu3mk0;6?uQ4b:896`c28hn7p};e`83>7}Y<j=01>hl:0`f?xu3m00;6?uQ4b4896`e28hn7p}:0b83>7}Y<l=019?l:0`f?xu28k0;6?uQ4d48917e28hn7p}:0`83>7}Y<l?019?n:0`f?xu2800;6?uQ4d68917>28hn7p}:0983>7}Y<l9019?7:0`f?xu28>0;6?uQ4d08917028hn7p}:0783>7}Y<mh019??:0`f?xu3nl0;6?uQ4e28916228hn7p};f283>7}Y<j?01>hn:0`f?xu3m10;6?uQ4b6896`>28hn7p}:6883>7}Y=<l01?mm:0`f?xu2>>0;6?uQ54g897ef28hn7p}:6783>7}Y=<n01?m6:0`f?xu2><0;6?uQ54a897e?28hn7p}:6583>7}Y=<h01?m8:0`f?xu2>:0;6?uQ54c897e128hn7p}:6383>7}Y=<301?m::0`f?xu2>80;6?uQ54:897e328hn7p}:6183>7}Y=<=01?m<:0`f?xu3jj0;6?uQ48:8912620?0q~:ma;296~X31>1689?5699~w1d>2909wS:66:?704<1>2wx8o650;0xZ1?234>?=78;;|q7f2<72;qU84:4=562>35<uz>i:7>52z\7=6=:<=;1:?5rs5`7>5<5sW>2=63;40855>{t<k91<7<t^5;3?82393<;7p};b383>7}Y<1l019:>:4d8yv2e93:1>vP;8d9>017=1:1v\7f9l?:181\7f[2?l27?8<4:e:\7fp0d`=838pR96l;<675?3c3ty?mh4?:3y]0=d<5=>:68m4}r6b`?6=:rT?4l5245391g=z{=kh6=4={_6;=>;3<80>56s|4``94?4|V=2370:;1;7;?xu3i00;6?uQ494891262<=0q~:n8;296~X30<1689?5579~w1g02909wS:74:?704<>:2wx8l850;0xZ1>434>?=7;:;|q7e0<72;qU85<4=562>02<uz>j87>52z\7<4=:<=;19>5rs5c0>5<5sW>3<63;40866>{t<h81<7<t^55e?82393?:7p};a083>7}Y<>o019:>:428yv2f83:1>vP;7e9>017=>o1v\7f9m<:181\7f[2>m27?8<49e:\7fp0f4=838pR97k;<675??63ty?o<4?:3y]0<e<5=>:6;j4}r6`4?6=:rT?5o5245392f=z{=hm6=4={_6:e>;3<80=n6s|4cg94?4|V=3270:;1;4b?xu3jm0;6?uQ480891262?30q~:m5;296~X30>1689?5649~w1gf2909wS:8c:?704<2i2wx84h50;0xZ11e34>?=7:i;|q217<72lq68;:51c;897g>2=<01?ln:54896202=<01>;7:54897b>2=<01?kl:54896102=<01>6n:548967>2=<01>>6:54896d>2=<01>o6:54891262l=0q~:;6;297~;3<>0?h63;4782f`=:<=?1895rs564>5<5s4>?;7?me:?70<<a<2wx89h50;1x91372=n019:j:568912a28hn7p};5183>7}:<<:1=ok4=571>c2<uz>?97>53z?703<3l27?884>bd9>01?=n<1v\7f9:j:180\7f823m3;ii63;4g87`>;3=;0m96s|45:94?5|5=>o6<lk;<67g?7el27?844>b69~w12e2909=v3;4e82f`=::on1=oj4=3a0>1?<5;i?6974=3a6>1?<5;i=6974=3a4>1?<5;i36974=3a:>1?<5;ij6974=3aa>1?<5:9?6974=210>1?<5:996974=212>1?<5:9;6974=20e>1?<5:8o6974=20`>4dc3499i7:6;<172?2>349?97:6;<170?2>349??7:6;<176?2>349?=7:6;<174?2>3498j7:6;<10a?2>348j>7:6;<0:b?2>348j:7?md:?1e0<6jm1v\7f9:n:1811~;3<j0:nh5225`90<=::=k1845225;90<=::=21845225590<=::=<1845225790<=::=>1845225190<=::091845228090<=::0;1845228290<=::1l1845229g90<=::1n1845229a90<=::1h1845229390<=::1:1845226d90<=::>o1845226f90<=::>i1845226`90<=::>k1845226;90<=::9n1845221a90<=::9h1845221c90<=::931845221:90<=::9=1845221490<=::9?1845rs572>5<4s4>>:7?md:?710<6jm1688<51c58yv22<3:1>:u244495gc<5:3h6<lk;<1:f?7el278:<4;9:?027<31278:>4;9:?021<31278:84;9:?023<31278::4;9:?02=<31278:44;9:?0`1<31278h>4;9:?0`7<31278h<4;9:?0`5<31278ok4;9:?0ga<6jm16?nm5489>7fc=<016?h>5489>7ac=9kn01>ji:5;896c62=301>k=:5;896c42=301>k;:5;896c22=301>k9:5;896`?2=301>h8:5;896`12=301>h::5;896`32=301>h<:5;896`52=301>h>:5;896`72=30q~::3;2960}:<<?1=ok4=0g:>1?<58o36974=0g4>1?<58o=6974=0g6>1?<58o?6974=0g0>1?<58o96974=0g2>1?<5;9:6974=313>1?<5;8m6974=30f>1?<5;8o6974=30`>1?<5;8i6974=30b>1?<5;826974=33e>1?<5;;n6974=33g>1?<5;;h6974=33a>1?<5;;j6974=33:>1?<5;;36974=334>1?<5;<m6974=34f>1?<5;<o6974=34`>1?<5;<i6974=34b>1?<5;<26974=34;>1?<5;<<6974}r0ea?6=:r79ji4;d:?1bc<6j>1v\7f?hk:187\7f84al3;ii63=a58e0>;51j0m963=9e8e1>{t:ji1<7<t=3a0>1b<5;hj6<l8;|q1ga<72;q6>n:54e9>6gd=9k=0q~<le;296~;5k<0?h63=bb82f2=z{;im6=4={<0`2?2c348ih7?m7:\7fp6a6=838p1?m8:5f897db28h<7p}=d083>7}::j218i522cd95g1<uz8o>7>52z?1g<<3l279o=4>b69~w7b42909w0<la;6g?84d93;i;6s|2e694?4|5;ii69j4=3a1>4d03ty85i4?:2y>7<e=<m16?4l54e9>7<c=9k=0q~=6b;297~;41k0:nh5238d9b0=:;0o1j85rs24b>5<5s49==7:k;<16<?7e?2wx?;l50;0x96052=n01>;6:0`4?xu4>j0;6?u237190a=:;<k1=o94}r15`?6=:r78:94;d:?01g<6j>1v\7f>8j:181\7f851=3>o70=:c;3a3>{t;?l1<7<t=245>1b<5:?o6<l8;|q035<72;q6?;954e9>70c=9k=0q~=81;296~;4>10?h63<5g82f2=z{:=96=4={<15=?2c349=<7?m7:\7fp66g=83?p1?l>:g6897g>2=o01?:<:0`f?84a>3l<70<j3;d7?xu4;<0;68u22c39b0=:;:o1=ok4=0ae>c3<5;o86k84=562>63<uz8i=7>53z?1f4<6j>16>l751b2897df28>?7p}=a883>6}::h31=o94=3cb>10<5;hi6984}r00f?6==r79n?4i4:?1ed<3m279894>bd9>6c0=n<16>h=5f49~w651290=w0<m2;d6?854n3;ii63>cg8e0>;6kl0m963=e28e3>;3<808:6s|2c094?5|5;h96<l8;<0be?7d8279no4>459~w7gf2908w0<na;3a3>;5ik0?:63=bb872>{t::i1<7;t=3`0>c2<5;ki69k4=366>4db348m;7h8;<0f0?`33ty8?:4?:7y>6g5=n<16?9>51cg894eb2o>01<mk:g7897c32o<019:>:258yv4e;3:1?v3=b282f2=::hh1=n>4=3``>4233ty9mo4?:2y>6dd=9k=01?ol:54897dc2=<0q~<<d;291~;5j=0m863=ab87a>;5<?0:nh522g59b0=::l>1j85rs21;>5<1s48i87h:;<175?7em27:oi4i4:?2gf<a=279i94i7:?704<402wx>o:50;1x97d328h<70<nc;3`4>;5jm0:895rs3c`>5<4s48jo7?m7:?1ea<3>279nh4;6:\7fp66c=83?p1?l::g6897gc2=o01?:8:0`f?84a03l<70<j5;d7?xu4;00;6;u22c79b0=:;=81=ok4=0a`>c2<58ii6k;4=3g6>c0<5=>:6>74}r0a1?6=;r79n84>b69>6db=9j:01?lj:067?xu5im0;6>u22`f95g1<5;kn6984=3`e>10<uz88j7>55z?1f3<a<279mh4;e:?10=<6jl16>k65f49>6`3=n<1v\7f>=n:185\7f84e>3l>70=;3;3aa>;6kk0m863>c`8e1>;5m<0m;63;4080e>{t:k<1<7=t=3`5>4d0348ji7?l0:?1fc<6<=1v\7f?oj:180\7f84fm3;i;63=ag872>;5k90?:6s|25294?3|5;h<6k:4=3ce>1c<5;>26<lj;<0e=?`0348n:7h;;|q07g<72?q6>o95f49>712=9ko01<mn:g6894e>2o?01?k9:g4891262:h0q~<m7;297~;5j>0:n:522`d95f6<5;i;6<:;;|q1ec<72:q6>lh51c5897d72=<01?m>:548yv4393:19v3=b98e0>;5j90?i63=4`82f`=::o31j8522d49b0=z{:9h6=49{<0a<?`2349?97?me:?2g<<a<27:o54i5:?1a3<a?27?8<4<c:\7fp6g>=839p1?l7:0`4?84e83;h<63=c08201=z{;h;6=4={<0a4?7e?279o?4;6:\7fp614=83>p1?l6:g68972e28hn70<ia;d7?84b?3l?7p}<3e83>3}::k31j85221f90a=:;=<1=ok4=0a;>c2<5;o<6k;4=562>6c<uz8i57>52z?1f<<6j>16>n<51568yv5b?3:19v3<4g8e0>;4<>0?i63<f182f`=:9m=1j85245396g=z{8n36=4;{<17b?`234;n=7?me:?0=1<a?2784<4i7:\7fp71`=839p1>:i:0`4?853?3;h<63<598201=z{:><6=4<{<173?7e?278854;6:?01<<3>2wx=i750;6x96372o>01<k=:0`f?85><3l>70=71;d6?xu4m10;6;u23429b0=:;=218h523g395gc<58n<6k:4=0f5>c3<5=>:6?m4}r164?6=;r789=4>b69>71>=9j:01>;6:067?xu4<10;6>u235:95g1<5:>26984=27b>10<uz9n57>56z?014<a<278844;e:?0b7<6jl16=i85f59>5a3=n<1689?52e9~w4bf290?w0=:1;d6?87b;3;ii63<948e3>;40;0m;6s|34394?5|5:?:6<l8;<17=?7d82789l4>459~w62>2908w0=;9;3a3>;4<h0?:63<5c872>{t9mh1<7:t=271>c2<58o?6<lj;<1:1?`23493>7h:;|q0ad<72?q6?8<5f49>71g=<l16?k=51cg894b22o>01<j;:g7891262;o0q~=:2;297~;4=;0:n:5235c95f6<5:?i6<:;;|q00d<72:q6?9o51c58962e2=<01>;l:548yv5bj3:1:v3<528e0>;4<k0?i63<f582f`=:9m>1j9521e19b0=:<=;1>k5rs0f`>5<3s49>?7h:;<3f1?7em2785;4i7:?0<6<a?2wx?8=50;1x963428h<70=;b;3`4>;4=j0:895rs26a>5<4s49?n7?m7:?00f<3>2789i4;6:\7fp5ab=83>p1>;;:g6894c128hn70=66;d6?85?;3l>7p}<eb83>3}:;<>1j85235a90`=:;o?1=ok4=0f0>c2<58n96k;4=562>66<uz9>87>53z?011<6j>16?9m51b28963c28>?7p}<4b83>6}:;=i1=o94=26g>10<5:?n6984}r3ga?6=<r78984i4:?2a2<6jl16?495f69>7=2=n>1v\7f>kk:185\7f852=3l>70=;d;6f?85a>3;ii63>d38e0>;6l80m963;40805>{t;<?1<7=t=276>4d0349?h7?l0:?01`<6<=1v\7f>:k:180\7f853l3;i;63<4d872>;4=o0?:6s|1ed94?2|5:?=6k:4=0g;>4db3492;7h:;<1;0?`23ty8ih4?:7y>700=n<16?9k54d9>7c1=9ko01<j>:g6894b72o?019:>:208yv52>3:1?v3<5782f2=:;=o1=n>4=27e>4233ty88h4?:3y>71c=9k=01>8?:548yv5bn3:19v3<568e0>;5>o0?h63<f982f`=:9m:1j952453971=z{8o;6=4;{<163?`234;n57?me:?0==<a=278484i5:\7fp701=838p1>;8:0`4?85183;?86s|2e:94?4|5;no6984=3f`>4d03ty9i?4?:3y>6ab=9j:01?k8:0`4?xu5nk0;6?u22ef95g1<5;lm6k84}r0g3?6=:r79hn4;6:?1`g<6j>1v\7f?k>:181\7f84ck3;h<63=e782f2=z{;n=6=4={<0gf?21348om7?m7:\7fp6`6=838p1?jm:0a3?84b=3;i;6s|2e794?4|5;nj6984=3f:>4d03ty9hk4?:3y>6ag=9j:01?k;:0`4?xu5ll0;6?u22e;95f6<5;o86<l8;|q1ag<72;q6>k>5479>6``=9k=0q~<i5;296~;5n90:o=522gc95g1<uz8mo7>52z?1b5<6j>16>kh5f49~w7cf2909w0<jf;65?84bm3;i;6s|2g694?4|5;om6<m?;<0e=?7e?2wx>h750;0x97cb2=<01?kk:0`4?xu5n:0;6?u22dg95f6<5;l36<l8;|q1a=<72;q6>hj5479>6`e=9k=0q~<i2;296~;5mm0:o=522g595g1<uz8m=7>52z?1af<6k916>k851c58yv50>3:1>v3<7c872>;4?h0:n:5rs2:3>5<5s49<n7?l0:?0<0<6j>1v\7f>76:181\7f850j3;i;63<9d8e2>{t;>?1<7<t=25b>10<5:=26<l8;|q03c<72;q6?:o51b2896>328h<7p}<7583>7}:;>318;5236:95g1<uz9<i7>52z?03<<6k916?5=51c58yv50;3:1>v3<79872>;4?>0:n:5rs25g>5<5s49<47?l0:?0<7<6j>1v\7f>9l:181\7f850?3;h<63<8082f2=z{:226=4={<1;a?213493h7?m7:\7fp7<5=838p1>6j:0a3?85>03;i;6s|38c94?4|5:2n6<l8;<1:a?`03ty8454?:3y>7=b=<?16?5m51c58yv5>:3:1>v3<8e82g5=:;0=1=o94}r1;3?6=:r784n4;6:?0<g<6j>1v\7f>7>:181\7f85?k3;h<63<9782f2=z{:2=6=4={<1;f?213493m7?m7:\7fp7<6=838p1>6m:0a3?85>=3;i;6s|39d94?4|5:2j6<m?;<1:0?7e?2wx>?650;7x94c>2=n01?=>:0`f?87bj3l>70?jd;d7?87bn3l<7p}>e`83>7}:9l218i521d`95g1<uz;no7>52z?2a2<3l27:ii4>b69~w4cb290<w0?j6;6g?87bn3;i;63>f08e1>;6n:0m:63>f48e3>;6n00m;63>fc8e3>{t9o:1<7<t=0g6>1b<58l:6<l8;|q2b7<72;q6=h:54e9>5c5=9k=0q~?i4;296~;6m:0?h63>f482f2=z{8l=6=4={<3f6?2c34;m57?m7:\7fp5cg=838p1<k>:5f894`e28h<7p}=8`83>0}::=h18i5228195gc<5;>o6k;4=36e>c2<5;?:6k94}r07g?6=:r798l4;d:?10a<6j>1v\7f?:j:181\7f84313>o70<;f;3a3>{t:<:1<79t=36;>1b<5;?:6<l8;<067?`2348>97h9;<063?`0348>n7h8;<06`?`03ty99?4?:3y>611=<m16>8=51c58yv42<3:1>v3=4787`>;5=<0:n:5rs375>5<5s48?97:k;<063?7e?2wx>8650;0x97232=n01?;m:0`4?xu5=j0;6?u225190a=::<n1=o94}r04<?6=:r795>4;d:?1<4<6jl1v\7f?98:181\7f84>:3>o70<70;3aa>{t:131<7:t=3;1>4db348?h7h;;<07b?`2348>=7h9;|q133<72;q6>4?54e9>62`=9ko0q~<78;297~;5180:nh5225d9b3=::<;1j85rs356>5<5s482<7:k;<04a?7em2wx>5950;0x97?728hn70<:1;d7?xu5?=0;6?u229d90a=::>n1=ok4}r0;2?6=>r794k4>bd9>605=n=16>8;5f49>601=n?16>8l5f49>60b=n<1v\7f?9<:181\7f84?m3>o70<8c;3aa>{t:1?1<7;t=3:f>4db348>97h;;<063?`2348>n7h;;<06`?`33ty9;?4?:3y>6=b=<m16>:l51cg8yv4?<3:18v3=8e82f`=::<=1j95224;9b0=::<k1j;5rs352>5<5s483o7:k;<04e?7em2wx>5=50;1x97>d28hn70<:9;d7?842i3l>7p}=7183>7}::1h18i5226;95gc<uz83>7>52z?1<g<6jl16>8o5f59~w7712909w0<<1;6g?846n3;ii6s|20794?4|5;9;69j4=33f>4db3ty9>:4?:5y>666=9ko01<km:g6894cc2o?01<ki:g48yv46<3:1>v3=2g87`>;59m0:nh5rs305>5<4s489j7?me:?2aa<a>27:ik4i5:\7fp645=838p1?<j:5f8977d28hn7p}=2483>7}::;o1=ok4=0ge>c2<uz8:>7>52z?16a<3l279=o4>bd9~w743290=w0<=d;3aa>;6n80m863>f28e1>;6n<0m:63>f88e1>;6nk0m96s|20394?4|5;8h69j4=33b>4db3ty9>>4?:4y>67e=9ko01<h<:g6894`22o?01<h6:g6894`e2o>0q~<>0;296~;5:k0?h63=1882f`=z{;896=4;{<01f?7em27:j84i4:?2b2<a=27:j54i6:\7fp65`=838p1?<n:5f8977?28hn7p}=2083>6}::;k1=ok4=0d4>c2<58l36k;4}r03a?6=:r79>44;d:?152<6jl1v\7f?<?:181\7f84513;ii63>f98e0>{t:?<1<7<t=3:2>1b<5;<m6<lj;|q120<72;q6>5>54e9>63c=9ko0q~<94;296~;5?o0?h63=6e82f`=z{;<86=4={<04a?2c348=o7?me:\7fp634=838p1?9k:5f8970e28hn7p}=6083>7}::>i18i5227c95gc<uz8=<7>52z?13g<3l279:44>bd9~w73a2909w0<8a;6g?84103;ii6s|24g94?4|5;=269j4=344>4db3ty9<94?:3y>64`=<m16>=j51cg8yv47;3:1>v3=1d87`>;58j0:nh5rs321>5<5s48:h7:k;<03f?7em2wx>=?50;0x977d2=n01?>n:0`f?xu5890;6?u220`90a=::931=ok4}r3eb?6=:r79=l4;d:?14=<6jl1v\7f<hj:181\7f84613>o70<?7;3aa>{t9on1<7<t=33;>1b<5;:=6<lj;|q2bf<72;q6><954e9>653=9ko0q~<<2;296~;58j0?h63>c982f2=z{;986=4={<03f?2c34;h57?m7:\7fp662=838p1?>n:5f894ef28h<7p}=3483>7}::9318i521b`95g1<uz88:7>52z?14=<3l27:on4>b69~w7502909w0<?7;6g?87dl3;i;6s|22:94?4|5;:=69j4=0af>4d03ty9?44?:3y>653=<m16=nh51c58yv4><3:1>v3=6d87`>;6l90:n:5rs3;6>5<5s48=h7:k;<3g5?7e?2wx>4850;0x970d2=n01<j=:0`4?xu51>0;6?u227`90a=:9m91=o94}r0:<?6=:r79:l4;d:?2`1<6j>1v\7f?76:181\7f84113>o70?k5;3a3>{t:0k1<7<t=34;>1b<58n=6<l8;|q1=g<72;q6>;954e9>5a1=9k=0q~<6c;2951}:;:>18952321901=:;:818952323901=:;::1895233d901=:;;n1895233a901=:;;o18952354901=:;=?18952356901=:;=918952350901=:;=;18952352901=:;:l1895232g901=::ol1j95228f95g1<uz9;47>52z?071<3l278><4>b69~w64e290?w0=<4;3aa>;4<?0?h63=f`8e1>;4:;0m86s|31594?4|5:9869j4=203>4d03ty8>l4?:5y>765=9ko01>:::5f897`>2o>01>?7:g68yv57>3:1>v3<3387`>;49o0:n:5rs20:>5<3s498>7?me:?001<3l279j44i6:?053<a<2wx?=;50;0x96562=n01>?j:0`4?xu4:10;69u232395gc<5:>869j4=3d;>c2<5:;?6k:4}r130?6=:r78?=4;d:?05a<6j>1v\7f><8:187\7f85483;ii63<4387`>;5n10m:63<138e0>{t;991<7<t=20e>1b<5:;h6<l8;|q063<72=q6??h51cg896262=n01?h8:g6896772o>0q~=?1;296~;4:m0?h63<1`82f2=z{:8?6=4;{<11`?7em278?k4;d:?1b3<a<278<n4i4:\7fp756=838p1><l:5f8967>28h<7p}<2283>1}:;;i1=ok4=21f>1b<5;l=6k84=22b>c2<uz9;>7>52z?06`<3l278=o4>b69~w642290?w0==e;3aa>;4<90?h63=f68e2>;48l0m86s|30594?4|5:8:6984=234>4d03ty8>?4?:3y>777=9=>01><=:0`4?xu49<0;6>u2332903=:;8=18;5230795g1<uz9:47>53z?065<6<=16?<951b28967?28h<7p}<1283>6}:;8l18;52307903=:;891=o94}r122?6=;r78=k4>459>743=9j:01>?9:0`4?xu4980;6>u230g903=:;8918;5230395g1<uz9:87>53z?05`<6<=16?<=51b28967328h<7p}<0g83>6}:;8n18;52303903=:;9l1=o94}r126?6=;r78=i4>459>747=9j:01>?=:0`4?xu48m0;6>u230a903=:;9l18;5231f95g1<uz9:<7>53z?05f<6<=16?=h51b28967728h<7p}<0c83>6}:;8h18;5231f903=:;9h1=o94}r13a?6=;r78=o4>459>75b=9j:01>>j:0`4?xu4800;6>u230c903=:;9h18;5231;95g1<uz9;o7>53z?05d<6<=16?=l51b28966d28h<7p}<0`83>6}:;831=9:4=22:>4e7349;m7?m7:\7fp6d5=838p1?o=:5f897g328h<7p}=a383>2}::h81=ok4=3c2>c3<5;k36k84=3c7>c0<5;3n6k84=3;`>c1<5;3o6k94}r0b4?6=:r795k4;d:?1e4<6j>1v\7f?7i:184\7f84>n3;ii63=a08e0>;5i10m963=a58e1>;51l0m963=9b8e2>;51m0m:6s|2`594?5|5;k=69j4=3c6>1b<5;k36<l8;|q1e0<72;q6>l;51cg897g?2o>0q~:;4;295a}:;m>189523e1901=:;m8189523e3901=:;m:189523bd901=:;jn189523ba901=:;jo189523d2901=:;mo189523ed901=:;l;189523d0901=:;l9189523d6901=:;l?189523d4901=:;o2189523g5901=:;o<189523g7901=:;o>189523g1901=:;o8189523g3901=:;o:1895238d95g1<5=>:69;m;|q0e=<72;q6?i:54e9>7f7=9k=0q~=lb;290~;4l=0:nh523d490a=:;021j9523b09b1=z{:k<6=4={<1g7?2c349h<7?m7:\7fp7fg=83>p1>j<:0`f?85b=3>o70=67;d7?85e03l?7p}<a783>7}:;m818i523cd95g1<uz9h57>54z?0`7<6jl16?h:54e9>7<1=n?16?o85f59~w6g22909w0=k1;6g?85em3;i;6s|3b:94?2|5:n:6<lj;<1f7?2c3492:7h;;<1a0?`33ty8m94?:3y>7a6=<m16?oj51c58yv5d?3:18v3<d182f`=:;l818i523849b3=:;k81j95rs2c0>5<5s49hj7:k;<1ag?7e?2wx?n850;6x96ea28hn70=j1;6g?85>=3l?70=m0;d7?xu4i80;6?u23bf90a=:;kk1=o94}r1`0?6=<r78oi4>bd9>7a`=<m16?4:5f59>7de=n=1v\7f>o?:181\7f85dk3>o70=m9;3a3>{t;j91<7:t=2a`>4db349oi7:k;<1:0?`1349jm7h;;|q0e7<72;q6?nk54e9>7gd=9k=0q~=l5;290~;4kl0:nh523d290a=:;0?1j;523`g9b1=z{:h<6=4={<1`5?21349i;7?m7:\7fp7f4=838p1>m>:067?85d:3;i;6s|3c794?5|5:i;6984=2`4>10<5:h>6<l8;|q0f=<72:q6?n>5156896d028i;70=m8;3a3>{t;k91<7=t=2`e>10<5:h>6984=2`0>4d03ty8n;4?:2y>7g`=9=>01>l::0a3?85e>3;i;6s|3c394?5|5:hn6984=2`0>10<5:h:6<l8;|q0f1<72:q6?ok5156896d428i;70=m4;3a3>{t;hl1<7=t=2`g>10<5:h:6984=2ce>4d03ty8n?4?:2y>7gb=9=>01>l>:0a3?85e:3;i;6s|3`f94?5|5:hh6984=2ce>10<5:ko6<l8;|q0f5<72:q6?om5156896ga28i;70=m0;3a3>{t;hh1<7=t=2`a>10<5:ko6984=2ca>4d03ty8mh4?:2y>7gd=9=>01>ok:0a3?85fm3;i;6s|3`;94?5|5:hj6984=2ca>10<5:k26<l8;|q0ef<72:q6?oo5156896ge28i;70=nc;3a3>{t;hk1<7=t=2`:>423349j57?l0:?0ed<6j>1v\7f>j8:180\7f85b83;ii63<f387`>;40;0m:6s|3e794?5|5:nn6<lj;<1e4?2c3493=7h9;|q0`3<72:q6?ih51cg896`62=n01>6>:g68yv5c03:1?v3<e082f`=:;o918i523909b1=z{:n26=4<{<1f6?7em278j94;d:?0<6<a>2wx?io50;1x96c428hn70=i5;6g?85?;3l?7p}<dc83>6}:;l>1=ok4=2d5>1b<5:2?6k84}r1gg?6=;r78i84>bd9>7c1=<m16?5:5f59~w6bc2908w0=j6;3aa>;4n10?h63<848e0>{t<=91<7<:{<622?2334>:97:;;<620?2334>:?7:;;<626?2334>:=7:;;<63b?2334>;i7:;;<63`?2334>;o7:;;<63f?2334>;m7:;;<63=?2334>;47:;;<633?2334>;:7:;;<630?2334>;?7:;;<636?2334>;=7:;;<634?23349mj7:;;<1ea?23349mh7:;;<1eg?23349mn7:;;<62g?2334>:n7:;;<62e?2334>:57:;;<62<?2334>:;7:;;<624?2334>;97:;;<1ee?23349m57:;;<0:a?7e?2wx8>750;0x91712=n019:>:d48yv2403:1>v3;1487`>;3<80o96s|42594?4|5=;?69j4=562>a5<uz>8:7>52z?756<3l27?8<4k1:\7fp063=838p19?=:5f891262m:0q~:<4;296~;3980?h63;408`b>{t<:81<7<t=52e>1b<5=>:6nk4}r605?6=:r7?<h4;d:?704<dl2wx8>>50;0x916c2=n019:>:ba8yv25n3:1>v3;0b87`>;3<80n86s|43g94?4|5=:i69j4=562>fd<uz>9h7>52z?74d<3l27?8<4la:\7fp07e=838p19>6:5f891262j30q~:=b;296~;3810?h63;408`<>{t<;k1<7<t=524>1b<5=>:6n84}r61=?6=:r7?<;4;d:?704<d=2wx8?950;0x91632=n019:>:b68yv25>3:1>v3;0287`>;3<80h?6s|43794?4|5=:969j4=562>`5<uz>987>52z?744<3l27?8<4l2:\7fp075=838p19>?:5f891262j;0q~:=2;296~;4no0?h63;408`4>{t<;;1<7<t=2df>1b<5=>:6oh4}r614?6=:r78ji4;d:?704<em2wx8<h50;0x96`d2=n019:>:cf8yv26m3:1>v3<fc87`>;3<80oo6s|45294?4|5=;h69j4=562>ad<uz>8j7>52z?75g<3l27?8<4j2:\7fp06c=838p19?n:5f891262mk0q~:<d;296~;3900?h63;408g=>{t<:i1<7<t=53;>1b<5=>:6i64}r60f?6=:r7?=:4;d:?704<c?2wx8>o50;0x91772=n019:>:e48yv24;3:1>v3;0487`>;3<80o>6s|43:94?4|5:lj69j4=562>f1<uz>:h7>52z?0b<<3l27?8<4mc:\7fp014=838p1?7l:0`4?82393o37p}>a283>7}:9o31j;521g59513<uz;j97>52z?2bg<a>27:j54>449~w4g02909w0<:b;d5?84213;?96s|1`;94?4|5;?o6k84=37b>4223twx8om50;0xZ1??34>;6977;%663?7fl2wx8oo50;0xZ1?034>;6978;%663?7fm2wx8o750;0xZ1?134>;6979;%663?7fn2wx8o650;0xZ1?234>;697:;%663?7e82wx8o950;0xZ1?334>;697;;%663?72;2wx8o850;0xZ1?434>;697<;%663?72>2wx8o:50;0xZ1?634>;697>;%663?72k2wx8o=50;0xZ1?734>;697?;%663?71?2wx8o<50;0xZ1>a34>;696i;%663?70:2wx8o?50;0xZ1>b34>;696j;%663?70l2wx8o>50;0xZ1>c34>;696k;%663?7?<2wx8lh50;0xZ1>d34>;696l;%663?7?l2wx8lk50;0xZ1>e34>;696m;%663?7>=2wx8lj50;0xZ1>f34>;696n;%663?7>>2wx8lm50;0xZ1>>34>;6966;%663?7>?2wx8ll50;0xZ1>?34>;6967;%663?7>02wx8l750;0xZ1>134>;6969;%663?7>12wx8l650;0xZ1>234>;696:;%663?7>i2wx8l950;0xZ1>334>;696;;%663?7>j2wx8l850;0xZ1>434>;696<;%663?7>k2wx8l;50;0xZ1>534>;696=;%663?7>l2wx8l:50;0xZ1>634>;696>;%663?7>m2wx8l=50;0xZ1>734>;696?;%663?7>n2wx8l<50;0xZ11a34>;699i;%663?7f82wx8l?50;0xZ11b34>;699j;%663?7f92wx8l>50;0xZ11c34>;699k;%663?7f:2wx8n=50;0xZ1?b34>;697j;%663?7f;2wx8n<50;0xZ1?c34>;697k;%663?7f<2wx8n?50;0xZ1?d34>;697l;%663?7f=2wx8n>50;0xZ1?e34>;697m;%663?7f>2wx8oh50;0xZ1?f34>;697n;%663?7f?2wx8ok50;0xZ1?>34>;6976;%663?7f02wx8oj50;0xZ1?534>;697=;%663?7f12wx8o;50;0xZ1>034>;6968;%663?7fi2wx8lo50;0xZ11d34>;699l;%663?7fj2wx84h50;0xZ11e34>;699m;%663?7fk2wx98850;0xZ03134>;68;9;%663?7e92wx9;o50;0xZ00f34>;688n;%663?7e:2wx9;m50;0xZ00d34>;688l;%663?7e;2wx9:=50;0xZ01434>;689<;%663?72<2wx95950;0xZ0>034>;6868;%663?72=2wx9=;50;0xZ1c634>;69k>;%663?72?2wx9==50;0xZ1c734>;69k?;%663?7202wx9=<50;0xZ1ba34>;69ji;%663?7212wx9=?50;0xZ1bb34>;69jj;%663?72i2wx9=>50;0xZ1bc34>;69jk;%663?72j2wx8kh50;0xZ1bd34>;69jl;%663?72l2wx8kj50;0xZ1bf34>;69jn;%663?72m2wx8km50;0xZ1b>34>;69j6;%663?72n2wx8kl50;0xZ1b?34>;69j7;%663?7182wx8ko50;0xZ1b034>;69j8;%663?7192wx8k750;0xZ1b134>;69j9;%663?71:2wx8k650;0xZ1b234>;69j:;%663?71;2wx8k950;0xZ1b334>;69j;;%663?71<2wx8k850;0xZ1b434>;69j<;%663?71=2wx8k;50;0xZ1b534>;69j=;%663?71>2wx8k:50;0xZ1b634>;69j>;%663?7102wx8k<50;0xZ1ea34>;69mi;%663?7112wx8k?50;0xZ1eb34>;69mj;%663?71i2wx8k>50;0xZ1ec34>;69mk;%663?71j2wx8hh50;0xZ1ed34>;69ml;%663?71k2wx8hk50;0xZ1ee34>;69mm;%663?71l2wx8hj50;0xZ1ef34>;69mn;%663?71m2wx8hm50;0xZ1e>34>;69m6;%663?71n2wx8hl50;0xZ1e?34>;69m7;%663?7082wx8ho50;0xZ1e034>;69m8;%663?7092wx8h750;0xZ1e134>;69m9;%663?70;2wx9=m50;0xZ1c034>;69k8;%663?70<2wx9=l50;0xZ1c134>;69k9;%663?70=2wx9=o50;0xZ1c234>;69k:;%663?70>2wx9=750;0xZ1c334>;69k;;%663?70?2wx9=650;0xZ1c434>;69k<;%663?7002wx9=950;0xZ1c534>;69k=;%663?7012wx9=850;0xZ1be34>;69jm;%663?70i2wx8kk50;0xZ1b734>;69j?;%663?70j2wx8k=50;0xZ1e234>;69m:;%663?70k2wx8h650;0xZ1e334>;69m;;%663?70m2wx9=k50;0xZ06b34>;68>j;%663?70n2wx9<:50;0xZ07334>;68?;;%663?7?82wx9;750;0xZ03a34>;68;i;%663?7?92wx9;950;0xZ03b34>;68;j;%663?7?:2wx9;850;0xZ03c34>;68;k;%663?7?;2wx9;;50;0xZ03d34>;68;l;%663?7?=2wx9;:50;0xZ03e34>;68;m;%663?7?>2wx9;=50;0xZ03f34>;68;n;%663?7??2wx9;<50;0xZ03>34>;68;6;%663?7?02wx9;?50;0xZ03?34>;68;7;%663?7?12wx9;>50;0xZ03034>;68;8;%663?7?i2wx95850;0xZ01d34>;689l;%663?7?j2wx95:50;0xZ01e34>;689m;%663?7?k2wx95=50;0xZ01f34>;689n;%663?7?m2wx95<50;0xZ01>34>;6896;%663?7?n2wx95?50;0xZ01?34>;6897;%663?7>82wx95>50;0xZ01034>;6898;%663?7>92wx9:h50;0xZ01134>;6899;%663?7>:2wx9:k50;0xZ01234>;689:;%663?7>;2wx9:j50;0xZ01334>;689;;%663?7><2wvblj<:181\7fM2202wemi:50;0xL13?3tdjh84?:3yK00><ugko:7>52zJ71==zfhn<6=4={I66<>{iim21<7<tH57;?xhfl00;6?uG44:8ykgci3:1>vF;599~jdbe2909wE::8:\7fmeae=838pD9;7;|lb`a<72;qC8864}ocga?6=:rB?955rn`fe>5<5sA>>46saad294?4|@=?37p`ne083>7}O<<20qcoj2;296~N3=11vblk<:181\7fM2202wemh:50;0xL13?3tdji84?:3yK00><ugkn:7>52zJ71==zfho<6=4={I66<>{iil21<7<tH57;?xhfm00;6?uG44:8ykgbi3:1>vF;599~jdce2909wE::8:\7fme`e=838pD9;7;|lbaa<72;qC8864}ocfa?6=:rB?955rn`ge>5<5sA>>46saag294?4|@=?37p`nf083>7}O<<20qcoi2;296~N3=11vblh<:181\7fM2202wemk:50;0xL13?3tdjj84?:3yK00><ugkm:7>52zJ71==zfhl<6=4={I66<>{iio21<7<tH57;?xhfn00;6?uG44:8ykgai3:1>vF;599~jd`e2909wE::8:\7fmece=838pD9;7;|lbba<72;qC8864}ocea?6=:rB?955rn`de>5<5sA>>46sab1294?4|@=?37p`m0083>7}O<<20qcl?2;296~N3=11vbo><:181\7fM2202wen=:50;0xL13?3tdi<84?:3yK00><ugh;:7>52zJ71==zfk:<6=4={I66<>{ij921<7<tH57;?xhe800;6?uG44:8ykd7i3:1>vF;599~jg6e2909wE::8:\7fmf5e=838pD9;7;|la4a<72;qC8864}o`3a?6=:rB?955rnc2e>5<5sA>>46sab0294?4|@=?37p`m1083>7}O<<20qcl>2;296~N3=11vbo?<:181\7fM2202wen<:50;0xL13?3tdi=84?:3yK00><ugh::7>52zJ71==zfk;<6=4={I66<>{ij821<7<tH57;?xhe900;6?uG44:8ykd6i3:1>vF;599~jg7e2909wE::8:\7fmf4e=838pD9;7;|la5a<72;qC8864}o`2a?6=:rB?955rnc3e>5<5sA>>46sab3294?4|@=?37p`m2083>7}O<<20qcl=2;296~N3=11vbo<<:181\7fM2202wen?:50;0xL13?3tdi>84?:3yK00><ugh9:7>52zJ71==zfk8<6=4={I66<>{ij;21<7<tH57;?xhe:00;6?uG44:8ykd5i3:1>vF;599~jg4e2909wE::8:\7fmf7e=838pD9;7;|la6a<72;qC8864}o`1a?6=:rB?955rnc0e>5<5sA>>46sab2294?4|@=?37p`m3083>7}O<<20qcl<2;296~N3=11vbo=<:181\7fM2202we5=o50;3xL13?3td2:o4?:0yK00><ug3=o7>51z&20`<2>o1C8864}o;5`?6=9r.:8h4:6g9K00><ug3=i7>51z&20`<2>o1C8864}o;5b?6=9r.:8h4:6g9K00><ug3<<7>51z&20`<2>o1C8864}o;45?6=9r.:8h4:6g9K00><ug3<>7>51zJ71==zf0=86=4>{I66<>{i1>>1<7?tH57;?xh>?<0;6<uG44:8yk?0>3:1=vF;599~j<10290:wE::8:\7fm=2>=83;pD9;7;|l:3<<728qC8864}o;4e?6=9rB?955rn85a>5<6sA>>46sa96a94?7|@=?37p`67e83>4}O<<20qc78e;295~N3=11vb49i:182\7fM2202we55>50;3xL13?3td24<4?:0yK00><ug33>7>51zJ71==zf0286=4>{I66<>{i11>1<7?tH57;?xh>0<0;6<uG44:8yk??>3:1=vF;599~j<>0290:wE::8:\7fm==>=83;pD9;7;|l:<<<728qC8864}o;;e?6=9rB?955rn8:a>5<6sA>>46sa99a94?7|@=?37p`68e83>4}O<<20qc77e;295~N3=11vb46i:182\7fM2202we54>50;3xL13?3td25<4?:0yK00><ug32>7>51zJ71==zf0386=4>{I66<>{i10>1<7?tH57;?xh>1<0;6<uG44:8yk?>>3:1=vF;599~j<?0290:wE::8:\7fm=<>=83;pD9;7;|l:=<<728qC8864}o;:e?6=9rB?955rn8;a>5<6sA>>46sa98a94?7|@=?37p`69e83>4}O<<20qc76e;295~N3=11vb47i:182\7fM2202we5l>50;3xL13?3td2m<4?:0yK00><ug3j>7>51zJ71==zf0k86=4>{I66<>{i1h>1<7?tH57;?xh>i<0;6<uG44:8yk?f>3:1=vF;599~j<g0290:wE::8:\7fm=d>=83;pD9;7;|l:e<<728qC8864}o;be?6=9rB?955rn8ca>5<6sA>>46sa9`a94?7|@=?37p`6ae83>4}O<<20qc7ne;295~N3=11vb4oi:182\7fM2202we5o>50;3xL13?3td2n<4?:0yK00><ug3i>7>51zJ71==zf0h86=4>{I66<>{i1k>1<7?tH57;?xh>j<0;6<uG44:8yk?e>3:1=vF;599~j<d0290:wE::8:\7fm=g>=83;pD9;7;|l:f<<728qC8864}o;ae?6=9rB?955rn8`a>5<6sA>>46sa9ca94?7|@=?37p`6be83>4}O<<20qc7me;295~N3=11vb4li:182\7fM2202we5n>50;3xL13?3td2o<4?:0yK00><ug3h>7>51zJ71==zf0i86=4>{I66<>{i1j>1<7?tH57;?xh>k<0;6<uG44:8yk?d>3:1=vF;599~j<e0290:wE::8:\7fm=f>=83;pD9;7;|l:g<<728qC8864}o;`e?6=9rB?955rn8aa>5<6sA>>46sa9ba94?7|@=?37p`6ce83>4}O<<20qc7le;295~N3=11vb4mi:182\7fM2202we5i>50;3xL13?3td2h<4?:0yK00><ug3o>7>51zJ71==zf0n86=4>{I66<>{i1m>1<7?tH57;?xh>l<0;6<uG44:8yk?c>3:1=vF;599~j<b0290:wE::8:\7fm=a>=83;pD9;7;|l:`<<728qC8864}o;ge?6=9rB?955rn8fa>5<6sA>>46sa9ea94?7|@=?37p`6de83>4}O<<20qc7ke;295~N3=11vb4ji:182\7fM2202we5h>50;3xL13?3td2i<4?:0yK00><ug3n>7>51zJ71==zf0o86=4>{I66<>{i1l>1<7?tH57;?xh>m<0;6<uG44:8yk?b>3:1=vF;599~j<c0290:wE::8:\7fm=`>=83;pD9;7;|l:a<<728qC8864}o;fe?6=9rB?955rn8ga>5<6sA>>46sa9da94?7|@=?37p`6ee83>4}O<<20qc7je;295~N3=11vb4ki:182\7fM2202we5k>50;3xL13?3td2j<4?:0yK00><ug3m>7>51zJ71==zf0l86=4>{I66<>{i1o>1<7?tH57;?xh>n<0;6<uG44:8yk?a>3:1=vF;599~j<`0290:wE::8:\7fm=c>=83;pD9;7;|l:b<<728qC8864}o;ee?6=9rB?955rn8da>5<6sA>>46sa9ga94?7|@=?37p`6fe83>4}O<<20qc7ie;295~N3=11vb4hi:182\7fM2202wem=>50;3xL13?3tdj<<4?:0yK00><ugk;>7>51zJ71==zfh:86=4>{I66<>{ii9>1<7?tH57;?xhf8<0;6<uG44:8ykg7>3:1=vF;599~jd60290:wE::8:\7fme5>=83;pD9;7;|lb4<<728qC8864}oc3e?6=9rB?955rn`2a>5<6sA>>46saa1a94?7|@=?37p`n0e83>4}O<<20qco?e;295~"6<l0>:k5G44:8ykg7n3:1=v*>4d862c=O<<20qco>0;295~N3=11vbl?>:182\7f!73m3?=j6F;599~jd75290:wE::8:\7fme45=83;p(<:j:44e?M2202wem<:50;3xL13?3tdj=84?:0y'51c==?l0D9;7;|lb53<728qC8864}oc23?6=9r.:8h4:6g9K00><ugk:47>51zJ71==zfh;26=4>{%37a?31n2B?955rn`3b>5<6sA>>46saa0`94?7|,8>n688i;I66<>{ii8i1<7?tH57;?xhf9m0;6<u+15g913`<@=?37p`n1d83>4}O<<20qco>f;295~"6<l0>:k5G44:8ykg583:1=v*>4d862c=O<<20qco=1;295~N3=11vbl<=:182\7f!73m3?=j6F;599~jd44290:wE::8:\7fme72=83;p(<:j:44e?M2202wem?;50;3xL13?3tdj>;4?:0y'51c==?l0D9;7;|lb62<728qC8864}oc1<?6=9r.:8h4:6g9K00><ugk957>51zJ71==zfh8j6=4>{%37a?31n2B?955rn`0a>5<6sA>>46saa3a94?7|,8>n688i;I66<>{ii;n1<7?tH57;?xhf:l0;6<u+15g913`<@=?37p`n2g83>4}O<<20qco<0;295~N3=11vbl=>:182\7fM2202wem><50;3xL13?3tdj?>4?:0yK00><ugk887>51zJ71==zfh9>6=4>{I66<>{ii:<1<7?tH57;?xhf;>0;6<uG44:8ykg403:1=vF;599~jd5>290:wE::8:\7fme6g=83;pD9;7;|lb7g<728qC8864}oc0g?6=9rB?955rn`1g>5<6sA>>46saa2g94?7|@=?37p`n3g83>4}O<<20qco;0;295~N3=11vbl:>:182\7fM2202wem9<50;3xL13?3tdj8>4?:0yK00><ugk?87>51zJ71==zfh>>6=4>{I66<>{ii=<1<7?tH57;?xhf<>0;6<uG44:8ykg303:1=vF;599~jd2>290:wE::8:\7fme1g=83;pD9;7;|lb0g<728qC8864}oc7g?6=9rB?955rn`6g>5<6sA>>46saa5g94?7|@=?37p`n4g83>4}O<<20qco:0;295~N3=11vbl;>:182\7fM2202wem8<50;3xL13?3tdj9>4?:0yK00><ugk>87>51zJ71==zfh?>6=4>{I66<>{ii<<1<7?tH57;?xhf=>0;6<uG44:8ykg203:1=vF;599~jd3>290:wE::8:\7fme0g=83;pD9;7;|lb1g<728qC8864}oc6g?6=9rB?955rn`7g>5<6sA>>46saa4g94?7|@=?37p`n5g83>4}O<<20qco90;295~N3=11vbl8>:182\7fM2202wem;<50;3xL13?3tdj:>4?:0yK00><ugk=87>51zJ71==zfh<>6=4>{I66<>{ii?<1<7?tH57;?xhf>>0;6<uG44:8ykg103:1=vF;599~jd0>290:wE::8:\7fme3g=83;pD9;7;|lb2g<728qC8864}oc5g?6=9rB?955rn`4g>5<6sA>>46saa7g94?7|@=?37p`n6g83>4}O<<20qco80;295~N3=11vbl9>:182\7fM2202wem:<50;3xL13?3tdj;>4?:0yK00><ugk<87>51zJ71==zfh=>6=4>{I66<>{ii><1<7?tH57;?xhf?>0;6<uG44:8ykg003:1=vF;599~jd1>290:wE::8:\7fme2g=83;pD9;7;|lb3g<728qC8864}oc4g?6=9rB?955rn`5g>5<6sA>>46saa6g94?7|@=?37p`n7g83>4}O<<20qco70;295~N3=11vbl6>:182\7fM2202wem5<50;3xL13?3tdj4>4?:0yK00><ugk387>51zJ71==zfh2>6=4>{I66<>{ii1<1<7?tH57;?xhf0>0;6<uG44:8ykg?03:1=vF;599~jd>>290:wE::8:\7fme=g=83;pD9;7;|lb<g<728qC8864}oc;g?6=9rB?955rn`:g>5<6sA>>46saa9g94?7|@=?37p`n8g83>4}O<<20qco60;295~N3=11vbl7>:182\7fM2202wem4<50;3xL13?3tdj5>4?:0yK00><ugk287>51zJ71==zfh3>6=4>{I66<>{ii0<1<7?tH57;?xhf1>0;6<uG44:8ykg>03:1=vF;599~jd?>290:wE::8:\7fme<g=83;pD9;7;|lb=g<728qC8864}oc:g?6=9rB?955rn`;g>5<6sA>>46saa8g94?7|@=?37p`n9g83>4}O<<20qcon0;295~N3=11vblo>:182\7fM2202weml<50;3xL13?3tdjm>4?:0yK00><ugkj87>51zJ71==zfhk>6=4>{I66<>{iih<1<7?tH57;?xhfi>0;6<uG44:8ykgf03:1=vF;599~jdg>290:wE::8:\7fmedg=83;pD9;7;|lbeg<728qC8864}ocbg?6=9rB?955rn`cg>5<6sA>>46saa`g94?7|@=?37p`nag83>4}O<<20qcom0;295~N3=11vbll>:182\7fM2202wemo<50;3xL13?3tdjn>4?:0yK00><ugki87>51zJ71==zfhh>6=4>{I66<>{iik<1<7?tH57;?xhfj>0;6<uG44:8ykge03:1=vF;599~jdd>290:wE::8:\7fmegg=83;pD9;7;|lbfg<728qC8864}ocag?6=9rB?955rn``g>5<6sA>>46saacg94?7|@=?37p`nbg83>4}O<<20qcol0;295~N3=11vblm>:182\7fM2202wemn<50;3xL13?3tdjo>4?:0yK00><ugkh87>51zJ71==zfhi>6=4>{I66<>{iij<1<7?tH57;?xhfk>0;6<uG44:8ykgd03:1=vF;599~jde>290:wE::8:\7fmefg=83;pD9;7;|lbgg<728qC8864}oc`g?6=9rB?955rn`ag>5<6sA>>46saabg94?7|@=?37p`ncg83>4}O<<20qcok0;295~N3=11vblj>:182\7fM2202wemi<50;3xL13?3twvqMNL{bdf>f41mjli?pNOBz2~DEV|uIJ
\ No newline at end of file
+$4g6\7f4g<,[o}e~g`n;"2*413&;$>"9 > %17?*nhel%fmyz cnpfc`h(|dz$Sni fhdl[}jipV?:>u=9_3aoo+h`g81;56>?0123456382:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789>0<=6?4:2;452<8J:?=6?<;0,35<=683E^X][[:ecweZeh}g~757>11b924?IR\Y__6\7fjPd`vb[firf}626=0>c:33>JSSX\^1{\7fQkauc\gjsi|531<3:415235>433;:;<?5=800877<NFY__6IGN<2394;753:81EC^ZT;FJF956294:?6==:NWWTPR=LFK7?<4?>01877<H]]Z^X7J@B=12>586:29=6D@_UU8gmk:4=3:5=95<6;MVPUSS2me~x1=::1<g?6u589:mk9;9-438047<<3CE\XZ5DHRB86<768;087GAPTV9@LVE4:0;2<<44;MVPUSS2ME[M1=50?31?1<H]]Z^X7J@PC>0>5833<>>9<594:43G54<>;80:4:468;50>0>I880:N:46BA@6>0B:2=M>66?4::3454<0;;0595601;1?<0330<=5<<49;KMTPR=IMNYM1650?31?<<NFY__6LJKRC>;>586m231EC^ZT;rqkbYbey~rSyf}erj?<?69:<126D@_UU8svjaXmdz\7fuRzgrdqk[dutm{~747>1249:>LHW]]0{~biPelrw}ZrozlycSckhaug?<?699m126D@_UU8svjaXn|fgSyf}erj?<?69:=126D@_UU8svjaXn|fgSyf}erj\evubz}636=0=4:;9MKVR\3zycjQiumn\pmtb{aUeijo{e=:94;2<I98386O=A@:8EABUI5:546OKDSC?5;><IMNYM1<18:CG@WG;;720MIJ]A=6=<>GCL[K79364AEFQE90902KOH_O37?c8EABUI521<364AEFQE9>902KOH_L30?:8EABUJ5;546OKDS@?6;><IMNYN1=18:CG@WD;<720MIJ]B=7=<>GCL[H7:364AEFQF919i2KOH_L38;2=<>GCL[H74374AR[MGZTBO=1I?5>;;CCBE6=E];20NX]PIODL5>E53J<?7N8LC59@E=G53JO:>6MGEBI\HLEBFZOTXT^J2:AJ0>EKCH>0OAEM3:AOV<=DGDGBXYKK159@KWCXOLDN^LZFOO]JJCI03JXNMYKK1:F1?AO13MCJ0=08;EKB8469?2NBM1?>>69GMD:6:7=0HDO312<4?AOF48>5;6JFA=36:2=CAH6::394DHC?52803MCJ0<617:FJE97>6?1OEL2>>69GMD:587=0HDO320<4?AOF4;85;6JFA=00:2=CAH698394DHC?60803MCJ0?817:FJE9406>1OEL2=8?58@LG;:04=7IGN<3<4?AOF4::556JFA=12>5803MCJ0>?16:FJE959>2NBM1:16:FJE939>2NBM1816:FJE919>2NBM1616:FJE9?9>2NBN1>17:FJF9776>1OEO2>1?58@LD;9;4<7IGM<01=3>BNJ5;?2:5KIC>21;1<L@H7=;08;EKA8419?2NBN1?7>69GMG:617<0HDL31?58@LD;:94<7IGM<33=3>BNJ5892:5KIC>17;1<L@H7>908;EKA8739?2NBN1<9>69GMG:5?7=0HDL329<4?AOE4;35:6JFB=0=3>BNJ59;245KIC>05?69?2NBN1=>>79GMG:46?1OEO2;>79GMG:26?1OEO29>79GMG:06?1OEO27>79GMG:>6>1OE]O30?58@LVF484<7IG_A=0==>BNXH686=08;EKSE959?2NB\O2?>69GMUD;97=0HD^M<3<:?AOWJ591<394DHRA86813MEJ0=08;EMB8469?2NDM1?>>69GKD:6:7=0HBO312<4?AIF48>5;6J@A=36:2=CGH6::394DNC?52803MEJ0<617:FLE97>6?1OCL2>>69GKD:587=0HBO320<4?AIF4;85;6J@A=00:2=CGH698394DNC?60803MEJ0?817:FLE9406>1OCL2=8?58@JG;:04=7IAN<3<4?AIF4::556J@A=12>5803MEJ0>?16:FLE959>2NDM1:16:FLE939>2NDM1816:FLE919>2NDM1616:FLE9?9>2NDN1>17:FLF9776>1OCO2>1?58@JD;9;4<7IAM<01=3>BHJ5;?2:5KOC>21;1<LFH7=;08;EMA8419?2NDN1?7>69GKG:617<0HBL31?58@JD;:94<7IAM<33=3>BHJ5892:5KOC>17;1<LFH7>908;EMA8739?2NDN1<9>69GKG:5?7=0HBL329<4?AIE4;35:6J@B=0=3>BHJ59;245KOC>05?69?2NDN1=>>79GKG:46?1OCO2;>79GKG:26?1OCO29>79GKG:06?1OCO27>79GKG:>6>1OC]O30?58@JVF484<7IA_A=0==>BHXH686=08;EMSE959?2ND\O2?>69GKUD;97=0HB^M<3<:?AIWJ591<394DNRA86863L>0I?M?3:GME6=BFK>0J=972:D;6>@C;2LOO95IDBG7?CBDX:1MH]:4FERF0>@A?O?0Jlb|e09D7>AIL81B>6G?2:K26>O5:2C846GAIUR\45><AGC_\R>>8:KMMQVX8;20ECG[P^20<>OIA]ZT<964IOKWTZ6202CEEY^P07:8MKOSXV:<56GAIUQWEQC03@DBXR>?7:KMMQY79>1BBDZP0358MKOSW99<7D@FT^273>OIA]U;9:5FNHV\431<AGC_S=98;HLJPZ6??2CEEYQ?969JJLRX8H=0ECG[_1@4?LHN\V:H;6GAIU]3@2=NF@^T<H94IOKW[5@03@DBXR??7:KMMQY69>1BBDZP1358MKOSW89<7D@FT^373>OIA]U:9:5FNHV\531<AGC_S<98;HLJPZ7??2CEEYQ>969JJLRX9H=0ECG[_0@4?LHN\V;H;6GAIU]2@2=NF@^T=H94IOKW[4@03@DBXR<?7:KMMQY59>1BBDZP2358MKOSW;9<7D@FT^073>OIA]U99:5FNHV\631<AGC_S?98;HLJPZ4??2CEEYQ=969JJLRX:H=0ECG[_3@4?LHN\V8H;6GAIU]1@2=NF@^T>H94IOKW[7@03@DBXR=?7:KMMQY49>1BBDZP3358MKOSW:9<7D@FT^173>OIA]U89:5FNHV\731<AGC_S>98;HLJPZ5??2CEEYQ<969JJLRX;H=0ECG[_2@4?LHN\V9H;6GAIU]0@2=NF@^T?H94IOKW[6@13@DBXRO9;HLJPZD43@D]?6G@B39OM7=KG?1GCLJJD69OKBODIE>0@XZ>4:NVP70<D\^9SI:4LTV02>JR\:UO:6BZT2]O0>JR\=?0A^I@N49NQ]E^k2Gjfb|Yesqjkke<E`dd~[k}shmm7>H79;1E=>5A1168J466<2D:<?=4N037?K76>=1E=<9;;O32<1=I98387C?=4:L2652<F88:86@>2368J444<2D:>9:4N0060>H6:?>0B<<84:L26=2<F882?6@>359M56633G;8=95A1207?K74;=1E=>:;;O3011=I9:<?7C?<759M56>33G;85>5A1568J427<2D:8<:4N0610>H6<:>0B<:;4:L2002<F8>=86@>4668J42?<2D:84=4N077?K728=1E=8?;;O3661=I9<9?7C?:859M50?43G;=86@>6168J406<2D::?:4N0400>H6>=>0B<8:4:L2232<F8<<?6@>759M52633G;<=95A1607?K70;=1E=::;;O3411=I9><?7C?8759M52>33G;<5>5A1918J4?53G887C<?3:L156=I:;90B?=<;O077>H5=:1E>;=4N357?K409:1E>5=4N3;0?K57;2D8=>5A3318J6543G9??6@<529M735<F:=87C=73:L0=7=I<:1E8==4N530?K36:2D=>6@82:L;6>H>;2D2:>5A9618J<?a3GHTNX]_IO]SVJVT?2DNXZA]K59MKKC63F80CF?4P59SEWRf3YCESO[\IEZa?UOIWK_XBLCJ3:RQA4=Vm2XJAO?9_R15[V5192Y:?6]FM^ALHIOTAFDTOEKLK79PKPTDM>1X^[OC_@58WWPFDVH?7^]]A59PWWD33]S[I><4U1-dvc(un&mht#mcky-N|jtXzmU{by|Pgb]{kw6789UYi~{ct011?P6(o{l%~k!hcy,`hn~(EqeyS\7fjPpovq[beXpfx;<=?PRdqvhq74:2_;#j|i.sd,cf~)keas#@v`r^pg[uhszVmhSua}0121[Wct}e~:??5Z0.eqb+ta'nis"nbdx.O{kwYulVzex\7fQhc^zlv567;VXn\7fxb{1208Q5)`zo$yj"ilx/aoo})JpfxT~iQ\7fnup\cfY\7fg{:;<9Q]erwop4553\:$k\7fh!rg-dg}(ddbr$Aua}_sf\tkruWniTtb|?017\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZtcWyd\7f~Ril_ymq4561W[oxyaz>339V4*aun'xm#jmw.bnh|*K\7fg{UyhR~ats]dgZ~hz9:;;R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXojUsc\7f>?01]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[rtXxg~ySjmPxnp3457XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^e`[}iu89:9S_k|umv277=R8&myj#|i/fa{*fjlp&Gsc\7fQxr^rmpwY`kVrd~=>?3^Pfwpjs9:80Y=!hrg,qb*adp'iggu!Bxnp\swYwf}xTknQwos2341YUmz\7fgx<==;T2,cw`)zo%lou lljz,I}iuW~xT|cz}_fa\|jt789?T^h}zlu306>S7'nxm"\7fh gbz-gim\7f'Drd~Ry}_qlwvZadWqey<=>9_Sgpqir6;;1^<"i}f/pe+be\7f&jf`t"Cwos]tvZvi|{UloRv`r1233ZTb{|f\7f=??4U1-dvc(un&mht#mcky-q`Zvi|{Uiec2?>338Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio>2:77<]9%l~k }f.e`|+ekcq%yhR~ats]amk:56;;0Y=!hrg,qb*adp'iggu!}d^rmpwYeag682??4U1-dvc(un&mht#mcky-q`Zvi|{Uiec2;>338Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio>6:77<]9%l~k }f.e`|+ekcq%yhR~ats]amk:16;;0Y=!hrg,qb*adp'iggu!}d^rmpwYeag6<2??4U1-dvc(un&mht#mcky-q`Zvi|{Uiec27>328Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio]365=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ7582_;#j|i.sd,cf~)keas#\7fjPpovq[goiW;8;7X> gsd-vc)`kq$h`fv re]sjqtXj`dT??>4U1-dvc(un&mht#mcky-q`Zvi|{UiecQ;219V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn^714>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[3473\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\flhX?;:0Y=!hrg,qb*adp'iggu!}d^rmpwYeagU3>;5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbRv`r123471<]9%l~k }f.e`|+ekcq%yhR~ats]amkY\7fg{:;<=?=6:W3+bta&{l$knv!cmi{+wbXxg~ySoga_ymq4566:>1^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnfVrd~=>?1005?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\|jt78989;6[?/fpe*w`(ojr%oaew/sf\tkruWkceSua}0121570<]9%l~k }f.e`|+ekcq%yhR~ats]amkY\7fg{:;<><8;T2,cw`)zo%lou lljz,vaYwf}xTnd`Pxnp34555:?1^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnfVrd~=>?4358Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio]{kw678=;9:6[?/fpe*w`(ojr%oaew/sf\tkruWkceSua}012662=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ~hz9:;9<<9;T2,cw`)zo%lou lljz,vaYwf}xTnd`Pxnp3450502_;#j|i.sd,cf~)keas#\7fjPpovq[goiWqey<=>91004?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\|jt789<9>o5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbRv`r1232Zdcl98=7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?01513>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[}iu89:<=?>4U1-dvc(un&mht#mcky-q`Zvi|{Ulo1>1219V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril<0<14>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa?6;473\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cf:46;:0Y=!hrg,qb*adp'iggu!}d^rmpwY`k5>5>=5Z0.eqb+ta'nis"nbdx.pg[uhszVmh080=0:W3+bta&{l$knv!cmi{+wbXxg~ySjm36?03?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb>4:76<]9%l~k }f.e`|+ekcq%yhR~ats]dg9>99o1^<"i}f/pe+be\7f&jf`t"|k_qlwvZadW9;m7X> gsd-vc)`kq$h`fv re]sjqtXojU:=k5Z0.eqb+ta'nis"nbdx.pg[uhszVmhS??i;T2,cw`)zo%lou lljz,vaYwf}xTknQ<1g9V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_53e?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]65c=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[37a3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfY09o1^<"i}f/pe+be\7f&jf`t"|k_qlwvZadW18=7X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh<1<12>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtbo5;5>;5Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef>1:70<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlm7?3<9;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd8185>2_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnk1;1279V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqab:16;<0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hi37?05?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`414996[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^211>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtboV;996[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^011>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtboV9996[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^611>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtboV?996[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^411>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtboV=996[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^:1=>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtboVn:0=0=9:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6484956[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2878512_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnkRj><2<1=>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtboVn:090=9:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb64<4956[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2838512_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnkRj><6<1=>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\evtboVn:050=8:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6W9837X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_e3\57><]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<Q=299V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqabYc9V9946[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2[14?3\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfYf{{olSi?P53:8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aXl8U=>55Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef]g5Z1502_;#j|i.sd,cf~)keas#\7fjPpovq[beXizxnkRj>_906?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]{kw67898>7X> gsd-vc)`kq$h`fv re]sjqtXojUsc\7f>?0006?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]{kw678;8>7X> gsd-vc)`kq$h`fv re]sjqtXojUsc\7f>?0206?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]{kw678=8>7X> gsd-vc)`kq$h`fv re]sjqtXojUsc\7f>?0406?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]{kw678?8>7X> gsd-vc)`kq$h`fv re]sjqtXojUsc\7f>?0602?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl?4;463\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flh;978:7X> gsd-vc)`kq$h`fv ws]sjqtXj`d7>3<>;T2,cw`)zo%lou lljz,swYwf}xTnd`33?02?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl?0;463\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flh;=78:7X> gsd-vc)`kq$h`fv ws]sjqtXj`d7:3<>;T2,cw`)zo%lou lljz,swYwf}xTnd`37?02?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl?<;473\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flhX8;:0Y=!hrg,qb*adp'iggu!xr^rmpwYeagU:>=5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbR<=0:W3+bta&{l$knv!cmi{+rtXxg~ySoga_203?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl\076<]9%l~k }f.e`|+ekcq%|~R~ats]amkY2:91^<"i}f/pe+be\7f&jf`t"y}_qlwvZdnfV<9<6[?/fpe*w`(ojr%oaew/vp\tkruWkceS:<?;T2,cw`)zo%lou lljz,swYwf}xTnd`P8348Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio]{kw67898<7X> gsd-vc)`kq$h`fv ws]sjqtXj`dTtb|?012263=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ~hz9:;=?94U1-dvc(un&mht#mcky-tvZvi|{UiecQwos234475>2_;#j|i.sd,cf~)keas#z|Ppovq[goiWqey<=>=269V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn^zlv567:88=7X> gsd-vc)`kq$h`fv ws]sjqtXj`dTtb|?01113>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[}iu89:8>?84U1-dvc(un&mht#mcky-tvZvi|{UiecQwos2341403\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flhXpfx;<=:>279V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn^zlv567=;=0Y=!hrg,qb*adp'iggu!xr^rmpwYeagUsc\7f>?04312>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[}iu89:=>55Z0.eqb+ta'nis"nbdx.uq[uhszVhbbRv`r1232475?2_;#j|i.sd,cf~)keas#z|Ppovq[goiWqey<=>923`8Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio]{kw678?Uihi>=6:W3+bta&{l$knv!cmi{+rtXxg~ySoga_ymq4560:>1^<"i}f/pe+be\7f&jf`t"y}_qlwvZdnfVrd~=>?7003?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb>3:76<]9%l~k }f.e`|+ekcq%|~R~ats]dg979:91^<"i}f/pe+be\7f&jf`t"y}_qlwvZad4;49<6[?/fpe*w`(ojr%oaew/vp\tkruWni7?3<?;T2,cw`)zo%lou lljz,swYwf}xTkn2;>328Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc=7=65=R8&myj#|i/fa{*fjlp&}yS}`{r^e`838582_;#j|i.sd,cf~)keas#z|Ppovq[be;?78;7X> gsd-vc)`kq$h`fv ws]sjqtXoj632<h4U1-dvc(un&mht#mcky-tvZvi|{UloR>>f:W3+bta&{l$knv!cmi{+rtXxg~ySjmP10d8Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc^02b>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\74`<]9%l~k }f.e`|+ekcq%|~R~ats]dgZ26n2_;#j|i.sd,cf~)keas#z|Ppovq[beX=8l0Y=!hrg,qb*adp'iggu!xr^rmpwY`kV<:j6[?/fpe*w`(ojr%oaew/vp\tkruWniT;<h4U1-dvc(un&mht#mcky-tvZvi|{UloR6=6:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfc969:?1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyij2>>348Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc^cpv`a;:78=7X> gsd-vc)`kq$h`fv ws]sjqtXojUj\7f\7fkh<2<12>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtbo5>5>;5Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef>6:70<]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlm7:3<9;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd8285>2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnk161249V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabY7:<1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQ>249V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabY5:<1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQ<249V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabY3:<1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQ:249V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabY1:<1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQ8249V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabY?:01^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1=2=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=1?1289V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc9585>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5959:01^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1=6=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=1;1289V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc95<5>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5919:01^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1=:=6==R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=R>=8:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb6W8837X> gsd-vc)`kq$h`fv ws]sjqtXojUj\7f\7fkh_e3\67><]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlmTh<Q<299V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc9V>946[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2[04?3\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfYf{{olSi?P63:8Q5)`zo$yj"ilx/aoo})pzVzex\7fQhc^cpv`aXl8U<>55Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5Z>5=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<=>=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp34575=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<=<=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp34555=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<=:=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp34535=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<=8=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp3451402_;#j|i.sd,ci6)zm%l~< hrea1*wbd'DkohR|k_ea\mZgclz\7fi<=>?111;?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IdbcW{nThnQf_`fgwpd789::>>64U1-dvc(un&mg<#|k/fp2*btck;$yhn!Baef\vaYckVcTmij|uc234573;>1^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&GjhiQ}d^f`[lYflmy~n=>?0314?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IdbcW{nThnQf_`fgwpd789:??:5Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"Cnde]q`ZbdW`Ujhi}zb12343503\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(EhnoS\7fjPdb]j[dbc{|h;<=>73b9V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.Ob`aYulVnhSdQndeqvf5678Vir0<0<8:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[f\7f;87937X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$A~{m_ekebZquW{nTx`~Pcx>2:6><]9%l~k }f.eo4+tc'nx:"j|kc3,q`f)J{|hThdhi_vp\vaYseyUhu1<1399V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.OpqgYcaolT{\7fQ}d^vntZe~4:4846[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc\7f_b{?0;5?3\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(Ez\7fiSigif^uq[wbX|dzTot2:>2:8Q5)`zo$yj"ic0/pg+bt6&nxoo? }db-NwpdXl`lmSz|Pre]wiuYdq5<5?55Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"C|uc]gmc`X\7f{UyhRzbp^az828412_;#j|i.sd,ci6)zm%l~< hrea1*wbd'Dy~nRjffg]tvZtcW}g{Sa{{<1<0=>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWe\7f\7f0<0<9:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[iss4;4856[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc\7f_mww868412_;#j|i.sd,ci6)zm%l~< hrea1*wbd'Dy~nRjffg]tvZtcW}g{Sa{{<5<0=>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWe\7f\7f080<9:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[iss4?4856[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc\7f_mww828412_;#j|i.sd,ci6)zm%l~< hrea1*wbd'Dy~nRjffg]tvZtcW}g{Sa{{<9<0=>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWqey0=0<9:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[}iu484856[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc\7f_ymq878412_;#j|i.sd,ci6)zm%l~< hrea1*wbd'Dy~nRjffg]tvZtcW}g{Sua}<2<0=>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWqey090<9:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[}iu4<4856[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#@}zb^fjbcYpzVxoSyc\7f_ymq838412_;#j|i.sd,ci6)zm%l~< hrea1*wbd'Dy~nRjffg]tvZtcW}g{Sua}<6<0=>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWqey050<0:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/ekebZquW{nTx`~30?0;?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcT<?64U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lY6:11^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^01<>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+wbXljUbS><7;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoX<;20Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]66==R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeR8=8:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/sf\`fYnW>837X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\<7><]9%l~k }f.eo4+tc'nx:"j|kc3,q`f)ulVnhSdQ6309V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaVg~t=>?2=2=77=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx12369699:;0Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6:2><4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?2>>012?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?6;553\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;:7;8=6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#\7fjPdb]j[hs\7f89:90>0<2:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/sf\`fYnWd\7fs<=>=<2<274=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx1236929;;1^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^ov|567:5>5=>:4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?2;>03274=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx1236939;;1^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^ov|567:5?5=>?4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?29>278Q5)`zo$yj"ic0/pg+bt6&nxoo? }db-q`ZbdW`Ufyu>?03>5:ZUP9:;0Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6<2>=4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?28>0303>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+wbXljUbS`{w012182869VY\<><4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?28>312?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?<;543\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;079:??5Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"|k_ea\mZkrp9:;>1614248Q5)`zo$yj"ic0/pg+bt6&nxoo? }db-q`ZbdW`Ufyu>?03>;:1YT_99=7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~7898743:PSV301>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+wbXljUbS`{w01218=8X[^:8=6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#\7fjPdb]j[hs\7f89:9040<2:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/sf\`fYnWd\7fs<=>=<8<26d=R8&myj#|i/fn3*wb(o{;%~kyit.PBIZTCWLDTJZH[13;8Q5)`zo$yj"ic0/pg+bt6&{l|jy!]AL]QABIR\VOE=?l4U1-dvc(un&mg<#|k/fp2*w`pn}%YM@QYAMKG[CQA\8;8?6[?/fpe*w`(oe:%~i!hr0,qbr`s'j\7fy~Rhxfu]ppdrbWOYFSKHk1248Q5)`zo$yj"ic0/pg+bt6&{l|jy!lusp\br`sWz~jxhQISL]EBa7*Ag937X> gsd-vc)`d9$yh"i}1/pescr(k|xySkyit^qweqcXNZGTJKj>-Hl2565<]9%l~k }f.eo4+tc'nx:"\7fhxfu-`qwtXn~l\7fS~zntd]EWHYANm88:6[?/fpe*w`(oe:%~i!hr0,qbr`s'j\7fy~Rhxfu]ppdrbWOYFSKHk2,Km7==R8&myj#|i/fn3*wb(o{;%~kyit.avvwYa\7fo~T\7fyo{e^DPIZ@Al;'Bb<?=8:W3+bta&{l$ka>!re-dv4(un~l\7f#hc\7ftx]escrXnk8<7X> gsd-vc)`d9$yh"i}1/pescr(mdz\7fuRhxfu]j6`=R8&myj#|i/fn3*wb(o{;%~kyit.gntq\7fXn~l\7fSdQ`r12347`<]9%l~k }f.eo4+tc'nx:"\7fhxfu-fiur~Wo}mxRgPos234575=2_;#j|i.sd,ci6)zm%l~< }fvdw+pubzV|j`dj=9:W3+bta&{l$ka>!re-dvdu)zz~x#n> c`pq}kcs494956[?/fpe*w`(oe:%~i!hr`q-vvrt'j:$ol|}yogw848512_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(khxyuck{<3<1=>S7'nxm"\7fh gm2-va)`zhy%~~z|/b2,gdtuqgo\7f0>0=f:W3+bta&{l$ka>!re-dvdu)zz~x#n> glw{*bk\8T$la< b13d8Q5)`zo$yj"ic0/pg+btf{'xxx~!l0.enq}(`eR;V"jc|.lq1b>S7'nxm"\7fh gm2-va)`zhy%~~z|/b2,chs\7f&ngP>P hmr,nw7`<]9%l~k }f.eo4+tc'nxj\7f#||tr-`4*aj}q$laV=R.fop*hu5n2_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(od\7fs"jcT4\,div(j{;90Y=!hrg,qb*ak8'xo#j|ns/pppv)d8&|:0=0=3:W3+bta&{l$ka>!re-dvdu)zz~x#n> v0>2:75<]9%l~k }f.eo4+tc'nxj\7f#||tr-`4*p64;49?6[?/fpe*w`(oe:%~i!hr`q-vvrt'j:$z<2<>318Q5)`zo$yj"ic0/pg+btf{'xxx~!l0.t28185j2_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(~8U;Sl`k012357d<]9%l~k }f.eo4+tc'nxj\7f#||tr-`4*p6W8Ujbi>?0131f>S7'nxm"\7fh gm2-va)`zhy%~~z|/b2,r4Y5Whdo<=>?13`8Q5)`zo$yj"ic0/pg+btf{'xxx~!l0.t2[6Yffm:;<=?=b:W3+bta&{l$ka>!re-dvdu)zz~x#n> v0]7[kis89:;=?74U1-dvc(un&mg<#|k/fpbw+tt|z%h="mnrs{maq:76;30Y=!hrg,qb*ak8'xo#j|ns/pppv)d9&ij~\7fwaeu>2:7?<]9%l~k }f.eo4+tc'nxj\7f#||tr-`5*efz{seiy2=>3;8Q5)`zo$yj"ic0/pg+btf{'xxx~!l1.abvw\7fim}682?h4U1-dvc(un&mg<#|k/fpbw+tt|z%h="ibuy,di^6Z&ng:"`?=f:W3+bta&{l$ka>!re-dvdu)zz~x#n? glw{*bk\9T$la~ bs3d8Q5)`zo$yj"ic0/pg+btf{'xxx~!l1.enq}(`eR8V"jc|.lq1b>S7'nxm"\7fh gm2-va)`zhy%~~z|/b3,chs\7f&ngP?P hmr,nw7`<]9%l~k }f.eo4+tc'nxj\7f#||tr-`5*aj}q$laV:R.fop*hu5;2_;#j|i.sd,ci6)zm%l~l}!rrvp+f7(~86;2?=4U1-dvc(un&mg<#|k/fpbw+tt|z%h="x><0<17>S7'nxm"\7fh gm2-va)`zhy%~~z|/b3,r4:56;90Y=!hrg,qb*ak8'xo#j|ns/pppv)d9&|:0>0=3:W3+bta&{l$ka>!re-dvdu)zz~x#n? v0>7:7d<]9%l~k }f.eo4+tc'nxj\7f#||tr-`5*p6W9Ujbi>?0131f>S7'nxm"\7fh gm2-va)`zhy%~~z|/b3,r4Y6Whdo<=>?13`8Q5)`zo$yj"ic0/pg+btf{'xxx~!l1.t2[7Yffm:;<=?=b:W3+bta&{l$ka>!re-dvdu)zz~x#n? v0]0[dhc89:;=?l4U1-dvc(un&mg<#|k/fpbw+tt|z%h="x>_5]mkq6789;9<6[?/fpe*w`(oe:%~i!hr`q-vvrt'jef|=<?;T2,cw`)zo%l`= }d.eqev(u{}y$obc\7f13;8Q5)`zo$yj"ic0/pg+btf{'xxx~!}al]fiur~WohTe>>4U1-dvc(un&mg<#|k/fpbw+tt|z%ym`Qjmqvz[cdXaVey<=>?309V4*aun'xm#jb?.sf,cwgt&{y\7f\7f"|nm^gntq\7fXnkUbSb|?01225c=R8&myj#|i/fn3*wb(zhgTzlbfd^dtbq443\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7f>95Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu310>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|;8?7X> gsd-vc)`d9$yh"|\7fnup,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\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7f;?:4U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov;6<=R8&myj#|i/fn3*wb(zyd\7f~"Clotlw[firf}Uhu1>12b9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5:5S\7fz=9:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZe~4849o6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az848Xz}827X> gsd-vc)`d9$yh"|\7fnup,Ifirf}Uhcx`{_b{?6;4d3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSnw32?]qp7?<]9%l~k }f.eo4+tc'{zex\7f!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;"\7fj rqlwv*Kdg|d\7fSnaznu]`}929W{~956[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az8085k2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fexRmv<4<\vq4>3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSnw36?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)Jkf\7fexRm`uov\g|:06Vx\7f>l5Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]{kw:76;k0Y=!hrg,qb*ak8'xo#\7f~ats-Ngjsi|VidyczPxnp?5;4f3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7fSua}<3<1e>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|Vrd~1=12`9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqY\7fg{6?2?o4U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov\|jt;=78j7X> gsd-vc)`d9$yh"|\7fnup,Ifirf}Uhcx`{_ymq8385i2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkf\7fexRv`r=5=6d=R8&myj#|i/fn3*wb(zyd\7f~"Clotlw[firf}Usc\7f27>3f8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXpfx743Q}t0d8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<1<2b>S7'nxm"\7fh gm2-va)uxg~y#naznu>2:4`<]9%l~k }f.eo4+tc'{zex\7f!lotlw8786n2_;#j|i.sd,ci6)zm%y|cz}/bmvjq:468l0Y=!hrg,qb*ak8'xo#\7f~ats-`kphs4=4:j6[?/fpe*w`(oe:%~i!}povq+firf}6>2<h4U1-dvc(un&mg<#|k/srmpw)dg|d\7f0;0>f:W3+bta&{l$ka>!re-qtkru'je~by28>0d8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<9<2a>S7'nxm"\7fh gm2-va)uxg~y#naznu]35`=R8&myj#|i/fn3*wb(zyd\7f~"m`uov\54c<]9%l~k }f.eo4+tc'{zex\7f!lotlw[77b3\:$k\7fh!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#\7f~ats-`kphsW?;n7X> gsd-vc)`d9$yh"|\7fnup,gjsi|V=:i6[?/fpe*w`(oe:%~i!}povq+firf}U3>?5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~Th<2?>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?5;453\:$k\7fh!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\7f!lotlw[a7;=7897X> gsd-vc)`d9$yh"|\7fnup,gjsi|Vn:0;0=2:W3+bta&{l$ka>!re-qtkru'je~byQk1=5=67=R8&myj#|i/fn3*wb(zyd\7f~"m`uov\`4:?6;;0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T<??4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?P1338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\677<]9%l~k }f.eo4+tc'{zex\7f!lotlw[a7X;;;0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T8??4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?P5338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\277<]9%l~k }f.eo4+tc'{zex\7f!lotlw[a7X?;;0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T4?74U1-dvc(un&mg<#y}/fubw+qt|z%h="mnrs{maq:76;30Y=!hrg,qb*ak8'}y#jyns/uppv)d9&ij~\7fwaeu>2:7?<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`5*efz{seiy2=>3;8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.abvw\7fim}682?h4U1-dvc(un&mg<#y}/fubw+qt|z%h="ibuy,di^6Z&ng:"`?=f:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n? glw{*bk\9T$la~ bs3d8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.enq}(`eR8V"jc|.lq1b>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b3,chs\7f&ngP?P hmr,nw7`<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`5*aj}q$laV:R.fop*hu5;2_;#j|i.sd,ci6)\7f{%l{l}!wrvp+f7(~86;2?=4U1-dvc(un&mg<#y}/fubw+qt|z%h="x><0<17>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b3,r4:56;90Y=!hrg,qb*ak8'}y#jyns/uppv)d9&|:0>0=3:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n? v0>7:7d<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`5*p6W9Ujbi>?0131f>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b3,r4Y6Whdo<=>?13`8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.t2[7Yffm:;<=?=b:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n? v0]0[dhc89:;=?l4U1-dvc(un&mg<#y}/fubw+qt|z%h="x>_5]mkq6789;956[?/fpe*w`(oe:%{\7f!hw`q-svrt'j8$ol|}yogw858512_;#j|i.sd,ci6)\7f{%l{l}!wrvp+f4(khxyuck{<0<1=>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b0,gdtuqgo\7f0?0=9:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n< c`pq}kcs4:49j6[?/fpe*w`(oe:%{\7f!hw`q-svrt'j8$k`{w.foX4X(`e8$f=?h4U1-dvc(un&mg<#y}/fubw+qt|z%h>"ibuy,di^7Z&ngx"`}=f:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n< glw{*bk\:T$la~ bs3d8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.enq}(`eR9V"jc|.lq1b>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b0,chs\7f&ngP8P hmr,nw75<]9%l~k }f.eo4+qu'n}j\7f#y|tr-`6*p64949?6[?/fpe*w`(oe:%{\7f!hw`q-svrt'j8$z<2>>318Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.t28785;2_;#j|i.sd,ci6)\7f{%l{l}!wrvp+f4(~8682?=4U1-dvc(un&mg<#y}/fubw+qt|z%h>"x><5<1f>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/b0,r4Y7Whdo<=>?13`8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.t2[4Yffm:;<=?=b:W3+bta&{l$ka>!ws-dsdu)\7fz~x#n< v0]1[dhc89:;=?l4U1-dvc(un&mg<#y}/fubw+qt|z%h>"x>_2]bja6789;9n6[?/fpe*w`(oe:%{\7f!hw`q-svrt'j8$z<Q;_omw45679;:0Y=!hrg,qb*ak8'}y#jyns/uppv)dgdz:>=5Z0.eqb+ta'nf;"z| gvcp*rus{&ida}<=8:W3+bta&{l$ka>!ws-dsdu)\7fz~x#\7fob_gwohZ`eW`8>7X> gsd-vc)`d9$|~"ixar,twqu(zhgTjxbc_h0`?P6(o{l%~k!hl1,tv*apiz$|\7fy} r`o\bpjkW`Ud~=>?03f8Q5)`zo$yj"ic0/uq+bqf{'}xx~!}al]eqijXaVey<=>?12a8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=??3b9V4*aun'xm#jb?.vp,crbd9'}oohv{/Lcg`ZquWmk\7fmRm`uov\mZgcl9:;<<<<c:W3+bta&{l$ka>!ws-dsae6&~nhiuz M`fg[rtXlh~jSnaznu]j[dbc89:;=9=m;T2,cw`)zo%l`= xr.et`f7)\7fminty!Baef\swYci}kTob{at^k\eab789:9?o5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@okd^uq[agsiVidyczPi^cg`5678=9i7X> gsd-vc)`d9$|~"ixdb3-saebp}%FmijPws]geqgXkf\7fexRgPaef34561;k1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'DkohRy}_ecweZeh}g~TeRokd1234=273\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)JimnT{\7fQkauc\gjsi|VcTmij?012\g|:66=:0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GjhiQxr^fbpdYdg|d\7fSdQnde2345Ydq5258?5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@okd^uq[agsiVidyczPi^cg`5678Vir050>15;8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=Qwos>2:47XAG\T<9=4U1-dvc(un&mg<#y}/fugg4(pljosx"Cnde]tvZbf|hUhcx`{_h]b`a6789Usc\7f2=>0377>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,IdbcW~xThlzn_bmvjqYnWhno<=>?_ymq86869=>0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GjhiQxr^fbpdYdg|d\7fSdQnde2345Y\7fg{6?2<?>429V4*aun'xm#jb?.vp,crbd9'}oohv{/Lcg`ZquWmk\7fmRm`uov\mZgcl9:;<Rv`r=6=57243\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)JimnT{\7fQkauc\gjsi|VcTmij?012\|jt;=7;:8>5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@okd^uq[agsiVidyczPi^cg`5678Vrd~1811060?P6(o{l%~k!hl1,tv*aplj;%{imjxu-NeabX\7f{UomyoPcnwmpZoXimn;<=>Pxnp?3;76<11^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'DkohRy}_ecweZeh}g~TeRokd1234Z~hz5=5=<?PSV373>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,IdbcW~xThlzn_bmvjqYnWhno<=>?_ymq82869VY\<9=4U1-dvc(un&mg<#y}/fugg4(pljosx"Cnde]tvZbf|hUhcx`{_h]b`a6789Usc\7f27>0303>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,IvseWmcmjRy}_sf\phvXkp6;2>94U1-dvc(un&mg<#y}/fugg4(pljosx"C|uc]gmc`X\7f{UyhRzbp^az8484?2_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(Ez\7fiSigif^uq[wbX|dzTot2=>258Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.OpqgYcaolT{\7fQ}d^vntZe~4:48;6[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~$A~{m_ekebZquW{nTx`~Pcx>7:61<]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVir080<7:W3+bta&{l$ka>!ws-dsae6&~nhiuz Mrwa[aoanV}yS\7fjPtlr\g|:16:=0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GxyoQkigd\swYulV~f|Rmv<6<0<>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,IvseWmcmjRy}_sf\phvXd|~7<3=7;T2,cw`)zo%l`= xr.et`f7)\7fminty!Bst`\`l`aW~xT~iQ{mq]oqq:66:20Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GxyoQkigd\swYulV~f|Rbzt=0=7==R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HurjVnbjkQxr^pg[qkwWe\7f\7f0>0<8:W3+bta&{l$ka>!ws-dsae6&~nhiuz Mrwa[aoanV}yS\7fjPtlr\hpr;<7937X> gsd-vc)`d9$|~"ixdb3-saebp}%F\7fxlPdhde[rtXzmU\7fa}Qcuu>6:6><]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVf~x181399V4*aun'xm#jb?.vp,crbd9'}oohv{/LqvfZbnnoU|~R|k_uos[iss4>4846[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~$A~{m_ekebZquW{nTx`~Pltv?<;5?3\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)J{|hThdhi_vp\vaYseyUsc\7f2?>2:8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.OpqgYcaolT{\7fQ}d^vntZ~hz5;5?55Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@}zb^fjbcYpzVxoSyc\7f_ymq878402_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(Ez\7fiSigif^uq[wbX|dzTtb|33?1;?P6(o{l%~k!hl1,tv*aplj;%{imjxu-NwpdXl`lmSz|Pre]wiuY\7fg{6?2>64U1-dvc(un&mg<#y}/fugg4(pljosx"C|uc]gmc`X\7f{UyhRzbp^zlv939;11^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'Dy~nRjffg]tvZtcW}g{Sua}<7<0<>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,IvseWmcmjRy}_sf\phvXpfx7;3=7;T2,cw`)zo%l`= xr.et`f7)\7fminty!Bst`\`l`aW~xT~iQ{mq]{kw:?6;l0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&nbjkQxr^pg[qkw4949j6[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~${\7fQkauc\gjsi|VcT<?h4U1-dvc(un&mg<#y}/fugg4(pljosx"y}_ecweZeh}g~TeR?=f:W3+bta&{l$ka>!ws-dsae6&~nhiuz ws]geqgXkf\7fexRgP23d8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.uq[agsiVidyczPi^11b>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,swYci}kTob{at^k\07`<]9%l~k }f.eo4+qu'n}oo< xdbg{p*quWmk\7fmRm`uov\mZ35n2_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(\7f{UomyoPcnwmpZoX>;l0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&}ySio{a^alqkrXaV=9j6[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~${\7fQkauc\gjsi|VcT4?h4U1-dvc(un&mg<#y}/fugg4(pljosx"y}_ecweZeh}g~TeR7<8:W3+bta&{l$ka>!ws-dsae6&~nhiuz ws]geqgXkf\7fexRgPaef3456;97937X> gsd-vc)`d9$|~"ixdb3-saebp}%|~Rjnt`]`kphsW`Ujhi>?01>1:6><]9%l~k }f.eo4+qu'n}oo< xdbg{p*quWmk\7fmRm`uov\mZgcl9:;<1=1399V4*aun'xm#jb?.vp,crbd9'}oohv{/vp\`drfWje~byQf_`fg45674=4846[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~${\7fQkauc\gjsi|VcTmij?012?1;5?3\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)pzVnjxlQlotlw[lYflm:;<=29>2:8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.uq[agsiVidyczPi^cg`56785=5?55Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#z|Pd`vb[firf}UbSljk01238=86l2_;#j|i.sd,ci6)\7f{%ym`Qxr^gm[l75;2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fex?:4U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov261=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}8986[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at207?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphs<;>0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|Vidycz:259V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjq05<2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fex:<;;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw<7?<]9%l~k }f.eo4+qu'~zex\7f!BcnwmpZeh}g~Tot2?>3a8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp6;2R|{289V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYdq5;5>n5Z0.eqb+ta'nf;"z| wqlwv*Kdg|d\7fSnaznu]`}979W{~956[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at^az8785k2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fexRmv<3<\vq4>3\:$k\7fh!rg-dh5(pz&}{by| MbmvjqYdg|d\7fSnw33?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)Jkf\7fexRm`uov\g|:36Vx\7f>45Z0.eqb+ta'nf;"z| wqlwv*Kdg|d\7fSnaznu]`}939:j1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=7=[wr512_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fexRmv<7<1g>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|Vir0;0Pru0:?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7;3<l;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f\7f;?7Uyx?o4U1-dvc(un&mg<#y}/vrmpw)Jkf\7fexRm`uov\|jt;878j7X> gsd-vc)`d9$|~"y\7fnup,Ifirf}Uhcx`{_ymq8485i2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fexRv`r=0=6d=R8&myj#|i/fn3*rt(\7fyd\7f~"Clotlw[firf}Usc\7f2<>3c8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx783<n;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[}iu4<49m6[?/fpe*w`(oe:%{\7f!xpovq+Heh}g~Tob{at^zlv909:h1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQwos>4:7g<]9%l~k }f.eo4+qu'~zex\7f!BcnwmpZeh}g~Ttb|38?0g?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWqey050Pru3e?P6(o{l%~k!hl1,tv*qwf}x$ob{at=2=5c=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov?5;7a3\:$k\7fh!rg-dh5(pz&}{by| cnwmp9499o1^<"i}f/pe+bj7&~x${}`{r.alqkr;;7;m7X> gsd-vc)`d9$|~"y\7fnup,gjsi|5>5=k5Z0.eqb+ta'nf;"z| wqlwv*eh}g~793?i;T2,cw`)zo%l`= xr.usjqt(kf\7fex1811g9V4*aun'xm#jb?.vp,suhsz&idycz37?3e?P6(o{l%~k!hl1,tv*qwf}x$ob{at=:=5`=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\44c<]9%l~k }f.eo4+qu'~zex\7f!lotlw[47b3\:$k\7fh!rg-dh5(pz&}{by| cnwmpZ46m2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqY49l1^<"i}f/pe+bj7&~x${}`{r.alqkrX<8o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW<;n7X> gsd-vc)`d9$|~"y\7fnup,gjsi|V<:i6[?/fpe*w`(oe:%{\7f!xpovq+firf}U<=h5Z0.eqb+ta'nf;"z| wqlwv*eh}g~T4?<4U1-dvc(un&mg<#y}/vrmpw)dg|d\7fSi?30?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f28485:2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc9585>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<2<>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?0;453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb64<49>6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo=181239V4*aun'xm#jb?.vp,suhsz&idyczPd0>4:74<]9%l~k }f.eo4+qu'~zex\7f!lotlw[a7;078:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:S=<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj>_002?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[7463\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb6W:8:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:S9<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj>_402?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[3463\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb6W>8:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:S5<=;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj=<1<16>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g6979:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl;692?<4U1-dvc(un&mg<#y}/vrmpw)dg|d\7fSi<33?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f18185:2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:5?5>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th?29>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e0?3;453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb54149=6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>R>=1:W3+bta&{l$ka>!ws-ttkru'je~byQk2^315>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g6Z4592_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:V99=6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>R:=1:W3+bta&{l$ka>!ws-ttkru'je~byQk2^715>S7'nxm"\7fh gm2-sw)pxg~y#naznu]g6Z0592_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:V=9=6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>R6>6:W3+bta&{l$ahc dnww[lY79?1^<"i}f/pe+hcj'me~xRgP1058Q5)`zo$yj"cjm.flqqYnW8::;6[?/fpe*w`(elg$hb{{_h]2541<]9%l~k }f.ofi*bh}}UbS<<>7:W3+bta&{l$ahc dnww[lY6;8=0Y=!hrg,qb*kbe&ndyyQf_0623>S7'nxm"\7fh mdo,`jssW`U:9<94U1-dvc(un&gna"j`uu]j[406?2_;#j|i.sd,i`k(lf\7f\7fSdQ>7058Q5)`zo$yj"cjm.flqqYnW82:;6[?/fpe*w`(elg$hb{{_h]2=40<]9%l~k }f.ofi*bh}}UbS??8;T2,cw`)zo%fi`!kotv\mZ479>1^<"i}f/pe+hcj'me~xRgP2034?P6(o{l%~k!bel-gkprXaV89=:5Z0.eqb+ta'dof#iazt^k\66703\:$k\7fh!rg-nah)cg|~TeR<;169V4*aun'xm#`kb/emvpZoX:<;<7X> gsd-vc)jmd%ocxzPi^0552=R8&myj#|i/lgn+air|VcT>:?8;T2,cw`)zo%fi`!kotv\mZ4?9>1^<"i}f/pe+hcj'me~xRgP2835?P6(o{l%~k!bel-gkprXaV9:;6[?/fpe*w`(elg$hb{{_h]0441<]9%l~k }f.ofi*bh}}UbS>?>7:W3+bta&{l$ahc dnww[lY4:8=0Y=!hrg,qb*kbe&ndyyQf_2123>S7'nxm"\7fh mdo,`jssW`U88<94U1-dvc(un&gna"j`uu]j[636>2_;#j|i.sd,i`k(lf\7f\7fSdQ;179V4*aun'xm#`kb/emvpZoX=8<0Y=!hrg,qb*kbe&ndyyQf_735?P6(o{l%~k!bel-gkprXaV=::6[?/fpe*w`(elg$hb{{_h];53=R8&myj#|i/lgn+air|VcT5<74U1-dvc(un&gna"j`uu]nah:768k0Y=!hrg,qb*kbe&ndyyQbel>24;7f3\:$k\7fh!rg-nah)cg|~Tahc310<2e>S7'nxm"\7fh mdo,`jssWdof0<<11`9V4*aun'xm#`kb/emvpZkbe5;82<o4U1-dvc(un&gna"j`uu]nah:6<7;j7X> gsd-vc)jmd%ocxzPmdo?5086i2_;#j|i.sd,i`k(lf\7f\7fS`kb<04=5d=R8&myj#|i/lgn+air|Vgna1?8>0c8Q5)`zo$yj"cjm.flqqYjmd6:43?n;T2,cw`)zo%fi`!kotv\i`k;904:56[?/fpe*w`(elg$hb{{_lgn8486i2_;#j|i.sd,i`k(lf\7f\7fS`kb<32=5d=R8&myj#|i/lgn+air|Vgna1<>>0c8Q5)`zo$yj"cjm.flqqYjmd69>3?n;T2,cw`)zo%fi`!kotv\i`k;::4:m6[?/fpe*w`(elg$hb{{_lgn87299h1^<"i}f/pe+hcj'me~xRcjm=06:4g<]9%l~k }f.ofi*bh}}Ufi`2=6?3b?P6(o{l%~k!bel-gkprXelg7>:0>a:W3+bta&{l$ahc dnww[hcj4;25=l5Z0.eqb+ta'dof#iazt^ofi94>6830Y=!hrg,qb*kbe&ndyyQbel>1:4g<]9%l~k }f.ofi*bh}}Ufi`2<0?3b?P6(o{l%~k!bel-gkprXelg7?<0>a:W3+bta&{l$ahc dnww[hcj4:85=l5Z0.eqb+ta'dof#iazt^ofi95468k0Y=!hrg,qb*kbe&ndyyQbel>00;7f3\:$k\7fh!rg-nah)cg|~Tahc334<2=>S7'nxm"\7fh mdo,`jssWdof0>0>9:W3+bta&{l$ahc dnww[hcj4=4:56[?/fpe*w`(elg$hb{{_lgn808612_;#j|i.sd,i`k(lf\7f\7fS`kb<7<2=>S7'nxm"\7fh mdo,`jssWdof0:0>9:W3+bta&{l$ahc dnww[hcj414:56[?/fpe*w`(elg$hb{{_lgn8<81m2_;#j|i.sd,i`k(okg%koch.f`ncd(iolih"och/cnh[hcjWnoei\7fo{os-ueioc&jy\7f~"|nmmmlt^6Z&{kf"\7f!y2^llmkos&{kf#i~<6y15*wgj9k1^<"i}f/pe+hcj'}g{S\7fob_sf\ak7d3\:$k\7fh!rg-nah)seyUym`Q}d^gm545<]9%l~k }f.pbiZtcWld:;6[?/fpe*w`(zhgT~hi`uu]fj45<]9%l~k }f.pbiZquWld:h6[?/fpe*w`(zz~i`f!}d^pppZgtzlm9<6[?/fpe*w`(zz~i`f!}d^pppZgtzlmTh<<?;T2,cw`)zo%y\7fylck.pg[wusWhyyijQk20a8Q5)`zo$yj"||tcnh+wbXzz~Tobcm1e9V4*aun'xm#\7f}{bmi,vaYu{}Uhc`l>1d9V4*aun'xm#\7f}{bmi,vaYu{}Uyij2?>0g8Q5)`zo$yj"||tcnh+wbXzz~T~hi31?3f?P6(o{l%~k!}su`oo*tcW{y\7fS\7fkh<3<2`>S7'nxm"\7fh rrvahn)ulVxxxR|jg^22`>S7'nxm"\7fh rrvahn)ulVxxxR|jg^32`>S7'nxm"\7fh rrvahn)ulVxxxR|jg^02`>S7'nxm"\7fh rrvahn)pzVxxxRo|rde14>S7'nxm"\7fh rrvahn)pzVxxxRo|rde\`4473\:$k\7fh!rg-qwqdkc&}yS\7f}{_`qqabYc:8i0Y=!hrg,qb*tt|kf`#z|Prrv\gjke9m1^<"i}f/pe+wusjea${\7fQ}su]`khd69l1^<"i}f/pe+wusjea${\7fQ}su]qab:768o0Y=!hrg,qb*tt|kf`#z|Prrv\v`a;97;o7X> gsd-vc)u{}hgg"y}_sqw[wc`W9;o7X> gsd-vc)u{}hgg"y}_sqw[wc`W8k0Y^K]_@NJEVe<]ZOYS[G\ICNF7>PDK01]EHYPTXRF7>QBI:1\IOl4WSKWAZ@NZZ^h7Z\FTD]NKACXIj1\^DZJ_LMGAZD6l2RB@D@W-YFA$5(6(Z^^N->!1!CPGLO23QEYOT84XRVOMG1<PZ^TKCJ8;YQW[SEDj2RTOB\J_HLEK3=_lkUBhk5Wdi]SvlkQm{ybcc??;Yfn[Hgmg{\n~~g`n028\akXE`dd~[k}shmmg>gkefy\7fShc\7ftx`8eikh{}Umyab9;cc`opvc3kkhgx~Pm`phaw5<keao7io{a^alqkr/8 n0hlzn_bmvjq.6!m1omyoPcnwmp-4.l2njxlQlotlw,6/c3mk\7fmRm`uov+0,b<lh~jSnaznu*6-a=ci}kTob{at)4*`>bf|hUhcx`{(6+g?agsiVidycz'8(f8`drfWje~by&6)e9geqgXkf\7fex1>1f:fbpdYdg|d\7f044?>69gflrbz{<0hd`'0(48`lh/9 =0hd`'11+4?aoi 8;";6jfn)31-2=cag":?$94dhl+51/03mce$<;&7:fjj-71!>1oec&>7(58`lh/91#<7iga(0;*2>bnf!8";6jfn)03-2=cag"9=$94dhl+67/03mce$?=&7:fjj-43!>1oec&=5(58`lh/:?#<7iga(35*3>bnf!83%:5kio*1=,0<l`d#?$94dhl+75/03mce$>?&7:fjj-55!>1oec&<3(58`lh/;=#<7iga(27*2>bnf!>":6jfn)7*2>bnf!<":6jfn)5*2>bnf!2":6jfn);*2>bnf5:5;6jfn=33:2=cag6:=394dhl?57803mce0<=17:fjj9736>1oec2>5?58`lh;9?4<7iga<05=3>bnf5;32:5kio>2=;0<l`d7=394dhl?65803mce0??17:fjj9456>1oec2=3?58`lh;:=4<7iga<37=3>bnf58=2:5kio>13;1<l`d7>508;ekm87?9>2nbb1<17:fjj9576>1oec2<1?58`lh;;;4<7iga<21=3>bnf59?245kio>01?69?2nbb1=:>79gmk:46?1oec2;>79gmk:26?1oec29>79gmk:06?1oec27>79gmk:>6>1ocxz'0(58`jss 8#37iazt)33-==cg|~#=<'7;emvp-75!11ocxz'12+;?air|!;?%55kotv+50/?3me~x%?9)99gkpr/9>#37iazt)3;-==cg|~#=4'8;emvp-4.02ndyy&=0(:8`jss ;;"46j`uu*16,><lf\7f\7f$?=&8:flqq.5< 20hb{{(37*<>bh}}"9:$64dnww,71.02ndyy&=8(:8`jss ;3";6j`uu*0-==cg|~#?='7;emvp-56!11ocxz'33+;?air|!98%55kotv+71/?3me~x%=:)69gkpr/< =0hb{{(4+4?air|!<";6j`uu*4-2=cg|~#4$94dnww,</03me~x1>18:flqq:68720hb{{<03=<>bh}}6:>364dnww845902ndyy2>4?:8`jss48?546j`uu>22;><lf\7f\7f0<918:flqq:60720hb{{<0;=3>bh}}6:255kotv?658?3me~x1<>>99gkpr;:;437iazt=00:==cg|~7>907;emvp942611ocxz327<;?air|58<255kotv?6=8?3me~x1<6>69gkpr;:720hb{{<22=<>bh}}68=364dnww864902ndyy2<3?:8`jss4:>5m6j`uu>01?6902ndyy2<5?58`jss4:4<7iazt=6=3>bh}}6>2:5kotv?2;1<lf\7f\7f0:08;emvp9>9?2ndyy26>99f`l`5fnn>7hc\7ftx11?coagVmnbh|ntnp\r1Y4$)Rb`d`w BMQA%Abflxjxb|/11,2*556=2lbjbQwloz\144\7f;?U9oae<3:djbjY\7fdgrT9<<w37]1gim+n`ldSjkaescwkwYq<V9'BB@J,OMMA6e13ocmcRvcny]657~4>V8h`f"iigm\c`hbzh~d~Rx;_2.xgZnf{VcexRmck<2/gZnf{Vyy\7fy3?,b]q`Z`umx7: nQgar]q`Zbf|hUhcx`{=0.`[aoiW~coxe3<6-a\lduX\7f{UomyoPcnwmp87+kVl~`aQil`ep[wusW\7fkg1<"l_hosh`kbf}k\7feb`Ptxrf97*dW|ynShcmeeff`Ztbo4:'oRy}_gpfu87+kV\7fxiRj`uu]qwq;6$jU~bik}fmmt[iip59&hSeo|_ntfvcjh\7f4:'oR~}emmb`Zjf|ldhu0>#c^flqqYpam~c1>8#c^opcjhX~hf6=!mPre]gauro5<;9 nQgar]vjacunee|1="l_icp[djjgz~Tjxbc=1.`[mgtW{y\7f1<"l_ecweZeh}g~T{dj{h<33(fYoizU|~Rolk<2/gZstmVoho0>#c^alihiiWjfdof3?,b]tvZgdcVfd{0>#c^pg[uhszV}bhyf29-a\qvcXn~l\7fSio{a^alqkr:9%iTdl}PamolwqYbey~r1="l_sf\`drfWje~byQxievk946+kVe}i\7fhcov]okr;7$jU|~R~ats]tmaro50&hS}|`g^gntq\7fX|pzn1="l_vp\`drfWje~byQxievk946+kVzyiaand^pfcv;6$jUocxzPrrv\rdj:8%iTdl}Pd`vb[firf}7; nQ\7frne\bpjkW}byi~fPndebp`Yqie7>=="l_vp\``vs`4?:>!mPpsmd[`kw|pU\7fd\7fk|h^lfcdrbW\7fkg18"l_qplcZcjx}sTxe|jsi]bwvcu|V|j`0:#c^jbwZpfd`n6<!mPpsmd[cskdV~c~h}g_`qpawrX~hf69<?#cnoskkci|Vdjah3iigm\|ih\7fW<;9t>8P2bnh(fYqiecoSaax=1.`[utneVlbjbQ{yqg>144\7f;?&hS}|`g^dvhiYsqyo6<!mPmdolv|Ysqyo6=!s=f:djbjY\7fdgrT9<<w37]1gimXn`ldSjkaescwkwYq<V9Tt~zP159eqij03`d\7fSnbd8:ldggsndm20c{k}fmmte>vugnUna}zv159svjaXmdz\7fuRzgrdqk,5/6<2zycjQjmqvz[qnumzb#=$?;;qplcZcjx}sTxe|jsi*1-42<x{elShc\7ftx]wlwct`!9"=95\7frne\ahvsqV~c~h}g(5+20>vugnUna}zv_ujqavn/= ;?7}|`g^gntq\7fX|axn\7fe&9)068twi`Wlg{xtQ{hsgpl-1.9=1{~biPelrw}Zrozlyc$5'>6:rqkbYbey~rSyf}erj?<?699k1{~biPelrw}ZrozlycSl}|esv+4,7e3yxdkRkbpu{\pmtb{aUj\7f~k}t)3*5g=wzfmTi`~{y^vkv`uoWhyxi\7fz'2(3a?uthoVof|ywPtipfwmYf{zoyx%=&1c9svjaXmdz\7fuRzgrdqk[dutm{~#8$?m;qplcZcjx}sTxe|jsi]bwvcu|!?"=o5\7frne\ahvsqV~c~h}g_`qpawr/> ;i7}|`g^gntq\7fX|axn\7feQnsrgqp-1.9k1{~biPelrw}ZrozlycSl}|esv+<,7c3yxdkRkbpu{\pmtb{aUj\7f~k}t=:94;7e3yxdkRkbpu{\pmtb{aUeijo{e)2*5g=wzfmTi`~{y^vkv`uoWgolmyk'1(3a?uthoVof|ywPtipfwmYimnk\7fi%<&1c9svjaXmdz\7fuRzgrdqk[kc`i}o#?$?m;qplcZcjx}sTxe|jsi]mabgsm!>"=o5\7frne\ahvsqV~c~h}g_ogdeqc/= ;i7}|`g^gntq\7fX|axn\7feQaefcwa-0.9k1{~biPelrw}ZrozlycSckhaug+3,7e3yxdkRkbpu{\pmtb{aUeijo{e):*5a=wzfmTi`~{y^vkv`uoWgolmyk38;2==>vugnUmyab>3:rqkbYa}efTxe|jsi*3-45<x{elSk{cl^vkv`uo 8#:?6~}of]eqijX|axn\7fe&=)018twi`Wo\7fg`Rzgrdqk,6/6;2zycjQiumn\pmtb{a"?%<=4psmd[cskdV~c~h}g(4+27>vugnUmyabPtipfwm.1!890|\7fah_gwohZrozlyc$:'>3:rqkbYa}efTxe|jsi*;-43<x{elSk{cl^vkv`uo410;2<o4psmd[cskdV~c~h}g_`qpawr/8 ;j7}|`g^dvhiYs`{oxdRo|sdpw,4/6i2zycjQiumn\pmtb{aUj\7f~k}t)0*5d=wzfmTjxbc_ujqavnXizyn~y&<)0c8twi`Wo\7fg`Rzgrdqk[dutm{~#8$?n;qplcZ`rdeU\7fd\7fk|h^cpw`ts <#:m6~}of]eqijX|axn\7feQnsrgqp-0.9h1{~biPftno[qnumzbTm~}jru*4-4g<x{elSk{cl^vkv`uoWhyxi\7fz'8(3`?uthoVl~`aQ{hsgplZgt{lx\7f054?>0c8twi`Wo\7fg`Rzgrdqk[kc`i}o#<$?n;qplcZ`rdeU\7fd\7fk|h^lfcdrb 8#:m6~}of]eqijX|axn\7feQaefcwa-4.9h1{~biPftno[qnumzbTbhintd*0-4g<x{elSk{cl^vkv`uoWgolmyk'4(3b?uthoVl~`aQ{hsgplZhboh~n$8'>a:rqkbYa}efTxe|jsi]mabgsm!<"=l5\7frne\bpjkW}byi~fPndebp`.0!8k0|\7fah_gwohZrozlycSckhaug+<,7d3yxdkRhzlm]wlwct`Vdnklzj<983:3=ulVigg<>4re]geqgXkf\7fex%>&119q`Zbf|hUhcx`{(0+24>tcWmk\7fmRm`uov+6,773{nThlzn_bmvjq.4!8:0~iQkauc\gjsi|!>"==5}d^fbpdYdg|d\7f$8'>0:pg[agsiVidycz'6(33?wbXlh~jSnaznu*4-46<zmUomyoPcnwmp->.991yhRjnt`]`kphs 0#:<6|k_ecweZeh}g~7<3??;sf\`drfWje~by2>>028vaYci}kTob{at=0=55=ulVnjxlQlotlw868682xoSio{a^alqkr;<7;;7\7fjPd`vb[firf}6>2<>4re]geqgXkf\7fex181119q`Zbf|hUhcx`{<6<24>tcWmk\7fmRm`uov?<;753{nThlzn_bmvjq:>294:<6|k_ecweZeh}g~753;4re]fj3=ulVxxx>5}su58wgosm{x?7~||t59wvpc>3|doi\7fhcov78rdjnl?1|~Rolk79tvZekc8:0{\7fQkauc\gjsi|!:"==5xr^fbpdYdg|d\7f$<'>0:uq[agsiVidycz'2(33?rtXlh~jSnaznu*0-46<\7f{UomyoPcnwmp-2.991|~Rjnt`]`kphs <#:<6y}_ecweZeh}g~#:$??;vp\`drfWje~by&8)028swYci}kTob{at):*55=pzVnjxlQlotlw,</682}ySio{a^alqkr;87;;7z|Pd`vb[firf}6:2<>4ws]geqgXkf\7fex1<1119tvZbf|hUhcx`{<2<24>quWmk\7fmRm`uov?0;773~xThlzn_bmvjq:268:0{\7fQkauc\gjsi|5<5==5xr^fbpdYdg|d\7f0:0>0:uq[agsiVidycz38?31?rtXlh~jSnaznu>:>58682}ySio{a^alqkr;17?0{\7fQjn79tvZtt|tJK|h=>;AB{5?@=<3;p_8k55779=?74:0::;7<n194xj1da281e8n>54:&7fa<3j>1v_8m55779=?74:0::;7<n1948W43c2<<n6=4>33;352<5i82<7^;l:44f>5<6;;3;=:4=a0:;?a3103:1=7?tS4g9133=13;8>4>>7;0b5=0<~];n=7>51;395`c|[<o19;;59;306<66?38j=584$5`2>43b3_>ii7<tu04;>4=r9?31<6s+1e;952=e=?21<78<:2857~N3io1Q9<4;{b8a>40=9<0v(<k9:44;?!2ek3?=;6g:c583>>i2l>0;6)?kb;7f5>h6lh0;76a:d783>!7cj3?n=6`>d`82?>i2l<0;6)?kb;7f5>h6lh0976a:d583>!7cj3?n=6`>d`80?>i2l:0;6)?kb;7f5>h6lh0?76a:d383>!7cj3?n=6`>d`86?>i2l80;6)?kb;7f5>h6lh0=76a:d183>!7cj3?n=6`>d`84?>i2ko0;6)?kb;7f5>h6lh0376a:cd83>!7cj3?n=6`>d`8:?>i2j10;6)?kb;7`6>h6lh0;76a:b683>!7cj3?h>6`>d`82?>i2j?0;6)?kb;7`6>h6lh0976a:b483>!7cj3?h>6`>d`80?>i2j=0;6)?kb;7`6>h6lh0?76a:b283>!7cj3?h>6`>d`86?>i2j;0;6)?kb;7`6>h6lh0=76a:b083>!7cj3?h>6`>d`84?>i2j90;6)?kb;7`6>h6lh0376a:ag83>!7cj3?h>6`>d`8:?>o2m:0;66a:6b83>>i2>?0;66g:ce83>>o2k?0;66a:3883>!7cj3?>o6`>d`83?>i2;10;6)?kb;76g>h6lh0:76a:3683>!7cj3?>o6`>d`81?>i2;?0;6)?kb;76g>h6lh0876a:3483>!7cj3?>o6`>d`87?>i2;=0;6)?kb;76g>h6lh0>76a:3383>!7cj3?>o6`>d`85?>i2;80;6)?kb;76g>h6lh0<76a:3183>!7cj3?>o6`>d`8;?>i2:o0;6)?kb;76g>h6lh0276a:2d83>!7cj3?>o6`>d`8b?>i2:m0;6)?kb;76g>h6lh0i76a:2b83>!7cj3?>o6`>d`8`?>i2:k0;6)?kb;76g>h6lh0o76a:2`83>!7cj3?>o6`>d`8f?>i2:00;6)?kb;76g>h6lh0m76a:2683>!7cj3?>o6`>d`824>=h=;<1<7*>dc861f=i9mk1=<54o406>5<#9mh198m4n0fb>44<3f?987>5$0fa>03d3g;om7?<;:m666<72-;on7;:c:l2`d<6<21d9?<50;&2`g<2=j1e=io51498k046290/=il554a8j4bf28<07b;=0;29 4be2<?h7c?ka;34?>i29o0;6)?kb;76g>h6lh0:465`50g94?"6lk0>9n5a1ec95<=<g<9m6=4+1e`910e<f8nj6<o4;n70a?6=,8ni68;l;o3ge?7e32e>?i4?:%3gf?32k2d:hl4>c:9l16e=83.:ho4:5b9m5ag=9m10c8=m:18'5ad==<i0b<jn:0g8?j34i3:1(<jm:47`?k7ci3;m76a:3283>!7cj3?>o6`>d`814>=h=;21<7*>dc861f=i9mk1><54o43g>5<#9mh198m4n0fb>74<3f?:o7>5$0fa>03d3g;om7<<;:k7b5<72-;on7;>3:l2`d<732c?ik4?:%3gf?36;2d:hl4>;:k7a`<72-;on7;>3:l2`d<532c?ii4?:%3gf?36;2d:hl4<;:k7af<72-;on7;>3:l2`d<332c?io4?:%3gf?36;2d:hl4:;:k7a<<72-;on7;>3:l2`d<132c?i54?:%3gf?36;2d:hl48;:k7a2<72-;on7;>3:l2`d<?32c?i;4?:%3gf?36;2d:hl46;:k7a0<72-;on7;>3:l2`d<f32c?i94?:%3gf?36;2d:hl4m;:k7a6<72-;on7;>3:l2`d<d32c?i?4?:%3gf?36;2d:hl4k;:k7a4<72-;on7;>3:l2`d<b32c?i=4?:%3gf?36;2d:hl4i;:k7``<72-;on7;>3:l2`d<6821b8ij50;&2`g<29:1e=io51098m1bd290/=il55018j4bf28807d:kb;29 4be2<;87c?ka;30?>o3lh0;6)?kb;727>h6lh0:865f4e;94?"6lk0>=>5a1ec950=<a=n36=4+1e`9145<f8nj6<84;h6g3?6=,8ni68?<;o3ge?7032c?h;4?:%3gf?36;2d:hl4>8:9j0a3=83.:ho4:129m5ag=9010e9h9:18'5ad==890b<jn:0c8?l2a=3:1(<jm:430?k7ci3;i76g;f583>!7cj3?:?6`>d`82g>=n<o91<7*>dc8656=i9mk1=i54i5d1>5<#9mh19<=4n0fb>4c<3`>m=7>5$0fa>0743g;om7?i;:k7ad<72-;on7;>3:l2`d<5821b8ih50;&2`g<29:1e=io52098m1b3290/=il55018j4bf2;807d:k3;29 4be2<;87c?ka;00?>o2il0;66l;b183>4<729qC8lh4$0g5>1d73f;o47>5;|`24=<7280;6=uG4`d8 4c128:37b??7;29?xd283:1n94>a182a`}O<hl0V8?517y06?e=j39=6l4<4;35>67=9<0897=<:`8`>40=j3996<;537801?532:91?<4r$0g5>00e3-;>m7??6:&63?3112.>h7;9a:&2`6<6l>1b9n;50;9l1=`=831b9n650;9l0f7=831d9nl50;9j0f2=831b95=50;&2`g<20=1e=io50:9j1=4=83.:ho4:859m5ag=921b95?50;&2`g<20=1e=io52:9j1=6=83.:ho4:859m5ag=;21b9:h50;&2`g<20=1e=io54:9j12c=83.:ho4:859m5ag==21b9:j50;&2`g<20=1e=io56:9j12e=83.:ho4:859m5ag=?21b9:l50;&2`g<20=1e=io58:9j1f2=831d9;h50;9l1a1=83.:ho4:e09m5ag=821d9i850;&2`g<2m81e=io51:9l1a3=83.:ho4:e09m5ag=:21d9i:50;&2`g<2m81e=io53:9l1a5=83.:ho4:e09m5ag=<21d9i<50;&2`g<2m81e=io55:9l1a7=83.:ho4:e09m5ag=>21d9i>50;&2`g<2m81e=io57:9l1f`=83.:ho4:e09m5ag=021d9nk50;&2`g<2m81e=io59:9l1g>=83.:ho4:c39m5ag=821d9o950;&2`g<2k;1e=io51:9l1g0=83.:ho4:c39m5ag=:21d9o;50;&2`g<2k;1e=io53:9l1g2=83.:ho4:c39m5ag=<21d9o=50;&2`g<2k;1e=io55:9l1g4=83.:ho4:c39m5ag=>21d9o?50;&2`g<2k;1e=io57:9l1g6=83.:ho4:c39m5ag=021d9lh50;&2`g<2k;1e=io59:9j1de=83.:ho4:ae9m5ag=821b9ll50;&2`g<2im1e=io51:9j1dg=83.:ho4:ae9m5ag=:21b9l750;&2`g<2im1e=io53:9j1d>=83.:ho4:ae9m5ag=<21b9l950;&2`g<2im1e=io55:9j1d0=83.:ho4:ae9m5ag=>21b9l;50;&2`g<2im1e=io57:9j1d2=83.:ho4:ae9m5ag=021b9h=50;9l0f`=83.:ho4;d09m5ag=821d8nk50;&2`g<3l81e=io51:9l0fb=83.:ho4;d09m5ag=:21d8nm50;&2`g<3l81e=io53:9l0fd=83.:ho4;d09m5ag=<21d8no50;&2`g<3l81e=io55:9l0f?=83.:ho4;d09m5ag=>21d8n650;&2`g<3l81e=io57:9l0f1=83.:ho4;d09m5ag=021d8n850;&2`g<3l81e=io59:9l13e=831d9;850;9j1<>=83.:ho4:989m5ag=821b94950;&2`g<2101e=io51:9j1<0=83.:ho4:989m5ag=:21b94;50;&2`g<2101e=io53:9j1<2=83.:ho4:989m5ag=<21b94=50;&2`g<2101e=io55:9j1<4=83.:ho4:989m5ag=>21b94?50;&2`g<2101e=io57:9j1<6=83.:ho4:989m5ag=021b9nj50;9j13b=831b8n;50;9j1`2=831d9n950;9l1fe=831d8n<50;9l1fg=831b9n850;9l16?=83.:ho4:5b9m5ag=821d9>650;&2`g<2=j1e=io51:9l161=83.:ho4:5b9m5ag=:21d9>850;&2`g<2=j1e=io53:9l163=83.:ho4:5b9m5ag=<21d9>:50;&2`g<2=j1e=io55:9l164=83.:ho4:5b9m5ag=>21d9>?50;&2`g<2=j1e=io57:9l166=83.:ho4:5b9m5ag=021d9?h50;&2`g<2=j1e=io59:9l17c=83.:ho4:5b9m5ag=i21d9?j50;&2`g<2=j1e=io5b:9l17e=83.:ho4:5b9m5ag=k21d9?l50;&2`g<2=j1e=io5d:9l17g=83.:ho4:5b9m5ag=m21d9?750;&2`g<2=j1e=io5f:9l171=83.:ho4:5b9m5ag=9910c8<9:18'5ad==<i0b<jn:038?j35=3:1(<jm:47`?k7ci3;976a:2583>!7cj3?>o6`>d`827>=h=;91<7*>dc861f=i9mk1=954o401>5<#9mh198m4n0fb>43<3f?9=7>5$0fa>03d3g;om7?9;:m665<72-;on7;:c:l2`d<6?21d9<h50;&2`g<2=j1e=io51998k07b290/=il554a8j4bf28307b;<f;29 4be2<?h7c?ka;3b?>i2;l0;6)?kb;76g>h6lh0:n65`52f94?"6lk0>9n5a1ec95f=<g<9h6=4+1e`910e<f8nj6<j4;n70f?6=,8ni68;l;o3ge?7b32e>?l4?:%3gf?32k2d:hl4>f:9l165=83.:ho4:5b9m5ag=:910c8<7:18'5ad==<i0b<jn:338?j36l3:1(<jm:47`?k7ci38976a:1b83>!7cj3?>o6`>d`817>=n=>31<7*>dc863d=i9mk1<65f56:94?"6lk0>;l5a1ec95>=n=>=1<7*>dc863d=i9mk1>65f56494?"6lk0>;l5a1ec97>=n=>?1<7*>dc863d=i9mk1865f56694?"6lk0>;l5a1ec91>=n=>91<7*>dc863d=i9mk1:65f56094?"6lk0>;l5a1ec93>=n=>;1<7*>dc863d=i9mk1465f4g294?"6lk0>=>5a1ec94>=n<ll1<7*>dc8656=i9mk1=65f4dg94?"6lk0>=>5a1ec96>=n<ln1<7*>dc8656=i9mk1?65f4da94?"6lk0>=>5a1ec90>=n<lh1<7*>dc8656=i9mk1965f4d;94?"6lk0>=>5a1ec92>=n<l21<7*>dc8656=i9mk1;65f4d594?"6lk0>=>5a1ec9<>=n<l<1<7*>dc8656=i9mk1565f4d794?"6lk0>=>5a1ec9e>=n<l>1<7*>dc8656=i9mk1n65f4d194?"6lk0>=>5a1ec9g>=n<l81<7*>dc8656=i9mk1h65f4d394?"6lk0>=>5a1ec9a>=n<l:1<7*>dc8656=i9mk1j65f4eg94?"6lk0>=>5a1ec955=<a=no6=4+1e`9145<f8nj6<?4;h6gg?6=,8ni68?<;o3ge?7532c?ho4?:%3gf?36;2d:hl4>3:9j0ag=83.:ho4:129m5ag=9=10e9j6:18'5ad==890b<jn:078?l2c03:1(<jm:430?k7ci3;=76g;d683>!7cj3?:?6`>d`823>=n<m<1<7*>dc8656=i9mk1=554i5f6>5<#9mh19<=4n0fb>4?<3`>m:7>5$0fa>0743g;om7?n;:k7b0<72-;on7;>3:l2`d<6j21b8k:50;&2`g<29:1e=io51b98m1`4290/=il55018j4bf28n07d:i2;29 4be2<;87c?ka;3f?>o3n80;6)?kb;727>h6lh0:j65f4dc94?"6lk0>=>5a1ec965=<a=nm6=4+1e`9145<f8nj6??4;h6g0?6=,8ni68?<;o3ge?4532c?h>4?:%3gf?36;2d:hl4=3:9j0f5=831b9l<50;&2`g<2i:1e=io50:9j1d7=83.:ho4:a29m5ag=921b9l>50;&2`g<2i:1e=io52:9j1<`=83.:ho4:a29m5ag=;21b94k50;&2`g<2i:1e=io54:9j1<b=83.:ho4:a29m5ag==21b94m50;&2`g<2i:1e=io56:9j1<d=83.:ho4:a29m5ag=?21b94o50;&2`g<2i:1e=io58:9j1=b=83.:ho4:8d9m5ag=821b95m50;&2`g<20l1e=io51:9j1=d=83.:ho4:8d9m5ag=:21b95o50;&2`g<20l1e=io53:9j1=?=83.:ho4:8d9m5ag=<21b95650;&2`g<20l1e=io55:9j1=1=83.:ho4:8d9m5ag=>21b95850;&2`g<20l1e=io57:9j1=3=83.:ho4:8d9m5ag=021d9:>50;9l0a4=831b9lk50;9a0gg=83;1<7>t$0g5>46?3A>i56F;ag9l551=831vn9lm:182>5<7s-;n:7:m0:J7f<=O<hl0c<j7:188yg2>k3:1?7>50z&2a3<an2B?n45G4`d8L1b<,8<=68m6;%322?4<a<81<75f5g83>>i6lm0;66sm4`594?5=83:p(<k9:gd8L1d>3A>jj6F;d:&223<2k01/=<852:k66?6=3`?m6=44o0fg>5<<uk>2n7>53;294~"6m?0mj6F;b89K0d`<@=n0(<89:4a:?!76>380e8<50;9j1c<722e:hi4?::\7fa0d3=83?1<7>t$0g5>4633A>i56F;ag9K0a=#9?<19n74$035>7=n=;0;66g:6;29?l3a2900e<jl:188k4bc2900qo:n6;297?6=8r.:i;4if:J7f<=O<hl0D9j4$045>0e>3-;::7<4i4094?=n=o0;66a>de83>>{e<0k1<7;50;2x 4c128:?7E:m9:J7ec=O<m1/=;855b;8 4712;1b9?4?::k62?6=3`?m6=44i0f`>5<<g8no6=44}c6b0?6=<3:1<v*>e78246=O<k30D9oi;%322?4<a<81<75f5g83>>o6lj0;66a>de83>>{e<h91<7:50;2x 4c128:87E:m9:J7ec=#98<1>6g:2;29?l3a2900e<jl:188k4bc2900qo:n2;290?6=8r.:i;4>029K0g?<@=km7)?>6;08m04=831b9k4?::k2`f<722e:hi4?::\7fa0db=83>1<7>t$0g5>4643A>i56F;ag9'540=:2c>>7>5;h7e>5<<a8nh6=44o0fg>5<<uk>jo7>54;294~"6m?0:<>5G4c;8L1ga3-;::7<4i4094?=n=o0;66g>db83>>i6lm0;66sm32;94?2=83:p(<k9:020?M2e12B?mk5+1049<>o2:3:17d;i:188m4bd2900c<jk:188yg4cm3:197>50z&2a3<68;1C8o74H5ce?!76>380e8<50;9j1g<722c>j7>5;h3gg?6=3f;oh7>5;|`1`c<72<0;6=u+1d49554<@=h27E:nf:&253<53`?96=44i4`94?=n=o0;66g>db83>>i6lm0;66sm2d294?3=83:p(<k9:021?M2e12B?mk5+10496>o2:3:17d;m:188m0`=831b=im50;9l5ab=831vn?k>:186>5<7s-;n:7??2:J7f<=O<hl0(<?9:39j17<722c>n7>5;h7e>5<<a8nh6=44o0fg>5<<uk8n>7>55;294~"6m?0:<?5G4c;8L1ga3-;::7<4i4094?=n=k0;66g:f;29?l7ck3:17b?kd;29?xd5m:0;684?:1y'5`0=9980D9l6;I6bb>"69?097d;=:188m0d=831b9k4?::k2`f<722e:hi4?::\7fa6`2=83?1<7>t$0g5>4653A>i56F;ag9'540=:2c>>7>5;h7a>5<<a<l1<75f1ea94?=h9mn1<75rb3g6>5<2290;w)?j6;336>N3j01C8lh4$035>7=n=;0;66g:b;29?l3a2900e<jl:188k4bc2900qo<j6;291?6=8r.:i;4>039K0g?<@=km7)?>6;08m04=831b9o4?::k6b?6=3`;oo7>5;n3g`?6=3th9i:4?:483>5}#9l<1==<4H5`:?M2fn2.:=;4=;h71>5<<a<h1<75f5g83>>o6lj0;66a>de83>>{e;hn1<7:50;2x 4c128:87E:m9:J7ec=#98<1>6g:2;29?l3a2900e<jl:188k4bc2900qo=nc;290?6=8r.:i;4>029K0g?<@=km7)?>6;08m04=831b9k4?::k2`f<722e:hi4?::\7fa7`6=83>1<7>t$0g5>4673A>i56F;ag9'540=:2c>>7>5;h7a>5<<a<l1<75`1ef94?=zj:o:6=4;:183\7f!7b>3;;<6F;b89K0d`<,8;=6?5f5383>>o2j3:17d;i:188k4bc2900qo=j2;290?6=8r.:i;4>019K0g?<@=km7)?>6;08m04=831b9o4?::k6b?6=3f;oh7>5;|`0a6<72=0;6=u+1d49556<@=h27E:nf:&253<53`?96=44i4`94?=n=o0;66a>de83>>{e;l>1<7:50;2x 4c128:;7E:m9:J7ec=#98<1>6g:2;29?l3e2900e8h50;9l5ab=831vn>k::187>5<7s-;n:7??0:J7f<=O<hl0(<?9:39j17<722c>n7>5;h7e>5<<g8no6=44}c1f2?6=<3:1<v*>e78245=O<k30D9oi;%322?4<a<81<75f5c83>>o2n3:17b?kd;29?xd4m>0;694?:1y'5`0=99:0D9l6;I6bb>"69?097d;=:188m0d=831b9k4?::m2`a<722wi?h650;694?6|,8o=6<>?;I6a=>N3io1/=<852:k66?6=3`?i6=44i4d94?=h9mn1<75rb2g:>5<3290;w)?j6;334>N3j01C8lh4$035>7=n=;0;66g:b;29?l3a2900c<jk:188yg4dj3:1?7>50z&2a3<6>91C8o74H5ce?!76>38i7d??a;29?l77j3:17b?k6;29?xd5k:0;694?:1y'5`0=9?=0D9l6;I6bb>o203:17d8?:188m4ba2900c<j9:188yg4c<3:1?7>50z&2a3<3j11C8o74H5ce?l3?2900e<;m:188k4b12900qo<lc;297?6=8r.:i;4>619K0g?<@=km7)?>6;0a?l77i3:17d??b;29?j7c>3:17pl=c583>1<729q/=h851758L1d>3A>jj6g:8;29?l072900e<ji:188k4b12900qo<k5;297?6=8r.:i;4;b99K0g?<@=km7d;7:188m43e2900c<j9:188yg4dl3:1?7>50z&2a3<6>91C8o74H5ce?!76>38i7d??a;29?l77j3:17b?k6;29?xd5k<0;694?:1y'5`0=9?=0D9l6;I6bb>o203:17d8?:188m4ba2900c<j9:188yg4c>3:1?7>50z&2a3<3j11C8o74H5ce?l3?2900e<;m:188k4b12900qo<le;297?6=8r.:i;4>619K0g?<@=km7)?>6;0a?l77i3:17d??b;29?j7c>3:17pl=c783>1<729q/=h851758L1d>3A>jj6g:8;29?l072900e<ji:188k4b12900qo<k7;297?6=8r.:i;4;b99K0g?<@=km7d;7:188m43e2900c<j9:188yg4dn3:1?7>50z&2a3<6>91C8o74H5ce?!76>38i7d??a;29?l77j3:17b?k6;29?xd5k>0;694?:1y'5`0=9?=0D9l6;I6bb>o203:17d8?:188m4ba2900c<j9:188yg4c03:1?7>50z&2a3<3j11C8o74H5ce?l3?2900e<;m:188k4b12900qo<k0;297?6=8r.:i;4>619K0g?<@=km7)?>6;0a?l77i3:17d??b;29?j7c>3:17pl=c983>1<729q/=h851758L1d>3A>jj6g:8;29?l072900e<ji:188k4b12900qo<k9;297?6=8r.:i;4;b99K0g?<@=km7d;7:188m43e2900c<j9:188yg4c93:1?7>50z&2a3<6>91C8o74H5ce?!76>38i7d??a;29?l77j3:17b?k6;29?xd5k00;694?:1y'5`0=9?=0D9l6;I6bb>o203:17d8?:188m4ba2900c<j9:188yg4ci3:1?7>50z&2a3<3j11C8o74H5ce?l3?2900e<;m:188k4b12900qo<k2;297?6=8r.:i;4>619K0g?<@=km7)?>6;0a?l77i3:17d??b;29?j7c>3:17pl=c`83>1<729q/=h851758L1d>3A>jj6g:8;29?l072900e<ji:188k4b12900qo<kb;297?6=8r.:i;4;b99K0g?<@=km7d;7:188m43e2900c<j9:188yg4c;3:1?7>50z&2a3<6>91C8o74H5ce?!76>38i7d??a;29?l77j3:17b?k6;29?xd5lj0;6>4?:1y'5`0=<k20D9l6;I6bb>o203:17d?:b;29?j7c>3:17pl<ce83>6<729q/=h851728L1d>3A>jj6*>1781f>o68h0;66g>0c83>>i6l?0;66sm3b794?2=83:p(<k9:044?M2e12B?mk5f5983>>o183:17d?kf;29?j7c>3:17pl<d783>6<729q/=h854c:8L1d>3A>jj6g:8;29?l72j3:17b?k6;29?xd4kl0;6>4?:1y'5`0=9?:0D9l6;I6bb>"69?09n6g>0`83>>o68k0;66a>d783>>{e;j<1<7:50;2x 4c128<<7E:m9:J7ec=n=10;66g90;29?l7cn3:17b?k6;29?xd4l>0;6>4?:1y'5`0=<k20D9l6;I6bb>o203:17d?:b;29?j7c>3:17pl<cg83>6<729q/=h851728L1d>3A>jj6*>1781f>o68h0;66g>0c83>>i6l?0;66sm3b594?2=83:p(<k9:044?M2e12B?mk5f5983>>o183:17d?kf;29?j7c>3:17pl<d983>6<729q/=h854c:8L1d>3A>jj6g:8;29?l72j3:17b?k6;29?xd4l90;6>4?:1y'5`0=9?:0D9l6;I6bb>"69?09n6g>0`83>>o68k0;66a>d783>>{e;j21<7:50;2x 4c128<<7E:m9:J7ec=n=10;66g90;29?l7cn3:17b?k6;29?xd4l00;6>4?:1y'5`0=<k20D9l6;I6bb>o203:17d?:b;29?j7c>3:17pl<d083>6<729q/=h851728L1d>3A>jj6*>1781f>o68h0;66g>0c83>>i6l?0;66sm3b;94?2=83:p(<k9:044?M2e12B?mk5f5983>>o183:17d?kf;29?j7c>3:17pl<d`83>6<729q/=h854c:8L1d>3A>jj6g:8;29?l72j3:17b?k6;29?xd4l;0;6>4?:1y'5`0=9?:0D9l6;I6bb>"69?09n6g>0`83>>o68k0;66a>d783>>{e;jk1<7:50;2x 4c128<<7E:m9:J7ec=n=10;66g90;29?l7cn3:17b?k6;29?xd4lk0;6>4?:1y'5`0=<k20D9l6;I6bb>o203:17d?:b;29?j7c>3:17pl<d283>6<729q/=h851728L1d>3A>jj6*>1781f>o68h0;66g>0c83>>i6l?0;66sm3b`94?2=83:p(<k9:044?M2e12B?mk5f5983>>o183:17d?kf;29?j7c>3:17pl<db83>6<729q/=h854c:8L1d>3A>jj6g:8;29?l72j3:17b?k6;29?xd4l=0;6>4?:1y'5`0=9?:0D9l6;I6bb>"69?09n6g>0`83>>o68k0;66a>d783>>{e;ji1<7:50;2x 4c128<<7E:m9:J7ec=n=10;66g90;29?l7cn3:17b?k6;29?xd4lm0;6>4?:1y'5`0=<k20D9l6;I6bb>o203:17d?:b;29?j7c>3:17pl<d483>6<729q/=h851728L1d>3A>jj6*>1781f>o68h0;66g>0c83>>i6l?0;66sm3eg94?5=83:p(<k9:5`;?M2e12B?mk5f5983>>o6=k0;66a>d783>>{e;831<7:50;2x 4c128<<7E:m9:J7ec=n=10;66g90;29?l7cn3:17b?k6;29?xd4910;694?:1y'5`0=9?=0D9l6;I6bb>o203:17d8?:188m4ba2900c<j9:188yg56?3:187>50z&2a3<6>>1C8o74H5ce?l3?2900e;>50;9j5a`=831d=i850;9~f671290?6=4?{%3f2?71?2B?n45G4`d8m0>=831b:=4?::k2`c<722e:h;4?::\7fa743=83>1<7>t$0g5>4003A>i56F;ag9j1=<722c=<7>5;h3gb?6=3f;o:7>5;|`06f<72=0;6=u+1d49531<@=h27E:nf:k6<?6=3`<;6=44i0fe>5<<g8n=6=44}c11f?6=<3:1<v*>e78222=O<k30D9oi;h7;>5<<a?:1<75f1ed94?=h9m<1<75rb20b>5<3290;w)?j6;353>N3j01C8lh4i4:94?=n>90;66g>dg83>>i6l?0;66sm33;94?2=83:p(<k9:044?M2e12B?mk5f5983>>o183:17d?kf;29?j7c>3:17pl<2983>1<729q/=h851758L1d>3A>jj6g:8;29?l072900e<ji:188k4b12900qo=7c;290?6=8r.:i;4>669K0g?<@=km7d;7:188m36=831b=ih50;9l5a0=831vn>6m:187>5<7s-;n:7?97:J7f<=O<hl0e8650;9j25<722c:hk4?::m2`3<722wi?5o50;694?6|,8o=6<88;I6a=>N3io1b954?::k54?6=3`;oj7>5;n3g2?6=3th8444?:583>5}#9l<1=;94H5`:?M2fn2c>47>5;h43>5<<a8nm6=44o0f5>5<<uk9347>54;294~"6m?0:::5G4c;8L1ga3`?36=44i7294?=n9ml1<75`1e494?=zj:3m6=4;:183\7f!7b>3;=;6F;b89K0d`<a<21<75f6183>>o6lo0;66a>d783>>{e;0o1<7:50;2x 4c128<<7E:m9:J7ec=n=10;66g90;29?l7cn3:17b?k6;29?xd41m0;694?:1y'5`0=9?=0D9l6;I6bb>o203:17d8?:188m4ba2900c<j9:188yg5>k3:187>50z&2a3<6>>1C8o74H5ce?l3?2900e;>50;9j5a`=831d=i850;9~f6?e290?6=4?{%3f2?71?2B?n45G4`d8m0>=831b:=4?::k2`c<722e:h;4?::\7fa65>=83>1<7>t$0g5>4673A>i56F;ag9'540=:2c>>7>5;h7a>5<<a<l1<75`1ef94?=zj;:<6=4;:183\7f!7b>3;;<6F;b89K0d`<,8;=6?5f5383>>o2j3:17d;i:188k4bc2900qo<?6;290?6=8r.:i;4>019K0g?<@=km7)?>6;08m04=831b9o4?::k6b?6=3f;oh7>5;|`140<72=0;6=u+1d49556<@=h27E:nf:&253<53`?96=44i4`94?=n=o0;66a>de83>>{e:9>1<7:50;2x 4c128:;7E:m9:J7ec=#98<1>6g:2;29?l3e2900e8h50;9l5ab=831vn?><:187>5<7s-;n:7??0:J7f<=O<hl0(<?9:39j17<722c>n7>5;h7e>5<<g8no6=44}c036?6=<3:1<v*>e78245=O<k30D9oi;%322?4<a<81<75f5c83>>o2n3:17b?kd;29?xd5880;694?:1y'5`0=99:0D9l6;I6bb>"69?097d;=:188m0d=831b9k4?::m2`a<722wi>=>50;694?6|,8o=6<>?;I6a=>N3io1/=<852:k66?6=3`?i6=44i4d94?=h9mn1<75rb34b>5<3290;w)?j6;334>N3j01C8lh4$035>7=n=;0;66g:b;29?l3a2900c<jk:188yg4113:187>50z&2a3<6891C8o74H5ce?!76>380e8<50;9j1g<722c>j7>5;n3g`?6=3th9:54?:583>5}#9l<1==>4H5`:?M2fn2.:=;4=;h71>5<<a<h1<75f5g83>>i6lm0;66sm27594?2=83:p(<k9:023?M2e12B?mk5+10496>o2:3:17d;m:188m0`=831d=ij50;9~f701290?6=4?{%3f2?7782B?n45G4`d8 4712;1b9?4?::k6f?6=3`?m6=44o0fg>5<<uk8=97>54;294~"6m?0:<=5G4c;8L1ga3-;::7<4i4094?=n=k0;66g:f;29?j7cl3:17pl=6583>1<729q/=h851128L1d>3A>jj6*>1781?l352900e8l50;9j1c<722e:hi4?::\7fa635=83>1<7>t$0g5>4673A>i56F;ag9'540=:2c>>7>5;h7a>5<<a<l1<75`1ef94?=zj;<96=4;:183\7f!7b>3;;<6F;b89K0d`<,8;=6?5f5383>>o2j3:17d;i:188k4bc2900qo<m2;290?6=8r.:i;4>019K0g?<@=km7)?>6;08m04=831b9o4?::k6b?6=3f;oh7>5;|`1f4<72=0;6=u+1d49556<@=h27E:nf:&253<53`?96=44i4`94?=n=o0;66a>de83>>{e:k:1<7:50;2x 4c128:;7E:m9:J7ec=#98<1>6g:2;29?l3e2900e8h50;9l5ab=831vn?oi:187>5<7s-;n:7??0:J7f<=O<hl0(<?9:39j17<722c>n7>5;h7e>5<<g8no6=44}c0ba?6=<3:1<v*>e78245=O<k30D9oi;%322?4<a<81<75f5c83>>o2n3:17b?kd;29?xd5im0;694?:1y'5`0=99:0D9l6;I6bb>"69?097d;=:188m0d=831b9k4?::m2`a<722wi>lm50;694?6|,8o=6<>?;I6a=>N3io1/=<852:k66?6=3`?i6=44i4d94?=h9mn1<75rb3ca>5<3290;w)?j6;334>N3j01C8lh4$035>7=n=;0;66g:b;29?l3a2900c<jk:188yg4fi3:187>50z&2a3<6891C8o74H5ce?!76>380e8<50;9j1g<722c>j7>5;n3g`?6=3th99=4?:583>5}#9l<1==>4H5`:?M2fn2.:=;4=;h71>5<<a<h1<75f5g83>>i6lm0;66sm25d94?2=83:p(<k9:023?M2e12B?mk5+10496>o2:3:17d;m:188m0`=831d=ij50;9~f72b290?6=4?{%3f2?7782B?n45G4`d8 4712;1b9?4?::k6f?6=3`?m6=44o0fg>5<<uk8?h7>54;294~"6m?0:<=5G4c;8L1ga3-;::7<4i4094?=n=k0;66g:f;29?j7cl3:17pl=4b83>1<729q/=h851128L1d>3A>jj6*>1781?l352900e8l50;9j1c<722e:hi4?::\7fa61d=83>1<7>t$0g5>4673A>i56F;ag9'540=:2c>>7>5;h7a>5<<a<l1<75`1ef94?=zj;>j6=4;:183\7f!7b>3;;<6F;b89K0d`<,8;=6?5f5383>>o2j3:17d;i:188k4bc2900qo<;9;290?6=8r.:i;4>019K0g?<@=km7)?>6;08m04=831b9o4?::k6b?6=3f;oh7>5;|`10=<72=0;6=u+1d49556<@=h27E:nf:&253<53`?96=44i4`94?=n=o0;66a>de83>>{e:h:1<7:50;2x 4c128:;7E:m9:J7ec=O<m1/=;855b;8 4712;1b9?4?::k6f?6=3`?m6=44o0fg>5<<uk82j7>54;294~"6m?0:<=5G4c;8L1ga3A>o7)?96;7`=>"69?097d;=:188m0d=831b9k4?::m2`a<722wi>4k50;694?6|,8o=6<>?;I6a=>N3io1C8i5+17491f?<,8;=6?5f5383>>o2j3:17d;i:188k4bc2900qo<6d;290?6=8r.:i;4>019K0g?<@=km7E:k;%352?3d12.:=;4=;h71>5<<a<h1<75f5g83>>i6lm0;66sm28a94?2=83:p(<k9:023?M2e12B?mk5G4e9'530==j30(<?9:39j17<722c>n7>5;h7e>5<<g8no6=44}c0:f?6=<3:1<v*>e78245=O<k30D9oi;I6g?!71>3?h56*>1781?l352900e8l50;9j1c<722e:hi4?::\7fa6<g=83>1<7>t$0g5>4673A>i56F;ag9K0a=#9?<19n74$035>7=n=;0;66g:b;29?l3a2900c<jk:188yg4>13:187>50z&2a3<6891C8o74H5ce?M2c3-;=:7;l9:&253<53`?96=44i4`94?=n=o0;66a>de83>>{e:021<7:50;2x 4c128:;7E:m9:J7ec=O<m1/=;855b;8 4712;1b9?4?::k6f?6=3`?m6=44o0fg>5<<uk88i7>54;294~"6m?0:<=5G4c;8L1ga3A>o7)?96;7`=>"69?097d;=:188m0d=831b9k4?::m2`a<722wi>>j50;694?6|,8o=6<>?;I6a=>N3io1C8i5+17491f?<,8;=6?5f5383>>o2j3:17d;i:188k4bc2900qo<<c;290?6=8r.:i;4>019K0g?<@=km7E:k;%352?3d12.:=;4=;h71>5<<a<h1<75f5g83>>i6lm0;66sm22`94?2=83:p(<k9:023?M2e12B?mk5G4e9'530==j30(<?9:39j17<722c>n7>5;h7e>5<<g8no6=44}c00e?6=<3:1<v*>e78245=O<k30D9oi;I6g?!71>3?h56*>1781?l352900e8l50;9j1c<722e:hi4?::\7fa66?=83>1<7>t$0g5>4673A>i56F;ag9K0a=#9?<19n74$035>7=n=;0;66g:b;29?l3a2900c<jk:188yg4403:187>50z&2a3<6891C8o74H5ce?M2c3-;=:7;l9:&253<53`?96=44i4`94?=n=o0;66a>de83>>{e::=1<7:50;2x 4c128:;7E:m9:J7ec=O<m1/=;855b;8 4712;1b9?4?::k6f?6=3`?m6=44o0fg>5<<uk88:7>54;294~"6m?0:<=5G4c;8L1ga3A>o7)?96;7`=>"69?097d;=:188m0d=831b9k4?::m2`a<722wi>?m50;694?6|,8o=6<>?;I6a=>N3io1/=<852:k66?6=3`?i6=44i4d94?=h9mn1<75rb30a>5<3290;w)?j6;334>N3j01C8lh4$035>7=n=;0;66g:b;29?l3a2900c<jk:188yg45i3:187>50z&2a3<6891C8o74H5ce?!76>380e8<50;9j1g<722c>j7>5;n3g`?6=3th9>44?:583>5}#9l<1==>4H5`:?M2fn2.:=;4=;h71>5<<a<h1<75f5g83>>i6lm0;66sm23:94?2=83:p(<k9:023?M2e12B?mk5+10496>o2:3:17d;m:188m0`=831d=ij50;9~f740290?6=4?{%3f2?7782B?n45G4`d8 4712;1b9?4?::k6f?6=3`?m6=44o0fg>5<<uk89:7>54;294~"6m?0:<=5G4c;8L1ga3-;::7<4i4094?=n=k0;66g:f;29?j7cl3:17pl=2483>1<729q/=h851128L1d>3A>jj6*>1781?l352900e8l50;9j1c<722e:hi4?::\7fa672=83>1<7>t$0g5>4673A>i56F;ag9'540=:2c>>7>5;h7a>5<<a<l1<75`1ef94?=zj;2n6=4;:183\7f!7b>3;;<6F;b89K0d`<,8;=6?5f5383>>o2j3:17d;i:188k4bc2900qo<7d;290?6=8r.:i;4>019K0g?<@=km7)?>6;08m04=831b9o4?::k6b?6=3f;oh7>5;|`1<f<72=0;6=u+1d49556<@=h27E:nf:&253<53`?96=44i4`94?=n=o0;66a>de83>>{e:1h1<7:50;2x 4c128:;7E:m9:J7ec=#98<1>6g:2;29?l3e2900e8h50;9l5ab=831vn?6n:187>5<7s-;n:7??0:J7f<=O<hl0(<?9:39j17<722c>n7>5;h7e>5<<g8no6=44}c0;=?6=<3:1<v*>e78245=O<k30D9oi;%322?4<a<81<75f5c83>>o2n3:17b?kd;29?xd5010;694?:1y'5`0=99:0D9l6;I6bb>"69?097d;=:188m0d=831b9k4?::m2`a<722wi>5950;694?6|,8o=6<>?;I6a=>N3io1/=<852:k66?6=3`?i6=44i4d94?=h9mn1<75rb3:5>5<3290;w)?j6;334>N3j01C8lh4$035>7=n=;0;66g:b;29?l3a2900c<jk:188yg5093:197>50z&2a3<6881C8o74H5ce?!76>380e8<50;9j13<722c>n7>5;h7e>5<<g8no6=44}c144?6==3:1<v*>e78244=O<k30D9oi;%322?4<a<81<75f5783>>o2j3:17d;i:188k4bc2900qo=9f;291?6=8r.:i;4>009K0g?<@=km7)?>6;08m04=831b9;4?::k6f?6=3`?m6=44o0fg>5<<uk9=i7>55;294~"6m?0:<<5G4c;8L1ga3-;::7<4i4094?=n=?0;66g:b;29?l3a2900c<jk:188yg51l3:197>50z&2a3<6881C8o74H5ce?!76>380e8<50;9j13<722c>n7>5;h7e>5<<g8no6=44}c15g?6==3:1<v*>e78244=O<k30D9oi;%322?4<a<81<75f5783>>o2j3:17d;i:188k4bc2900qo=9a;291?6=8r.:i;4>009K0g?<@=km7)?>6;08m04=831b9;4?::k6f?6=3`?m6=44o0fg>5<<uk9=57>55;294~"6m?0:<95G4c;8L1ga3-;::764i4094?=n=?0;66g:f;29?l7ck3:17b?kd;29?xd4>k0;684?:1y'5`0=99;0D9l6;I6bb>"69?097d;=:188m00=831b9o4?::k6b?6=3f;oh7>5;|`01`<72:0;6=u+1d490g><@=h27E:nf:k6<?6=3`;>n7>5;n3g2?6=3th89i4?:283>5}#9l<18o64H5`:?M2fn2c>47>5;h36f?6=3f;o:7>5;|`011<72=0;6=u+1d49531<@=h27E:nf:k6<?6=3`<;6=44i0fe>5<<g8n=6=44}c16g?6=;3:1<v*>e787f==O<k30D9oi;h7;>5<<a8?i6=44o0f5>5<<uk9>>7>54;294~"6m?0:::5G4c;8L1ga3`?36=44i7294?=n9ml1<75`1e494?=zj:?i6=4<:183\7f!7b>3>i46F;b89K0d`<a<21<75f14`94?=h9m<1<75rb273>5<3290;w)?j6;353>N3j01C8lh4i4:94?=n>90;66g>dg83>>i6l?0;66sm34c94?5=83:p(<k9:5`;?M2e12B?mk5f5983>>o6=k0;66a>d783>>{e;=o1<7:50;2x 4c128<<7E:m9:J7ec=n=10;66g90;29?l7cn3:17b?k6;29?xd4=00;6>4?:1y'5`0=<k20D9l6;I6bb>o203:17d?:b;29?j7c>3:17pl<4b83>1<729q/=h851758L1d>3A>jj6g:8;29?l072900e<ji:188k4b12900qo=:8;297?6=8r.:i;4;b99K0g?<@=km7d;7:188m43e2900c<j9:188yg53i3:187>50z&2a3<6>>1C8o74H5ce?l3?2900e;>50;9j5a`=831d=i850;9~f63029086=4?{%3f2?2e02B?n45G4`d8m0>=831b=8l50;9l5a0=831vn>:7:187>5<7s-;n:7?97:J7f<=O<hl0e8650;9j25<722c:hk4?::m2`3<722wi?8850;194?6|,8o=69l7;I6a=>N3io1b954?::k21g<722e:h;4?::\7fa710=83>1<7>t$0g5>4003A>i56F;ag9j1=<722c=<7>5;h3gb?6=3f;o:7>5;|`0<6<72<0;6=u+1d49557<@=h27E:nf:&253<53`?96=44i4494?=n=k0;66g:f;29?j7cl3:17pl<8383>0<729q/=h851138L1d>3A>jj6*>1781?l352900e8850;9j1g<722c>j7>5;n3g`?6=3th84<4?:483>5}#9l<1==?4H5`:?M2fn2.:=;4=;h71>5<<a<<1<75f5c83>>o2n3:17b?kd;29?xd4090;684?:1y'5`0=99;0D9l6;I6bb>"69?097d;=:188m00=831b9o4?::k6b?6=3f;oh7>5;|`03c<72<0;6=u+1d49557<@=h27E:nf:&253<53`?96=44i4494?=n=k0;66g:f;29?j7cl3:17pl<7d83>0<729q/=h851138L1d>3A>jj6*>1781?l352900e8850;9j1g<722c>j7>5;n3g`?6=3th8;i4?:483>5}#9l<1==?4H5`:?M2fn2.:=;4=;h71>5<<a<<1<75f5c83>>o2n3:17b?kd;29?xd4?j0;684?:1y'5`0=99;0D9l6;I6bb>"69?097d;=:188m00=831b9o4?::k6b?6=3f;oh7>5;|`03g<72<0;6=u+1d49557<@=h27E:nf:&253<53`?96=44i4494?=n=k0;66g:f;29?j7cl3:17pl<0883>1<729q/=h851128L1d>3A>jj6*>1781?l352900e8l50;9j1c<722e:hi4?::\7fa750=83>1<7>t$0g5>4673A>i56F;ag9'540=:2c>>7>5;h7a>5<<a<l1<75`1ef94?=zj:;;6=4;:183\7f!7b>3;;<6F;b89K0d`<,8;=6?5f5383>>o2j3:17d;i:188k4bc2900qo=?d;290?6=8r.:i;4>029K0g?<@=km7)?>6;:8m04=831b9k4?::k2`f<722e:hi4?::\7fa75e=83>1<7>t$0g5>4643A>i56F;ag9'540=02c>>7>5;h7e>5<<a8nh6=44o0fg>5<<uk>9;7>55;294~"6m?0:<<5G4c;8L1ga3-;::7<4i4094?=n=?0;66g:b;29?l3a2900c<jk:188yg25>3:197>50z&2a3<6881C8o74H5ce?!76>380e8<50;9j13<722c>n7>5;h7e>5<<g8no6=44}c611?6==3:1<v*>e78244=O<k30D9oi;%322?4<a<81<75f5783>>o2j3:17d;i:188k4bc2900qo:=4;291?6=8r.:i;4>009K0g?<@=km7)?>6;08m04=831b9;4?::k6f?6=3`?m6=44o0fg>5<<uk>9?7>55;294~"6m?0:<<5G4c;8L1ga3-;::7<4i4094?=n=?0;66g:b;29?l3a2900c<jk:188yg25:3:197>50z&2a3<6881C8o74H5ce?!76>380e8<50;9j13<722c>n7>5;h7e>5<<g8no6=44}c614?6==3:1<v*>e78241=O<k30D9oi;%322?><a<81<75f5783>>o2n3:17d?kc;29?j7cl3:17pl;1g83>0<729q/=h851138L1d>3A>jj6*>1781?l352900e8850;9j1g<722c>j7>5;n3g`?6=3th?><4?:483>5}#9l<1==?4H5`:?M2fn2.:=;4=;h71>5<<a<<1<75f5c83>>o2n3:17b?kd;29?xd39=0;6>4?:1y'5`0=<k20D9l6;I6bb>o203:17d?:b;29?j7c>3:17pl;1283>6<729q/=h854c:8L1d>3A>jj6g:8;29?l72j3:17b?k6;29?xd38h0;694?:1y'5`0=9?=0D9l6;I6bb>o203:17d8?:188m4ba2900c<j9:188yg26:3:1?7>50z&2a3<3j11C8o74H5ce?l3?2900e<;m:188k4b12900qo:?8;290?6=8r.:i;4>669K0g?<@=km7d;7:188m36=831b=ih50;9l5a0=831vn9?>:180>5<7s-;n:7:m8:J7f<=O<hl0e8650;9j50d=831d=i850;9~f161290?6=4?{%3f2?71?2B?n45G4`d8m0>=831b:=4?::k2`c<722e:h;4?::\7fa046=8391<7>t$0g5>1d?3A>i56F;ag9j1=<722c:9o4?::m2`3<722wi8=:50;694?6|,8o=6<88;I6a=>N3io1b954?::k54?6=3`;oj7>5;n3g2?6=3th?<k4?:283>5}#9l<18o64H5`:?M2fn2c>47>5;h36f?6=3f;o:7>5;|`747<72=0;6=u+1d49531<@=h27E:nf:k6<?6=3`<;6=44i0fe>5<<g8n=6=44}c63a?6=;3:1<v*>e787f==O<k30D9oi;h7;>5<<a8?i6=44o0f5>5<<uk>;<7>54;294~"6m?0:::5G4c;8L1ga3`?36=44i7294?=n9ml1<75`1e494?=zj=:o6=4<:183\7f!7b>3>i46F;b89K0d`<a<21<75f14`94?=h9m<1<75rb2df>5<3290;w)?j6;353>N3j01C8lh4i4:94?=n>90;66g>dg83>>i6l?0;66sm41a94?5=83:p(<k9:5`;?M2e12B?mk5f5983>>o6=k0;66a>d783>>{e;oi1<7:50;2x 4c128<<7E:m9:J7ec=n=10;66g90;29?l7cn3:17b?k6;29?xd3;:0;684?:1y'5`0=99;0D9l6;I6bb>"69?097d;=:188m00=831b9o4?::k6b?6=3f;oh7>5;|`774<72<0;6=u+1d49552<@=h27E:nf:&253<?3`?96=44i4494?=n=o0;66g>db83>>i6lm0;66sm42094?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi8>:50;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<:?1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa060=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm42594?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi8>650;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<:31<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa01d=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm45c94?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi89750;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<=21<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa011=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm45494?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi89;50;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<=>1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa015=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm47;94?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi8;650;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<?=1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa030=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm47794?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi8;:50;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<?81<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa037=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm47294?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi88h50;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<<o1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa00b=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm44a94?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi88l50;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<<k1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa00?=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm44594?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi88850;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<<?1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa002=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm44194?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi88<50;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<<;1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa006=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm45d94?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi89k50;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<?l1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa03c=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm47f94?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi8;m50;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<?h1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa03g=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm47194?3=83:p(<k9:022?M2e12B?mk5+10496>o2:3:17d;9:188m0d=831b9k4?::m2`a<722wi88650;794?6|,8o=6<>>;I6a=>N3io1/=<852:k66?6=3`?=6=44i4`94?=n=o0;66a>de83>>{e<=n1<7;50;2x 4c128::7E:m9:J7ec=#98<1>6g:2;29?l312900e8l50;9j1c<722e:hi4?::\7fa01e=83?1<7>t$0g5>4663A>i56F;ag9'540=:2c>>7>5;h75>5<<a<h1<75f5g83>>i6lm0;66sm4`;94?5=83:p(<k9:043?M2e12B?mk5+10495==n99k1<75f11`94?=h9m<1<75rb5;f>5<4290;w)?j6;354>N3j01C8lh4$035>4><a8:j6=44i02a>5<<g8n=6=44}c05g?6=;3:1<v*>e78225=O<k30D9oi;%322?7b3`;;m7>5;h33f?6=3f;o:7>5;|`14d<72:0;6=u+1d49536<@=h27E:nf:&253<6m2c:<l4?::k24g<722e:h;4?::\7fa5c0=8391<7>t$0g5>4073A>i56F;ag9'540=9l1b==o50;9j55d=831d=i850;9~f4`229086=4?{%3f2?7182B?n45G4`d8 47128o0e<>n:188m46e2900c<j9:188yg7a<3:1?7>50z&2a3<6>91C8o74H5ce?!76>3;n7d??a;29?l77j3:17b?k6;29?xd6n:0;6>4?:1y'5`0=9?:0D9l6;I6bb>"69?0:i6g>0`83>>o68k0;66a>d783>>{e9o81<7=50;2x 4c128<;7E:m9:J7ec=#98<1=h5f11c94?=n99h1<75`1e494?=zj8l:6=4<:183\7f!7b>3;=<6F;b89K0d`<,8;=6<k4i02b>5<<a8:i6=44o0f5>5<<uk;m<7>53;294~"6m?0::=5G4c;8L1ga3-;::7?j;h33e?6=3`;;n7>5;n3g2?6=3th:ik4?:283>5}#9l<1=;>4H5`:?M2fn2.:=;4>e:k24d<722c:<o4?::m2`3<722wi=hk50;194?6|,8o=6<8?;I6a=>N3io1/=<851d9j55g=831b==l50;9l5a0=831vn<kk:180>5<7s-;n:7?90:J7f<=O<hl0(<?9:0g8m46f2900e<>m:188k4b12900qo?jc;297?6=8r.:i;4>619K0g?<@=km7)?>6;3f?l77i3:17d??b;29?j7c>3:17pl>ec83>6<729q/=h851728L1d>3A>jj6*>1782a>o68h0;66g>0c83>>i6l?0;66sm1dc94?5=83:p(<k9:043?M2e12B?mk5+10495`=n99k1<75f11`94?=h9m<1<75rb0g:>5<4290;w)?j6;354>N3j01C8lh4$035>4c<a8:j6=44i02a>5<<g8n=6=44}c3f<?6=;3:1<v*>e78225=O<k30D9oi;%322?7b3`;;m7>5;h33f?6=3f;o:7>5;|`2a2<72:0;6=u+1d49536<@=h27E:nf:&253<6m2c:<l4?::k24g<722e:h;4?::\7fa63c=83>1<7>t$0g5>4053A>i56F;ag9'540=:m1b==o50;9j55d=831b==m50;9l5a0=831vn?>l:187>5<7s-;n:7?92:J7f<=O<hl0(<?9:3f8m46f2900e<>m:188m46d2900c<j9:188yg5703:187>50z&2a3<6>;1C8o74H5ce?!76>38=7d??a;29?l77j3:17d??c;29?j7c>3:17pl=7183>0<729q/=h851778L1d>3A>jj6*>17816>o68h0;66g>0c83>>o68j0;66g>0e83>>i6l?0;66sm21g94?3=83:p(<k9:046?M2e12B?mk5+104967=n99k1<75f11`94?=n99i1<75f11f94?=h9m<1<75rb22e>5<2290;w)?j6;351>N3j01C8lh4$035>03<a8:j6=44i02a>5<<a8:h6=44i02g>5<<g8n=6=44}c13f?6==3:1<v*>e78220=O<k30D9oi;%322?443`;;m7>5;h33f?6=3`;;o7>5;h33`?6=3f;o:7>5;|`0b7<72:0;6=u+1d49536<@=h27E:nf:&253<602c:<l4?::k24g<722e:h;4?::\7fa752=83>1<7>t$0g5>4053A>i56F;ag9'540=:91b==o50;9j55d=831b==m50;9l5a0=831vn?9=:180>5<7s-;n:7?90:J7f<=O<hl0(<?9:0g8m46f2900e<>m:188k4b12900qo<>0;297?6=8r.:i;4>619K0g?<@=km7)?>6;3f?l77i3:17d??b;29?j7c>3:17pl=7583>1<729q/=h851708L1d>3A>jj6*>1781`>o68h0;66g>0c83>>o68j0;66a>d783>>{e:881<7:50;2x 4c128<97E:m9:J7ec=#98<1>i5f11c94?=n99h1<75f11a94?=h9m<1<75rb355>5<2290;w)?j6;351>N3j01C8lh4$035>74<a8:j6=44i02a>5<<a8:h6=44i02g>5<<g8n=6=44}c020?6==3:1<v*>e78220=O<k30D9oi;%322?453`;;m7>5;h33f?6=3`;;o7>5;h33`?6=3f;o:7>5;|`046<72<0;6=u+1d49533<@=h27E:nf:&253<6l2c:<l4?::k24g<722c:<n4?::k24a<722e:h;4?::\7fa0<0=8391<7>t$0g5>4073A>i56F;ag9'540=n01b==o50;9j55d=831d=i850;9~f6g>29086=4?{%3f2?7182B?n45G4`d8 4712;h0e<>n:188m46e2900c<j9:188yg5>>3:1?7>50z&2a3<6>91C8o74H5ce?!76>38i7d??a;29?l77j3:17b?k6;29?xd4;?0;6>4?:1y'5`0=9?:0D9l6;I6bb>"69?09n6g>0`83>>o68k0;66a>d783>>{e;;91<7=50;2x 4c128<;7E:m9:J7ec=#98<1>o5f11c94?=n99h1<75`1e494?=zj:k36=4::183\7f!7b>3;=96F;b89K0d`<,8;=6?m4i02b>5<<a8:i6=44i02`>5<<a8:o6=44o0f5>5<<uk9297>55;294~"6m?0::85G4c;8L1ga3-;::7<l;h33e?6=3`;;n7>5;h33g?6=3`;;h7>5;n3g2?6=3th8?84?:483>5}#9l<1=;;4H5`:?M2fn2.:=;4=c:k24d<722c:<o4?::k24f<722c:<i4?::m2`3<722wi??<50;794?6|,8o=6<8:;I6a=>N3io1/=<852b9j55g=831b==l50;9j55e=831b==j50;9l5a0=831vn?k6:186>5<7s-;n:7?95:J7f<=O<hl0(<?9:69j55g=831b==l50;9j55e=831b==j50;9l5a0=831vn>o8:186>5<7s-;n:7?95:J7f<=O<hl0(<?9:3a8m46f2900e<>m:188m46d2900e<>k:188k4b12900qo=64;291?6=8r.:i;4>649K0g?<@=km7)?>6;0`?l77i3:17d??b;29?l77k3:17d??d;29?j7c>3:17pl<3583>0<729q/=h851778L1d>3A>jj6*>1781g>o68h0;66g>0c83>>o68j0;66g>0e83>>i6l?0;66sm33394?3=83:p(<k9:046?M2e12B?mk5+10496f=n99k1<75f11`94?=n99i1<75f11f94?=h9m<1<75rb2c5>5<2290;w)?j6;351>N3j01C8lh4$035>7e<a8:j6=44i02a>5<<a8:h6=44i02g>5<<g8n=6=44}c1:7?6==3:1<v*>e78220=O<k30D9oi;%322?4d3`;;m7>5;h33f?6=3`;;o7>5;h33`?6=3f;o:7>5;|`076<72<0;6=u+1d49533<@=h27E:nf:&253<5k2c:<l4?::k24g<722c:<n4?::k24a<722e:h;4?::\7fa776=83?1<7>t$0g5>4023A>i56F;ag9'540=:j1b==o50;9j55d=831b==m50;9j55b=831d=i850;9~f65e290?6=4?{%3f2?71:2B?n45G4`d8 4712oo0e<>n:188m46e2900e<>l:188k4b12900qo=nf;291?6=8r.:i;4>649K0g?<@=km7)?>6;6e?l77i3:17d??b;29?l77k3:17d??d;29?j7c>3:17pl<a483>0<729q/=h851778L1d>3A>jj6*>1781g>o68h0;66g>0c83>>o68j0;66g>0e83>>i6l?0;66sm38094?3=83:p(<k9:046?M2e12B?mk5+10496f=n99k1<75f11`94?=n99i1<75f11f94?=h9m<1<75rb211>5<2290;w)?j6;351>N3j01C8lh4$035>7e<a8:j6=44i02a>5<<a8:h6=44i02g>5<<g8n=6=44}c12b?6==3:1<v*>e78220=O<k30D9oi;%322?4d3`;;m7>5;h33f?6=3`;;o7>5;h33`?6=3f;o:7>5;|`13<<72:0;6=u+1d49536<@=h27E:nf:&253<5j2c:<l4?::k24g<722e:h;4?::\7fa641=8391<7>t$0g5>4073A>i56F;ag9'540=:k1b==o50;9j55d=831d=i850;9~f71d290?6=4?{%3f2?71:2B?n45G4`d8 4712;;0e<>n:188m46e2900e<>l:188k4b12900qo<>a;290?6=8r.:i;4>639K0g?<@=km7)?>6;02?l77i3:17d??b;29?l77k3:17b?k6;29?xd5?10;684?:1y'5`0=9??0D9l6;I6bb>"69?09i6g>0`83>>o68k0;66g>0b83>>o68m0;66a>d783>>{e:8<1<7;50;2x 4c128<>7E:m9:J7ec=#98<1>h5f11c94?=n99h1<75f11a94?=n99n1<75`1e494?=zj;oi6=4<:183\7f!7b>3;=<6F;b89K0d`<,8;=6<64i02b>5<<a8:i6=44o0f5>5<<uk9in7>53;294~"6m?0::=5G4c;8L1ga3-;::7?j;h33e?6=3`;;n7>5;n3g2?6=3th9ii4?:583>5}#9l<1=;<4H5`:?M2fn2.:=;4>0:k24d<722c:<o4?::k24f<722e:h;4?::\7fa7ge=83>1<7>t$0g5>4053A>i56F;ag9'540=:=1b==o50;9j55d=831b==m50;9l5a0=831vn?ki:186>5<7s-;n:7?95:J7f<=O<hl0(<?9:0d8m46f2900e<>m:188m46d2900e<>k:188k4b12900qo<i1;290?6=8r.:i;4>639K0g?<@=km7)?>6;0b?l77i3:17d??b;29?l77k3:17b?k6;29?xd4jo0;694?:1y'5`0=9?80D9l6;I6bb>"69?0>?6g>0`83>>o68k0;66g>0b83>>i6l?0;66sm2g694?3=83:p(<k9:046?M2e12B?mk5+104972=n99k1<75f11`94?=n99i1<75f11f94?=h9m<1<75rb2a3>5<2290;w)?j6;351>N3j01C8lh4$035>cb<a8:j6=44i02a>5<<a8:h6=44i02g>5<<g8n=6=44}c0e`?6==3:1<v*>e78220=O<k30D9oi;%322?3<a8:j6=44i02a>5<<a8:h6=44i02g>5<<g8n=6=44}c1a`?6=<3:1<v*>e78227=O<k30D9oi;%322?403`;;m7>5;h33f?6=3`;;o7>5;n3g2?6=3th9jl4?:483>5}#9l<1=;;4H5`:?M2fn2.:=;4;e:k24d<722c:<o4?::k24f<722c:<i4?::m2`3<722wi>k650;794?6|,8o=6<8:;I6a=>N3io1/=<851178m46f2900e<>m:188m46d2900e<>k:188k4b12900qo<ib;291?6=8r.:i;4>649K0g?<@=km7)?>6;db?l77i3:17d??b;29?l77k3:17d??d;29?j7c>3:17pl<5483>7<729q/=h8514d8L1d>3A>jj6*>178f?l77i3:17b?k6;29?xd4=:0;6?4?:1y'5`0=9<l0D9l6;I6bb>"69?0n7d??a;29?j7c>3:17pl<5083>7<729q/=h8514d8L1d>3A>jj6*>178f?l77i3:17b?k6;29?xd4<o0;6?4?:1y'5`0=9<l0D9l6;I6bb>"69?0n7d??a;29?j7c>3:17pl<4e83>7<729q/=h8514d8L1d>3A>jj6*>178f?l77i3:17b?k6;29?xd4<k0;6?4?:1y'5`0=9<l0D9l6;I6bb>"69?0n7d??a;29?j7c>3:17pl<4883>7<729q/=h8514d8L1d>3A>jj6*>178f?l77i3:17b?k6;29?xd4<>0;6?4?:1y'5`0=9<l0D9l6;I6bb>"69?0n7d??a;29?j7c>3:17pl;0c83>7<729q/=h8514d8L1d>3A>jj6*>178f?l77i3:17b?k6;29?xd3800;6?4?:1y'5`0=9<l0D9l6;I6bb>"69?0n7d??a;29?j7c>3:17pl;0683>7<729q/=h8514d8L1d>3A>jj6*>178f?l77i3:17b?k6;29?xd38<0;6?4?:1y'5`0=9<l0D9l6;I6bb>"69?0n7d??a;29?j7c>3:17pl;0283>7<729q/=h8514d8L1d>3A>jj6*>178f?l77i3:17b?k6;29?xd3880;6?4?:1y'5`0=9<l0D9l6;I6bb>"69?0n7d??a;29?j7c>3:17pl<fg83>7<729q/=h8514d8L1d>3A>jj6*>178f?l77i3:17b?k6;29?xd4nm0;6?4?:1y'5`0=9<l0D9l6;I6bb>"69?0n7d??a;29?j7c>3:17pl<5g83>7<729q/=h8514d8L1d>3A>jj6*>178f?l77i3:17b?k6;29?xd39<0;6?4?:1y'5`0=9<l0D9l6;I6bb>"69?0n7d??a;29?j7c>3:17pl<0183>0<729q/=h851778L1d>3A>jj6*>1780<>o68h0;66g>0c83>>o68j0;66g>0e83>>i6l?0;66sm2gd94?2=83:p(<k9:041?M2e12B?mk5+10496==n99k1<75f11`94?=n99i1<75`1e494?=zj::96=4::183\7f!7b>3;=96F;b89K0d`<,8;=6;5f11c94?=n99h1<75f11a94?=n99n1<75`1e494?=zj:i96=4;:183\7f!7b>3;=>6F;b89K0d`<,8;=6?64i02b>5<<a8:i6=44i02`>5<<g8n=6=44}c1a=?6==3:1<v*>e78220=O<k30D9oi;%322?0<a8:j6=44i02a>5<<a8:h6=44i02g>5<<g8n=6=44}c1`0?6==3:1<v*>e78220=O<k30D9oi;%322?333`;;m7>5;h33f?6=3`;;o7>5;h33`?6=3f;o:7>5;|`1b`<72<0;6=u+1d49533<@=h27E:nf:&253<a3`;;m7>5;h33f?6=3`;;o7>5;h33`?6=3f;o:7>5;|`0f`<72<0;6=u+1d49533<@=h27E:nf:&253<5=2c:<l4?::k24g<722c:<n4?::k24a<722e:h;4?::\7fa6c0=83?1<7>t$0g5>4023A>i56F;ag9'540=:01b==o50;9j55d=831b==m50;9j55b=831d=i850;9~f7`2290>6=4?{%3f2?71=2B?n45G4`d8 47128l0e<>n:188m46e2900e<>l:188m46c2900c<j9:188yg5d;3:197>50z&2a3<6><1C8o74H5ce?!76>3827d??a;29?l77j3:17d??c;29?l77l3:17b?k6;29?xd4k80;684?:1y'5`0=9??0D9l6;I6bb>"69?0996g>0`83>>o68k0;66g>0b83>>o68m0;66a>d783>>{e:oi1<7;50;2x 4c128<>7E:m9:J7ec=#98<1h6g>0`83>>o68k0;66g>0b83>>o68m0;66a>d783>>{e;kk1<7<50;2x 4c128?27E:m9:J7ec=n9931<75`1e494?=zj=3?6=4na;294~"6m?0:hh5G4c;8L1ga3S?:6lu=f;13>47=9;0:57?n:0195g<6<3;h6p*>5487?!72>3>0(<>j:59'55`=<2.:==4;;%325?2<,8;9695+10190>"6m;087)?j3;18 4702=1/=<654:&25<<33-;:m7:4$03a>1=#98i186*>1e87?!76m3>0(<?i:59'576=<2.:><4;;%316?2<,888695+13690>"6:<0?7)?=6;68 4402=1/=?654:&26<<33-;9m7:4$00a>1=#9;i186*>2e87?!75m3>0(<<i:59'566=<2.:?<4;;%306?2<,898695+12690>"6;<0?7)?<6;68 4502=1/=>654:&27<<33-;8m7:4$01a>1=#9:i186*>3e87?!74m3>0(<=i:59'516=<2.:8<4;;%376?2<,8>8695+15690>"6<<0?7)?;6;68 4202=1/=9654:&20<<33-;?m7:4$06a>1=#9=i186*>4e87?!73m3>0(<:i:59'506=<2.:9<4;;%366?2<,8?8695+14690>"3j?0?n95+10690>"6m90:h85+14597>"6=1087):m5;6a0>"69<0?7d;6:188m0g=831bjo4?::keg?6=3`;n87>5;h3f1?6=3`>i>7>5;h6a7?6=3`>96=4+1e`904=i9mk1<65f4183>!7cj3>:7c?ka;38?l5a290/=il5409m5ag=:21b?h4?:%3gf?263g;om7=4;h1g>5<#9mh18<5a1ec90>=n;j0;6)?kb;62?k7ci3?07d=m:18'5ad=<81e=io56:9j7d<72-;on7:>;o3ge?1<3`926=4+1e`904=i9mk1465f4b83>!7cj3>i7c?ka;28?l2f290/=il54c9m5ag=921b844?:%3gf?2e3g;om7<4;h6;>5<#9mh18o5a1ec97>=n<>0;6)?kb;6a?k7ci3>07d:9:18'5ad=<k1e=io55:9j00<72-;on7:m;o3ge?0<3`>?6=4+1e`90g=i9mk1;65f4283>!7cj3>i7c?ka;:8?l1f290/=il5789m5ag=821b;54?:%3gf?1>3g;om7?4;h55>5<#9mh1;45a1ec96>=n?<0;6)?kb;5:?k7ci3907d9;:18'5ad=?01e=io54:9j36<72-;on796;o3ge?3<3`=96=4+1e`93<=i9mk1:65f7083>!7cj3=27c?ka;58?l17290/=il5789m5ag=021b:k4?:%3gf?1>3g;om774;h4f>5<#9mh1;45a1ec9e>=n>m0;6)?kb;5:?k7ci3h07d8m:18'5ad=?01e=io5c:9j2d<72-;on796;o3ge?b<3`<26=4+1e`93<=i9mk1i65f6983>!7cj3=27c?ka;d8?l00290/=il5789m5ag=9910e;850;&2`g<012d:hl4>1:9j20<72-;on796;o3ge?7532c=87>5$0fa>2?<f8nj6<=4;h40>5<#9mh1;45a1ec951=<a?81<7*>dc84=>h6lh0:965f8083>!7cj3=27c?ka;35?>o?83:1(<jm:6;8j4bf28=07d9i:18'5ad=?01e=io51998m2c=83.:ho489:l2`d<6121b;i4?:%3gf?1>3g;om7?n;:k4g?6=,8ni6:74n0fb>4d<3`=i6=4+1e`93<=i9mk1=n54i6594?"6lk0<56`>d`82`>=n>j0;6)?kb;5:?k7ci3;n76g91;29 4be2>30b<jn:0d8?l?e290/=il59`9m5ag=821b544?:%3gf??f3g;om7?4;h;4>5<#9mh15l5a1ec96>=n1?0;6)?kb;;b?k7ci3907d7::18'5ad=1h1e=io54:9j=1<72-;on77n;o3ge?3<3`386=4+1e`9=d=i9mk1:65f9383>!7cj33j7c?ka;58?l?6290/=il59`9m5ag=021b5=4?:%3gf??f3g;om774;h:e>5<#9mh15l5a1ec9e>=n0l0;6)?kb;;b?k7ci3h07d6l:18'5ad=1h1e=io5c:9j<g<72-;on77n;o3ge?b<3`2j6=4+1e`9=d=i9mk1i65f8883>!7cj33j7c?ka;d8?l>?290/=il59`9m5ag=9910e5950;&2`g<>i2d:hl4>1:9j<3<72-;on77n;o3ge?7532c397>5$0fa><g<f8nj6<=4;h:7>5<#9mh15l5a1ec951=<a191<7*>dc8:e>h6lh0:965fa383>!7cj33j7c?ka;35?>of93:1(<jm:8c8j4bf28=07do?:18'5ad=1h1e=io51998m<`=83.:ho46a:l2`d<6121b5h4?:%3gf??f3g;om7?n;:k:`?6=,8ni64o4n0fb>4d<3`3h6=4+1e`9=d=i9mk1=n54i8:94?"6lk02m6`>d`82`>=n0m0;6)?kb;;b?k7ci3;n76g72;29 4be20k0b<jn:0d8?lg0290/=il5a79m5ag=821bm84?:%3gf?g13g;om7?4;hc7>5<#9mh1m;5a1ec96>=ni:0;6)?kb;c5?k7ci3907dol:18'5ad=ik1e=io50:9jed<72-;on7om;o3ge?7<3`k26=4+1e`9eg=i9mk1>65fa983>!7cj3ki7c?ka;18?je1290/=il5c49m5ag=821do94?:%3gf?e23g;om7?4;na1>5<#9mh1o85a1ec96>=hk80;6)?kb;a6?k7ci3907bm?:18'5ad=k<1e=io54:9lfc<72-;on7m:;o3ge?3<3fhn6=4+1e`9g0=i9mk1:65`be83>!7cj3i>7c?ka;58?jdd290/=il5c49m5ag=021dno4?:%3gf?e23g;om774;n`b>5<#9mh1o85a1ec9e>=hj00;6)?kb;a6?k7ci3h07bl8:18'5ad=k<1e=io5c:9lf3<72-;on7m:;o3ge?b<3fh>6=4+1e`9g0=i9mk1i65`b583>!7cj3i>7c?ka;d8?jd4290/=il5c49m5ag=9910co<50;&2`g<d=2d:hl4>1:9lf4<72-;on7m:;o3ge?7532ei<7>5$0fa>f3<f8nj6<=4;nce>5<#9mh1o85a1ec951=<gho1<7*>dc8`1>h6lh0:965`ce83>!7cj3i>7c?ka;35?>idk3:1(<jm:b78j4bf28=07bmm:18'5ad=k<1e=io51998kfg=83.:ho4l5:l2`d<6121do44?:%3gf?e23g;om7?n;:m`<?6=,8ni6n;4n0fb>4d<3fi<6=4+1e`9g0=i9mk1=n54ob194?"6lk0h96`>d`82`>=hj10;6)?kb;a6?k7ci3;n76and;29 4be2j?0b<jn:0d8?j`4290/=il5f39m5ag=821dj<4?:%3gf?`53g;om7?4;nd3>5<#9mh1j?5a1ec96>=hmo0;6)?kb;d1?k7ci3907bk8:18'5ad=m?1e=io50:9la0<72-;on7k9;o3ge?7<3fo86=4+1e`9a3=i9mk1>65`e383>!7cj3o=7c?ka;18?jc6290/=il5e79m5ag=<21di=4?:%3gf?c13g;om7;4;nfe>5<#9mh1i;5a1ec92>=hll0;6)?kb;g5?k7ci3=07bjk:18'5ad=m?1e=io58:9l`f<72-;on7k9;o3ge??<3fni6=4+1e`9a3=i9mk1m65`d`83>!7cj3o=7c?ka;`8?jb?290/=il5e79m5ag=k21dh:4?:%3gf?c13g;om7j4;nf5>5<#9mh1i;5a1ec9a>=hl<0;6)?kb;g5?k7ci3l07bj;:18'5ad=m?1e=io51198ka5=83.:ho4j6:l2`d<6921dh?4?:%3gf?c13g;om7?=;:mg5?6=,8ni6h84n0fb>45<3fn;6=4+1e`9a3=i9mk1=954obd94?"6lk0n:6`>d`821>=hml0;6)?kb;g5?k7ci3;=76ajd;29 4be2l<0b<jn:058?jcd290/=il5e79m5ag=9110chl50;&2`g<b>2d:hl4>9:9lad<72-;on7k9;o3ge?7f32en57>5$0fa>`0<f8nj6<l4;ng;>5<#9mh1i;5a1ec95f=<gl>1<7*>dc8f2>h6lh0:h65`d883>!7cj3o=7c?ka;3f?>idm3:1(<jm:d48j4bf28l07bh7:18'5ad=n>1e=io50:9lb3<72-;on7h8;o3ge?7<3fl>6=4+1e`9b2=i9mk1>65`f583>!7cj3l<7c?ka;18?xd48<0;694?:1y'5`0=9?;0D9l6;I6bb>"69?0:i6g>0`83>>o68k0;66a>5b83>>i6l?0;66sm2g094?3=83:p(<k9:040?M2e12B?mk5+104962=n99k1<75f11`94?=n99i1<75`14a94?=h9m<1<75rb3d:>5<3290;w)?j6;350>N3j01C8lh4$035>7><a8:j6=44i02a>5<<a8:h6=44o07`>5<<uz?h87>56z\6g1=:;921==m4=22e>46c349;n7??d:?041<68j16?==511a8yv2c83:1;=uQ4e08Z1e53W?ho6P:c`9]0f7<V<i<7S;9f:\6gg=Y=>:0R86i;_6`b>X3kl1U8nj4^5a`?[2dj2T?ol5Q4b;8Z1e?3W>h;6P;c79>0gg=99=019o::4d891?f2<l019o;:4d891g42<l019o=:4d891gc2<l019ol:4d897bb28nh70<kf;3gg>;5m90:hn522d395ae<5;o96<jl;<0f7?7ck279i94>db9>6`3=9mi01?k9:0f`?84b?3;oo63<18854>;4910=<63<16854>;49?0=<63<14854>;4:j0=<63<2c854>;4:h0=<63<28854>;4:10=<63<8b854>;40k0=<63<8`854>;4000=<63<89854>;41o0=<63<9d854>;41m0=<63<9b854>;41k0=<63<55854>;4=;0=<63<51854>;4<l0=<63<4b854>;4<h0=<63<49854>;4<?0=<63;0`854>;3810=<63;07854>;38=0=<63;03854>;3890=<63<fd854>;4nj0=<63;9582a1=:<0>18o=4=5;7><d<5=3?6474=5;7><1<5=3?6484=5;7><3<5=3?64:4=5;7><5<5=3?64<4=5;7><7<5=3?64>4=5;7>=`<5=3?65k4=5;7>=e<5=3?65l4=5;7>=g<5=3?6574=5;7>=><5=3?6594=5;7>=0<5=3?65;4=5;7>=2<5=3?65=4=5;7>d4<5=3?6l?4=5;7>d6<5=3?64h4=5;7><c<5=3?64j4=5;7><e<5=3?6464=5;7>=b<5=3?65<4=5;7>de<5=3?6lo4=5;7>d?<5=3?6l64}r7`2?6=;rT>o;524`795ae<5=3j6<jl;|q623<72;qU9;84=22g>4bc3ty>i>4?:2y]1`5<5:l96<>m;<1bb?77k2wx9lk50;51\7f[3fm27?5n4:2:?7=g<2:27?5l4:2:?7e1<2:27?m>4:2:?7e7<2:278?44:2:?1``<2:279hk4:2:?1a5<2:279i<4:2:?1a7<2:279i>4:2:?1a1<2:279i84:2:?1a3<2:279i:4:2:?12d<2:279:44:2:?12=<2:279::4:2:?123<2:279:84:2:?121<2:279:>4:2:?127<2:279n?4:2:?1f4<2:279n=4:2:?1ec<2:279mh4:2:?1ea<2:279mn4:2:?1eg<2:279ml4:2:?1e5<2:2795k4:2:?1=`<2:2795i4:2:?1=f<2:2795o4:2:?1=d<2:279544:2:?1==<2:279>n4:2:?16g<2:279>l4:2:?16<<2:279>54:2:?162<2:279>;4:2:?160<2:279>94:2:?034<2:278;=4:2:?02c<2:278:h4:2:?02a<2:278:n4:2:?02d<2:278:44:2:?02g<2:2784>4:2:?0<7<2:2784<4:2:?0<5<2:278;k4:2:?03`<2:278;i4:2:?03f<2:278;o4:2:?04<<2:278<;4:2:?055<2:278<i4:2:?04f<2:27?:44:2:?72=<2:27?::4:2:?723<2:27?:84:2:?721<2:27?:?4:2:?724<2:27?:=4:2:?71c<2:27?9h4:2:?71a<2:27?9n4:2:?71g<2:27?9l4:2:?71<<2:27?9:4:2:?713<2:27?984:2:?711<2:27?9>4:2:?717<2:27?9<4:2:?715<2:27?8k4:2:?70`<2:27?:k4:2:?72`<2:27?:i4:2:?72f<2:27?:o4:2:?72d<2:27?:>4:2:?71=<2:27?8i4:2:?70f<2:27?594:a:\7fp13e=838pR88l;<1b`?7cl2wx9nj50;71\7f[3dl27?m:4:2:?7e0<2:27?m;4:2:?7ea<2:27?mn4:2:?0ea<2:278mn4:2:?0a5<2:278i<4:2:?0a7<2:278i>4:2:?0a1<2:278i84:2:?0a3<2:278i:4:2:?0a=<2:278i44:2:?14=<2:279<:4:2:?143<2:279<84:2:?141<2:279<>4:2:?147<2:279<<4:2:?145<2:2799=4:2:?10c<2:2798h4:2:?10a<2:2798n4:2:?10g<2:2798l4:2:?10<<2:279854:2:?17`<2:279?i4:2:?17f<2:279?o4:2:?17d<2:279?44:2:?17=<2:279?:4:2:?173<2:2794h4:2:?1<a<2:2794n4:2:?1<g<2:2794l4:2:?1<<<2:279454:2:?1<2<2:2794;4:2:?762<2:27?>;4:2:?760<2:27?>94:2:?766<2:27?>?4:2:?765<2:27?=k4:2:?764<2:27??>4:2:?774<2:27???4:2:?771<2:27??84:2:?773<2:27??:4:2:?77=<2:27??44:2:?70g<2:27?8l4:2:?70<<2:27?854:2:?702<2:27?8;4:2:?700<2:27?894:2:?706<2:27?594:9:\7fp1`4=838pR8j8;<1f=?7cl2wx9h>50;0xZ0b1349n47?kd:\7fp1a`=838pR8j:;<1f3?7cl2wx9ik50;0xZ0b3349n:7?kd:\7fp1ab=838pR8j<;<1f1?7cl2wx9im50;0xZ0b5349n87?kd:\7fp1ad=838pR8j>;<1f7?7cl2wx9io50;0xZ0b7349n>7?kd:\7fp1a?=838pR8mi;<1f5?7cl2wx9i650;0xZ0eb349n<7?kd:\7fp10b=838pR8=6;<65=?7cl2wx98l50;0xZ05?34>=47?kd:\7fp10g=838pR8=8;<653?7cl2wx98750;0xZ05134>=:7?kd:\7fp10>=838pR8=:;<651?7cl2wx98950;0xZ05334>=87?kd:\7fp103=838pR8==;<656?7cl2wx98:50;0xZ05634>==7?kd:\7fp105=838pR8=?;<654?7cl2wx98<50;0xZ04a34>>j7?kd:\7fp107=838pR8<j;<66a?7cl2wx98>50;0xZ04c34>>h7?kd:\7fp11`=838pR8<l;<66g?7cl2wx99k50;0xZ04e34>>n7?kd:\7fp11b=838pR8<n;<66e?7cl2wx99m50;0xZ04>34>>57?kd:\7fp11g=838pR8<8;<663?7cl2wx99750;0xZ04134>>:7?kd:\7fp11>=838pR8<:;<661?7cl2wx99950;0xZ04334>>87?kd:\7fp110=838pR8<<;<667?7cl2wx99;50;0xZ04534>>>7?kd:\7fp112=838pR8<>;<665?7cl2wx99=50;0xZ04734>><7?kd:\7fp114=838pR8?i;<67b?7cl2wx99?50;0xZ07b34>?i7?kd:\7fp132=838pR8=i;<65b?7cl2wx9;=50;0xZ05b34>=i7?kd:\7fp134=838pR8=k;<65`?7cl2wx9;?50;0xZ05d34>=o7?kd:\7fp136=838pR8=m;<65f?7cl2wx98h50;0xZ05f34>=m7?kd:\7fp10c=838pR8=<;<657?7cl2wx98850;0xZ04?34>>47?kd:\7fp11d=838pR8?k;<67`?7cl2wx99>50;0xZ07d34>?o7?kd:\7fp1f5=838pR8l7;<0f3?7cl2wx9n?50;0xZ0d0348n:7?kd:\7fp1f6=838pR8l9;<0f1?7cl2wx9oh50;0xZ0d2348n87?kd:\7fp1gc=838pR8l;;<0f7?7cl2wx9oj50;0xZ0d4348n>7?kd:\7fp1ge=838pR8l=;<0f5?7cl2wx9ol50;0xZ0d6348n<7?kd:\7fp1gg=838pR8l?;<0gb?7cl2wx9o750;0xZ0ga348oi7?kd:\7fp142=838pR9h?;<6:0?g03ty>=?4?:3y]0``<5=3?6:o4}r725?6=:rT?ih5248693==z{<;;6=4={_6f`>;31=0<:6s|51d94?4|V=oh70:64;56?xu28l0;6?uQ4d`891?32>>0q~;?c;296~X3m01684:5729~w06e2909wS:j8:?7=1<0:2wx9=o50;0xZ1c034>2879>;|q64<<72;qU8h84=5;7>d3<uz?;47>52z\7a0=:<0>1;=5rs424>5<5sW>n863;9585b>{t=9<1<7<t^5g0?82><3<n7p}:0483>7}Y<l80197;:7f8yv37<3:1>vP;e09>0<2=>k1v\7f8><:181\7f[2b827?5949a:\7fp157=838pR9jj;<6:0?0>3ty><=4?:3y]0ab<5=3?6;64}r6eb?6=:rT?hn524869e1=z{=ln6=4={_6gf>;31=0=;6s|4gf94?4|V=nj70:64;45?xu3nj0;6?uQ4e;891?32??0q~:ib;296~X3l11684:5659~w1`f2909wS:k7:?7=1<1;2wx8k750;0xZ1b134>2878=;|q7b=<72;qU8i;4=5;7>=7<uz?:n7>52z\7b3=:<0>14=5rs43b>5<5sW>m963;958b7>{t=831<7<t^5d7?82><3=m7p}:1983>7}Y<o90197;:6g8yv36?3:1>vP;f39>0<2=?m1v\7f8?9:181\7f[2a927?5948c:\7fp143=838pR9kn;<6:0?1e3ty><i4?:3y]0a`<5=3?6:94}r736?6=:rT?h95248692f=z{=l<6=4={_6g7>;31=0==6s|17`94?c|5=hi6<j7;<0`7?3?348o87;7;<1`1?3?349o:7;7;<121?3?349947;7;<1;<?3?3492n7;7;<162?3?349?:7;7;<63g?3?349mo7;7;<6:0?`e3ty?5o4?:2y>0<e==o1684l51ef891?f2<<0q~:6c;296~;31j0:hi5248g955g<uz>j:7>53z?7e2<2n27?m84:6:?7e3<6lm1v\7f9o8:181\7f82f?3;oh63;a8824d=z{=3j6=4<{<6:f?3a34>2m7?kd:?7=`<68k1v\7f9o::180\7f82f=3;oh63;a786b>;3i00:<o5rs5;g>5<3s4>j87?kc:?7e6<6lj168l<51ea891?b28n=7p};a083>70|5=k?6<jk;<10=?7ck279hh4:b:?1`c<2j279i=4:b:?1a4<2j279i?4:b:?1a6<2j279i94:b:?1a0<2j279i;4:b:?1a2<2j278;<4:b:?035<2j278:k4:b:?02`<2j278:i4:b:?02f<2j278:l4:b:?02<<6lj16?;l55c9>7=5==k16?5<55c9>7=7==k16?5>55c9>72`==k16?:k55c9>72b==k16?:m55c9>72d==k16?=755c9>750==k16?<>55c9>75b=9mi01>>l:0f`?84b13;;o63=fd824g=::oi1==o4}r6b4?6=:<q68l=51ef8970f2<h01?86:4`8970?2<h01?88:4`897012<h01?8::4`897032<h01?8<:4`897052<h01?l=:4`897d62<h01?l?:4`897ga2<h01?oj:4`897gc2<h01?ol:4`897ge2<h01?on:4`897g72<h01?7i:4`897?b2<h01?7k:4`897?d2<h01?7m:4`897?f2<h01?76:4`897??2<h01?<l:4`8974e2<h01?<n:4`8974>2<h01?<7:4`897402<h01?<9:4`897422<h01?<;:4`8yv2>n3:1>:u24`095ab<5=<268l4=54;>0d<5=<<68l4=545>0d<5=<>68l4=547>0d<5=<968l4=542>0d<5=<;68l4=57e>0d<5=?n68l4=57g>0d<5=?h68l4=57a>0d<5=?j68l4=57:>0d<5=?<68l4=575>0d<5=?>68l4=577>0d<5=?868l4=571>0d<5=?:68l4=573>0d<5=>m68l4=56f>0d<5=<m68l4=54f>0d<5=<o68l4=54`>0d<5=<i68l4=54b>0d<5=<868l4=57;>0d<5=>o68l4=56`>0d<5=3=6<>m;<6:0?7b=2wx8l650;1x91gc28nh70:nc;3gg>;3i00:h;5rs5ca>5<50r7?mi4>de9>7db=9mi01>ol:0f`?85b83?i70=j1;7a?85b:3?i70=j3;7a?85b<3?i70=j5;7a?85b>3?i70=j7;7a?85b03?i70=j9;7a?825?3?i70:=6;7a?825=3?i70:=4;7a?825;3?i70:=2;7a?82583;oo63;1g86f>;3:80>n63;3286f>;3;80:hn5242091g=:<:>19o5242791g=:<:<19o5242591g=:<:219o5242;91g=:<=h19o5245c91g=:<=319o5245:91g=:<==19o5245491g=:<=?19o5245691g=:<=919o5rs5cb>5<5=r7?mn4>de9>65>==k16>=955c9>650==k16>=;55c9>652==k16>==55c9>654==k16>=?55c9>656==k16>8>55c9>61`==k16>9k55c9>61b==k16>9m55c9>61d==k16>9o55c9>61?==k16>9655c9>66c==k16>>j55c9>66e==k16>>l55c9>66g==k16>>755c9>66>==k16>>955c9>660==k16>5k55c9>6=b==k16>5m55c9>6=d==k16>5o55c9>6=?==k16>5655c9>6=1==k16>5855c9~w65f2909w0=<9;7e?854j3;o:6s|32;94?5|5:926<jk;<13f?77i278<>4>0`9~w7c?2909w0<ke;7e?84b13;o:6s|2dc94?4|5;nm68h4=3ga>4b13ty9in4?:3y>6`6==o16>hj51e48yv4bm3:1>v3=e086b>;5mo0:h;5rs3d3>5<5s48n>7;i;<0e5?7c>2wx>k=50;0x97c42<l01?h;:0f5?xu5n<0;6?u22d691c=::o?1=i84}r0e3?6=:r79i84:f:?1bd<6l?1v\7f?hm:181\7f84b>3?m70<ib;3g2>{t;9;1<7<t=3g4>0`<5::96<j9;|q0e`<72:q6?lj55g9>7de==o16?lh51e48yv5fk3:1?v3<ab82`a=:;o81==o4=2ce>46e3ty8hk4?:3y>7`6==o16?i851e48yv5bi3:1>v3<e086b>;4jh0:h;5rs2ga>5<5s49n>7;i;<1af?7c>2wx?hm50;0x96c42<l01>ll:0f5?xu4mm0;6?u23d691c=:;ko1=i84}r1fa?6=:r78i84:f:?0fc<6l?1v\7f>ki:181\7f85b>3?m70=l0;3g2>{t;o:1<7<t=2g4>0`<5:i:6<j9;|q0b4<72;q6?h655g9>7f2=9m<0q~=m8;296~;4m00>j63<b882`3=z{;?26=4:{<0`f?77i279o>490:?127<6lm16?><511f8967a28:o7p}<7383>0}::jh1==l4=25a>4bc34;ni7??b:?05c<68j1684:5429~w7ee2908w0<lb;3g2>;5k:0:hk522e6950d<uz8h?7>53z?1g6<6l?16>n:5599>6a3==11v\7f?jk:181\7f84c<3;o:63=e8824a=z{;?j6=4:{<0`g?77i279o9490:?126<6lm16?><511`8967a28:i7p}<7283>3}::ji1==l4=25`>4bc34;ni7??a:?2aa<68k16?<h511c891?32=>0q~<lc;297~;5kj0:h;522b695a`<5;n>6<;m;|q1g1<72:q6>n:51e4897e22<201?j9:4:8yv4d:3:1:v3=d482`3=::lh1==o4=3gg>46d348nj7??d:?1b3<68h16>k<511c8yv42j3:19v3=ce824d=::j?1:=5227695ab<5:986<>k;<114?77l2wx?::50;4x97ec28:i70=8d;3g`>;6mm0:<l521da955d<5:8;6<>l;<6:0?223ty9oi4?:2y>6fb=9m<01?m::0fe?84c>3;>n6s|2b794?5|5;i>6<j9;<0`2?3?348o;7;7;|q1f`<72<q6>i851e4897cc28:i70<jf;33e>;5n?0:<o522g0955d<uz8>o7>55z?1g`<68h16>n85619>633=9mn01>=<:02a?85583;;n6s|36794?0|5;in6<>m;<14a?7cl27:in4>0`9>5`d=99h01><?:02b?82><3>=7p}=cd83>6}::jo1=i84=3a5>4ba348o;7?:b:\7fp6f0=839p1?m9:0f5?84d?3?370<k8;7;?xu5jo0;69u22e595a0<5;om6<>m;<0e2?77k279j?4>0b9~w73c290>w0<lf;33e>;5k>0=<63=6782`a=:;:>1==j4=202>46c3ty8;;4?:7y>6f`=99h01>9i:0fg?87bj3;;m63>e`824g=:;;;1==m4=5;7>11<uz8hj7>53z?1gc<6l?16>n951ed897b?28?i7p}=c683>6}::j=1=i84=3a;>0><5;n26864}r0`4?6=?r79h54>d79>6c7=99h01?h;:02a?84a03;;n63=fd824a=::o<1==j4=3d:>46f3ty99h4?:4y>6a6=99k01?m7:728970028no70=<4;33f>;4:80:<o5rs254>5<1s48o<7??b:?0<5<6lm16=ho511c894c>28:i70==1;33e>;31=0?46s|2e294?5|5;n;6<j9;<0`<?7cn279h44>5c9~w7e?2908w0<l8;3g2>;5k00>463=d`86<>{t:j;1<79t=3f:>4b1348m87??c:?1ba<68k16>k6511c897`a28:i70<i5;33e>;5n00:<n5rs37e>5<2s48o=7??a:?1g<<18279:54>de9>763=99n01><=:02g?xu4?10;6;u22e3955d<5:2:6<jk;<3f=?77i27:i54>0c9>774=99i0197;:5;8yv4c93:1?v3=d082`3=::j31=ih4=3fb>43e3ty9o44?:2y>6f?=9m<01?mn:4:897be2<20q~<mb;292~;5lh0:h;522gf955g<5;l36<>l;<0eb?77i279j84>0c9>6c?=99h0q~<90;291~;5l;0:<l522bc925=::?31=ij4=216>46e3499>7??b:\7fp72?=83<p1?j=:02a?85?:3;oh63>e9824d=:9l=1==l4=201>46f34>287:n;|q1`7<72:q6>i<51e4897ef28nm70<kb;36f>{t:jk1<7<t=3ab>4b1348oo7;7;|q1ff<72<q6>il51e4897`f28:i70<ib;33e>;4890:<o522gd955e<uz8==7>54z?1`6<68h16>;o51ef8965128:j70==3;33e>{t;>k1<78t=3f0>46e3489o7;i;<1;7?7cl27:i:4>0`9>775=99h0197;:5a8yv4c;3:1>v3=d282`3=::mi1=8l4}r0a`?6=;r79hn4>d79>6cd=99h01>>=:02b?xu3;h0;68u23bf955g<5:i>6;>4=560>4bc34;m:7??b:?7=1<412wx=k950;6x96ec28:i70<?0;3g`>;4i<0:<i52380955b<uz9hh7>53z?0ga<6l?16?n;51ed896b128?i7p}<c483>6}:;j?1=i84=2a5>0><5:n<6864}r3e<?6=<r78oh4>0`9>657=9mn01>o::02a?85>:3;;n6s|42`94?0|5:in6<>m;<1`2?0734>?87?kd:?2b3<68h16=k;511`891?32:k0q~=le;297~;4kl0:h;523b495a`<5:n<6<;m;|q0g3<72:q6?n851e4896e02<201>j7:4:8yv5e?3:1;v3<d682`3=:;kh1==l4=2``>46d349ih7??c:?0f`<68m16?n=511`896df28:27p}>f883>1}:;jl1==o4=321>4bc349j:7??d:?0=6<68m1v\7f9=l:185\7f85dn3;;n63<c6854>;3<<0:hi521g7955g<58l?6<>m;<6:0?5e3ty8ok4?:2y>7f`=9m<01>m8:0fe?85c03;>n6s|3b594?5|5:i<6<j9;<1`<?3?349o57;7;|q0f6<72?q6?i651e4896de28:j70=mc;33e>;4jm0:<l523cg955g<5:i86<>n;|q2bd<72=q6?i>511c8976428no70=n6;33f>;41:0:<o5rs51g>5<1s49o<7??b:?0g=<1827?8;4>de9>5c2=99k01<h<:02a?82><39h7p}<d183>6}:;m:1=i84=2a;>4ba349o57?:b:\7fp7f>=839p1>m7:0f5?85d13?370=ka;7;?xu4j=0;68u23e;95a0<5:hh6<>m;<1a`?77j278nh4>0b9>7f5=99i0q~?ib;290~;4l80:<l5221695ab<5:k<6<>k;<1:0?77l2wx8>k50;4x96b628:i70=l9;43?823?3;oh63>f2824d=:9o81==l4=5;7>6b<uz9o=7>53z?0`4<6l?16?n751ed896bf28?i7p}<c883>6}:;j31=i84=2ab>0><5:ni6864}r1a1?6=>r78hl4>d79>7g`=99k01>m?:02b?85d:3;;m63<bd824g=:;j91==j4}r60b?6=>r78h?4>0`9>7fg=>91689651ef894`528:j70?i1;33f>;31=08i6s|1ga94?2|5:n96<>m;<031?7cl278m:4>0c9>7<2=99h0q~=k2;297~;4l;0:h;523bc95a`<5:ni6<;m;|q0gd<72:q6?no51e4896ee2<201>jl:4:8yv5e>3:19v3<dc82`3=:;kl1==l4=2a3>46e349h>7??b:?0g4<68j1v\7f9:?:185\7f85c;3;;m63<cc854>;3<00:hi521g3955g<58l;6<>m;<6:0?5a3ty:ji4?:5y>7a5=99h01?>9:0fg?85f03;;h63<94824a=z{:n86=4<{<1g7?7c>278oo4>dg9>7ae=9<h0q~=lb;297~;4kk0:h;523ba91==:;mn1955rs2`3>5<3s49oo7?k6:?0g5<68j16?n<511a896e628:j7p};4083>3}:;m>1==o4=2a`>36<5=>j6<jk;<3e4?77i27:ik4>0c9>0<2=<91v\7f<hj:187\7f85c<3;;n63=0682`a=:;h21==l4=2;6>46e3ty8h94?:2y>7a2=9m<01>ml:0fe?85cl3;>n6s|3ba94?4|5:ih6<j9;<1ga?3?3ty8n<4?:5y>7ab=9m<01>l6:02b?85d<3;;m63<c0824g=z{=>96=4:{<1g1?77i2794h4:f:?70g<6lm16=hh511c891?32=80q~?if;290~;4l<0:<o5221:95ab<5:k26<>m;<1:2?77j2wx?i;50;0x96b228n=70=ke;36f>{t;k81<7=t=2ff>4b1349i57??b:?0g1<68k1v\7f>?;:181\7f85613?370=>8;3g2>{t;8o1<7<t=23:>4ba3499?7?k6:\7fp761=838p1>?6:0f5?854j3;;o6s|30194?4|5:;36864=234>4b13ty8=i4?:3y>74>=9ml01><=:0f5?xu49;0;6?u230591==:;8<1=i84}r12g?6=:r78=:4>dg9>777=9m<0q~=>1;296~;49?0>463<1482`3=z{:;i6=4={<122?7cn278>=4>d79~w67f2909w0=>5;3gb>;49o0:h;5rs204>5<5s499o7;7;<11f?7c>2wx?>?50;0x964d28nm70=<6;3g2>{t;:21<7<t=20`>4b13498n7??a:\7fp770=838p1><m:4:8964f28n=7p}<3183>7}:;;h1=ih4=216>4b13ty8>84?:3y>77g==116??751e48yv55n3:1>v3<2`82`c=:;:>1=i84}r110?6=:r78>44:8:?06=<6l?1v\7f><j:181\7f85513;oj63<3282`3=z{:8o6=4={<11<?7cn278??4>d79~w6>02909w0=7c;7;?85?j3;o:6s|38394?4|5:2h6<ji;<1:2?7c>2wx?lo50;0x96>d28n=70=nf;33e>{t;1<1<7<t=2:a>0><5:2j6<j9;|q0=5<72;q6?5l51ed896?228n=7p}<8483>7}:;1k1955239;95a0<uz93j7>52z?0<d<6lo16?4:51e48yv5?<3:1>v3<8886<>;4010:h;5rs2:f>5<5s49357?kf:?0=6<6l?1v\7f>6k:181\7f85?03;oj63<9382`3=z{:3j6=4={<1:b?3?3492i7?k6:\7fp7d2=838p1>7i:0fe?85f13;o:6s|3``94?4|5:3m6<j9;<1bb?77l2wx?4750;0x96?b2<201>7k:0f5?xu4i:0;6?u238g95a`<5:k36<j9;|q0==<72;q6?4j5599>7<e=9m<0q~=n2;296~;41m0:hk523`595a0<uz92;7>52z?0=f<202785o4>d79~w6g62909w0=6c;3gb>;4i?0:h;5rs2c3>5<5s492n7?kf:?0e0<6l?1v\7f?:8:186\7f84703?m70<:0;3g`>;58h0:<o5221a955g<5;:n6<>l;|q14<<72;q6>=955g9>65g=9m<0q~<?b;296~;58?0>j63=0b82`3=z{;:o6=49{<031?3a348;i7?k6:?155<68k16><<511c8977328:h70<>6;33`>{t:9l1<7<t=327>0`<5;;;6<j9;|q154<72;q6>==55g9>644=9m<0q~<>3;296~;58;0>j63=1582`3=z{;;>6=4={<035?3a348:;7?k6:\7fp64?=838p1?>?:4d8977f28n=7p}=a883>0}::?k19k522c095ab<5;<h6<>m;<05a?77i279;=4>0b9~w70e2909w0<99;7e?841k3;o:6s|27f94?4|5;<368h4=34f>4b13ty9:k4?:7y>631==o16>:>51e48971528:i70<84;33e>;5??0:<n5226:955b<uz8<=7>52z?123<2n279;?4>d79~w7142909w0<95;7e?840<3;o:6s|26794?4|5;<?68h4=355>4b13ty9;:4?:3y>635==o16>:751e48yv40j3:1>v3=6386b>;5?j0:h;5rs3;4>5<5s48i>7;i;<0b4?7cl2wx>4850;0x97d62<l01?7i:0fg?xu5i10;69u22c395ab<5;<h6<>n;<05a?77j279;=4>0e9~w7?22909w0<m0;7e?84>m3;oh6s|2`594?5|5;h;6<jk;<05a?77k279;=4>0`9~w7?32909w0<nf;7e?84>l3;oh6s|2`494?4|5;km6<jk;<044?77j2wx>4=50;0x97gb2<l01?7l:0fg?xu5i<0;68u22`g95ab<5;=96<>n;<040?77j279;;4>0e9>62>=99i0q~<62;296~;5im0>j63=9c82`a=z{;k?6=4;{<0b`?7cl279;94>0b9>620=99k01?97:02a?xu5180;6?u22`a91c=::0k1=ij4}r0b7?6=;r79mn4>de9>620=99h01?97:02b?xu5190;6?u22``91c=::031=ij4}r0b6?6=;r79mo4>de9>62?=99k01?9l:02a?xu50o0;6?u22`c91c=::021=ij4}r0b5?6=:r79ml4>de9>62e=99k0q~<<5;296~;5=90>j63=3d82`a=z{;9?6=4={<07b?3a3488h7?kd:\7fp610=83>p1?:i:0fg?847i3;;m63=0b824g=::9o1==j4}r007?6=:r798h4:f:?17f<6lm1v\7f?:::180\7f843m3;oh63=0b824f=::9o1==o4}r006?6=:r798i4:f:?17g<6lm1v\7f?:;:181\7f843l3;oh63=0d824g=z{;9:6=4={<07g?3a3488m7?kd:\7fp615=83?p1?:l:0fg?84683;;m63=13824g=::8>1==j4=335>46d3ty9?=4?:3y>61d==o16>>751ef8yv43:3:18v3=4c82`a=::881==m4=337>46f348::7??b:\7fp67`=838p1?:n:4d8975?28no7p}=4083>6}::=k1=ij4=337>46e348::7??a:\7fp67c=838p1?:6:4d8975028no7p}=4183>6}::=31=ij4=334>46f348:m7??b:\7fp67b=838p1?:7:4d8975128no7p}=3g83>7}::=21=ij4=33b>46f3ty9484?:3y>6d6==o16>5k51ef8yv4?<3:1>v3=9g86b>;50m0:hi5rs3:0>5<5s482i7;i;<0;g?7cl2wx>5<50;0x97?c2<l01?6m:0fg?xu5080;6?u228a91c=::1k1=ij4}r0;4?6=:r795o4:f:?1<<<6lm1v\7f?9i:181\7f84>i3?m70<78;3g`>{t:>o1<7<t=3;:>0`<5;2<6<jk;|q13a<72;q6>4655g9>6=0=9mn0q~<=3;296~;5;l0>j63=2b82`a=z{;896=4={<00`?3a3489n7?kd:\7fp677=838p1?=l:4d8974f28no7p}=2183>7}:::h19k5223;95ab<uz8:j7>52z?17d<2n279>54>de9~w77b2909w0<<9;7e?845?3;oh6s|20f94?4|5;9368h4=305>4bc3ty9=n4?:3y>661==o16>?;51ef8yv46j3:1>v3=3786b>;5:=0:hi5rs372>5<5s489n7;i;<3f3?7c>2wx>8<50;0x974f2<l01<k7:0f5?xu5=:0;6?u223;91c=:9l31=i84}r060?6=:r79>54:f:?2ad<6l?1v\7f?;::181\7f845?3?m70?jb;3g2>{t:<<1<7<t=305>0`<58oh6<j9;|q112<72;q6>?;55g9>5`b=9m<0q~<:8;296~;5:=0>j63>ed82`3=z{;h86=4={<0;`?3a34;nj7?k6:\7fp6g2=838p1?6l:4d894`728n=7p}=b483>7}::1h19k521g395a0<uz8i:7>52z?1<d<2n27:j?4>d79~w7d02909w0<79;7e?87a;3;o:6s|2c:94?4|5;2368h4=0d7>4b13ty9n44?:3y>6=1==o16=k;51e48yv4ei3:1>v3=8786b>;6n?0:h;5rs5;4>5<6=r78;<4:6:?035<2>278:k4:6:?02`<2>278:i4:6:?02f<2>278:l4:6:?02<<2>278:o4:6:?0<6<2>2784?4:6:?0<4<2>2784=4:6:?03c<2>278;h4:6:?03a<2>278;n4:6:?03g<2>278<>4>d79>0<0=99k01>=m:02a?xu4<<0;6?u236391c=:;<o1=i84}r15<?6=<r78;<4>de9>7=5==o16?>8511`8963a28:j7p}<4583>7}:;>:19k5234f95a0<uz9=;7>54z?035<6lm16?5<55g9>763=99k01>;::02b?xu4<:0;6?u237d91c=:;<i1=i84}r152?6=<r78:k4>de9>7=7==o16?>;511a8963428:j7p}<4383>7}:;?o19k5234`95a0<uz9=97>54z?02`<6lm16?5>55g9>762=99k01>;>:02b?xu4<80;6?u237f91c=:;<k1=i84}r150?6=<r78:i4>de9>72`==o16?>:511a8962a28:j7p}<4183>7}:;?i19k5234;95a0<uz9=?7>54z?02f<6lm16?:k55g9>765=99k01>:k:02b?xu4;l0;6?u237c91c=:;<=1=i84}r155?6=<r78:l4>de9>72e==o16?><511c8962>28:j7p}<3e83>7}:;?319k5234495a0<uz9=<7>54z?02<<6lm16?:l55g9>764=99i01>:8:02b?xu4;o0;6?u237`91c=:;<21=i84}r156?6=<r78:o4>de9>72b==o16?>=511a8962e28:j7p}<5583>7}:;<o1955234695a0<uz9>j7>52z?01`<6=k16?8h51e48yv52:3:1?v3<5e86<>;4==0>463<5382`3=z{:?>6=4<{<16`?72j278994>dg9>703=9m<0q~=:0;297~;4=j0>463<5386<>;4=90:h;5rs270>5<4s49>o7?:b:?017<6lo16?8=51e48yv53m3:1?v3<5c86<>;4=90>463<4d82`3=z{:?:6=4<{<16f?72j2789=4>dg9>707=9m<0q~=;c;297~;4=h0>463<4d86<>;4<j0:h;5rs26e>5<4s49>m7?:b:?00`<6lo16?9h51e48yv53i3:1?v3<5886<>;4<j0>463<4`82`3=z{:>o6=4<{<16=?72j2788n4>dg9>71b=9m<0q~=;8;297~;4=10>463<4`86<>;4<10:h;5rs26a>5<4s49>47?:b:?00d<6lo16?9l51e48yv53>3:1?v3<5686<>;4<10>463<4782`3=z{:>26=4<{<163?72j278854>dg9>71?=9m<0q~=;7;297~;4=?0:9o5235495a`<5:><6<j9;|q04d<72;q6?=755g9>75d=9m<0q~=?9;29<~;4800:hi5231:955d<5::m6<>l;<13f?77k278<94>0`9>755=99h01?hl:02`?857=3;;n6s|31594?5|5::=68h4=233>0`<5::36<j9;|q043<721q6?=851ef8966?28:j70=?f;33f>;48k0:<o52316955d<5::86<>k;<0eg?77j278<84>0`9~w677290?w0=>0;3g`>;5m00:<o522gg955g<5;lh6<>k;|q04`<72:q6?=j55g9>75e==o16?=h51e48yv57k3:1>v3<0b82`a=:;9l1==o4}r6:=?6=9mq68?95579>070==?168?;5579>072==?168?=5579>074==?168?>5579>04`==?168??5579>065==?168>?5579>064==?168>:5579>063==?168>85579>061==?168>65579>06?==?1689l5579>01g==?168975579>01>==?168995579>010==?1689;5579>012==?1689=5579>7c4=9m<0197;:5`1?xu4nk0;6?u243591c=:<8>1=i84}r62a?6=<r7?>:4>de9>06?==o16?l7511c8917228:j7p}<f`83>7}:<;<19k5240195a0<uz>:h7>54z?763<6lm168>655g9>7d>=99k019>m:02b?xu4n00;6?u243791c=:<881=i84}r62g?6=<r7?>84>de9>061==o16?l6511a8916>28:j7p}<f983>7}:<;>19k5240395a0<uz>:n7>54z?761<6lm168>855g9>7d1=99k019>8:02b?xu4n>0;6?u243191c=:<8:1=i84}r62e?6=<r7?>>4>de9>063==o16?l9511a8916228:j7p}<f783>7}:<;819k5241d95a0<uz>:57>54z?767<6lm168>:55g9>7d0=99k019><:02b?xu4n=0;6?u243291c=:<9n1=i84}r623?6=<r7?>=4>de9>064==o16?l;511c896`a28:j7p}<f283>7}:<8l19k5241a95a0<uz>::7>54z?75c<6lm168>?55g9>7d3=99i01>hk:02b?xu4n<0;6?u243391c=:<9o1=i84}r62<?6=<r7?><4>de9>065==o16?l8511a8916628:j7p};0`83>7}:<8>1955241c95a0<uz>:97>52z?751<6=k168<;51e48yv2703:1?v3;1286<>;38h0>463;0982`3=z{=:i6=4<{<627?72j27?<l4>dg9>05d=9m<0q~:?6;297~;39;0>463;0986<>;38?0:h;5rs52:>5<4s4>:>7?:b:?74=<6lo168=751e48yv27<3:1?v3;1086<>;38?0>463;0582`3=z{=:<6=4<{<625?72j27?<;4>dg9>051=9m<0q~:?2;297~;3990>463;0586<>;38;0:h;5rs526>5<4s4>:<7?:b:?741<6lo168=;51e48yv2783:1?v3;0g86<>;38;0>463;0182`3=z{=:86=4<{<63b?72j27?<?4>dg9>055=9m<0q~=ie;297~;38l0>463;0186<>;4nl0:h;5rs522>5<4s4>;i7?:b:?745<6lo168=?51e48yv5ak3:1?v3;0e86<>;4nl0>463<fb82`3=z{:lm6=4<{<63`?72j278jh4>dg9>7c`=9m<0q~=id;297~;38j0:9o523ga95a`<5:lo6<j9;|q76d<72:q68>=51ef891222<l01>7<:02`?xu3:10;6>u242395ab<5=>868h4=2;1>46d3ty?>44?:2y>064=9mn019:;:4d896?528:j7p};2c83>6}:<:>1=ij4=565>0`<5:386<>n;|q76f<72:q68>;51ef891202<l01>7;:02`?xu3:m0;6>u242495ab<5=>368h4=2;7>46f3ty?>h4?:2y>061=9mn019:6:4d896?228:h7p};2g83>6}:<:21=ij4=56b>0`<5:3>6<>n;|q775<72:q68>751ef8912e2<l01>79:02b?xu3110;6?;t=54:>00<5=<36884=544>00<5=<=6884=546>00<5=<?6884=541>00<5=<:6884=543>00<5=?m6884=57f>00<5=?o6884=57`>00<5=?i6884=57b>00<5=?26884=574>00<5=?=6884=576>00<5=??6884=570>00<5=?96884=572>00<5=?;6884=56e>00<5=>n6884=54e>00<5=<n6884=54g>00<5=<h6884=54a>00<5=<j6884=540>00<5=?36884=56g>00<5=>h6884=227>4b13ty?4n4?:3y>03?==o1684:5f99~w1>e2909w0:98;7e?82><3o<7p};8`83>7}:<?=19k524869a0=z{=226=4={<652?3a34>287k<;|q7<=<72;q68;;55g9>0<2=m;1v\7f968:181\7f821<3?m70:64;g2?xu30<0;6?u247091c=:<0>1i=5rs5:7>5<5s4>==7;i;<6:0?ba3ty?4>4?:3y>036==o1684:5dd9~w1>52909w0::f;7e?82><3l=7p};8083>7}:<<o19k524869`a=z{=2;6=4={<66`?3a34>287jl;|q73c<72;q688m55g9>0<2=lk1v\7f99j:181\7f822j3?m70:64;fb?xu3?m0;6?u244c91c=:<0>1h55rs55`>5<5s4>>57;i;<6:0?b03ty?;l4?:3y>001==o1684:5d79~w11>2909w0::6;7e?82><3n>7p};7983>7}:<<?19k524869b0=z{==<6=4={<660?3a34>287j;;|q733<72;q688=55g9>0<2=l:1v\7f99::181\7f822:3?m70:64;f1?xu3?=0;6?u244391c=:<0>1h<5rs550>5<5s4>><7;i;<6:0?b73ty?;?4?:3y>01`==o1684:5cg9~w1162909w0:;e;7e?82><3on7p};9283>7}:<?l19k524869aa=z{=396=4={<65a?3a34>287h;;|q7=4<72;q68;j55g9>0<2=mj1v\7f97?:181\7f821k3?m70:64;ga?xu30o0;6?u247`91c=:<0>1il5rs5:f>5<5s4>=m7;i;<6:0?c>3ty?4i4?:3y>035==o1684:5e99~w1>12909w0::8;7e?82><3o?7p};7c83>7}:<=n19k524869`<=z{==;6=4={<67g?3a34>287mj;|q7=0<72;q684851e4891?32oi0q~=<c;296~;5m00:<l5231795a0<uz8<m7>53z?13<<68k16>:m511a8971?28n=7p}=1983>6}::8=1==l4=33b>46d348::7?k6:\7fp5gg=833p1?km:02a?84bl3;;m63=eg824f=::o;1==o4=3d7>46f348mm7??a:?045<68h16>k;511a897`d28n=7p}>cc83>3}::o;1==m4=3d7>46c348m47??d:?045<68j16?=<511a897`528n=7p}>c`83>0}:;kl1==m4=2a3>46c349ih7?k6:?0f<<68j16?n:511a8yv71i3:1?v3=fe824f=:;981==l4=3df>4b13ty:n94?:3y>6cb=99n01?h=:07`?xu6jk0;6>u22gf95a0<5;lj6<>k;<0ef?77l2wx=o<50;0x97`f28:h70<i8;3g2>{t9j21<7<t=3da>46d349;<7?k6:\7fp5fe=838p1>>?:02g?84a13;>o6s|1bg94?4|5;lm6<j9;<136?77l2wx=::50;1x96e528n=70=m9;33`>;4k=0:<i5rs0`0>5<5s48mi7??c:?040<6=j1v\7f<7l:181\7f84a>3;o:63=f4824a=z{8h;6=4={<1`7?7c>278o<4>0e9~yv36<3:1>vP;f19>15<3n91/8lk51ba8yv36:3:1>vP;eg9>15<3mo1/8lk51bf8yv3693:1>vP;ed9>15<3ml1/8lk51bg8yv3683:1>vP;ee9>15<3mm1/8lk51bd8yv37n3:1>vP;eb9>15<3mj1/8lk517a8yv37m3:1>vP;ec9>15<3mk1/8lk517d8yv37k3:1>vP;e89>15<3m01/8lk51668yv37j3:1>vP;e99>15<3m11/8lk516d8yv37i3:1>vP;e69>15<3m>1/8lk519c8yv3713:1>vP;e79>15<3m?1/8lk51878yv3703:1>vP;e49>15<3m<1/8lk518a8yv37?3:1>vP;e59>15<3m=1/8lk51`78yv37>3:1>vP;e29>15<3m:1/8lk51c28yv37=3:1>vP;e39>15<3m;1/8lk51c38yv37<3:1>vP;e09>15<3m81/8lk51c18yv37;3:1>vP;e19>15<3m91/8lk51c68yv3793:1>vP;dd9>15<3ll1/8lk51c78yv3783:1>vP;de9>15<3lm1/8lk51c48yv2an3:1>vP;db9>15<3lj1/8lk51c58yv2am3:1>vP;dc9>15<3lk1/8lk51c:8yv2al3:1>vP;d`9>15<3lh1/8lk51c;8yv2ak3:1>vP;d89>15<3l01/8lk51cc8yv2aj3:1>vP;d99>15<3l11/8lk51ca8yv2ai3:1>vP;d69>15<3l>1/8lk51cf8yv2a13:1>vP;d79>15<3l?1/8lk51cg8yv2a03:1>vP;d49>15<3l<1/8lk51cd8yv36j3:1>vP;f79>15<3n?1/8lk51b28yv36i3:1>vP;f49>15<3n<1/8lk51b38yv3613:1>vP;f59>15<3n=1/8lk51b08yv3603:1>vP;f29>15<3n:1/8lk51b18yv36?3:1>vP;f39>15<3n;1/8lk51b68yv36>3:1>vP;f09>15<3n81/8lk51b78yv36=3:1>vP;e`9>15<3mh1/8lk51b48yv37l3:1>vP;dg9>15<3lo1/8lk51b58yv37:3:1>vP;d59>15<3l=1/8lk51b;8yv2a?3:1>vP;d29>15<3l:1/8lk51bc8yv3fm3:1>vP:ad9>15<2il1/8lk51e28yv3d<3:1>vP:c59>15<2k=1/8lk51e38yv3d>3:1>vP:c79>15<2k?1/8lk51e08yv3dl3:1>vP:ce9>15<2km1/8lk517f8yv3b;3:1>vP:e29>15<2m:1/8lk517g8yv32l3:1>vP:389>15<2;01/8lk51628yv32j3:1>vP:399>15<2;11/8lk51638yv32i3:1>vP:369>15<2;>1/8lk51608yv3213:1>vP:379>15<2;?1/8lk51618yv3203:1>vP:349>15<2;<1/8lk51678yv32?3:1>vP:359>15<2;=1/8lk51648yv32=3:1>vP:339>15<2;;1/8lk51658yv32<3:1>vP:309>15<2;81/8lk516:8yv32;3:1>vP:319>15<2;91/8lk516;8yv32:3:1>vP:2g9>15<2:o1/8lk516c8yv3293:1>vP:2d9>15<2:l1/8lk516`8yv3283:1>vP:2e9>15<2:m1/8lk516a8yv33n3:1>vP:2b9>15<2:j1/8lk516f8yv33m3:1>vP:2c9>15<2:k1/8lk516g8yv33l3:1>vP:2`9>15<2:h1/8lk51928yv33k3:1>vP:289>15<2:01/8lk51938yv33i3:1>vP:269>15<2:>1/8lk51908yv3313:1>vP:279>15<2:?1/8lk51918yv3303:1>vP:249>15<2:<1/8lk51968yv33?3:1>vP:259>15<2:=1/8lk51978yv33>3:1>vP:229>15<2::1/8lk51948yv33=3:1>vP:239>15<2:;1/8lk51958yv33<3:1>vP:209>15<2:81/8lk519:8yv33;3:1>vP:219>15<2:91/8lk519;8yv33:3:1>vP:1g9>15<29o1/8lk519`8yv3393:1>vP:1d9>15<29l1/8lk519a8yv31<3:1>vP:3g9>15<2;o1/8lk519f8yv31;3:1>vP:3d9>15<2;l1/8lk519g8yv31:3:1>vP:3e9>15<2;m1/8lk519d8yv3193:1>vP:3b9>15<2;j1/8lk51828yv3183:1>vP:3c9>15<2;k1/8lk51838yv32n3:1>vP:3`9>15<2;h1/8lk51808yv32m3:1>vP:329>15<2;:1/8lk51818yv32>3:1>vP:299>15<2:11/8lk51868yv33j3:1>vP:1e9>15<29m1/8lk51848yv3383:1>vP:1b9>15<29j1/8lk51858yv31>3:1>vP:679>15<2>?1/8lk518:8yv31k3:1>vP:6b9>15<2>j1/8lk518;8yv3d;3:1>vP:b99>15<2j11/8lk518c8yv3d93:1>vP:b69>15<2j>1/8lk518`8yv3d83:1>vP:b79>15<2j?1/8lk518f8yv3en3:1>vP:b49>15<2j<1/8lk518g8yv3em3:1>vP:b59>15<2j=1/8lk518d8yv3el3:1>vP:b29>15<2j:1/8lk51`28yv3ek3:1>vP:b39>15<2j;1/8lk51`38yv3ej3:1>vP:b09>15<2j81/8lk51`08yv3ei3:1>vP:b19>15<2j91/8lk51`18yv3e13:1>vP:ag9>15<2io1/8lk51`68yv3b:3:1>vP:d69>15<2l>1/8lk51`48yv3b83:1>vP:d79>15<2l?1/8lk51`58yv3cn3:1>vP:d49>15<2l<1/8lk51`:8yv3cm3:1>vP:d59>15<2l=1/8lk51`;8yv3cl3:1>vP:d29>15<2l:1/8lk51`c8yv3ck3:1>vP:d39>15<2l;1/8lk51``8yv3cj3:1>vP:d09>15<2l81/8lk51`a8yv3ci3:1>vP:d19>15<2l91/8lk51`f8yv3c13:1>vP:cg9>15<2ko1/8lk51`g8yv3c03:1>vP:cd9>15<2kl1/8lk51`d8yxhem90;6?uG4`d8ykdb93:1>vF;ag9~jgc52909wE:nf:\7fmf`5=838pD9oi;|laa1<72;qC8lh4}o`f1?6=:rB?mk5rncg5>5<5sA>jj6sabd594?4|@=km7p`me983>7}O<hl0qclj9;296~N3io1vbokn:181\7fM2fn2wenhl50;0xL1ga3tdiin4?:3yK0d`<ughnh7>52zJ7ec=zfkon6=4={I6bb>{ijll1<7<tH5ce?xhen90;6?uG4`d8ykda93:1>vF;ag9~jg`52909wE:nf:\7fmfc5=838pD9oi;|lab1<72;qC8lh4}o`e1?6=:rB?mk5rncd5>5<5sA>jj6sabg594?4|@=km7p`mf983>7}O<hl0qcli9;296~N3io1vbohn:181\7fM2fn2wenkl50;0xL1ga3tdijn4?:3yK0d`<ughmh7>52zJ7ec=zfkln6=4={I6bb>{ijol1<7<tH5ce?xhd890;6?uG4`d8yke793:1>vF;ag9~jf652909wE:nf:\7fmg55=838pD9oi;|l`41<72;qC8lh4}oa31?6=:rB?mk5rnb25>5<5sA>jj6sac1594?4|@=km7p`l0983>7}O<hl0qcm?9;296~N3io1vbn>n:181\7fM2fn2weo=l50;0xL1ga3tdh<n4?:3yK0d`<ugi;h7>52zJ7ec=zfj:n6=4={I6bb>{ik9l1<7<tH5ce?xhd990;6?uG4`d8yke693:1>vF;ag9~jf752909wE:nf:\7fmg45=838pD9oi;|l`51<72;qC8lh4}oa21?6=:rB?mk5rnb35>5<5sA>jj6sac0594?4|@=km7p`l1983>7}O<hl0qcm>9;296~N3io1vbn?n:181\7fM2fn2weo<l50;0xL1ga3tdh=n4?:3yK0d`<ugi:h7>52zJ7ec=zfj;n6=4={I6bb>{ik8l1<7<tH5ce?xhd:90;6?uG4`d8yke593:1>vF;ag9~jf452909wE:nf:\7fmg75=838pD9oi;|l`61<72;qC8lh4}oa11?6=:rB?mk5rnb05>5<5sA>jj6sac3594?4|@=km7p`l2983>7}O<hl0qcm=9;296~N3io1vbn<n:181\7fM2fn2weo?l50;0xL1ga3tdh>n4?:3yK0d`<ugi9h7>52zJ7ec=zfj8n6=4={I6bb>{ik;l1<7<tH5ce?xhd;90;6?uG4`d8yke493:1>vF;ag9~jf552909wE:nf:\7fmg65=838pD9oi;|l`71<72;qC8lh4}oa01?6=:rB?mk5rnb15>5<5sA>jj6sac2594?4|@=km7p`l3983>7}O<hl0qcm<9;296~N3io1vbn=n:181\7fM2fn2weo>l50;0xL1ga3tdh?n4?:3yK0d`<ugi8h7>52zJ7ec=zfj9n6=4={I6bb>{ik:l1<7<tH5ce?xhd<90;6?uG4`d8yke393:1>vF;ag9~jf252909wE:nf:\7fm=c5=83;pD9oi;|lb13<728qC8lh4}oc63?6=9rB?mk5rn`7;>5<6sA>jj6saa4;94?7|@=km7p`n5`83>4}O<hl0qco:b;295~N3io1vbl;l:182\7fM2fn2wem8j50;3xL1ga3tdj9h4?:0yK0d`<ugk>j7>51zJ7ec=zfh<;6=4>{I6bb>{ii?;1<7?tH5ce?xhf>;0;6<uG4`d8ykg1;3:1=vF;ag9~jd03290:wE:nf:\7fme33=83;pD9oi;|lb23<728qC8lh4}oc53?6=9rB?mk5rn`4;>5<6sA>jj6saa7;94?7|@=km7p`n6`83>4}O<hl0qco9b;295~N3io1vbl8l:182\7fM2fn2wem;j50;3xL1ga3tdj:h4?:0yK0d`<ugk=j7>51zJ7ec=zfh=;6=4>{I6bb>{ii>;1<7?tH5ce?xhf?;0;6<uG4`d8ykg0;3:1=vF;ag9~jd13290:wE:nf:\7fme23=83;pD9oi;|lb33<728qC8lh4}oc43?6=9rB?mk5rn`5;>5<6sA>jj6saa6;94?7|@=km7p`n7`83>4}O<hl0qco8b;295~N3io1vbl9l:182\7fM2fn2wem:j50;3xL1ga3tdj;h4?:0yK0d`<ugk<j7>51zJ7ec=zfh2;6=4>{I6bb>{ii1;1<7?tH5ce?xhf0;0;6<uG4`d8ykg?;3:1=vF;ag9~jd>3290:wE:nf:\7fme=3=83;pD9oi;|lb<3<728qC8lh4}oc;3?6=9rB?mk5rn`:;>5<6sA>jj6saa9;94?7|@=km7p`n8`83>4}O<hl0qco7b;295~N3io1vbl6l:182\7fM2fn2wem5j50;3xL1ga3tdj4h4?:0yK0d`<ugk3j7>51zJ7ec=zfh3;6=4>{I6bb>{ii0;1<7?tH5ce?xhf1;0;6<uG4`d8ykg>;3:1=vF;ag9~jd?3290:wE:nf:\7fme<3=83;pD9oi;|lb=3<728qC8lh4}oc:3?6=9rB?mk5rn`;;>5<6sA>jj6saa8;94?7|@=km7p`n9`83>4}O<hl0qco6b;295~N3io1vbl7l:182\7fM2fn2wem4j50;3xL1ga3tdj5h4?:0yK0d`<ugk2j7>51zJ7ec=zfhk;6=4>{I6bb>{iih;1<7?tH5ce?xhfi;0;6<uG4`d8ykgf;3:1=vF;ag9~jdg3290:wE:nf:\7fmed3=83;pD9oi;|lbe3<728qC8lh4}ocb3?6=9rB?mk5rn`c;>5<6sA>jj6saa`;94?7|@=km7p`na`83>4}O<hl0qconb;295~N3io1vblol:182\7fM2fn2wemlj50;3xL1ga3tdjmh4?:0yK0d`<ugkjj7>51zJ7ec=zfhh;6=4>{I6bb>{iik;1<7?tH5ce?xhfj;0;6<uG4`d8ykge;3:1=vF;ag9~jdd3290:wE:nf:\7fmeg3=83;pD9oi;|lbf3<728qC8lh4}oca3?6=9rB?mk5rn``;>5<6sA>jj6saac;94?7|@=km7p`nb`83>4}O<hl0qcomb;295~N3io1vblll:182\7fM2fn2wemoj50;3xL1ga3tdjnh4?:0yK0d`<ugkij7>51zJ7ec=zfhi;6=4>{I6bb>{iij;1<7?tH5ce?xhfk;0;6<uG4`d8ykgd;3:1=vF;ag9~jde3290:wE:nf:\7fmef3=83;pD9oi;|lbg3<728qC8lh4}oc`3?6=9rB?mk5rn`a;>5<6sA>jj6saab;94?7|@=km7p`nc`83>4}O<hl0qcolb;295~N3io1vblml:182\7fM2fn2wemnj50;3xL1ga3tdjoh4?:0yK0d`<ugkhj7>51zJ7ec=zfhn;6=4>{I6bb>{iim;1<7?tH5ce?xhfl;0;6<uG4`d8ykgc;3:1=vF;ag9~jdb3290:wE:nf:\7fmea3=83;pD9oi;|lb`3<728qC8lh4}ocg3?6=9rB?mk5rn`f;>5<6sA>jj6saae;94?7|@=km7p`nd`83>4}O<hl0qcokb;295~N3io1vbljl:182\7fM2fn2wemij50;3xL1ga3tdjhh4?:0yK0d`<ugkoj7>51zJ7ec=zfho;6=4>{I6bb>{iil;1<7?tH5ce?xhfm;0;6<uG4`d8ykgb;3:1=vF;ag9~jdc3290:wE:nf:\7fme`3=83;pD9oi;|lba3<728qC8lh4}ocf3?6=9rB?mk5rn`g;>5<6sA>jj6saad;94?7|@=km7p`ne`83>4}O<hl0qcojb;295~N3io1vblkl:182\7fM2fn2wemhj50;3xL1ga3tdjih4?:0yK0d`<ugknj7>51zJ7ec=zfhl;6=4>{I6bb>{iio;1<7?tH5ce?xhfn;0;6<uG4`d8ykga;3:1=vF;ag9~jd`3290:wE:nf:\7fmec3=83;pD9oi;|lbb3<728qC8lh4}oce3?6=9rB?mk5rn`d;>5<6sA>jj6saag;94?7|@=km7p`nf`83>4}O<hl0qcoib;295~N3io1vblhl:182\7fM2fn2wemkj50;3xL1ga3tdjjh4?:0yK0d`<ugkmj7>51zJ7ec=zfk:;6=4>{I6bb>{ij9;1<7?tH5ce?xhe8;0;6<uG4`d8ykd7;3:1=vF;ag9~jg63290:wE:nf:\7fmf53=83;pD9oi;|la43<728qC8lh4}o`33?6=9rB?mk5rnc2;>5<6sA>jj6sab1;94?7|@=km7p`m0`83>4}O<hl0qcl?b;295~N3io1vbo>l:182\7fM2fn2wen=j50;3xL1ga3tdi<h4?:0yK0d`<ugh;j7>51zJ7ec=zfk;;6=4>{I6bb>{ij8;1<7?tH5ce?xhe9;0;6<uG4`d8ykd6;3:1=vF;ag9~jg73290:wE:nf:\7fmf43=83;pD9oi;|la53<728qC8lh4}o`23?6=9rB?mk5rnc3;>5<6sA>jj6sab0;94?7|@=km7p`m1`83>4}O<hl0qcl>b;295~N3io1vbo?l:182\7fM2fn2wen<j50;3xL1ga3tdi=h4?:0yK0d`<ugh:j7>51zJ7ec=zfk8;6=4>{I6bb>{ij;;1<7?tH5ce?xhe:;0;6<uG4`d8ykd5;3:1=vF;ag9~jg43290:wE:nf:\7fmf73=83;pD9oi;|la63<728qC8lh4}o`13?6=9rB?mk5rnc0;>5<6sA>jj6sab3;94?7|@=km7p`m2`83>4}O<hl0qcl=b;295~N3io1vbo<l:182\7fM2fn2wen?j50;3xL1ga3tdi>h4?:0yK0d`<ugh9j7>51zJ7ec=zfk9;6=4>{I6bb>{ij:;1<7?tH5ce?xhe;;0;6<uG4`d8ykd4;3:1=vF;ag9~jg53290:wE:nf:\7fmf63=83;pD9oi;|la73<728qC8lh4}o`03?6=9rB?mk5rnc1;>5<6sA>jj6sab2;94?7|@=km7p`m3`83>4}O<hl0qcl<b;295~N3io1vbo=l:182\7fM2fn2wen>j50;3xL1ga3tdi?h4?:0yK0d`<ugh8j7>51zJ7ec=zfk>;6=4>{I6bb>{ij=;1<7?tH5ce?xhe<;0;6<uG4`d8ykd3;3:1=vF;ag9~jg23290:wE:nf:\7fmf13=83;pD9oi;|la03<728qC8lh4}o`73?6=9rB?mk5rnc6;>5<6sA>jj6sab5;94?7|@=km7p`m4`83>4}O<hl0qcl;b;295~N3io1vbo:l:182\7fM2fn2wen9j50;3xL1ga3tdi8h4?:0yK0d`<ugh?j7>51zJ7ec=zfk?;6=4>{I6bb>{ij<;1<7?tH5ce?xhe=;0;6<uG4`d8ykd2;3:1=vF;ag9~jg33290:wE:nf:\7fmf03=83;pD9oi;|la13<728qC8lh4}o`63?6=9rB?mk5rnc7;>5<6sA>jj6sab4;94?7|@=km7p`m5`83>4}O<hl0qcl:b;295~N3io1vbo;l:182\7fM2fn2wen8j50;3xL1ga3tdi9h4?:0yK0d`<ugh>j7>51zJ7ec=zfk<;6=4>{I6bb>{ij?;1<7?tH5ce?xhe>;0;6<uG4`d8ykd1;3:1=vF;ag9~jg03290:wE:nf:\7fmf33=83;pD9oi;|la23<728qC8lh4}o`53?6=9rB?mk5rnc4;>5<6sA>jj6sab7;94?7|@=km7p`m6`83>4}O<hl0qcl9b;295~N3io1vbo8l:182\7fM2fn2wen;j50;3xL1ga3tdi:h4?:0yK0d`<ugh=j7>51zJ7ec=zfk=;6=4>{I6bb>{ij>;1<7?tH5ce?xhe?;0;6<uG4`d8ykd0;3:1=vF;ag9~jg13290:wE:nf:\7fmf23=83;pD9oi;|la33<728qC8lh4}o`43?6=9rB?mk5rnc5;>5<6sA>jj6sab6;94?7|@=km7p`m7`83>4}O<hl0qcl8b;295~N3io1vbo9l:182\7fM2fn2wen:j50;3xL1ga3tdi;h4?:0yK0d`<ugh<j7>51zJ7ec=zfk2;6=4>{I6bb>{ij1;1<7?tH5ce?xhe0;0;6<uG4`d8ykd?;3:1=vF;ag9~jg>3290:wE:nf:\7fmf=3=83;pD9oi;|la<3<728qC8lh4}o`;3?6=9rB?mk5rnc:;>5<6sA>jj6sab9;94?7|@=km7p`m8`83>4}O<hl0qcl7b;295~N3io1vbo6l:182\7fM2fn2wen5j50;3xL1ga3tdi4h4?:0yK0d`<ugh3j7>51zJ7ec=zfk3;6=4>{I6bb>{ij0;1<7?tH5ce?xhe1;0;6<uG4`d8ykd>;3:1=vF;ag9~jg?3290:wE:nf:\7fmf<3=83;pD9oi;|la=3<728qC8lh4}o`:3?6=9rB?mk5rnc;;>5<6sA>jj6sab8;94?7|@=km7p`m9`83>4}O<hl0qcl6b;295~N3io1vbo7l:182\7fM2fn2wen4j50;3xL1ga3tdi5h4?:0yK0d`<ugh2j7>51zJ7ec=zfkk;6=4>{I6bb>{ijh;1<7?tH5ce?xhei;0;6<uG4`d8ykdf;3:1=vF;ag9~jgg3290:wE:nf:\7fmfd3=83;pD9oi;|lae3<728qC8lh4}o`b3?6=9rB?mk5rncc;>5<6sA>jj6sab`;94?7|@=km7p`ma`83>4}O<hl0qclnb;295~N3io1vbool:182\7fM2fn2wenlj50;3xL1ga3tdimh4?:0yK0d`<ughjj7>51zJ7ec=zfkh;6=4>{I6bb>{ijk;1<7?tH5ce?xhej;0;6<uG4`d8ykde;3:1=vF;ag9~jgd3290:wE:nf:\7fmfg3=83;pD9oi;|laf3<728qC8lh4}o`a3?6=9rB?mk5rnc`;>5<6sA>jj6sabc;94?7|@=km7p`mb`83>4}O<hl0qclmb;295~N3io1vboll:182\7fM2fn2wenoj50;3xL1ga3tdinh4?:0yK0d`<ughij7>51zJ7ec=zfki;6=4>{I6bb>{ijj;1<7?tH5ce?xhek;0;6<uG4`d8ykdd;3:1=vF;ag9~jge3290:wE:nf:\7fmff3=83;pD9oi;|lag3<728qC8lh4}o``3?6=9rB?mk5rnca;>5<6sA>jj6sabb;94?7|@=km7p`mc`83>4}O<hl0qcllb;295~N3io1vboml:182\7fM2fn2wennj50;3xL1ga3tdioh4?:0yK0d`<ughhj7>51zJ7ec=zfkn;6=4>{I6bb>{ijm;1<7?tH5ce?xhel;0;6<uG4`d8ykdc;3:1=vF;ag9~jgb3290:wE:nf:\7fmfa3=83;pD9oi;|la`3<728qC8lh4}o`g3?6=9rB?mk5rncf;>5<6sA>jj6sabe;94?7|@=km7p`md`83>4}O<hl0qclkb;295~N3io1vbojl:182\7fM2fn2wenij50;3xL1ga3tdihh4?:0yK0d`<ughoj7>51zJ7ec=zutwKLNuj308fa=3c>kivLMLt0|BCT~{GH
\ No newline at end of file
index 3cc5e29f01bc6c968614849b74f78bf09f7c3f57..905069743ceb8326756514044c26c60f8dc0cd3a 100644 (file)
@@ -60,15 +60,15 @@ input wr_en;
 output [35 : 0] dout;
 output empty;
 output full;
-output [8 : 0] rd_data_count;
-output [8 : 0] wr_data_count;
+output [9 : 0] rd_data_count;
+output [9 : 0] wr_data_count;
 
 // synthesis translate_off
 
       FIFO_GENERATOR_V4_3 #(
                .C_COMMON_CLOCK(0),
                .C_COUNT_TYPE(0),
-               .C_DATA_COUNT_WIDTH(9),
+               .C_DATA_COUNT_WIDTH(10),
                .C_DEFAULT_VALUE("BlankString"),
                .C_DIN_WIDTH(36),
                .C_DOUT_RST_VAL("0"),
@@ -108,19 +108,19 @@ output [8 : 0] wr_data_count;
                .C_PROG_FULL_THRESH_ASSERT_VAL(511),
                .C_PROG_FULL_THRESH_NEGATE_VAL(510),
                .C_PROG_FULL_TYPE(0),
-               .C_RD_DATA_COUNT_WIDTH(9),
+               .C_RD_DATA_COUNT_WIDTH(10),
                .C_RD_DEPTH(512),
                .C_RD_FREQ(1),
                .C_RD_PNTR_WIDTH(9),
                .C_UNDERFLOW_LOW(0),
-               .C_USE_DOUT_RST(0),
+               .C_USE_DOUT_RST(1),
                .C_USE_ECC(0),
                .C_USE_EMBEDDED_REG(0),
                .C_USE_FIFO16_FLAGS(0),
-               .C_USE_FWFT_DATA_COUNT(0),
+               .C_USE_FWFT_DATA_COUNT(1),
                .C_VALID_LOW(0),
                .C_WR_ACK_LOW(0),
-               .C_WR_DATA_COUNT_WIDTH(9),
+               .C_WR_DATA_COUNT_WIDTH(10),
                .C_WR_DEPTH(512),
                .C_WR_FREQ(1),
                .C_WR_PNTR_WIDTH(9),
@@ -165,9 +165,5 @@ output [8 : 0] wr_data_count;
 
 // synthesis translate_on
 
-// XST black box declaration
-// box_type "black_box"
-// synthesis attribute box_type of fifo_xlnx_512x36_2clk is "black_box"
-
 endmodule
 
index 40747fd2fea58dc647167eb7d20dc9794e1f51ef..6699ee73b9a91985477d807f072175a79ef60212 100644 (file)
@@ -41,8 +41,8 @@ fifo_xlnx_512x36_2clk YourInstanceName (
        .dout(dout), // Bus [35 : 0] 
        .empty(empty),
        .full(full),
-       .rd_data_count(rd_data_count), // Bus [8 : 0] 
-       .wr_data_count(wr_data_count)); // Bus [8 : 0] 
+       .rd_data_count(rd_data_count), // Bus [9 : 0] 
+       .wr_data_count(wr_data_count)); // Bus [9 : 0] 
 
 // INST_TAG_END ------ End INSTANTIATION Template ---------
 
index c67e7e89f45cc40892b20fe555b519da93f56249..5934ef28520648f136a19e0065d8a5f2c7829c70 100644 (file)
@@ -1,7 +1,7 @@
 ##############################################################
 #
-# Xilinx Core Generator version K.31
-# Date: Mon Jul 28 22:47:43 2008
+# Xilinx Core Generator version K.39
+# Date: Thu Sep  3 17:24:24 2009
 #
 ##############################################################
 #
 #
 # BEGIN Project Options
 SET addpads = False
-SET asysymbol = True
+SET asysymbol = False
 SET busformat = BusFormatAngleBracketNotRipped
 SET createndf = False
-SET designentry = VHDL
+SET designentry = Verilog
 SET device = xc3s2000
 SET devicefamily = spartan3
-SET flowvendor = Foundation_iSE
+SET flowvendor = Other
 SET formalverification = False
 SET foundationsym = False
 SET implementationfiletype = Ngc
@@ -29,7 +29,7 @@ SET removerpms = False
 SET simulationfiles = Behavioral
 SET speedgrade = -5
 SET verilogsim = True
-SET vhdlsim = True
+SET vhdlsim = False
 # END Project Options
 # BEGIN Select
 SELECT Fifo_Generator family Xilinx,_Inc. 4.3
@@ -39,7 +39,7 @@ CSET almost_empty_flag=false
 CSET almost_full_flag=false
 CSET component_name=fifo_xlnx_512x36_2clk
 CSET data_count=false
-CSET data_count_width=9
+CSET data_count_width=10
 CSET disable_timing_violations=false
 CSET dout_reset_value=0
 CSET empty_threshold_assert_value=4
@@ -61,22 +61,22 @@ 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=true
-CSET read_data_count_width=9
+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=false
+CSET use_dout_reset=true
 CSET use_embedded_registers=false
-CSET use_extra_logic=false
+CSET use_extra_logic=true
 CSET valid_flag=false
 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=true
-CSET write_data_count_width=9
+CSET write_data_count_width=10
 # END Parameters
 GENERATE
-# CRC: 43b7cba0
+# CRC: b7f2a9ba
 
index 5abd4e097a85f0b261714800ed3703670dd9741f..d110a01587d1e3fd2bd5e4ec6ce99d118138c71b 100644 (file)
@@ -1,22 +1,25 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-<document OS="lin" product="ISE" version="10.1">
+<document OS="lin64" product="ISE" version="10.1.03">
 
   <!--The data in this file is primarily intended for consumption by Xilinx tools.
     The structure and the elements are likely to change over the next few releases.
     This means code written to parse this file will need to be revisited each subsequent release.-->
 
-  <application stringID="Xst" timeStamp="Mon Jul 28 15:46:26 2008">
+  <application stringID="Xst" timeStamp="Thu Sep  3 10:23:58 2009">
     <section stringID="XST_HDL_SYNTHESIS_REPORT">
-      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="2"></item>
+      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4">
+        <item dataType="int" stringID="XST_10BIT_ADDER" value="2"/>
+      </item>
       <item dataType="int" stringID="XST_COUNTERS" value="2">
         <item dataType="int" stringID="XST_9BIT_UP_COUNTER" value="2"/>
       </item>
       <item dataType="int" stringID="XST_REGISTERS" value="31">
         <item dataType="int" stringID="XST_1BIT_REGISTER" value="15"/>
+        <item dataType="int" stringID="XST_10BIT_REGISTER" value="2"/>
         <item dataType="int" stringID="XST_2BIT_REGISTER" value="1"/>
         <item dataType="int" stringID="XST_3BIT_REGISTER" value="1"/>
         <item dataType="int" stringID="XST_36BIT_REGISTER" value="1"/>
-        <item dataType="int" stringID="XST_9BIT_REGISTER" value="13"/>
+        <item dataType="int" stringID="XST_9BIT_REGISTER" value="11"/>
       </item>
       <item dataType="int" stringID="XST_XORS" value="68">
         <item dataType="int" stringID="XST_1BIT_XOR2" value="68"/>
     </section>
     <section stringID="XST_ADVANCED_HDL_SYNTHESIS_REPORT">
       <item dataType="int" stringID="XST_FSMS" value="1"/>
-      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="2"></item>
+      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4">
+        <item dataType="int" stringID="XST_10BIT_ADDER" value="2"/>
+      </item>
       <item dataType="int" stringID="XST_COUNTERS" value="2">
         <item dataType="int" stringID="XST_9BIT_UP_COUNTER" value="2"/>
       </item>
-      <item dataType="int" stringID="XST_REGISTERS" value="173">
-        <item dataType="int" stringID="XST_FLIPFLOPS" value="173"/>
+      <item dataType="int" stringID="XST_REGISTERS" value="165">
+        <item dataType="int" stringID="XST_FLIPFLOPS" value="165"/>
       </item>
       <item dataType="int" stringID="XST_XORS" value="68">
         <item dataType="int" stringID="XST_1BIT_XOR2" value="68"/>
       </item>
     </section>
     <section stringID="XST_FINAL_REGISTER_REPORT">
-      <item dataType="int" stringID="XST_REGISTERS" value="188">
-        <item dataType="int" stringID="XST_FLIPFLOPS" value="188"/>
+      <item dataType="int" stringID="XST_REGISTERS" value="192">
+        <item dataType="int" stringID="XST_FLIPFLOPS" value="192"/>
       </item>
     </section>
     <section stringID="XST_PARTITION_REPORT">
         <item stringID="XST_KEEP_HIERARCHY" value="no"/>
       </section>
       <section stringID="XST_DESIGN_STATISTICS">
-        <item stringID="XST_IOS" value="177"/>
+        <item stringID="XST_IOS" value="180"/>
       </section>
       <section stringID="XST_CELL_USAGE">
-        <item dataType="int" stringID="XST_BELS" value="193">
+        <item dataType="int" stringID="XST_BELS" value="223">
           <item dataType="int" stringID="XST_GND" value="1"/>
+          <item dataType="int" stringID="XST_INV" value="1"/>
           <item dataType="int" stringID="XST_LUT1" value="18"/>
-          <item dataType="int" stringID="XST_LUT2" value="45"/>
-          <item dataType="int" stringID="XST_LUT2L" value="2"/>
-          <item dataType="int" stringID="XST_LUT3" value="7"/>
-          <item dataType="int" stringID="XST_LUT3L" value="2"/>
-          <item dataType="int" stringID="XST_LUT4" value="29"/>
+          <item dataType="int" stringID="XST_LUT2" value="50"/>
+          <item dataType="int" stringID="XST_LUT2D" value="1"/>
+          <item dataType="int" stringID="XST_LUT3" value="16"/>
+          <item dataType="int" stringID="XST_LUT3D" value="1"/>
+          <item dataType="int" stringID="XST_LUT3L" value="1"/>
+          <item dataType="int" stringID="XST_LUT4" value="45"/>
           <item dataType="int" stringID="XST_MUXCY" value="52"/>
           <item dataType="int" stringID="XST_VCC" value="1"/>
           <item dataType="int" stringID="XST_XORCY" value="36"/>
         </item>
-        <item dataType="int" stringID="XST_FLIPFLOPSLATCHES" value="188">
+        <item dataType="int" stringID="XST_FLIPFLOPSLATCHES" value="192">
           <item dataType="int" stringID="XST_FD" value="4"/>
-          <item dataType="int" stringID="XST_FDC" value="92"/>
-          <item dataType="int" stringID="XST_FDCE" value="42"/>
-          <item dataType="int" stringID="XST_FDE" value="36"/>
-          <item dataType="int" stringID="XST_FDP" value="9"/>
+          <item dataType="int" stringID="XST_FDC" value="85"/>
+          <item dataType="int" stringID="XST_FDCE" value="78"/>
+          <item dataType="int" stringID="XST_FDP" value="10"/>
           <item dataType="int" stringID="XST_FDPE" value="5"/>
         </item>
         <item dataType="int" stringID="XST_RAMS" value="1">
     </section>
     <section stringID="XST_DEVICE_UTILIZATION_SUMMARY">
       <item stringID="XST_SELECTED_DEVICE" value="3s2000fg456-5"/>
-      <item AVAILABLE="20480" dataType="int" stringID="XST_NUMBER_OF_SLICES" value="123"/>
-      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_SLICE_FLIP_FLOPS" value="188"/>
-      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_4_INPUT_LUTS" value="103"/>
-      <item dataType="int" stringID="XST_NUMBER_OF_IOS" value="177"/>
+      <item AVAILABLE="20480" dataType="int" stringID="XST_NUMBER_OF_SLICES" value="137"/>
+      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_SLICE_FLIP_FLOPS" value="192"/>
+      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_4_INPUT_LUTS" value="133"/>
+      <item dataType="int" stringID="XST_NUMBER_OF_IOS" value="180"/>
       <item AVAILABLE="333" dataType="int" stringID="XST_NUMBER_OF_BONDED_IOBS" value="0"/>
       <item AVAILABLE="40" dataType="int" stringID="XST_NUMBER_OF_BRAMS" value="1"/>
     </section>
     </section>
     <section stringID="XST_ERRORS_STATISTICS">
       <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_ERRORS" value="0"/>
-      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_WARNINGS" value="131"/>
-      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_INFOS" value="16"/>
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_WARNINGS" value="128"/>
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_INFOS" value="17"/>
     </section>
   </application>
 
index e9d38a49bcc0a28151efd6b0a3519e6b88a3f1ce..b0975be2d96abb9e010bd819cfb8da15ecc52a5c 100644 (file)
@@ -1,11 +1,7 @@
 # Output products list for <fifo_xlnx_512x36_2clk>
-fifo_xlnx_512x36_2clk.asy
 fifo_xlnx_512x36_2clk.ngc
-fifo_xlnx_512x36_2clk.sym
 fifo_xlnx_512x36_2clk.v
 fifo_xlnx_512x36_2clk.veo
-fifo_xlnx_512x36_2clk.vhd
-fifo_xlnx_512x36_2clk.vho
 fifo_xlnx_512x36_2clk.xco
 fifo_xlnx_512x36_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
 fifo_xlnx_512x36_2clk_flist.txt
index 07bf2079017599dbee5d3e920c6e41d06d0f7aaa..a250a74f59b5607909a2a146e83da4a332ca9355 100644 (file)
@@ -1,17 +1,10 @@
 The following files were generated for 'fifo_xlnx_512x36_2clk' in directory 
-/home/jblum/proj/usrp2/trunk/fpga/coregen/:
-
-fifo_xlnx_512x36_2clk.asy:
-   Graphical symbol information file. Used by the ISE tools and some
-   third party tools to create a symbol representing the core.
+/home/matt/gnuradio.git/usrp2/fpga/coregen/:
 
 fifo_xlnx_512x36_2clk.ngc:
    Binary Xilinx implementation netlist file containing the information
    required to implement the module in a Xilinx (R) FPGA.
 
-fifo_xlnx_512x36_2clk.sym:
-   Please see the core data sheet.
-
 fifo_xlnx_512x36_2clk.v:
    Verilog wrapper file provided to support functional simulation.
    This file contains simulation model customization data that is
@@ -21,15 +14,6 @@ fifo_xlnx_512x36_2clk.veo:
    VEO template file containing code that can be used as a model for
    instantiating a CORE Generator module in a Verilog design.
 
-fifo_xlnx_512x36_2clk.vhd:
-   VHDL wrapper file provided to support functional simulation. This
-   file contains simulation model customization data that is passed to
-   a parameterized simulation model for the core.
-
-fifo_xlnx_512x36_2clk.vho:
-   VHO template file containing code that can be used as a model for
-   instantiating a CORE Generator module in a VHDL design.
-
 fifo_xlnx_512x36_2clk.xco:
    CORE Generator input file containing the parameters used to
    regenerate a core.
index 42a681df98427840e3c9e7cc184f4b15ec525f2c..8a0c0e3fff51412a5d54847ec8fa5d609a253cda 100644 (file)
@@ -36,18 +36,10 @@ utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
 utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
 incr fcount
 
-utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_512x36_2clk.asy
-utilities_xmdf::xmdfSetData $instance FileSet $fcount type asy
-incr fcount
-
 utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_512x36_2clk.ngc
 utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
 incr fcount
 
-utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_512x36_2clk.sym
-utilities_xmdf::xmdfSetData $instance FileSet $fcount type symbol
-incr fcount
-
 utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_512x36_2clk.v
 utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog
 incr fcount
@@ -56,14 +48,6 @@ utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_51
 utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog_template
 incr fcount
 
-utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_512x36_2clk.vhd
-utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl
-incr fcount
-
-utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_512x36_2clk.vho
-utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template
-incr fcount
-
 utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_512x36_2clk.xco
 utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
 incr fcount
diff --git a/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.ngc b/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.ngc
new file mode 100644 (file)
index 0000000..e8c55a1
--- /dev/null
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.4e
+$4;1\7f4g<,[o}e~g`n;"2*413&;$>"9 > %10?*nhel%fmyz cnpfc`h(|dz$Sni fhdl[}jipV<?t>8P2bnh*kah92:?7=>?9593416339:=<95?1122?45<9'::7?:421236>4?<283M=:42@:30>5799>0?><<13902?OIX\^1hd`33483:42<;?0DYY^ZT;flqq:4=3:5h6=|2123bb22>$?:79?4639561=110<?7;7N10g82?OIX\^1|\7fah_dosp|Ys`{oxd1;50?06?3<NFY__6}|`g^gntq\7fX|axn\7feQnsrgqp93=878>7;4FNQWW>uthoVof|ywPtipfwmYimnk\7fi1;50?3g?3<NFY__6}|`g^dvhiYs`{oxd1;50?07?3<NFY__6}|`g^dvhiYs`{oxdRo|sdpw80<76;>0:7GAPTV9twi`Wo\7fg`Rzgrdqk[kc`i}o797>12:4B0>0FIH80:H<479683=@7911<6B[[PTV9`drfWje~by29:1<2f>1=G\^[YY4}d^fbpdYdg|d\7f0;4?>0`83?IR\Y__6z|Pd`vb[firf}6=6=0=;6F1?2@33>L3<958FGD2?=4<09>04=>?4::1042<0=8:=67;;82341=>8939748=;8C7?<GFI;1J<?5N139B67=F;01J_T@L_SGD7>DR:11IY^QFNGM2?F2<KH2J>6MJ139@L@ELWECHIC]J_U[SA7=DA:1H@_74CNONMQRBL8>0OB\J_FGMAWGSAFDTECH@7:AQADRBL81O>6JF3:FSK0=CX[K;96J_R@36?AVUI;?0H]\N339F07=AL:1MHN:4FEAF0>@CKY90JI^;;GFSA1=AN1:>7Kocsd38C6=@FM;0E?5F039J57=N:;1B?45FNHVPPDRB;2CEZ>5FOC08HL4<DF<0@BOKEE58HJANKHF?7A[[279OQQ4XD=1GYY=9;MWW7ZB13E__?RB;;MWW03=K]]>TH85BSFMM1>KRPJS>7@[WF4a8Idlhz_oy\7fdaac:OjjjtQm{ybcc=4N131?K743G;;86@>0168J466<2D:<?:4N0200>H68=>0B<>:4:L2432<F8:<86@>0968J46>;2D:=95A1027?K769=1E=<<;;O3271=I98>?7C?>559M54033G;:;95A10:7?K761:1E=?:4N0030>H6:8>0B<<=4:L2662<F88?86@>2468J441<2D:>::4N00;0>H6:090B<=;;O3041=I9:;?7C?<259M56133G;8495A12;0?K73<2D:8=:4N0620>H6<;>0B<:<4:L2032<F8><86@>4968J42>;2D:995A1427?K729=1E=8<<;O357>H6?:1E=5=4N0;1?K443G8;?6@=129M675<F;987C<;3:L116=I:?90B?9<;O0;7>H51:1E?==4N230?K55;2D8?>5A3518J6343G9=?6@<729M7=5<F:387C:?3:L757=I>;1E;>5A7918J2?53G287C6>3:L;76=I0=80B4=4N870?K?1;2D2;>5A9918J<?a3GHTNX]_IO]SVJVT?2DNXZA]K09L6>IL92Z?7]O]T`9SMKYE]ZCOTo5_IO]AQVHFEL90\_K>;P:8VDK6>Q;O=6]9;RMVVFC43ZZD86ZVPD11?P6(o{l%~k!hcy,`hn~(EqeyS\7fjPpovq[beXpfx;<=>PRdqvhq74:2_;#j|i.sd,cf~)keas#@v`r^pg[uhszVmhSua}0122[Wct}e~:??5Z0.eqb+ta'nis"nbdx.O{kwYulVzex\7fQhc^zlv567:VXn\7fxb{1208Q5)`zo$yj"ilx/aoo})JpfxT~iQ\7fnup\cfY\7fg{:;<>Q]erwop4553\:$k\7fh!rg-dg}(ddbr$Aua}_sf\tkruWniTtb|?016\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZquWyd\7f~Ril_ymq4567W[oxyaz>339V4*aun'xm#jmw.bnh|*K\7fg{U|~R~ats]dgZ~hz9:;=R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXojUsc\7f>?03]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[rtXxg~ySjmPxnp3455XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^e`[}iu89:?S_k|umv264=R8&myj#|i/fa{*fjlp&xoS}`{r^`jj969:81^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnf5;5><5Z0.eqb+ta'nis"nbdx.pg[uhszVhbb1<1209V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn=1=64=R8&myj#|i/fa{*fjlp&xoS}`{r^`jj929:81^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnf5?5>=5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbR>=0:W3+bta&{l$knv!cmi{+wbXxg~ySoga_003?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\676<]9%l~k }f.e`|+ekcq%yhR~ats]amkY4:91^<"i}f/pe+be\7f&jf`t"|k_qlwvZdnfV>9<6[?/fpe*w`(ojr%oaew/sf\tkruWkceS8<9;T2,cw`)zo%lou lljz,vaYwf}xTnd`Pxnp34565?2_;#j|i.sd,cf~)keas#\7fjPpovq[goiWqey<=>?1348Q5)`zo$yj"ilx/aoo})ulVzex\7fQmio]{kw67888<7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?013263=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ~hz9:;>?94U1-dvc(un&mht#mcky-q`Zvi|{UiecQwos234775>2_;#j|i.sd,cf~)keas#\7fjPpovq[goiWqey<=><269V4*aun'xm#jmw.bnh|*tcWyd\7f~Rlfn^zlv567;;8=7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?01613>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_ckm[}iu89:?=?>4U1-dvc(un&mht#mcky-q`Zvi|{Ulo1>1219V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril<0<14>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa?6;473\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cf:46;:0Y=!hrg,qb*adp'iggu!}d^rmpwY`k5>5>=5Z0.eqb+ta'nis"nbdx.pg[uhszVmh080>f:W3+bta&{l$knv!cmi{+wbXxg~ySjmP00d8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^32b>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\64`<]9%l~k }f.e`|+ekcq%yhR~ats]dgZ56n2_;#j|i.sd,cf~)keas#\7fjPpovq[beX<8l0Y=!hrg,qb*adp'iggu!}d^rmpwY`kV?9:6[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg=2=63=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumn6:2?84U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde?6;413\:$k\7fh!rg-dg}(ddbr$~iQ\7fnup\cfYf{{ol0>0=6:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfc929:?1^<"i}f/pe+be\7f&jf`t"|k_qlwvZadWhyyij2:>378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aX8;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP1378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aX:;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP3378Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aX<;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP53;8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aXl86;2?74U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4:66;30Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0>1:7?<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<2<>3;8Q5)`zo$yj"ilx/aoo})ulVzex\7fQhc^cpv`aXl86?2?74U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\`4:26;20Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0]36==R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=R?=8:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6W;837X> gsd-vc)`kq$h`fv re]sjqtXojUj\7f\7fkh_e3\77><]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<Q;299V4*aun'xm#jmw.bnh|*tcWyd\7f~Ril_`qqabYc9V?996[?/fpe*w`(ojr%oaew/sf\tkruWniTtb|?01211>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\|jt789;996[?/fpe*w`(ojr%oaew/sf\tkruWniTtb|?01011>S7'nxm"\7fh gbz-gim\7f'{nT|cz}_fa\|jt7899996[?/fpe*w`(ojr%oaew/sf\tkruWniTtb|?01615>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm858592_;#j|i.sd,cf~)keas#z|Ppovq[goi4849=6[?/fpe*w`(ojr%oaew/vp\tkruWkce0?0=1:W3+bta&{l$knv!cmi{+rtXxg~ySoga<2<15>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm818592_;#j|i.sd,cf~)keas#z|Ppovq[goi4<49<6[?/fpe*w`(ojr%oaew/vp\tkruWkceS=<?;T2,cw`)zo%lou lljz,swYwf}xTnd`P1328Q5)`zo$yj"ilx/aoo})pzVzex\7fQmio]165=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ5582_;#j|i.sd,cf~)keas#z|Ppovq[goiW=8;7X> gsd-vc)`kq$h`fv ws]sjqtXj`dT9?84U1-dvc(un&mht#mcky-tvZvi|{UiecQwos2345403\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flhXpfx;<=>>279V4*aun'xm#jmw.bnh|*quWyd\7f~Rlfn^zlv5679;=0Y=!hrg,qb*adp'iggu!xr^rmpwYeagUsc\7f>?00312>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_ckm[}iu89:9>:5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbRv`r12364413\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\flhXpfx;<===7:W3+bta&{l$knv!cmi{+rtXxg~ySoga_ymq4564:;<0Y=!hrg,qb*adp'iggu!xr^rmpwYeagUsc\7f>?0504?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pbhl\|jt789>:>=5Z0.eqb+ta'nis"nbdx.uq[uhszVmh0=0=0:W3+bta&{l$knv!cmi{+rtXxg~ySjm31?03?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb>1:76<]9%l~k }f.e`|+ekcq%|~R~ats]dg959:91^<"i}f/pe+be\7f&jf`t"y}_qlwvZad4=49<6[?/fpe*w`(ojr%oaew/vp\tkruWni793?i;T2,cw`)zo%lou lljz,swYwf}xTknQ?1g9V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_03e?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]15c=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[67a3\:$k\7fh!rg-dg}(ddbr${\7fQ\7fnup\cfY39o1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadW<8=7X> gsd-vc)`kq$h`fv ws]sjqtXojUj\7f\7fkh<1<12>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtbo5;5>;5Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef>1:70<]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlm7?3<9;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd8185>2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnk1;1249V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabY7:<1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQ>249V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabY5:<1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQ<249V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabY3:<1^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQ:289V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc95:5>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5979:01^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1=0=6<=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=1=1289V4*aun'xm#jmw.bnh|*quWyd\7f~Ril_`qqabYc95>5>45Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5939:11^<"i}f/pe+be\7f&jf`t"y}_qlwvZadWhyyijQk1^21<>S7'nxm"\7fh gbz-gim\7f'~xT|cz}_fa\evtboVn:S<<7;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[a7X:;20Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hiPd0]06==R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnUo=R:=8:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb6W<8>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc\7f>?0106?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]{kw67888>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc\7f>?0306?P6(o{l%~k!hcy,`hn~(\7f{U{by|Pgb]{kw678:8>7X> gsd-vc)`kq$h`fv ws]sjqtXojUsc\7f>?0514?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IdbcW{nThnQf_`fgwpd789:9?:5Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"Cnde]q`ZbdW`Ujhi}zb12341503\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(EhnoS\7fjPdb]j[dbc{|h;<=>9369V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.Ob`aYulVnhSdQndeqvf567819h7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$Aljk_sf\`fYnWhno\7fxl?012\g|:66=80Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%FmijPre]ggZoXimnxyo>?01]`}92998UX[=:=;T2,cw`)zo%l`= }d.eq5+aulj8%~im M`fg[wbXljUbSljkst`3456Xkp6?2<?PSV30<>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+HurjVnbjkQxr^pg[qkwWjs7<3=7;T2,cw`)zo%l`= }d.eq5+aulj8%~im Mrwa[aoanV}yS\7fjPtlr\g|:66:20Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%F\7fxlPdhde[rtXzmU\7fa}Qly=0=7==R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*Kt}kUoekhPws]q`ZrjxVir0>0<8:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/LqvfZbnnoU|~R|k_uos[f\7f;<7927X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$A~{m_ekebZquW{nTx`~Pltv?4;5>3\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(Ez\7fiSigif^uq[wbX|dzT`xz31?1:?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IvseWmcmjRy}_sf\phvXd|~7>3=6;T2,cw`)zo%l`= }d.eq5+aulj8%~im Mrwa[aoanV}yS\7fjPtlr\hpr;;7927X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$A~{m_ekebZquW{nTx`~Pltv?0;5>3\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(Ez\7fiSigif^uq[wbX|dzT`xz35?1:?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IvseWmcmjRy}_sf\phvXpfx7<3=6;T2,cw`)zo%l`= }d.eq5+aulj8%~im Mrwa[aoanV}yS\7fjPtlr\|jt;97927X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$A~{m_ekebZquW{nTx`~Pxnp?6;5>3\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(Ez\7fiSigif^uq[wbX|dzTtb|33?1:?P6(o{l%~k!hl1,q`*au9'myhn<!rea,IvseWmcmjRy}_sf\phvXpfx783=6;T2,cw`)zo%l`= }d.eq5+aulj8%~im Mrwa[aoanV}yS\7fjPtlr\|jt;=79;7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$hdhi_vp\vaYsey6;2?64U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lY7:11^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^31<>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+wbXljUbS?<7;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoX;;20Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]76==R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeR;=8:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/sf\`fYnW?9:7X> gsd-vc)`d9$yh"i}1/eq`f4)zmi$~iQkc^k\ip~78987<3==;T2,cw`)zo%l`= }d.eq5+aulj8%~im re]ggZoXe|r;<=<30?305>S7'nxm"\7fh gm2-va)`z8$l~im=.sf`+wbXljUbS`{w01218484:2_;#j|i.sd,ci6)zm%l~< hrea1*wbd'{nThnQf_lw{4565484:?>5Z0.eqb+ta'nf;"\7fj gs3-cwbd:'xoo"|k_ea\mZkrp9:;>1?11012?P6(o{l%~k!hl1,q`*au9'myhn<!rea,vaYckVcTaxv?010?6;553\:$k\7fh!rg-dh5(ul&my=#i}db0-vae(zmUooRgPmtz3454;:7;8=6[?/fpe*w`(oe:%~i!hr0,dvae5&{nh#\7fjPdb]j[hs\7f89:90>0<2:W3+bta&{l$ka>!re-dv4(`zmi9"\7fjl/sf\`fYnWd\7fs<=>=<2<274=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx1236929;<1^<"i}f/pe+bj7&{n$k\7f?!gsf`6+tck&xoSimPi^ov|567:5>5S^Y?309V4*aun'xm#jb?.sf,cw7)o{nh>#|kc.pg[aeXaVg~t=>?2=7=77=R8&myj#|i/fn3*wb(o{;%k\7fjl2/pgg*tcWmiTeRczx12369399:;0Y=!hrg,qb*ak8'xo#j|>.fpgg7(ulj%yhRjl_h]nq}678;6=2><4U1-dvc(un&mg<#|k/fp2*btck;$yhn!}d^f`[lYj}q:;<?29>00b?P6(o{l%~k!hl1,q`*au9'xm{kz R@O\VAYBFVL\JY?=9:W3+bta&{l$ka>!re-dv4(un~l\7f#_OB_SGDKPRXMG;9n6[?/fpe*w`(oe:%~i!hr0,qbr`s'[KFS[OCIE]ESCR69:90Y=!hrg,qb*ak8'xo#j|>.sdtbq)d}{xTjzh{_rvbp`YA[DUMJi?<6:W3+bta&{l$ka>!re-dv4(un~l\7f#n{}r^dtbqYt|h~nSK]B_GDg5(Oi;11^<"i}f/pe+bj7&{n$k\7f?!rguep*erz{Um{kzPsucwaZ@TEVLMh<#Fn0307>S7'nxm"\7fh gm2-va)`z8$yjzh{/bwqvZ`pn}Uxxlzj_GQN[C@c::<0Y=!hrg,qb*ak8'xo#j|>.sdtbq)d}{xTjzh{_rvbp`YA[DUMJi<"Io1;?P6(o{l%~k!hl1,q`*au9'xm{kz ctpq[cqa|Vy\7fmykPFRO\BCb5%@d:=?64U1-dvc(un&mg<#|k/fp2*w`pn}%na}zv_guepZ`e:>1^<"i}f/pe+bj7&{n$k\7f?!rguep*cjx}sTjzh{_h0f?P6(o{l%~k!hl1,q`*au9'xm{kz elrw}Z`pn}UbSb|?0121b>S7'nxm"\7fh gm2-va)`z8$yjzh{/dosp|Ya\7fo~TeRa}0123573<]9%l~k }f.eo4+tc'nx:"\7fhxfu-vw`tX~hfbh?74U1-dvc(un&mg<#|k/fpbw+tt|z%ym`Qjmqvz[cdXa::0Y=!hrg,qb*ak8'xo#j|ns/pppv)uidUna}zv_g`\mZiu89:;?>5Z0.eqb+ta'nf;"\7fj gscp*wus{&xjaRkbpu{\bgYnWfx;<=>>2310?P6(o{l%~k!hl1,q`*auiz$y\7fy} r`o\ahvsqVliSdQ`r123444>;:1^<"i}f/pe+bj7&{n$k\7fo|.sqww*tfeVof|ywPfc]j[jt789:::9=<;T2,cw`)zo%l`= }d.eqev(u{}y$~lcPelrw}Z`eW`Ud~=>?00;276=R8&myj#|i/fn3*wb(o{kx"\7f}{s.pbiZcjx}sTjoQf_np34565919<7X> gsd-vc)`d9$yh"i}ar,qwqu(zhgTi`~{y^da[lYhz9:;<??7_RU377=R8&myj#|i/fn3*wb(o{kx"\7f}{s.pbiZcjx}sTjoQf_np34565>:80Y=!hrg,qb*ak8'xo#j|ns/pppv)uidUna}zv_g`\mZiu89:;9>==;T2,cw`)zo%l`= }d.eqev(u{}y$~lcPelrw}Z`eW`Ud~=>?0922b>S7'nxm"\7fh gm2-va)uidU}magk_guep75<]9%l~k }f.eo4+tc'{zex\7f!BcnwmpZeh}g~996[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at0013>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|88:=?84U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov2674f3\:$k\7fh!rg-dh5(ul&x{by| MbmvjqYdg|d\7f=?Qmde211>S7'nxm"\7fh gm2-va)uxg~y#@m`uov\gjsi|8?9:6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at07261=R8&myj#|i/fn3*wb(zyd\7f~"Clotlw[firf}9986[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at707?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphs1:80Y=!hrg,qb*ak8'xo#\7f~ats-Ngjsi|VidyczPxnp?4;76W@D]S=<l;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[}iu484:=?m4U1-dvc(un&mg<#|k/srmpw)Jkf\7fexRm`uov\|jt;:7;:>n5Z0.eqb+ta'nf;"\7fj rqlwv*Kdg|d\7fSnaznu]{kw:468;:j6[?/fpe*w`(oe:%~i!}povq+firf}6;2<h4U1-dvc(un&mg<#|k/srmpw)dg|d\7f0<0>f:W3+bta&{l$ka>!re-qtkru'je~by2=>0d8Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<2<2b>S7'nxm"\7fh gm2-va)uxg~y#naznu>7:4`<]9%l~k }f.eo4+tc'{zex\7f!lotlw8086m2_;#j|i.sd,ci6)zm%y|cz}/bmvjqY79l1^<"i}f/pe+bj7&{n$~}`{r.alqkrX98o0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsW;;n7X> gsd-vc)`d9$yh"|\7fnup,gjsi|V9:i6[?/fpe*w`(oe:%~i!}povq+firf}U?=h5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~T9?<4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?30?01?P6(o{l%~k!hl1,q`*twf}x$ob{at^f28485:2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9585>?5Z0.eqb+ta'nf;"\7fj rqlwv*eh}g~Th<2<>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?0;453\:$k\7fh!rg-dh5(ul&x{by| cnwmpZb64<49=6[?/fpe*w`(oe:%~i!}povq+firf}Uo=R>=3:W3+bta&{l$ka>!re-qtkru'je~byQk1^2\577<]9%l~k }f.eo4+tc'{zex\7f!lotlw[a7X9;90Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T=R?=1:W3+bta&{l$ka>!re-qtkru'je~byQk1^017>S7'nxm"\7fh gm2-va)uxg~y#naznu]g5Z4X9;;0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T??=4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?P3^317>S7'nxm"\7fh gm2-va)uxg~y#naznu]g5Z5X:;;0Y=!hrg,qb*ak8'xo#\7f~ats-`kphsWm;T8??4U1-dvc(un&mg<#|k/srmpw)dg|d\7fSi?P5368Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_omw4566:11^<"i}f/pe+bj7&~x$kzo|.vqww*tfeVl~`aQib^k11>S7'nxm"\7fh gm2-sw)`\7fhy%{~z|/scn[cskdVc9o6[?/fpe*w`(oe:%{\7f!hw`q-svrt'{kfSk{cl^k\kw67898m7X> gsd-vc)`d9$|~"ixar,twqu(zhgTjxbc_h]lv5678882?>5Z0.eqb+ta'nf;"z| gvcp*rus{&xjaRhzlm]j[jt789::>4Q\W10e?P6(o{l%~k!hl1,tv*apiz$|\7fy} r`o\bpjkW`Ud~=>?00476c=R8&myj#|i/fn3*rt(o~kx"z}{s.pbiZ`rdeUbSb|?0122=44a3\:$k\7fh!rg-dh5(pz&m|m~ xsuq,vdkXn|fgSdQ`r123477?;:1^<"i}f/pe+bj7&~x$kzo|.vqww*tfeVl~`aQf_np3456591UX[=<j;T2,cw`)zo%l`= xr.etev(p{}y$~lcPftno[lYhz9:;<?8=e:W3+bta&{l$ka>!ws-dsdu)\7fz~x#\7fob_gwohZoXg{:;<=;<2d9V4*aun'xm#jb?.vp,crgt&~y\7f\7f"|nm^dvhiYnWfx;<=>702`8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.Ob`aYpzVnjxlQlotlw[lYflm:;<=<<b:W3+bta&{l$ka>!ws-dsae6&~nhiuz M`fg[rtXlh~jSnaznu]j[dbc89:;8>l4U1-dvc(un&mg<#y}/fugg4(pljosx"Cnde]tvZbf|hUhcx`{_h]b`a6789<8n6[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~$Aljk_vp\`drfWje~byQf_`fg45670=:0Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GjhiQxr^fbpdYdg|d\7fSdQnde2345Ydq5;58=5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@okd^uq[agsiVidyczPi^cg`5678Vir080;1:W3+bta&{l$ka>!ws-dsae6&~nhiuz M`fg[rtXlh~jSnaznu]j[dbc89:;Snw35?372>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,IdbcW~xThlzn_bmvjqYnWhno<=>?_b{?1;46WZ];845Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@okd^uq[agsiVidyczPi^cg`5678Vrd~1?110]JJSY7<:1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'DkohRy}_ecweZeh}g~TeRokd1234Z~hz585=<:<;T2,cw`)zo%l`= xr.et`f7)\7fminty!Baef\swYci}kTob{at^k\eab789:Ttb|33?3206=R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HgclV}ySio{a^alqkrXaVkoh=>?0^zlv929989<7X> gsd-vc)`d9$|~"ixdb3-saebp}%F\7fxlPdhde[rtXzmU\7fa}Qly=2=72=R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HurjVnbjkQxr^pg[qkwWjs7=3=8;T2,cw`)zo%l`= xr.et`f7)\7fminty!Bst`\`l`aW~xT~iQ{mq]`}949;>1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'Dy~nRjffg]tvZtcW}g{Snw33?14?P6(o{l%~k!hl1,tv*aplj;%{imjxu-NwpdXl`lmSz|Pre]wiuYdq5>5?55Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#@}zb^fjbcYpzVxoSyc\7f_mww858402_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(Ez\7fiSigif^uq[wbX|dzT`xz31?1;?P6(o{l%~k!hl1,tv*aplj;%{imjxu-NwpdXl`lmSz|Pre]wiuYk}}692>64U1-dvc(un&mg<#y}/fugg4(pljosx"C|uc]gmc`X\7f{UyhRzbp^nvp959;11^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'Dy~nRjffg]tvZtcW}g{Sa{{<5<0<>S7'nxm"\7fh gm2-sw)`\7fmi:"zjleyv,IvseWmcmjRy}_sf\phvXd|~793=7;T2,cw`)zo%l`= xr.et`f7)\7fminty!Bst`\`l`aW~xT~iQ{mq]{kw:76:20Y=!hrg,qb*ak8'}y#jykc0,t`fc\7f|&GxyoQkigd\swYulV~f|Rv`r=3=7==R8&myj#|i/fn3*rt(o~nh=#ykcdzw+HurjVnbjkQxr^pg[qkwWqey0?0<8:W3+bta&{l$ka>!ws-dsae6&~nhiuz Mrwa[aoanV}yS\7fjPtlr\|jt;;7937X> gsd-vc)`d9$|~"ixdb3-saebp}%F\7fxlPdhde[rtXzmU\7fa}Qwos>7:6><]9%l~k }f.eo4+qu'n}oo< xdbg{p*Kt}kUoekhPws]q`ZrjxVrd~1;12g9V4*aun'xm#jb?.vp,crbd9'}oohv{/ekebZquW{nTx`~30?0e?P6(o{l%~k!hl1,tv*aplj;%{imjxu-tvZbf|hUhcx`{_h]36c=R8&myj#|i/fn3*rt(o~nh=#ykcdzw+rtXlh~jSnaznu]j[44a3\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)pzVnjxlQlotlw[lY5:o1^<"i}f/pe+bj7&~x$kzjl1/ugg`~s'~xThlzn_bmvjqYnW:8m7X> gsd-vc)`d9$|~"ixdb3-saebp}%|~Rjnt`]`kphsW`U?>k5Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#z|Pd`vb[firf}UbS8<i;T2,cw`)zo%l`= xr.et`f7)\7fminty!xr^fbpdYdg|d\7fSdQ9399V4*aun'xm#jb?.vp,crbd9'}oohv{/vp\`drfWje~byQf_`fg4567484846[?/fpe*w`(oe:%{\7f!hwea2*rbdmq~${\7fQkauc\gjsi|VcTmij?012?6;5?3\:$k\7fh!rg-dh5(pz&m|hn?!weaf|q)pzVnjxlQlotlw[lYflm:;<=2<>2:8Q5)`zo$yj"ic0/uq+bqck8$|hnkwt.uq[agsiVidyczPi^cg`56785>5?55Z0.eqb+ta'nf;"z| gvf`5+qcklr\7f#z|Pd`vb[firf}UbSljk0123808412_;#j|i.sd,ci6)\7f{%l{im>.vf`a}r(\7f{UomyoPcnwmpZoXimn;<=>35?32`>S7'nxm"\7fh gm2-sw)uidU|~Rka_h317>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|;?0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|Vidycz>2378Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkr6=;>0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|Vidycz<259V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjq05<2_;#j|i.sd,ci6)\7f{%||cz}/LalqkrXkf\7fex4==;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[}iu494:=RGAV^21g>S7'nxm"\7fh gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1?1100`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWqey0?0>13f8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx7?3?>13a8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx7?3?=2b9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqY\7fg{6?2<?=c:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZ~hz5?5=<?6;T2,cw`)zo%l`= xr.usjqt(F;;m7X> gsd-vc)`d9$|~"y\7fnup,gjsi|5:5=k5Z0.eqb+ta'nf;"z| wqlwv*eh}g~7=3?i;T2,cw`)zo%l`= xr.usjqt(kf\7fex1<11g9V4*aun'xm#jb?.vp,suhsz&idycz33?3e?P6(o{l%~k!hl1,tv*qwf}x$ob{at=6=5c=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov?1;7b3\:$k\7fh!rg-dh5(pz&}{by| cnwmpZ66m2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqY69l1^<"i}f/pe+bj7&~x${}`{r.alqkrX:8o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW:;n7X> gsd-vc)`d9$|~"y\7fnup,gjsi|V>:i6[?/fpe*w`(oe:%{\7f!xpovq+firf}U>>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<2?>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e3?5;453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb64;49>6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo=1=1239V4*aun'xm#jb?.vp,suhsz&idyczPd0>7:74<]9%l~k }f.eo4+qu'~zex\7f!lotlw[a7;=78:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:S=<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj>_002?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f2[7463\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb6W:8:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn:S9<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj>_401?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f18585:2_;#j|i.sd,ci6)\7f{%||cz}/bmvjqYc:5;5>?5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th?2=>308Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_e0?7;453\:$k\7fh!rg-dh5(pz&}{by| cnwmpZb54=49>6[?/fpe*w`(oe:%{\7f!xpovq+firf}Uo>1;1209V4*aun'xm#jb?.vp,suhsz&idyczPd3]366=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`7Y7W88:7X> gsd-vc)`d9$|~"y\7fnup,gjsi|Vn9S<<<;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj=_0]264=R8&myj#|i/fn3*rt(\7fyd\7f~"m`uov\`7Y5::1^<"i}f/pe+bj7&~x${}`{r.alqkrXl;U9S<<>;T2,cw`)zo%l`= xr.usjqt(kf\7fexRj=_200?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[6Y6:81^<"i}f/pe+bj7&~x${}`{r.alqkrXl;U?><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th?Q:179V4*aun'xm#`kb/emvpZoX88<0Y=!hrg,qb*kbe&ndyyQf_034?P6(o{l%~k!bel-gkprXaV;;=:5Z0.eqb+ta'dof#iazt^k\54703\:$k\7fh!rg-nah)cg|~TeR?=169V4*aun'xm#`kb/emvpZoX9:;<7X> gsd-vc)jmd%ocxzPi^3752=R8&myj#|i/lgn+air|VcT=8?8;T2,cw`)zo%fi`!kotv\mZ719>1^<"i}f/pe+hcj'me~xRgP1634?P6(o{l%~k!bel-gkprXaV;3=:5Z0.eqb+ta'dof#iazt^k\5<713\:$k\7fh!rg-nah)cg|~TeR<>7:W3+bta&{l$ahc dnww[lY588=0Y=!hrg,qb*kbe&ndyyQf_3323>S7'nxm"\7fh mdo,`jssW`U9><94U1-dvc(un&gna"j`uu]j[756?2_;#j|i.sd,i`k(lf\7f\7fSdQ=4058Q5)`zo$yj"cjm.flqqYnW;?:;6[?/fpe*w`(elg$hb{{_h]1241<]9%l~k }f.ofi*bh}}UbS?9>7:W3+bta&{l$ahc dnww[lY508=0Y=!hrg,qb*kbe&ndyyQf_3;22>S7'nxm"\7fh mdo,`jssW`U8=:5Z0.eqb+ta'dof#iazt^k\75703\:$k\7fh!rg-nah)cg|~TeR=>169V4*aun'xm#`kb/emvpZoX;;;<7X> gsd-vc)jmd%ocxzPi^1052=R8&myj#|i/lgn+air|VcT?9?8;T2,cw`)zo%fi`!kotv\mZ529?1^<"i}f/pe+hcj'me~xRgP4048Q5)`zo$yj"cjm.flqqYnW<;=7X> gsd-vc)jmd%ocxzPi^422>S7'nxm"\7fh mdo,`jssW`U<=;5Z0.eqb+ta'dof#iazt^k\<40<]9%l~k }f.ofi*bh}}UbS4?j;T2,cw`)zo%fi`!hdl,gi*KuidUYM@?>f:W3+bta&{l$ahc geo-`h)JzhgT^LC>0328Q5)`zo$yj"cjm.egi+bj'DxjaR\NM02365=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN557582_;#j|i.sd,i`k(omg%h`!Br`o\VDK68;8;7X> gsd-vc)jmd%lh` km.OqehYUID;;??>4U1-dvc(un&gna"ikm/fn+HtfeVXJA<>;219V4*aun'xm#`kb/ffn*ak(E{kfS_OB11714>S7'nxm"\7fh mdo,cak)ld%F~lcPR@O243473\:$k\7fh!rg-nah)`ld$oa"C}al]QEH77?;:0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE8:3>=5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF==7>f:W3+bta&{l$ahc geo-`h)JzhgT^LC>1328Q5)`zo$yj"cjm.egi+bj'DxjaR\NM03365=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN547582_;#j|i.sd,i`k(omg%h`!Br`o\VDK69;8;7X> gsd-vc)jmd%lh` km.OqehYUID;:??>4U1-dvc(un&gna"ikm/fn+HtfeVXJA<?;219V4*aun'xm#`kb/ffn*ak(E{kfS_OB10714>S7'nxm"\7fh mdo,cak)ld%F~lcPR@O253473\:$k\7fh!rg-nah)`ld$oa"C}al]QEH76?;:0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE8;3>=5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF=<7>f:W3+bta&{l$ahc geo-`h)JzhgT^LC>2328Q5)`zo$yj"cjm.egi+bj'DxjaR\NM00365=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN577582_;#j|i.sd,i`k(omg%h`!Br`o\VDK6:;8;7X> gsd-vc)jmd%lh` km.OqehYUID;9??>4U1-dvc(un&gna"ikm/fn+HtfeVXJA<<;219V4*aun'xm#`kb/ffn*ak(E{kfS_OB13714>S7'nxm"\7fh mdo,cak)ld%F~lcPR@O263473\:$k\7fh!rg-nah)`ld$oa"C}al]QEH75?;:0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE883>=5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF=?7>f:W3+bta&{l$ahc geo-`h)JzhgT^LC>3328Q5)`zo$yj"cjm.egi+bj'DxjaR\NM01365=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN567582_;#j|i.sd,i`k(omg%h`!Br`o\VDK6;;8;7X> gsd-vc)jmd%lh` km.OqehYUID;8??>4U1-dvc(un&gna"ikm/fn+HtfeVXJA<=;219V4*aun'xm#`kb/ffn*ak(E{kfS_OB12714>S7'nxm"\7fh mdo,cak)ld%F~lcPR@O273473\:$k\7fh!rg-nah)`ld$oa"C}al]QEH74?;:0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE893>=5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF=>7>f:W3+bta&{l$ahc geo-`h)JzhgT^LC>4328Q5)`zo$yj"cjm.egi+bj'DxjaR\NM06365=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN517582_;#j|i.sd,i`k(omg%h`!Br`o\VDK6<;8;7X> gsd-vc)jmd%lh` km.OqehYUID;???>4U1-dvc(un&gna"ikm/fn+HtfeVXJA<:;1g9V4*aun'xm#`kb/ffn*ak(E{kfS_OB143e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL355c=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN527a3\:$k\7fh!rg-nah)`ld$oa"C}al]QEH7?9o1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ90;n7X> gsd-vc)jmd%lh` km.OqehYUID8:j6[?/fpe*w`(elg$kic!dl-NvdkXZHG9<<h4U1-dvc(un&gna"ikm/fn+HtfeVXJA??>f:W3+bta&{l$ahc geo-`h)JzhgT^LC=20d8Q5)`zo$yj"cjm.egi+bj'DxjaR\NM312b>S7'nxm"\7fh mdo,cak)ld%F~lcPR@O104`<]9%l~k }f.ofi*ace'nf#@|nm^PBI736n2_;#j|i.sd,i`k(omg%h`!Br`o\VDK5>8l0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE;=:j6[?/fpe*w`(elg$kic!dl-NvdkXZHG94<h4U1-dvc(un&gna"ikm/fn+HtfeVXJA?7>e:W3+bta&{l$ahc geo-`h)JzhgT^LC<1g9V4*aun'xm#`kb/ffn*ak(E{kfS_OB313e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL125c=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN777a3\:$k\7fh!rg-nah)`ld$oa"C}al]QEH549o1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ;=;m7X> gsd-vc)jmd%lh` km.OqehYUID9>=k5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF?;?i;T2,cw`)zo%fi`!hdl,gi*KuidUYM@=81g9V4*aun'xm#`kb/ffn*ak(E{kfS_OB393e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL1:5`=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN04`<]9%l~k }f.ofi*ace'nf#@|nm^PBI166n2_;#j|i.sd,i`k(omg%h`!Br`o\VDK398l0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE=8:j6[?/fpe*w`(elg$kic!dl-NvdkXZHG??<h4U1-dvc(un&gna"ikm/fn+HtfeVXJA9:>f:W3+bta&{l$ahc geo-`h)JzhgT^LC;50d8Q5)`zo$yj"cjm.egi+bj'DxjaR\NM542b>S7'nxm"\7fh mdo,cak)ld%F~lcPR@O734`<]9%l~k }f.ofi*ace'nf#@|nm^PBI1>6n2_;#j|i.sd,i`k(omg%h`!Br`o\VDK318o0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE<;m7X> gsd-vc)jmd%lh` km.OqehYUID?;=k5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF9<?i;T2,cw`)zo%fi`!hdl,gi*KuidUYM@;=1g9V4*aun'xm#`kb/ffn*ak(E{kfS_OB523e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL775c=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN107a3\:$k\7fh!rg-nah)`ld$oa"C}al]QEH319o1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ=>;m7X> gsd-vc)jmd%lh` km.OqehYUID?3=k5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF94?j;T2,cw`)zo%fi`!hdl,gi*KuidUYM@8>f:W3+bta&{l$ahc geo-`h)JzhgT^LC900d8Q5)`zo$yj"cjm.egi+bj'DxjaR\NM732b>S7'nxm"\7fh mdo,cak)ld%F~lcPR@O564`<]9%l~k }f.ofi*ace'nf#@|nm^PBI356n2_;#j|i.sd,i`k(omg%h`!Br`o\VDK1<8l0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE??:j6[?/fpe*w`(elg$kic!dl-NvdkXZHG=:<h4U1-dvc(un&gna"ikm/fn+HtfeVXJA;9>f:W3+bta&{l$ahc geo-`h)JzhgT^LC980d8Q5)`zo$yj"cjm.egi+bj'DxjaR\NM7;2a>S7'nxm"\7fh mdo,cak)ld%F~lcPR@O45c=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN357a3\:$k\7fh!rg-nah)`ld$oa"C}al]QEH169o1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ?;;m7X> gsd-vc)jmd%lh` km.OqehYUID=8=k5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF;9?i;T2,cw`)zo%fi`!hdl,gi*KuidUYM@9:1g9V4*aun'xm#`kb/ffn*ak(E{kfS_OB773e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL545c=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN3=7a3\:$k\7fh!rg-nah)`ld$oa"C}al]QEH1>9l1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ08l0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE1::j6[?/fpe*w`(elg$kic!dl-NvdkXZHG3=<h4U1-dvc(un&gna"ikm/fn+HtfeVXJA5<>f:W3+bta&{l$ahc geo-`h)JzhgT^LC730d8Q5)`zo$yj"cjm.egi+bj'DxjaR\NM962b>S7'nxm"\7fh mdo,cak)ld%F~lcPR@O;14`<]9%l~k }f.ofi*ace'nf#@|nm^PBI=06n2_;#j|i.sd,i`k(omg%h`!Br`o\VDK??8l0Y=!hrg,qb*kbe&moa#jb/LpbiZTFE12:j6[?/fpe*w`(elg$kic!dl-NvdkXZHG35<k4U1-dvc(un&gna"ikm/fn+HtfeVXJA4?i;T2,cw`)zo%fi`!hdl,gi*KuidUYM@7?1g9V4*aun'xm#`kb/ffn*ak(E{kfS_OB903e?P6(o{l%~k!bel-d`h(ce&Gym`Q]AL;15c=R8&myj#|i/lgn+bbj&mg$A\7fob_SCN=67a3\:$k\7fh!rg-nah)`ld$oa"C}al]QEH?39o1^<"i}f/pe+hcj'nnf"ic Mscn[WGJ1<;m7X> gsd-vc)jmd%lh` km.OqehYUID3==k5Z0.eqb+ta'dof#jjb.eo,IwgjW[KF5:?i;T2,cw`)zo%fi`!hdl,gi*KuidUYM@771g9V4*aun'xm#`kb/ffn*ak(E{kfS_OB983:?P6(o{l%~k!bel-d`h(ce&D:<<?6;T2,cw`)zo%fi`!hdl,gi*H68:;27X> gsd-vc)jmd%lh` km.L2407>3\:$k\7fh!rg-nah)`ld$oa"@>063:?P6(o{l%~k!bel-d`h(ce&D:<4?7;T2,cw`)zo%fi`!hdl,gi*H69830Y=!hrg,qb*kbe&moa#jb/O3254?<]9%l~k }f.ofi*ace'nf#C?>30;8Q5)`zo$yj"cjm.egi+bj'G;:9<74U1-dvc(un&gna"ikm/fn+K76?830Y=!hrg,qb*kbe&moa#jb/O32=4?<]9%l~k }f.ofi*ace'nf#C?=10;8Q5)`zo$yj"cjm.egi+bj'G;9?<74U1-dvc(un&gna"ikm/fn+K75=830Y=!hrg,qb*kbe&moa#jb/O3134?<]9%l~k }f.ofi*ace'nf#C?=90:8Q5)`zo$yj"cjm.egi+bj'G;8=45Z0.eqb+ta'dof#jjb.eo,J456901^<"i}f/pe+hcj'nnf"ic N0105<=R8&myj#|i/lgn+bbj&mg$B<=:189V4*aun'xm#`kb/ffn*ak(F89<=45Z0.eqb+ta'dof#jjb.eo,J45>901^<"i}f/pe+hcj'nnf"ic N0625<=R8&myj#|i/lgn+bbj&mg$B<:<189V4*aun'xm#`kb/ffn*ak(F8>>=45Z0.eqb+ta'dof#jjb.eo,J420901^<"i}f/pe+hcj'nnf"ic N06:5==R8&myj#|i/lgn+bbj&mg$B<;>9:W3+bta&{l$ahc geo-`h)I9<;:56[?/fpe*w`(elg$kic!dl-M505612_;#j|i.sd,i`k(omg%h`!A1472=>S7'nxm"\7fh mdo,cak)ld%E=89>9:W3+bta&{l$ahc geo-`h)I9<3:56[?/fpe*w`(elg$kic!dl-M537612_;#j|i.sd,i`k(omg%h`!A1712=>S7'nxm"\7fh mdo,cak)ld%E=;;>9:W3+bta&{l$ahc geo-`h)I9?=:56[?/fpe*w`(elg$kic!dl-M53?602_;#j|i.sd,i`k(omg%h`!A163:?P6(o{l%~k!bel-d`h(ce&D:;<?6;T2,cw`)zo%fi`!hdl,gi*H6?:;27X> gsd-vc)jmd%lh` km.L2307>3\:$k\7fh!rg-nah)`ld$oa"@>763:?P6(o{l%~k!bel-d`h(ce&D:;4?6;T2,cw`)zo%fi`!hdl,gi*H608;27X> gsd-vc)jmd%lh` km.L2<67>3\:$k\7fh!rg-nah)`ld$oa"@>843:?P6(o{l%~k!bel-d`h(ce&D:4:?6;T2,cw`)zo%fi`!hdl,gi*H600;37X> gsd-vc)jmd%lh` km.L2=4?<]9%l~k }f.ofi*ace'nf#C?610;8Q5)`zo$yj"cjm.egi+bj'G;2?<74U1-dvc(un&gna"ikm/fn+K7>=830Y=!hrg,qb*kbe&moa#jb/O3:34?<]9%l~k }f.ofi*ace'nf#C?690;8Q5)`zo$yj"cjm.egi+bj'G8;=<74U1-dvc(un&gna"ikm/fn+K47;830Y=!hrg,qb*kbe&moa#jb/O0314?<]9%l~k }f.ofi*ace'nf#C<?70;8Q5)`zo$yj"cjm.egi+bj'G8;5<64U1-dvc(un&gna"ikm/fn+K46901^<"i}f/pe+hcj'nnf"ic N3325<=R8&myj#|i/lgn+bbj&mg$B??<189V4*aun'xm#`kb/ffn*ak(F;;>=45Z0.eqb+ta'dof#jjb.eo,J770901^<"i}f/pe+hcj'nnf"ic N33:5<=R8&myj#|i/lgn+bbj&mg$B?<>189V4*aun'xm#`kb/ffn*ak(F;88=45Z0.eqb+ta'dof#jjb.eo,J742901^<"i}f/pe+hcj'nnf"ic N3045<=R8&myj#|i/lgn+bbj&mg$B?<6199V4*aun'xm#`kb/ffn*ak(F;9:56[?/fpe*w`(elg$kic!dl-M667612_;#j|i.sd,i`k(omg%h`!A2212=>S7'nxm"\7fh mdo,cak)ld%E>>;>9:W3+bta&{l$ahc geo-`h)I::=:56[?/fpe*w`(elg$kic!dl-M66?612_;#j|i.sd,i`k(omg%h`!A2532=>S7'nxm"\7fh mdo,cak)ld%E>9=>9:W3+bta&{l$ahc geo-`h)I:=?:56[?/fpe*w`(elg$kic!dl-M611612_;#j|i.sd,i`k(omg%h`!A25;2<>S7'nxm"\7fh mdo,cak)ld%E>8?6;T2,cw`)zo%fi`!hdl,gi*H5=8;27X> gsd-vc)jmd%lh` km.L1167>3\:$k\7fh!rg-nah)`ld$oa"@=543:?P6(o{l%~k!bel-d`h(ce&D99:?6;T2,cw`)zo%fi`!hdl,gi*H5=0;27X> gsd-vc)jmd%lh` km.L1247>3\:$k\7fh!rg-nah)`ld$oa"@=623:?P6(o{l%~k!bel-d`h(ce&D9:8?6;T2,cw`)zo%fi`!hdl,gi*H5>>;27X> gsd-vc)jmd%lh` km.L12<7?3\:$k\7fh!rg-nah)`ld$oa"@=70;8Q5)`zo$yj"cjm.egi+bj'G8<=<74U1-dvc(un&gna"ikm/fn+K40;830Y=!hrg,qb*kbe&moa#jb/O0414?<]9%l~k }f.ofi*ace'nf#C<870;8Q5)`zo$yj"cjm.egi+bj'G8<5<74U1-dvc(un&gna"ikm/fn+K4?9830Y=!hrg,qb*kbe&moa#jb/O0;74?<]9%l~k }f.ofi*ace'nf#C<750;8Q5)`zo$yj"cjm.egi+bj'G83;<74U1-dvc(un&gna"ikm/fn+K4?1820Y=!hrg,qb*kbe&moa#jb/O0:5<=R8&myj#|i/lgn+bbj&mg$B?7>189V4*aun'xm#`kb/ffn*ak(F;38=55Z0.eqb+ta'dof#jjb.eo,J67602_;#j|i.sd,i`k(omg%h`!A323;?P6(o{l%~k!bel-d`h(ce&D89<64U1-dvc(un&gna"ikm/fn+K50911^<"i}f/pe+hcj'nnf"ic N2;2<>S7'nxm"\7fh mdo,cak)ld%E8<?7;T2,cw`)zo%fi`!hdl,gi*H3;820Y=!hrg,qb*kbe&moa#jb/O665==R8&myj#|i/lgn+bbj&mg$B99>8:W3+bta&{l$ahc geo-`h)I<0;37X> gsd-vc)jmd%lh` km.L654><]9%l~k }f.ofi*ace'nf#C;<199V4*aun'xm#`kb/ffn*ak(F<?:46[?/fpe*w`(elg$kic!dl-M127?3\:$k\7fh!rg-nah)`ld$oa"@:90:8Q5)`zo$yj"cjm.egi+bj'G<:=55Z0.eqb+ta'dof#jjb.eo,J35602_;#j|i.sd,i`k(omg%h`!A643;?P6(o{l%~k!bel-d`h(ce&D=;<64U1-dvc(un&gna"ikm/fn+K0>9>1^<"i}f/pe+hcj'nnf"ic N63;?P6(o{l%~k!bel-d`h(ce&D<=<64U1-dvc(un&gna"ikm/fn+K14911^<"i}f/pe+hcj'nnf"ic N672<>S7'nxm"\7fh mdo,cak)ld%E;:?7;T2,cw`)zo%fi`!hdl,gi*H01820Y=!hrg,qb*kbe&moa#jb/O:25==R8&myj#|i/lgn+bbj&mg$B5=>8:W3+bta&{l$ahc geo-`h)I0<;37X> gsd-vc)jmd%lh` km.L;34><]9%l~k }f.ofi*ace'nf#C66169V4*aun'xm#`kb/ffn*ak(F0;37X> gsd-vc)jmd%lh` km.L:54><]9%l~k }f.ofi*ace'nf#C7<199V4*aun'xm#`kb/ffn*ak(F0?:46[?/fpe*w`(elg$kic!dl-M=27?3\:$k\7fh!rg-nah)`ld$oa"@69378Q5)`zo$yj"cjm.egi+bj'V|j~d`key2345:76;<0Y=!hrg,qb*kbe&moa#jb/^tbvlhcmq:;<=2>0?05?P6(o{l%~k!bel-d`h(ce&U}m\7fgaddz3456;9849:6[?/fpe*w`(elg$kic!dl-\rdtnfmos<=>?<00=63=R8&myj#|i/lgn+bbj&mg$S{o}ioff|56785;82?84U1-dvc(un&gna"ikm/fn+Zpfz`doiu>?01>20;413\:$k\7fh!rg-nah)`ld$oa"Qyaskm``~789:7=80=6:W3+bta&{l$ahc geo-`h)X~hxbbikw01238409:?1^<"i}f/pe+hcj'nnf"ic _wcqmkbbp9:;<1?8>348Q5)`zo$yj"cjm.egi+bj'V|j~d`key2345:6078=7X> gsd-vc)jmd%lh` km.]uewoillr;<=>318<11>S7'nxm"\7fh mdo,cak)ld%Tzl|fneg{45674849:6[?/fpe*w`(elg$kic!dl-\rdtnfmos<=>?<32=63=R8&myj#|i/lgn+bbj&mg$S{o}ioff|567858:2?84U1-dvc(un&gna"ikm/fn+Zpfz`doiu>?01>16;413\:$k\7fh!rg-nah)`ld$oa"Qyaskm``~789:7>>0=6:W3+bta&{l$ahc geo-`h)X~hxbbikw01238729:?1^<"i}f/pe+hcj'nnf"ic _wcqmkbbp9:;<1<:>348Q5)`zo$yj"cjm.egi+bj'V|j~d`key2345:5>78=7X> gsd-vc)jmd%lh` km.]uewoillr;<=>326<12>S7'nxm"\7fh mdo,cak)ld%Tzl|fneg{45674;25>;5Z0.eqb+ta'dof#jjb.eo,[sguagnnt=>?0=0::73<]9%l~k }f.ofi*ace'nf#Rxnrhlga}6789692?84U1-dvc(un&gna"ikm/fn+Zpfz`doiu>?01>04;413\:$k\7fh!rg-nah)`ld$oa"Qyaskm``~789:7?<0=6:W3+bta&{l$ahc geo-`h)X~hxbbikw01238649:?1^<"i}f/pe+hcj'nnf"ic _wcqmkbbp9:;<1=<>348Q5)`zo$yj"cjm.egi+bj'V|j~d`key2345:4<78=7X> gsd-vc)jmd%lh` km.]uewoillr;<=>334<11>S7'nxm"\7fh mdo,cak)ld%Tzl|fneg{45674:4996[?/fpe*w`(elg$kic!dl-\rdtnfmos<=>?<5<11>S7'nxm"\7fh mdo,cak)ld%Tzl|fneg{45674<4996[?/fpe*w`(elg$kic!dl-\rdtnfmos<=>?<7<11>S7'nxm"\7fh mdo,cak)ld%Tzl|fneg{45674>4996[?/fpe*w`(elg$kic!dl-\rdtnfmos<=>?<9<11>S7'nxm"\7fh mdo,cak)ld%Tzl|fneg{4567404:i6[?/fpe*w`(elg$kic!dl-gkprXa5:5=k5Z0.eqb+ta'dof#jjb.eo,`jssW`6:<3?i;T2,cw`)zo%fi`!hdl,gi*bh}}Ub0<?11g9V4*aun'xm#`kb/ffn*ak(lf\7f\7fSd2>2?3e?P6(o{l%~k!bel-d`h(ce&ndyyQf<01=5c=R8&myj#|i/lgn+bbj&mg$hb{{_h>20;7a3\:$k\7fh!rg-nah)`ld$oa"j`uu]j84399o1^<"i}f/pe+hcj'nnf"ic dnww[l:6>7;m7X> gsd-vc)jmd%lh` km.flqqYn48=5=k5Z0.eqb+ta'dof#jjb.eo,`jssW`6:43?i;T2,cw`)zo%fi`!hdl,gi*bh}}Ub0<711d9V4*aun'xm#`kb/ffn*ak(lf\7f\7fSd2>>0d8Q5)`zo$yj"cjm.egi+bj'me~xRg321<2b>S7'nxm"\7fh mdo,cak)ld%ocxzPi=02:4`<]9%l~k }f.ofi*ace'nf#iazt^k?6786n2_;#j|i.sd,i`k(omg%h`!kotv\m94468l0Y=!hrg,qb*kbe&moa#jb/emvpZo;:=4:j6[?/fpe*w`(elg$kic!dl-gkprXa58>2<h4U1-dvc(un&gna"ikm/fn+air|Vc7>;0>f:W3+bta&{l$ahc geo-`h)cg|~Te1<8>0d8Q5)`zo$yj"cjm.egi+bj'me~xRg329<2b>S7'nxm"\7fh mdo,cak)ld%ocxzPi=0::4c<]9%l~k }f.ofi*ace'nf#iazt^k?6;7a3\:$k\7fh!rg-nah)`ld$oa"j`uu]j86699o1^<"i}f/pe+hcj'nnf"ic dnww[l:497;m7X> gsd-vc)jmd%lh` km.flqqYn4:85=k5Z0.eqb+ta'dof#jjb.eo,`jssW`68?3?i;T2,cw`)zo%fi`!hdl,gi*bh}}Ub0>:11g9V4*aun'xm#`kb/ffn*ak(lf\7f\7fSd2<5?3f?P6(o{l%~k!bel-d`h(ce&ndyyQf<2<2a>S7'nxm"\7fh mdo,cak)ld%ocxzPi=6=5`=R8&myj#|i/lgn+bbj&mg$hb{{_h>6:4c<]9%l~k }f.ofi*ace'nf#iazt^k?2;7b3\:$k\7fh!rg-nah)`ld$oa"j`uu]j8286m2_;#j|i.sd,i`k(omg%h`!kotv\m9>99l1^<"i}f/pe+hcj'nnf"ic dnww[l:>68n0Y=!hrg,qb*kbe&moa#jb/emvpZoX88n0Y=!hrg,qb*kbe&moa#jb/emvpZoX98o0Y=!hrg,qb*kbe&moa#jb/emvpZoX99;n7X> gsd-vc)jmd%lh` km.flqqYnW8;:i6[?/fpe*w`(elg$kic!dl-gkprXaV;9=h5Z0.eqb+ta'dof#jjb.eo,`jssW`U:?<k4U1-dvc(un&gna"ikm/fn+air|VcT=9?j;T2,cw`)zo%fi`!hdl,gi*bh}}UbS<;>e:W3+bta&{l$ahc geo-`h)cg|~TeR?91d9V4*aun'xm#`kb/ffn*ak(lf\7f\7fSdQ>70g8Q5)`zo$yj"cjm.egi+bj'me~xRgP193f?P6(o{l%~k!bel-d`h(ce&ndyyQf_0;2`>S7'nxm"\7fh mdo,cak)ld%ocxzPi^02a>S7'nxm"\7fh mdo,cak)ld%ocxzPi^035`=R8&myj#|i/lgn+bbj&mg$hb{{_h]154c<]9%l~k }f.ofi*ace'nf#iazt^k\677b3\:$k\7fh!rg-nah)`ld$oa"j`uu]j[756m2_;#j|i.sd,i`k(omg%h`!kotv\mZ439l1^<"i}f/pe+hcj'nnf"ic dnww[lY5=8o0Y=!hrg,qb*kbe&moa#jb/emvpZoX:?;n7X> gsd-vc)jmd%lh` km.flqqYnW;=:i6[?/fpe*w`(elg$kic!dl-gkprXaV83=h5Z0.eqb+ta'dof#jjb.eo,`jssW`U95<j4U1-dvc(un&gna"ikm/fn+air|VcT?<k4U1-dvc(un&gna"ikm/fn+air|VcT?=?j;T2,cw`)zo%fi`!hdl,gi*bh}}UbS>?>e:W3+bta&{l$ahc geo-`h)cg|~TeR==1d9V4*aun'xm#`kb/ffn*ak(lf\7f\7fSdQ<30g8Q5)`zo$yj"cjm.egi+bj'me~xRgP353f?P6(o{l%~k!bel-d`h(ce&ndyyQf_272`>S7'nxm"\7fh mdo,cak)ld%ocxzPi^62`>S7'nxm"\7fh mdo,cak)ld%ocxzPi^72`>S7'nxm"\7fh mdo,cak)ld%ocxzPi^42`>S7'nxm"\7fh mdo,cak)ld%ocxzPi^52`>S7'nxm"\7fh mdo,cak)ld%ocxzPi^:2`>S7'nxm"\7fh mdo,cak)ld%ocxzPi^;1<>S7'nxm"\7fh mdo,cak)ld%bb~zPLQO\IP^68V8Tj8<:;T2,cw`)zo%fi`!hdl,gi*oi{}UG\@QBUY33[6423\:$k\7fh!rg-nah)`ld$oa"gasu]OTHYJ]Q;;S9<7;T2,cw`)zo%fi`!hdl,gi*oi{}UG\@QBUY32[7Ya=;?0Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^T<?P3378Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\47X<;20Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^T<<P2^d660=R8&myj#|i/lgn+bbj&mg$ec}{_MRN[HS_9;U8>85Z0.eqb+ta'dof#jjb.eo,mkusWEZFS@[W13]76==R8&myj#|i/lgn+bbj&mg$ec}{_MRN[HS_9:U9Sk;=5:W3+bta&{l$ahc geo-`h)nfz~T@]CPMTZ27Z55=2_;#j|i.sd,i`k(omg%h`!fnrv\HUKXE\R:?R:=8:W3+bta&{l$ahc geo-`h)nfz~T@]CPMTZ20Z4Xn<8>7X> gsd-vc)jmd%lh` km.kmwqYKXDUFYU?;_206?P6(o{l%~k!bel-d`h(ce&ce\7fyQCPL]NQ]73W=837X> gsd-vc)jmd%lh` km.kmwqYKXDUFYU?:_3]e173<]9%l~k }f.ofi*ace'nf#d`|t^NSIZKRP8?T??;4U1-dvc(un&gna"ikm/fn+lht|VF[ARCZX07\07><]9%l~k }f.ofi*ace'nf#d`|t^NSIZKRP8<T>Rh:249V4*aun'xm#`kb/ffn*ak(agy\7fSA^B_LW[53Y4:<1^<"i}f/pe+hcj'nnf"ic ioqw[IVJWD_S=;Q;299V4*aun'xm#`kb/ffn*ak(agy\7fSA^B_LW[52Y5Wo?996[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV>7^111>S7'nxm"\7fh mdo,cak)ld%bb~zPLQO\IP^6?V>946[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV>8^0\b0423\:$k\7fh!rg-nah)`ld$oa"gasu]OTHYJ]Q;3S><:;T2,cw`)zo%fi`!hdl,gi*oi{}UG\@QBUY3;[14?3\:$k\7fh!rg-nah)`ld$oa"gasu]OTHYJ]Q;2S?Qi5378Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\4?X;;?0Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^T<7P4358Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\4Y5Wo?986[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV>_207?P6(o{l%~k!bel-d`h(ce&ce\7fyQCPL]NQ]7X<;20Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^T?>P2^d660=R8&myj#|i/lgn+bbj&mg$ec}{_MRN[HS_:9U8>85Z0.eqb+ta'dof#jjb.eo,mkusWEZFS@[W21]76==R8&myj#|i/lgn+bbj&mg$ec}{_MRN[HS_:8U9Sk;=5:W3+bta&{l$ahc geo-`h)nfz~T@]CPMTZ15Z55=2_;#j|i.sd,i`k(omg%h`!fnrv\HUKXE\R9=R:=8:W3+bta&{l$ahc geo-`h)nfz~T@]CPMTZ16Z4Xn<8>7X> gsd-vc)jmd%lh` km.kmwqYKXDUFYU<=_206?P6(o{l%~k!bel-d`h(ce&ce\7fyQCPL]NQ]45W=837X> gsd-vc)jmd%lh` km.kmwqYKXDUFYU<<_3]e173<]9%l~k }f.ofi*ace'nf#d`|t^NSIZKRP;9T??;4U1-dvc(un&gna"ikm/fn+lht|VF[ARCZX31\07><]9%l~k }f.ofi*ace'nf#d`|t^NSIZKRP;>T>Rh:249V4*aun'xm#`kb/ffn*ak(agy\7fSA^B_LW[61Y4:<1^<"i}f/pe+hcj'nnf"ic ioqw[IVJWD_S>9Q;299V4*aun'xm#`kb/ffn*ak(agy\7fSA^B_LW[60Y5Wo?996[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV=5^111>S7'nxm"\7fh mdo,cak)ld%bb~zPLQO\IP^5=V>946[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV=6^0\b0423\:$k\7fh!rg-nah)`ld$oa"gasu]OTHYJ]Q8=S><:;T2,cw`)zo%fi`!hdl,gi*oi{}UG\@QBUY05[14?3\:$k\7fh!rg-nah)`ld$oa"gasu]OTHYJ]Q8<S?Qi5378Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\71X;;?0Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^T?9P43:8Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\7>X:Vl>>85Z0.eqb+ta'dof#jjb.eo,mkusWEZFS@[W29]060=R8&myj#|i/lgn+bbj&mg$ec}{_MRN[HS_:1U?>55Z0.eqb+ta'dof#jjb.eo,mkusWEZFS@[W28]1[c35=2_;#j|i.sd,i`k(omg%h`!fnrv\HUKXE\R95R==5:W3+bta&{l$ahc geo-`h)nfz~T@]CPMTZ1=Z25?2_;#j|i.sd,i`k(omg%h`!fnrv\HUKXE\R9S?Qi5368Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\7Y4:=1^<"i}f/pe+hcj'nnf"ic ioqw[IVJWD_S>R:=8:W3+bta&{l$ahc geo-`h)nfz~T@]CPMTZ04Z4Xn<8>7X> gsd-vc)jmd%lh` km.kmwqYKXDUFYU=?_206?P6(o{l%~k!bel-d`h(ce&ce\7fyQCPL]NQ]57W=837X> gsd-vc)jmd%lh` km.kmwqYKXDUFYU=>_3]e173<]9%l~k }f.ofi*ace'nf#d`|t^NSIZKRP:;T??;4U1-dvc(un&gna"ikm/fn+lht|VF[ARCZX23\07><]9%l~k }f.ofi*ace'nf#d`|t^NSIZKRP:8T>Rh:249V4*aun'xm#`kb/ffn*ak(agy\7fSA^B_LW[77Y4:<1^<"i}f/pe+hcj'nnf"ic ioqw[IVJWD_S??Q;299V4*aun'xm#`kb/ffn*ak(agy\7fSA^B_LW[76Y5Wo?996[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV<3^111>S7'nxm"\7fh mdo,cak)ld%bb~zPLQO\IP^4;V>946[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV<4^0\b0423\:$k\7fh!rg-nah)`ld$oa"gasu]OTHYJ]Q9?S><:;T2,cw`)zo%fi`!hdl,gi*oi{}UG\@QBUY17[14?3\:$k\7fh!rg-nah)`ld$oa"gasu]OTHYJ]Q9>S?Qi5378Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\63X;;?0Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^T>;P4358Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\6Y5Wo?986[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV<_207?P6(o{l%~k!bel-d`h(ce&ce\7fyQCPL]NQ]5X<;=0Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^T9Q=_g710>S7'nxm"\7fh mdo,cak)ld%bb~zPLQO\IP^3W:8?7X> gsd-vc)jmd%lh` km.kmwqYKXDUFYU:P4358Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\0Y5Wo?986[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV:_207?P6(o{l%~k!bel-d`h(ce&ce\7fyQCPL]NQ]3X<;=0Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^T;Q=_g710>S7'nxm"\7fh mdo,cak)ld%bb~zPLQO\IP^1W:8?7X> gsd-vc)jmd%lh` km.kmwqYKXDUFYU8P4358Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\2Y5Wo?986[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV8_207?P6(o{l%~k!bel-d`h(ce&ce\7fyQCPL]NQ]1X<;=0Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^T5Q=_g710>S7'nxm"\7fh mdo,cak)ld%bb~zPLQO\IP^?W:8?7X> gsd-vc)jmd%lh` km.kmwqYKXDUFYU6P4358Q5)`zo$yj"cjm.egi+bj'`dxxRB_M^OV\<Y5Wo?986[?/fpe*w`(elg$kic!dl-jjvrXDYGTAXV6_207?P6(o{l%~k!bel-d`h(ce&ce\7fyQCPL]NQ]?X<;<0Y=!hrg,qb*kbe&moa#jb/hlppZJWEVG^TR<Pf400?P6(o{l%~k!bel-d`h(ce&ce\7fyQCPL]NQ]Y4::1^<"i}f/pe+hcj'nnf"ic ioqw[IVJWD_SS9?i;T2,cw`)zo%fi`!hdl,gi*qua}oToy|c219V4*aun'xm#`kb/ffn*ak(\7f{c\7fiRm{rm314>S7'nxm"\7fh mdo,cak)ld%|~dzj_bvqh7473\:$k\7fh!rg-nah)`ld$oa"y}iug\gqtk;8=0Y=!hrg,qb*tfeVxnkb{{_dl27>S7'nxm"\7fh r`o\swYbf8n0Y=!hrg,qb*tt|kf`#\7fjPrrv\evtbo;:0Y=!hrg,qb*tt|kf`#\7fjPrrv\evtboVn:>=5Z0.eqb+ta'{y\7fnae re]qwqYf{{olSi<>c:W3+bta&{l$~~zmlj-q`Ztt|Vidao?k;T2,cw`)zo%y\7fylck.pg[wusWjefn<?j;T2,cw`)zo%y\7fylck.pg[wusW{ol0=0>e:W3+bta&{l$~~zmlj-q`Ztt|Vxnk1?11d9V4*aun'xm#\7f}{bmi,vaYu{}Uyij2=>0f8Q5)`zo$yj"||tcnh+wbXzz~T~hiP00f8Q5)`zo$yj"||tcnh+wbXzz~T~hiP10f8Q5)`zo$yj"||tcnh+wbXzz~T~hiP20f8Q5)`zo$yj"||tcnh+rtXzz~Tm~|jg328Q5)`zo$yj"||tcnh+rtXzz~Tm~|jg^f265=R8&myj#|i/sqwfim(\7f{Uy\7fyQnssgd[a46k2_;#j|i.sd,vvredb%|~R||t^alig7c3\:$k\7fh!rg-qwqdkc&}yS\7f}{_bmnf47b3\:$k\7fh!rg-qwqdkc&}yS\7f}{_sgd8586m2_;#j|i.sd,vvredb%|~R||t^pfc9799m1^<"i}f/pe+wusjea${\7fQ}su]qabY79m1^<"i}f/pe+wusjea${\7fQ}su]qabY6i2_XI_QNLHCPg>STM[U]E^GMLD18RFE>3_CN[RZVPD68SFJL:2]N=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^gntq\7fe3hffc~zPftno2>dfkb\7f{h6lncjws[hguclx87nbdd:fbpdYdg|d\7f$='k;ecweZeh}g~#=$j4d`vb[firf}"9%i5kauc\gjsi|!9"h6jnt`]`kphs =#o7io{a^alqkr/= n0hlzn_bmvjq.1!m1omyoPcnwmp969n2njxlQlotlw83<76>1ondzjrs48`lh/8 <0hd`'1(58`lh/99#<7iga(03*3>bnf!;9%:5kio*27,1<l`d#=9'8;ekm,43.?2nbb%?9)69gmk.6? =0hd`'19+4?aoi 83":6jfn)0*3>bnf!8;%:5kio*15,1<l`d#>?'8;ekm,75.?2nbb%<;)69gmk.5= =0hd`'27+4?aoi ;=";6jfn)0;-2=cag"95$84dhl+7,1<l`d#?='8;ekm,67.?2nbb%==)69gmk.4; =0hd`'35+4?aoi :?":6jfn)6*2>bnf!?":6jfn)4*2>bnf!=":6jfn):*2>bnf!3":6jfn=2=3>bnf5;;2:5kio>25;1<l`d7=?08;ekm8459?2nbb1?;>69gmk:6=7=0hd`317<4?aoi48=5;6jfn=3;:2=cag6:5384dhl?5;1<l`d7>=08;ekm8779?2nbb1<=>69gmk:5;7=0hd`325<4?aoi4;?5;6jfn=05:2=cag69;394dhl?6=803mce0?716:fjj949?2nbb1=?>69gmk:497=0hd`333<4?aoi4:95;6jfn=17:<=cag6897>17:fjj9526?1oec2<>79gmk:36?1oec2:>79gmk:16?1oec28>79gmk:?6?1oec26>69gkpr/8 =0hb{{(0+;?air|!;;%55kotv+54/?3me~x%?=)99gkpr/9:#37iazt)37-==cg|~#=8'7;emvp-71!11ocxz'16+;?air|!;3%55kotv+5</03me~x%<&8:flqq.58 20hb{{(33*<>bh}}"9>$64dnww,75.02ndyy&=4(:8`jss ;?"46j`uu*12,><lf\7f\7f$?9&8:flqq.50 20hb{{(3;*3>bh}}"8%55kotv+75/?3me~x%=>)99gkpr/;;#37iazt)10-==cg|~#?9'7;emvp-52!>1ocxz'4(58`jss <#<7iazt)4*3>bh}}"<%:5kotv+<,1<lf\7f\7f$4'8;emvp96902ndyy2>0?:8`jss48;546j`uu>26;><lf\7f\7f0<=18:flqq:6<720hb{{<07=<>bh}}6::364dnww841902ndyy2>8?:8`jss4835;6j`uu>2:==cg|~7>=07;emvp946611ocxz323<;?air|588255kotv?618?3me~x1<:>99gkpr;:?437iazt=04:==cg|~7>507;emvp94>6>1ocxz32?:8`jss4::546j`uu>05;><lf\7f\7f0><18:flqq:4;720hb{{<26=e>bh}}6897>18:flqq:4=7=0hb{{<2<4?air|5>5;6j`uu>6:2=cg|~7:394dnww82803me~x1617:flqq:>611nhdh=nff6?`kw|p997kgio^efj`tf|fxTz9Q<,!Zjhlh\7f(JEYI-Ijndpbpjt'99$:"==>4:djbjY\7fdgrT:9v<6^0`hn553ocmcRvcny]50}51W;igg!hffn]dakcui}eyS{:P3-LLJ@*IGGO8ni5iigm\|ih\7fW?>s?;Q=cmi/bl`hWnoei\7fo{os]u0Z5+sjUcm~Qfnu]`hn;7$jUcm~Q|rrv>4)eXzmUm~h\7f21-a\lduXzmUomyoPcnwmp87+kVnbbRyfduj>73*dWakxSz|Pd`vb[firf}7: nQiumn\big`{VxxxRxnl<3/gZojxeoficznthmm[q\7fwm48'oR{|e^gnf`bcmmUyij3?,b]tvZ`umx7: nQzsd]gkprXzz~6=!mPuoffvcjh\7fVfd{0>#c^jbwZiqm{lgcz3?,b]sv`jhimUgmykacx?3(fYcg|~T{dj{h<15(fYj{neeS{oc=0.`[wbXllz\7fd08;,b]kevYrfmoyjaax=1.`[mgtWhffc~zPftno95*dWakxS\7f}{=0.`[agsiVidyczPwhfwl81+kVbj\7fRy}_`ah95*dW|ynShml=1.`[fijefdToaalk<2/gZquWhi`Saax=1.`[wbXxg~ySzgkti?5(fYr{lUm{kzPd`vb[firf}7: nQgar]bhhit|Vof|yw20-a\vaYci}kTob{at^uj`qn:?%iTc{k}fmmt[iip59&hSz|Ppovq[roc|a7= nQ\7frne\ahvsqV~r|h3?,b]tvZbf|hUhcx`{_vkgpm;0$jU{~hb`ae]qabu:9%iThb{{_sqw[sgk59&hSeo|_ecweZeh}g~6<!mPpsmd[cskdV~c~h}g_ogdeqcX~hf6:?"l_vp\``vs`4<? nQ\7frne\ahvsqV~c~h}g_ogdeqcX~hf69!mPpsmd[`kw|pU\7fd\7fk|h^cpw`tsW\7fkg19"l_icp[sgkam7; nQ\7frne\bpjkW}byi~fParqfvqYqie7=?!m`mqmmakrXfhgn1kgio^zoj}Y1<q9=S?mck-a\rdjnlVfd{0>#c^rqmhYaaoeTxt~j=431|60+kVzycjQiumn\p|vb59&hS`kbos{\p|vb5;&v>h5iigm\|ih\7fW?>s?;Q=cmi\bl`hWnoei\7fo{os]u0Z5Xpz~T=95iumn4?lhsWjf`46`hccwjha><g\7foyjaaxa:rqkbYbey~r=95\7frne\ahvsqV~c~h}g(1+20>vugnUna}zv_ujqavn/9 ;?7}|`g^gntq\7fX|axn\7fe&=)068twi`Wlg{xtQ{hsgpl-5.9=1{~biPelrw}Zrozlyc$9'>4:rqkbYbey~rSyf}erj+1,713yxdkRkbpu{\pmtb{a6>6=0>b:rqkbYbey~rSyf}erj\evubz}";%<l4psmd[`kw|pU\7fd\7fk|h^cpw`ts 8#:n6~}of]fiur~W}byi~fParqfvq.5!8h0|\7fah_dosp|Ys`{oxdRo|sdpw,6/6j2zycjQjmqvz[qnumzbTm~}jru*7-4d<x{elShc\7ftx]wlwct`Vkx\7fh|{(4+2`>vugnUna}zv_ujqavnXizyn~y2::1<2f>vugnUna}zv_ujqavnXflmjxh&?)0`8twi`Wlg{xtQ{hsgplZhboh~n$<'>b:rqkbYbey~rSyf}erj\j`af|l"9%<l4psmd[`kw|pU\7fd\7fk|h^lfcdrb :#:n6~}of]fiur~W}byi~fPndebp`.3!8h0|\7fah_dosp|Ys`{oxdR`jg`vf,0/6l2zycjQjmqvz[qnumzbTbhintd>6>58>3yxdkRhzlm30?uthoVl~`aQ{hsgpl-6.9:1{~biPftno[qnumzb#=$?<;qplcZ`rdeU\7fd\7fk|h)0*56=wzfmTjxbc_ujqavn/; ;87}|`g^dvhiYs`{oxd%:&129svjaXn|fgSyf}erj+1,723yxdkRhzlm]wlwct`5?1<3?n;qplcZ`rdeU\7fd\7fk|h^cpw`ts 9#:m6~}of]eqijX|axn\7feQnsrgqp-7.9h1{~biPftno[qnumzbTm~}jru*1-4g<x{elSk{cl^vkv`uoWhyxi\7fz'3(3b?uthoVl~`aQ{hsgplZgt{lx\7f$9'>a:rqkbYa}efTxe|jsi]bwvcu|!?"=n5\7frne\bpjkW}byi~fParqfvq:2294:m6~}of]eqijX|axn\7feQaefcwa-6.9h1{~biPftno[qnumzbTbhintd*2-4g<x{elSk{cl^vkv`uoWgolmyk'2(3b?uthoVl~`aQ{hsgplZhboh~n$>'>a:rqkbYa}efTxe|jsi]mabgsm!>"=l5\7frne\bpjkW}byi~fPndebp`.2!8i0|\7fah_gwohZrozlycSckhaug?1?69>2xoSnbd119q`Zbf|hUhcx`{(1+24>tcWmk\7fmRm`uov+5,773{nThlzn_bmvjq.5!8:0~iQkauc\gjsi|!9"==5}d^fbpdYdg|d\7f$9'>0:pg[agsiVidycz'5(33?wbXlh~jSnaznu*5-46<zmUomyoPcnwmp969991yhRjnt`]`kphs484:<6|k_ecweZeh}g~7>3??;sf\`drfWje~by2<>028vaYci}kTob{at=6=55=ulVnjxlQlotlw8086:2xoSio{a^alqkr;>3:5==5}d^fbpdYdg|d\7f0;0:;sf\ak0<zmUy\7fy=4rrv4?vdn|lxy86}}su68pwsb12\7fehh|ilnu6?sgkam<0{\7fQncj48swYddb;;7z|Pd`vb[firf}";%<>4ws]geqgXkf\7fex%?&119tvZbf|hUhcx`{(3+24>quWmk\7fmRm`uov+7,773~xThlzn_bmvjq.3!8:0{\7fQkauc\gjsi|!?"==5xr^fbpdYdg|d\7f$;'>0:uq[agsiVidycz30?33?rtXlh~jSnaznu>2:46<\7f{UomyoPcnwmp949991|~Rjnt`]`kphs4:4:<6y}_ecweZeh}g~783??;vp\`drfWje~by2:>008swYci}kTob{at=494;773~xThlzn_bmvjq:16<1|~Rka6:uq[wusuIJ{=;6k;AB{5?@=<3;p_9:55229<?74:0::;7<n0egxj1>c281e85k54:&7<g<30<1v_9<55229<?74:0::;7<n0eg8W37==:31<7?<28223?4f8ml0_9<552;94?74:0::;7<n0d28`054290:6<u\458675<?28995=?8:3c3``=q\mh1<7?51;06b~U3<3?8<765120:441=:h:oi6*;83856>P30j09wx8k:09v2`<73t.o87?=;c707?6==m0868jtH5:3?_5e2=q997<;:03955<z,mn19>=4$5:b>0553`?<;7>5;n7;3?6=,m<195k4ne794>=h=1<1<7*k6;7;a>hc=3;07b;75;29 a0==1o0bi;52:9l1=2=83.o:7;7e:lg1?5<3f?3?7>5$e491=c<fm?1865`59094?"c>3?3i6`k5;78?j3?93:1(i8559g8ja3=>21d9;k50;&g2?30=2do97>4;n75`?6=,m<19:;4ne795>=h=?i1<7*k6;741>hc=3807b;9b;29 a0==>?0bi;53:9l13g=83.o:7;85:lg1?2<3f?=57>5$e49123<fm?1965`57:94?"c>3?<96`k5;48?l3>83:17b;<7;29?j3493:17d;70;29?l3013:17b;?4;29 a0==;=0bi;50:9l155=83.o:7;=7:lg1?7<3f?;>7>5$e49171<fm?1>65`51394?"c>3?9;6`k5;18?j3783:1(i855358ja3=<21d8kh50;&g2?35?2do97;4;n6e`?6=,m<19?94ne792>=h<oi1<7*k6;713>hc=3=07b:ib;29 a0==;=0bi;58:9l0cg=83.o:7;=7:lg1??<3f>m57>5$e49171<fm?1m65`4g:94?"c>3?9;6`k5;`8?j2a?3:1(i855358ja3=k21d8k850;&g2?35?2do97j4;n6e1?6=,m<19?94ne79a>=h<o>1<7*k6;713>hc=3l07b:i2;29 a0==;=0bi;51198k1`6290/h;4:269m`0<6921d8k>50;&g2?35?2do97?=;:m7ac<72-n=68<8;of6>45<3f>ni7>5$e49171<fm?1=954o5gg>5<#l?0>>:5ad4821>=h<li1<7*k6;713>hc=3;=76a;ec83>!b12<8<7cj::058?j2bi3:1(i855358ja3=9110c9k6:18'`3<2:>1eh84>9:9l15g=83.o:7;=7:lg1?7f32e><44?:%f5>0403gn>6<l4;n73<?6=,m<19?94ne795f=<g<:<6=4+d78662=il<0:h65`51494?"c>3?9;6`k5;3f?>i28<0;6)j9:404?kb228l07b:ie;29 a0==;=0bi;52198k1`4290/h;4:269m`0<5921d8h650;&g2?35?2do97<=;:m7a2<72-n=68<8;of6>75<3`>in7>5$e490ac<fm?1<65f4cc94?"c>3>oi6`k5;38?l2e13:1(i854eg8ja3=:21b8o650;&g2?2cm2do97=4;h6a3?6=,m<18ik4ne790>=n<k<1<7*k6;6ga>hc=3?07d:m4;29 a0=<mo0bi;56:9j0g5=83.o:7:ke:lg1?1<3`>i>7>5$e490ac<fm?1465f4c394?"c>3>oi6`k5;;8?l2e83:1(i854eg8ja3=i21b8lh50;&g2?2cm2do97l4;h6ba?6=,m<18ik4ne79g>=n<hn1<7*k6;6ga>hc=3n07d:nc;29 a0=<mo0bi;5e:9j0dd=83.o:7:ke:lg1?`<3`>j57>5$e490ac<fm?1==54i5c;>5<#l?0?hh5ad4825>=n<h=1<7*k6;6ga>hc=3;976g;a783>!b12=nn7cj::018?l2f=3:1(i854eg8ja3=9=10e9o;:18'`3<3ll1eh84>5:9j0d5=83.o:7:ke:lg1?7132c?m?4?:%f5>1bb3gn>6<94;h6b5?6=,m<18ik4ne795==<a=k;6=4+d787``=il<0:565f4b394?"c>3>oi6`k5;3b?>o3k90;6)j9:5ff?kb228h07d:mf;29 a0=<mo0bi;51b98m1db290/h;4;dd9m`0<6l21b8oj50;&g2?2cm2do97?j;:k7ff<72-n=69jj;of6>4`<3`>i97>5$e490ac<fm?1>=54i5cb>5<#l?0?hh5ad4815>=n<0l1<7*k6;6ga>hc=38976g;9d83>!b12=nn7cj::318?l31?3:17o:71;295?6=8rB?4=5+de87<4=hl:0;66sm5783>4<729qC85>4$ef913=h=<0;66sm3`83><?=::91>8htH5:3?_5e28<p=44=5;07>4b=::0:n7?>:0:955<6k3;j6?=524825?432831==4>d;3`>4d=9h0:47s+de8673=#=l0>86*<f;700>"3;3?896*lf;f1?l3003:17b;:1;29?l30j3:17b:7f;29?j30m3:17d:62;29?l3303:1(i8555;8ja3=821b99950;&g2?3312do97?4;h772?6=,m<19974ne796>=n==?1<7*k6;77=>hc=3907d;;4;29 a0===30bi;54:9j115=83.o:7;;9:lg1?3<3`?<;7>5;n70e?6=3f?3;7>5$e491=c<fm?1<65`59494?"c>3?3i6`k5;38?j3?=3:1(i8559g8ja3=:21d95:50;&g2?3?m2do97=4;n7;7?6=,m<195k4ne790>=h=181<7*k6;7;a>hc=3?07b;71;29 a0==1o0bi;56:9l13c=83.o:7;85:lg1?6<3f?=h7>5$e49123<fm?1=65`57a94?"c>3?<96`k5;08?j31j3:1(i855678ja3=;21d9;o50;&g2?30=2do97:4;n75=?6=,m<19:;4ne791>=h=?21<7*k6;741>hc=3<07d;95;29 a0==?<0bi;50:9j132=83.o:7;96:lg1?7<3`?=?7>5$e49130<fm?1>65f57094?"c>3?=:6`k5;18?l3193:1(i855748ja3=<21b9;>50;&g2?31>2do97;4;h7:4?6=3f>2m7>5$e490<e<fm?1<65`48;94?"c>3>2o6`k5;38?j2>03:1(i8548a8ja3=:21d84950;&g2?2>k2do97=4;n6:2?6=,m<184m4ne790>=h<0?1<7*k6;6:g>hc=3?07b:64;29 a0=<0i0bi;56:9l161=831d9>?50;9j101=83.o:7;:8:lg1?6<3`?>:7>5$e4910><fm?1=65f54794?"c>3?>46`k5;08?l32<3:1(i8554:8ja3=;21b98=50;&g2?3202do97:4;h766?6=,m<19864ne791>=n=1:1<75f52:94?=n<091<75f58394?=h=>k1<75`56d94?=h<0:1<75`56f94?=n=>31<75`51694?"c>3?9;6`k5;28?j37;3:1(i855358ja3=921d9=<50;&g2?35?2do97<4;n735?6=,m<19?94ne797>=h=9:1<7*k6;713>hc=3>07b:if;29 a0==;=0bi;55:9l0cb=83.o:7;=7:lg1?0<3f>mo7>5$e49171<fm?1;65`4g`94?"c>3?9;6`k5;:8?j2ai3:1(i855358ja3=121d8k750;&g2?35?2do97o4;n6e<?6=,m<19?94ne79f>=h<o=1<7*k6;713>hc=3i07b:i6;29 a0==;=0bi;5d:9l0c3=83.o:7;=7:lg1?c<3f>m87>5$e49171<fm?1j65`4g094?"c>3?9;6`k5;33?>i3n80;6)j9:404?kb228;07b:i0;29 a0==;=0bi;51398k1ca290/h;4:269m`0<6;21d8hk50;&g2?35?2do97?;;:m7aa<72-n=68<8;of6>43<3f>no7>5$e49171<fm?1=;54o5ga>5<#l?0>>:5ad4823>=h<lk1<7*k6;713>hc=3;376a;e883>!b12<8<7cj::0;8?j37i3:1(i855358ja3=9h10c8>6:18'`3<2:>1eh84>b:9l15>=83.o:7;=7:lg1?7d32e><:4?:%f5>0403gn>6<j4;n732?6=,m<19?94ne795`=<g<:>6=4+d78662=il<0:j65`4gg94?"c>3?9;6`k5;03?>i3n:0;6)j9:404?kb22;;07b:j8;29 a0==;=0bi;52398k1c0290/h;4:269m`0<5;21b99?50;&g2?33:2do97>4;h774?6=,m<199<4ne795>=n=:l1<7*k6;776>hc=3807d;<e;29 a0===80bi;53:9j16b=83.o:7;;2:lg1?2<3`?8o7>5$e49114<fm?1965f4c`94?"c>3>oi6`k5;28?l2ei3:1(i854eg8ja3=921b8o750;&g2?2cm2do97<4;h6a<?6=,m<18ik4ne797>=n<k=1<7*k6;6ga>hc=3>07d:m6;29 a0=<mo0bi;55:9j0g2=83.o:7:ke:lg1?0<3`>i?7>5$e490ac<fm?1;65f4c094?"c>3>oi6`k5;:8?l2e93:1(i854eg8ja3=121b8o>50;&g2?2cm2do97o4;h6bb?6=,m<18ik4ne79f>=n<ho1<7*k6;6ga>hc=3i07d:nd;29 a0=<mo0bi;5d:9j0de=83.o:7:ke:lg1?c<3`>jn7>5$e490ac<fm?1j65f4`;94?"c>3>oi6`k5;33?>o3i10;6)j9:5ff?kb228;07d:n7;29 a0=<mo0bi;51398m1g1290/h;4;dd9m`0<6;21b8l;50;&g2?2cm2do97?;;:k7e1<72-n=69jj;of6>43<3`>j?7>5$e490ac<fm?1=;54i5c1>5<#l?0?hh5ad4823>=n<h;1<7*k6;6ga>hc=3;376g;a183>!b12=nn7cj::0;8?l2d93:1(i854eg8ja3=9h10e9m?:18'`3<3ll1eh84>b:9j0g`=83.o:7:ke:lg1?7d32c?nh4?:%f5>1bb3gn>6<j4;h6a`?6=,m<18ik4ne795`=<a=hh6=4+d787``=il<0:j65f4c794?"c>3>oi6`k5;03?>o3ih0;6)j9:5ff?kb22;;07d:6f;29 a0=<mo0bi;52398m1?b290/h;4;dd9m`0<5;21b84?50;9j10c=83.o:7;:f:lg1?6<3`?>h7>5$e4910`<fm?1=65f54a94?"c>3?>j6`k5;08?l32j3:1(i8554d8ja3=;21b98o50;&g2?32n2do97:4;h76=?6=,m<198h4ne791>=n==l1<7*k6;764>hc=3:07d;;e;29 a0==<:0bi;51:9j11b=83.o:7;:0:lg1?4<3`??o7>5$e49106<fm?1?65f55`94?"c>3?><6`k5;68?l33i3:1(i855428ja3==21d9>l50;9l0<b=831b9;950;9a0=>=83;1<7>t$ef913=O<1=0D96?;n76>5<<uk>357>51;294~"cl3>3=6F;869K0=6<gm91<75rb54g>5<4290;w)jk:5f8L1>03A>3<6F<9:&5e?30k2.>o7<4i2a94?=n<<0;66ak8;29?xd3?10;6>4?:1y'`a<3l2B?4:5G4928L6?<,?k19:m4$4a96>o4k3:17d:::188ka>=831vn98l:180>5<7s-no69j4H5:4?M2?82B856*9a;74g>"2k380e>m50;9j00<722eo47>5;|`733<72<0;6=u+de866>N30>1C85>4H2;8 3g==>i0(8m52:k0g?6=3`9n6=44i5794?=nl>0;66ak8;29?xd3?>0;6>4?:1y'`a<3l2B?4:5G4928L6?<,?k19:m4$4a96>o4k3:17d:::188ka>=831vn98m:186>5<7s-no68<4H5:4?M2?82B856*9a;74g>"2k380e>m50;9j7`<722c?97>5;hf4>5<<gm21<75rb556>5<3290;w)jk:438L1>03A>3<6*:c;08m6e=831b884?::kg3?6=3fn36=44}c640?6=<3:1<v*kd;72?M2??2B?4=5+5b81?l5d2900e9;50;9j`2<722eo47>5;|`736<72=0;6=u+de865>N30>1C85>4$4a96>o4k3:17d:::188ma1=831dh54?::\7fa02c=83>1<7>t$ef914=O<1=0D96?;%7`>7=n;j0;66g;5;29?lb02900ci650;9~f11c290?6=4?{%fg>07<@=2<7E:70:&6g?4<a:i1<75f4483>>oc?3:17bj7:188yg7f;3:187>50z&g`?363A>3;6F;819'1f<03`9h6=44i5794?=nl>0;66ak8;29?xd6?o0;684?:1y'`a<282B?4:5G4928 0e=:2c8o7>5;h62>5<<a=?1<75fd683>>ic03:17pl>8183>0<729q/hi4:0:J7<2=O<1:0(8m52:k0g?6=3`>:6=44i5794?=nl>0;66ak8;29?xd6080;684?:1y'`a<282B?4:5G4928 0e=:2c8o7>5;h62>5<<a=?1<75fd683>>ic03:17pl>8383>0<729q/hi4:0:J7<2=O<1:0(8m52:k0g?6=3`>:6=44i5794?=nl>0;66ak8;29?xd60:0;684?:1y'`a<282B?4:5G4928 0e=:2c8o7>5;h62>5<<a=?1<75fd683>>ic03:17pl>8583>0<729q/hi4:0:J7<2=O<1:0(8m52:k0g?6=3`>:6=44i5794?=nl>0;66ak8;29?xd60<0;684?:1y'`a<282B?4:5G4928 0e=:2c8o7>5;h62>5<<a=?1<75fd683>>ic03:17pl>cg83>0<729q/hi4;f:J7<2=O<1:0(8m52:k0g?6=3`9n6=44i5394?=n<<0;66ak8;29?xd6l80;684?:1y'`a<3n2B?4:5G4928 0e=:2c8o7>5;h1f>5<<a=;1<75f4483>>ic03:17pl>d283>0<729q/hi4;f:J7<2=O<1:0(8m52:k0g?6=3`9n6=44i5394?=n<<0;66ak8;29?xd6l<0;684?:1y'`a<3n2B?4:5G4928 0e=:2c8o7>5;h1f>5<<a=;1<75f4483>>ic03:17pl>d983>0<729q/hi4;f:J7<2=O<1:0(8m52:k0g?6=3`9n6=44i5394?=n<<0;66ak8;29?xd6l00;684?:1y'`a<3n2B?4:5G4928 0e=:2c8o7>5;h1f>5<<a=;1<75f4483>>ic03:17pl>db83>1<729q/hi4:1:J7<2=O<1:0(8m52:k0g?6=3`>>6=44ie594?=hl10;66sm1e`94?2=83:p(ij5509K0=1<@=2;7);l:39j7f<722c?97>5;hf4>5<<gm21<75rb326>5<3290;w)jk:5g8L1>03A>3<6*:c;08m6e=831b8<4?::k71?6=3fn36=44}c032?6=<3:1<v*kd;6f?M2??2B?4=5+5b81?l5d2900e9?50;9j00<722eo47>5;|`142<72=0;6=u+de87a>N30>1C85>4$4a96>o4k3:17d:>:188m13=831dh54?::\7fa65>=83>1<7>t$ef90`=O<1=0D96?;%7`>7=n;j0;66g;1;29?l222900ci650;9~f76>290?6=4?{%fg>1c<@=2<7E:70:&6g?4<a:i1<75f4083>>o3=3:17bj7:188yg47i3:187>50z&g`?2b3A>3;6F;819'1f<53`9h6=44i5394?=n<<0;66ak8;29?xd58k0;694?:1y'`a<3m2B?4:5G4928 0e=:2c8o7>5;h62>5<<a=?1<75`d983>>{e9j91<7;50;2x ab==;1C8594H5:3?!3d2>1b?n4?::k0a?6=3`>>6=44ie594?=hl10;66sm1b694?3=83:p(ij54g9K0=1<@=2;7);l:39j7f<722c8i7>5;h62>5<<a=?1<75`d983>>{e9j?1<7;50;2x ab=<o1C8594H5:3?!3d2;1b?n4?::k0a?6=3`>:6=44i5794?=hl10;66sm1b:94?3=83:p(ij54g9K0=1<@=2;7);l:39j7f<722c8i7>5;h62>5<<a=?1<75`d983>>{e9j<1<7;50;2x ab=<o1C8594H5:3?!3d2;1b?n4?::k0a?6=3`>:6=44i5794?=hl10;66sm1b594?3=83:p(ij54g9K0=1<@=2;7);l:39j7f<722c8i7>5;h62>5<<a=?1<75`d983>>{e9>81<7=50;2x ab=>:1C8594H5:3?!3d2;l0e8650;9j1<<722eo=7>5;|`22a<72=0;6=u+de85f>N30>1C85>4i5294?=n<?0;66gka;29?jb62900qo?88;297?6=8r.oh7:76:J7<2=O<1:0e9>50;9j1c<722eo=7>5;|`236<72:0;6=u+de857>N30>1C85>4$4a96c=n=10;66g:9;29?jb62900qo?9e;290?6=8r.oh78m;I6;3>N3091b8=4?::k72?6=3`nj6=44oe394?=zj8=26=4<:183\7f!bc2=2=7E:77:J7<5=n<90;66g:f;29?jb62900qo?84;297?6=8r.oh78<;I6;3>N3091/9n4=f:k6<?6=3`?26=44oe394?=zj8<m6=4;:183\7f!bc2?h0D968;I6;4>o383:17d:9:188mag=831dh<4?::\7fa52g=8391<7>t$ef90=0<@=2<7E:70:k74?6=3`?m6=44oe394?=zj8=>6=4<:183\7f!bc2?90D968;I6;4>"2k38m7d;7:188m0?=831dh<4?::\7fa526=83>1<7>t$ef92g=O<1=0D96?;h63>5<<a=<1<75fd`83>>ic93:17pl>7c83>6<729q/hi4;879K0=1<@=2;7d:?:188m0`=831dh<4?::\7fa520=8391<7>t$ef926=O<1=0D96?;%7`>7`<a<21<75f5883>>ic93:17pl>7083>1<729q/hi49b:J7<2=O<1:0e9>50;9j03<722com7>5;nf2>5<<uk;<o7>53;294~"cl3>3:6F;869K0=6<a=:1<75f5g83>>ic93:17pl>7683>6<729q/hi493:J7<2=O<1:0(8m52g9j1=<722c>57>5;nf2>5<<uk;<h7>53;294~"cl3>3:6F;869K0=6<a=:1<75f5g83>>ic93:17pl>f983>6<729q/hi493:J7<2=O<1:0(8m52g9j1=<722c>57>5;nf2>5<<uk;m?7>54;294~"cl3<i7E:77:J7<5=n<90;66g;6;29?lbf2900ci?50;9~f4`b29086=4?{%fg>1>13A>3;6F;819j05<722c>j7>5;nf2>5<<uk;m57>53;294~"cl3<87E:77:J7<5=#=j09j6g:8;29?l3>2900ci?50;9~f4`3290?6=4?{%fg>3d<@=2<7E:70:k74?6=3`>=6=44iec94?=hl80;66sm1gd94?5=83:p(ij54948L1>03A>3<6g;0;29?l3a2900ci?50;9~f4`f29086=4?{%fg>35<@=2<7E:70:&6g?4a3`?36=44i4;94?=hl80;66sm1g794?2=83:p(ij56c9K0=1<@=2;7d:?:188m10=831bhl4?::mg5?6=3th9<=4?:283>5}#lm0?4;5G4958L1>73`>;6=44i4d94?=hl80;66sm1g`94?5=83:p(ij5629K0=1<@=2;7);l:3d8m0>=831b944?::mg5?6=3th:j;4?:583>5}#lm0=n6F;869K0=6<a=:1<75f4783>>oci3:17bj>:188yg4793:1?7>50z&g`?2?>2B?4:5G4928m16=831b9k4?::mg5?6=3th:jn4?:283>5}#lm0=?6F;869K0=6<,<i1>k5f5983>>o213:17bj>:188yg7a?3:187>50z&g`?0e3A>3;6F;819j05<722c?:7>5;hfb>5<<gm;1<75rb321>5<4290;w)jk:5:5?M2??2B?4=5f4183>>o2n3:17bj>:188yg7al3:1?7>50z&g`?043A>3;6F;819'1f<5n2c>47>5;h7:>5<<gm;1<75rb320>5<4290;w)jk:5:5?M2??2B?4=5f4183>>o2n3:17bj>:188yg`4290?6=4?{%fg>1c<@=2<7E:70:&6g?4<a:i1<75f4083>>o3=3:17bj7:188yg`5290?6=4?{%fg>1c<@=2<7E:70:&6g?4<a:i1<75f4083>>o3=3:17bj7:188yg`6290?6=4?{%fg>1c<@=2<7E:70:&6g?4<a:i1<75f4083>>o3=3:17bj7:188yg`7290?6=4?{%fg>1c<@=2<7E:70:&6g?4<a:i1<75f4083>>o3=3:17bj7:188ygca290?6=4?{%fg>1c<@=2<7E:70:&6g?4<a:i1<75f4083>>o3=3:17bj7:188ygcb290?6=4?{%fg>1c<@=2<7E:70:&6g?4<a:i1<75f4083>>o3=3:17bj7:188yg74:3:187>50z&g`?2b3A>3;6F;819'1f<53`9h6=44i5394?=n<<0;66ak8;29?xd6;80;694?:1y'`a<3m2B?4:5G4928 0e=:2c8o7>5;h62>5<<a=?1<75`d983>>{e9::1<7:50;2x ab=<l1C8594H5:3?!3d2;1b?n4?::k75?6=3`>>6=44oe:94?=zj88m6=4;:183\7f!bc2=o0D968;I6;4>"2k380e>m50;9j04<722c?97>5;nf;>5<<uk;9i7>54;294~"cl3>n7E:77:J7<5=#=j097d=l:188m17=831b884?::mg<?6=3th:>i4?:583>5}#lm0?i6F;869K0=6<,<i1>6g<c;29?l262900e9;50;9l`=<722wi=;>50;694?6|,mn18h5G4958L1>73-?h6?5f3b83>>o393:17d:::188ka>=831vn<;i:187>5<7s-no69k4H5:4?M2?82.>o7<4i2a94?=n<80;66g;5;29?jb?2900qo?:e;290?6=8r.oh7:j;I6;3>N3091/9n4=;h1`>5<<a=;1<75f4483>>ic03:17pl>5e83>1<729q/hi4;e:J7<2=O<1:0(8m52:k0g?6=3`>:6=44i5794?=hl10;66sm14a94?2=83:p(ij54d9K0=1<@=2;7);l:39j7f<722c?=7>5;h66>5<<gm21<75rb07a>5<3290;w)jk:5g8L1>03A>3<6*:c;08m6e=831b8<4?::k71?6=3fn36=44}c315?6=<3:1<v*kd;6f?M2??2B?4=5+5b81?l5d2900e9?50;9j00<722eo47>5;|`265<72=0;6=u+de87a>N30>1C85>4$4a96>o4k3:17d:>:188m13=831dh54?::\7fa54`=83>1<7>t$ef90`=O<1=0D96?;%7`>7=n;j0;66g;1;29?l222900ci650;9~f47b290?6=4?{%fg>1c<@=2<7E:70:&6g?4<a:i1<75f4083>>o3=3:17bj7:188yg76l3:187>50z&g`?2b3A>3;6F;819'1f<53`9h6=44i5394?=n<<0;66ak8;29?xd69j0;694?:1y'`a<3m2B?4:5G4928 0e=:2c8o7>5;h62>5<<a=?1<75`d983>>{e9<>1<7:50;2x ab=<l1C8594H5:3?M5>3-<j689l;%7`>7=n;j0;66g;1;29?l222900ci650;9~f434290?6=4?{%fg>1c<@=2<7E:70:J0=>"1i3?<o6*:c;08m6e=831b8<4?::k71?6=3fn36=44}c366?6=<3:1<v*kd;6f?M2??2B?4=5G389'2d<2?j1/9n4=;h1`>5<<a=;1<75f4483>>ic03:17pl>5083>1<729q/hi4;e:J7<2=O<1:0D>74$7c912e<,<i1>6g<c;29?l262900e9;50;9l`=<722wi=8>50;694?6|,mn18h5G4958L1>73A927)8n:45`?!3d2;1b?n4?::k75?6=3`>>6=44oe:94?=zj8>m6=4;:183\7f!bc2=o0D968;I6;4>N412.=m7;8c:&6g?4<a:i1<75f4083>>o3=3:17bj7:188yg76=3:187>50z&g`?2b3A>3;6F;819K7<=#>h0>;n5+5b81?l5d2900e9?50;9j00<722eo47>5;|`251<72=0;6=u+de87a>N30>1C85>4H2;8 3g==>i0(8m52:k0g?6=3`>:6=44i5794?=hl10;66sm10194?2=83:p(ij54d9K0=1<@=2;7E=6;%4b>01d3-?h6?5f3b83>>o393:17d:::188ka>=831vn<?=:187>5<7s-no69k4H5:4?M2?82B856*9a;74g>"2k380e>m50;9j04<722c?97>5;nf;>5<<uk;:=7>54;294~"cl3>n7E:77:J7<5=O;01/:l4:7b9'1f<53`9h6=44i5394?=n<<0;66ak8;29?xd6990;694?:1y'`a<3m2B?4:5G4928L6?<,?k19:m4$4a96>o4k3:17d:>:188m13=831dh54?::\7fa55?=83>1<7>t$ef90`=O<1=0D96?;%7`>7=n;j0;66g;1;29?l222900ci650;9~f46?290?6=4?{%fg>1c<@=2<7E:70:&6g?4<a:i1<75f4083>>o3=3:17bj7:188yg77?3:187>50z&g`?2b3A>3;6F;819'1f<53`9h6=44i5394?=n<<0;66ak8;29?xd68?0;694?:1y'`a<3m2B?4:5G4928 0e=:2c8o7>5;h62>5<<a=?1<75`d983>>{e99?1<7:50;2x ab=<l1C8594H5:3?!3d2;1b?n4?::k75?6=3`>>6=44oe:94?=zj8:?6=4;:183\7f!bc2=o0D968;I6;4>"2k380e>m50;9j04<722c?97>5;nf;>5<<uk;?47>54;294~"cl3>n7E:77:J7<5=#=j097d=l:188m17=831b884?::mg<?6=3th:8:4?:583>5}#lm0?i6F;869K0=6<,<i1>6g<c;29?l262900e9;50;9l`=<722wi=9850;694?6|,mn18h5G4958L1>73-?h6?5f3b83>>o393:17d:::188ka>=831vn<:::187>5<7s-no69k4H5:4?M2?82.>o7<4i2a94?=n<80;66g;5;29?jb?2900qo?;4;290?6=8r.oh7:j;I6;3>N3091/9n4=;h1`>5<<a=;1<75f4483>>ic03:17pl>4283>1<729q/hi4;e:J7<2=O<1:0(8m52:k0g?6=3`>:6=44i5794?=hl10;66sm18`94?2=83:p(ij54d9K0=1<@=2;7);l:39j7f<722c?=7>5;h66>5<<gm21<75rb0;;>5<3290;w)jk:5g8L1>03A>3<6*:c;08m6e=831b8<4?::k71?6=3fn36=44}c3b6?6=<3:1<v*kd;6f?M2??2B?4=5+5b81?l5d2900e9?50;9j00<722eo47>5;|`2=c<72=0;6=u+de865>N30>1C85>4$4a93>o4k3:17d:::188ma1=831dh54?::\7fa5<c=83>1<7>t$ef914=O<1=0D96?;%7`>2=n;j0;66g;5;29?lb02900ci650;9~f74e290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn?<n:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f74d290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn?<7:186>5<7s-no68<4H5:4?M2?82.>o794i2a94?=n;l0;66g;5;29?lb02900ci650;9~f740290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn?<6:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f752290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn?=<:186>5<7s-no68<4H5:4?M2?82.>o794i2a94?=n;l0;66g;5;29?lb02900ci650;9~f753290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn?=7:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f751290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn?=8:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f72?290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn?:8:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f722290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn?:<:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f726290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn?=i:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6b2290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>j9:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6c6290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>kl:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6`4290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>h;:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6`2290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>h9:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6`0290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>h7:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6b0290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>j7:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6b>290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>jn:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6be290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>jl:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6bc290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>jj:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6ba290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>k?:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6c5290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>k<:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6c3290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>k::186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6c1290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>k8:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6c?290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>k6:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6cf290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>km:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6cc290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>kj:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6ca290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>h?:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f6`6290>6=4?{%fg>1`<@=2<7E:70:&6g?4<a:i1<75f3d83>>o393:17d:::188ka>=831vn>h=:186>5<7s-no69h4H5:4?M2?82.>o7<4i2a94?=n;l0;66g;1;29?l222900ci650;9~f7g2290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb34g>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?m9:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;h;6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7de290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3g4>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?j>:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;nh6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f71>290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3d1>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?8j:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;3j6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7>3290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3:e>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?o=:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;k;6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7g6290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3c5>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?o<:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;k?6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7g0290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3c;>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?om:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;k26=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7gf290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3cf>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?ol:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;ko6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7d5290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3ce>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?l>:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;h>6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7d4290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3`7>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?l7:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;h=6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7d0290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3``>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?l6:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;hj6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7da290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3`g>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?lj:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;i;6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7e6290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3a7>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?m=:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;i86=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7e?290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3a6>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?m8:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;ii6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7e>290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3ab>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?mj:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;ih6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7ec290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3f1>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?mi:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;n;6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7b2290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3f0>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?j;:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;n36=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7b1290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3f4>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?j6:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;nj6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7bb290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3fa>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?jk:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;o:6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7ba290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3g3>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?k;:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;o96=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7c4290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3g6>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?k9:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;oj6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7c?290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3g:>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?kk:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;oi6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7cd290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3d3>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?kj:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;om6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7`6290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3d0>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?h9:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;l?6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7`2290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3d:>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?h8:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;l36=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7`d290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3db>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?hm:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;=:6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f70a290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb353>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?9;:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;=96=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f714290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb354>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?9::18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;==6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f71e290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb35;>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?9n:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;=h6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f71c290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3:3>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?9j:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;=m6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7>4290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3:2>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?6=:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;2<6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7>2290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3:5>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?67:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;226=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7>d290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3:b>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?6m:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;3;6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7>c290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3:f>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?7<:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;3:6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7?5290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3;7>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?7::18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;336=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7?1290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3;4>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?7l:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;326=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f7?e290o6=4?{%fg>a?<@=2<7E:70:k01?6=3`9=6=44i2594?=n;10;66g;5;29?l2?2900e9750;9j0d<722c?n7>5;h6;7?6=3`>387>5;nf`>5<<g==1<75rb3;e>5<c290;w)jk:e;8L1>03A>3<6g<5;29?l512900e>950;9j7=<722c?97>5;h6;>5<<a=31<75f4`83>>o3j3:17d:73;29?l2?<3:17bjl:188k11=831vn?7k:18g>5<7s-no6i74H5:4?M2?82c897>5;h15>5<<a:=1<75f3983>>o3=3:17d:7:188m1?=831b8l4?::k7f?6=3`>3?7>5;h6;0?6=3fnh6=44o5594?=zj;3n6=4k:183\7f!bc2m30D968;I6;4>o4=3:17d=9:188m61=831b?54?::k71?6=3`>36=44i5;94?=n<h0;66g;b;29?l2?;3:17d:74;29?jbd2900c9950;9~f170290?6=4?{%fg>3e<@=2<7E:70:k6<?6=3`?26=44iec94?=hl80;66sm40;94?2=83:p(ij5649K0=1<@=2;7);l:5a8m0>=831b944?::k6e?6=3fn:6=44}c62<?6=<3:1<v*kd;46?M2??2B?4=5+5b87g>o203:17d;6:188m0g=831dh<4?::\7fa034=83>1<7>t$ef92f=O<1=0D96?;h7;>5<<a<31<75fd`83>>ic93:17pl;6583>1<729q/hi495:J7<2=O<1:0(8m54b9j1=<722c>57>5;h7b>5<<gm;1<75rb540>5<3290;w)jk:778L1>03A>3<6*:c;6`?l3?2900e8750;9j1d<722eo=7>5;|`77=<72=0;6=u+de85g>N30>1C85>4i4:94?=n=00;66gka;29?jb62900qo:<a;290?6=8r.oh78:;I6;3>N3091/9n4;c:k6<?6=3`?26=44i4c94?=hl80;66sm42;94?2=83:p(ij5649K0=1<@=2;7);l:5a8m0>=831b944?::k6e?6=3fn:6=44}c67`?6=<3:1<v*kd;4`?M2??2B?4=5f5983>>o213:17djn:188ka7=831vn9:i:187>5<7s-no6;;4H5:4?M2?82.>o7:l;h7;>5<<a<31<75f5`83>>ic93:17pl;4d83>1<729q/hi495:J7<2=O<1:0(8m54b9j1=<722c>57>5;h7b>5<<gm;1<75rb575>5<3290;w)jk:7a8L1>03A>3<6g:8;29?l3>2900eio50;9l`4<722wi88650;694?6|,mn1:85G4958L1>73-?h69m4i4:94?=n=00;66g:a;29?jb62900qo::7;290?6=8r.oh78:;I6;3>N3091/9n4;c:k6<?6=3`?26=44i4c94?=hl80;66sm44294?2=83:p(ij56b9K0=1<@=2;7d;7:188m0?=831bhl4?::mg5?6=3th?9?4?:583>5}#lm0=96F;869K0=6<,<i18n5f5983>>o213:17d;n:188ka7=831vn9;>:187>5<7s-no6;;4H5:4?M2?82.>o7:l;h7;>5<<a<31<75f5`83>>ic93:17pl;5283>1<729q/hi49c:J7<2=O<1:0e8650;9j1<<722com7>5;nf2>5<<uk>>97>54;294~"cl3<>7E:77:J7<5=#=j0?o6g:8;29?l3>2900e8o50;9l`4<722wi88:50;694?6|,mn1:85G4958L1>73-?h69m4i4:94?=n=00;66g:a;29?jb62900qo::9;290?6=8r.oh78l;I6;3>N3091b954?::k6=?6=3`nj6=44oe394?=zj=?i6=4;:183\7f!bc2??0D968;I6;4>"2k3>h7d;7:188m0?=831b9l4?::mg5?6=3th?9l4?:583>5}#lm0=96F;869K0=6<,<i18n5f5983>>o213:17d;n:188ka7=831vn9;l:187>5<7s-no6;m4H5:4?M2?82c>47>5;h7:>5<<amk1<75`d083>>{e<<o1<7:50;2x ab=><1C8594H5:3?!3d2=i0e8650;9j1<<722c>m7>5;nf2>5<<uk>>h7>54;294~"cl3<>7E:77:J7<5=#=j0?o6g:8;29?l3>2900e8o50;9l`4<722wi?km50;694?6|,mn1:n5G4958L1>73`?36=44i4;94?=nlh0;66ak1;29?xd4nl0;694?:1y'`a<1=2B?4:5G4928 0e=<j1b954?::k6=?6=3`?j6=44oe394?=zj:lo6=4;:183\7f!bc2??0D968;I6;4>"2k3>h7d;7:188m0?=831b9l4?::mg5?6=3th?9k4?:583>5}#lm0=o6F;869K0=6<a<21<75f5883>>oci3:17bj>:188yg2193:187>50z&g`?023A>3;6F;819'1f<3k2c>47>5;h7:>5<<a<k1<75`d083>>{e<?:1<7:50;2x ab=><1C8594H5:3?!3d2=i0e8650;9j1<<722c>m7>5;nf2>5<<uk9m57>54;294~"cl3<h7E:77:J7<5=n=10;66g:9;29?lbf2900ci?50;9~f6`e290?6=4?{%fg>33<@=2<7E:70:&6g?2d3`?36=44i4;94?=n=h0;66ak1;29?xd4nh0;694?:1y'`a<1=2B?4:5G4928 0e=<j1b954?::k6=?6=3`?j6=44oe394?=zj:lm6=4;:183\7f!bc2?i0D968;I6;4>o203:17d;6:188mag=831dh<4?::\7fa057=83>1<7>t$ef920=O<1=0D96?;%7`>1e<a<21<75f5883>>o2i3:17bj>:188yg2783:187>50z&g`?023A>3;6F;819'1f<3k2c>47>5;h7:>5<<a<k1<75`d083>>{e<981<7:50;2x ab=>j1C8594H5:3?l3?2900e8750;9j`d<722eo=7>5;|`741<72=0;6=u+de851>N30>1C85>4$4a90f=n=10;66g:9;29?l3f2900ci?50;9~f164290?6=4?{%fg>33<@=2<7E:70:&6g?2d3`?36=44i4;94?=n=h0;66ak1;29?xd38<0;694?:1y'`a<1k2B?4:5G4928m0>=831b944?::kge?6=3fn:6=44}c633?6=<3:1<v*kd;46?M2??2B?4=5+5b87g>o203:17d;6:188m0g=831dh<4?::\7fa050=83>1<7>t$ef920=O<1=0D96?;%7`>1e<a<21<75f5883>>o2i3:17bj>:188yg2703:187>50z&g`?0d3A>3;6F;819j1=<722c>57>5;hfb>5<<gm;1<75rb52b>5<3290;w)jk:778L1>03A>3<6*:c;6`?l3?2900e8750;9j1d<722eo=7>5;|`74<<72=0;6=u+de851>N30>1C85>4$4a90f=n=10;66g:9;29?l3f2900ci?50;9~f16e290?6=4?{%fg>3e<@=2<7E:70:k6<?6=3`?26=44iec94?=hl80;66sm41f94?2=83:p(ij5649K0=1<@=2;7);l:5a8m0>=831b944?::k6e?6=3fn:6=44}c63g?6=<3:1<v*kd;46?M2??2B?4=5+5b87g>o203:17d;6:188m0g=831dh<4?::\7fa05c=83>1<7>t$ef92f=O<1=0D96?;h7;>5<<a<31<75fd`83>>ic93:17pl;1183>1<729q/hi495:J7<2=O<1:0(8m54b9j1=<722c>57>5;h7b>5<<gm;1<75rb52e>5<3290;w)jk:778L1>03A>3<6*:c;6`?l3?2900e8750;9j1d<722eo=7>5;|`75d<72=0;6=u+de85g>N30>1C85>4i4:94?=n=00;66gka;29?jb62900qo:>c;290?6=8r.oh78:;I6;3>N3091/9n4;c:k6<?6=3`?26=44i4c94?=hl80;66sm40`94?2=83:p(ij5649K0=1<@=2;7);l:5a8m0>=831b944?::k6e?6=3fn:6=44}c625?6=<3:1<v*kd;4`?M2??2B?4=5f5983>>o213:17djn:188ka7=831vn9?<:187>5<7s-no6;;4H5:4?M2?82.>o7:l;h7;>5<<a<31<75f5`83>>ic93:17pl;1383>1<729q/hi495:J7<2=O<1:0(8m54b9j1=<722c>57>5;h7b>5<<gm;1<75rb537>5<3290;w)jk:7a8L1>03A>3<6g:8;29?l3>2900eio50;9l`4<722wi8<850;694?6|,mn1:85G4958L1>73-?h69m4i4:94?=n=00;66g:a;29?jb62900qo:>5;290?6=8r.oh78:;I6;3>N3091/9n4;c:k6<?6=3`?26=44i4c94?=hl80;66sm40f94?2=83:p(ij56b9K0=1<@=2;7d;7:188m0?=831bhl4?::mg5?6=3th?=k4?:583>5}#lm0=96F;869K0=6<,<i18n5f5983>>o213:17d;n:188ka7=831vn9?j:187>5<7s-no6;;4H5:4?M2?82.>o7:l;h7;>5<<a<31<75f5`83>>ic93:17pl;2183>1<729q/hi49c:J7<2=O<1:0e8650;9j1<<722com7>5;nf2>5<<uk>9>7>54;294~"cl3<>7E:77:J7<5=#=j0?o6g:8;29?l3>2900e8o50;9l`4<722wi8??50;694?6|,mn1:85G4958L1>73-?h69m4i4:94?=n=00;66g:a;29?jb62900qo:=3;290?6=8r.oh78l;I6;3>N3091b954?::k6=?6=3`nj6=44oe394?=zj=8>6=4;:183\7f!bc2??0D968;I6;4>"2k3>h7d;7:188m0?=831b9l4?::mg5?6=3th?>94?:583>5}#lm0=96F;869K0=6<,<i18n5f5983>>o213:17d;n:188ka7=831vn9<9:187>5<7s-no6;m4H5:4?M2?82c>47>5;h7:>5<<amk1<75`d083>>{e<;21<7:50;2x ab=><1C8594H5:3?!3d2=i0e8650;9j1<<722c>m7>5;nf2>5<<uk>9;7>54;294~"cl3<>7E:77:J7<5=#=j0?o6g:8;29?l3>2900e8o50;9l`4<722wi8?750;694?6|,mn1:n5G4958L1>73`?36=44i4;94?=nlh0;66ak1;29?xd3:k0;694?:1y'`a<1=2B?4:5G4928 0e=<j1b954?::k6=?6=3`?j6=44oe394?=zj=8j6=4;:183\7f!bc2??0D968;I6;4>"2k3>h7d;7:188m0?=831b9l4?::mg5?6=3th?>n4?:583>5}#lm0=o6F;869K0=6<a<21<75f5883>>oci3:17bj>:188yg25m3:187>50z&g`?023A>3;6F;819'1f<3k2c>47>5;h7:>5<<a<k1<75`d083>>{e<;n1<7:50;2x ab=><1C8594H5:3?!3d2=i0e8650;9j1<<722c>m7>5;nf2>5<<uk>897>54;294~"cl3<h7E:77:J7<5=n=10;66g:9;29?lbf2900ci?50;9~f150290?6=4?{%fg>33<@=2<7E:70:&6g?2d3`?36=44i4;94?=n=h0;66ak1;29?xd3;?0;694?:1y'`a<1=2B?4:5G4928 0e=<j1b954?::k6=?6=3`?j6=44oe394?=zj=8m6=4;:183\7f!bc2?i0D968;I6;4>o203:17d;6:188mag=831dh<4?::\7fa067=83>1<7>t$ef920=O<1=0D96?;%7`>1e<a<21<75f5883>>o2i3:17bj>:188yg2483:187>50z&g`?023A>3;6F;819'1f<3k2c>47>5;h7:>5<<a<k1<75`d083>>{e<:81<7:50;2x ab=>j1C8594H5:3?l3?2900e8750;9j`d<722eo=7>5;|`771<72=0;6=u+de851>N30>1C85>4$4a90f=n=10;66g:9;29?l3f2900ci?50;9~f154290?6=4?{%fg>33<@=2<7E:70:&6g?2d3`?36=44i4;94?=n=h0;66ak1;29?xd3;k0;694?:1y'`a<1k2B?4:5G4928m0>=831b944?::kge?6=3fn:6=44}c60`?6=<3:1<v*kd;46?M2??2B?4=5+5b87g>o203:17d;6:188m0g=831dh<4?::\7fa06e=83>1<7>t$ef920=O<1=0D96?;%7`>1e<a<21<75f5883>>o2i3:17bj>:188yg24m3:187>50z&g`?0d3A>3;6F;819j1=<722c>57>5;hfb>5<<gm;1<75rb563>5<3290;w)jk:778L1>03A>3<6*:c;6`?l3?2900e8750;9j1d<722eo=7>5;|`77c<72=0;6=u+de851>N30>1C85>4$4a90f=n=10;66g:9;29?l3f2900ci?50;9~f126290?6=4?{%fg>3e<@=2<7E:70:k6<?6=3`?26=44iec94?=hl80;66sm45194?2=83:p(ij5649K0=1<@=2;7);l:5a8m0>=831b944?::k6e?6=3fn:6=44}c676?6=<3:1<v*kd;46?M2??2B?4=5+5b87g>o203:17d;6:188m0g=831dh<4?::\7fa012=83>1<7>t$ef92f=O<1=0D96?;h7;>5<<a<31<75fd`83>>ic93:17pl;4783>1<729q/hi495:J7<2=O<1:0(8m54b9j1=<722c>57>5;h7b>5<<gm;1<75rb566>5<3290;w)jk:778L1>03A>3<6*:c;6`?l3?2900e8750;9j1d<722eo=7>5;|`702<72=0;6=u+de85g>N30>1C85>4i4:94?=n=00;66gka;29?jb62900qo:;9;290?6=8r.oh78:;I6;3>N3091/9n4;c:k6<?6=3`?26=44i4c94?=hl80;66sm45:94?2=83:p(ij5649K0=1<@=2;7);l:5a8m0>=831b944?::k6e?6=3fn:6=44}c67e?6=<3:1<v*kd;4`?M2??2B?4=5f5983>>o213:17djn:188ka7=831vn9:l:187>5<7s-no6;;4H5:4?M2?82.>o7:l;h7;>5<<a<31<75f5`83>>ic93:17pl;4c83>1<729q/hi495:J7<2=O<1:0(8m54b9j1=<722c>57>5;h7b>5<<gm;1<75rb345>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;<>6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb347>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;<86=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb341>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;<:6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb37e>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;?n6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb37g>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;?h6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb37a>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;?j6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb37:>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;?36=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb374>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;?=6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb377>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;?86=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb371>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;?:6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb373>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;>m6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb36f>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;>o6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb36`>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;>i6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb34`>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;<i6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb34b>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;<26=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb34;>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;<<6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb343>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;?>6=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb36b>5<2290;w)jk:5d8L1>03A>3<6*:c;08m6e=831b?h4?::k75?6=3`>>6=44oe:94?=zj;>26=4::183\7f!bc2=l0D968;I6;4>"2k380e>m50;9j7`<722c?=7>5;h66>5<<gm21<75rb55b>5<4290;w)jk:718L1>03A>3<6*:c;30?l3?2900e8750;9l`4<722wi8;h50;194?6|,mn1:>5G4958L1>73-?h6<=4i4:94?=n=00;66ak1;29?xd6;=0;6>4?:1y'`a<1;2B?4:5G4928 0e=9=1b954?::k6=?6=3fn:6=44}cd6>5<4290;w)jk:718L1>03A>3<6*:c;37?l3?2900e8750;9l`4<722wi><o50;194?6|,mn1:>5G4958L1>73-?h6<:4i4:94?=n=00;66ak1;29?xd6jh0;6>4?:1y'`a<1;2B?4:5G4928 0e=9=1b954?::k6=?6=3fn:6=44}cg4>5<4290;w)jk:718L1>03A>3<6*:c;37?l3?2900e8750;9l`4<722wii;4?:283>5}#lm0=?6F;869K0=6<,<i1=95f5983>>o213:17bj>:188ygc229086=4?{%fg>35<@=2<7E:70:&6g?733`?36=44i4;94?=hl80;66sme583>6<729q/hi493:J7<2=O<1:0(8m5159j1=<722c>57>5;nf2>5<<uko86=4<:183\7f!bc2?90D968;I6;4>"2k3;?7d;7:188m0?=831dh<4?::\7faa7<72:0;6=u+de857>N30>1C85>4$4a951=n=10;66g:9;29?jb62900qok>:180>5<7s-no6;=4H5:4?M2?82.>o7?;;h7;>5<<a<31<75`d083>>{em90;6>4?:1y'`a<1;2B?4:5G4928 0e=9=1b954?::k6=?6=3fn:6=44}cfe>5<4290;w)jk:718L1>03A>3<6*:c;37?l3?2900e8750;9l`4<722wihh4?:283>5}#lm0=?6F;869K0=6<,<i1=95f5983>>o213:17bj>:188yg74>3:187>50z&g`?023A>3;6F;819'1f<4:2c>47>5;h7:>5<<a<k1<75`d083>>{en>0;694?:1y'`a<1=2B?4:5G4928 0e=;;1b954?::k6=?6=3`?j6=44oe394?=zj83j6=4;:183\7f!bc2??0D968;I6;4>"2k38;7d;7:188m0?=831b9l4?::mg5?6=3th9=o4?:583>5}#lm0=96F;869K0=6<,<i1=h5f5983>>o213:17d;n:188ka7=831vn<lm:187>5<7s-no6;;4H5:4?M2?82.>o7?j;h7;>5<<a<31<75f5`83>>ic93:17pl>3983>0<729q/hi498:J7<2=O<1:0(8m5179j1=<722c>57>5;h7b>5<<a<h1<75`d083>>{en00;684?:1y'`a<102B?4:5G4928 0e=9?1b954?::k6=?6=3`?j6=44i4`94?=hl80;66sm1`394?3=83:p(ij5699K0=1<@=2;7);l:2f8m0>=831b944?::k6e?6=3`?i6=44oe394?=zj8hh6=4::183\7f!bc2?20D968;I6;4>"2k3;m7d;7:188m0?=831b9l4?::k6f?6=3fn:6=44}c3:`?6==3:1<v*kd;4;?M2??2B?4=5+5b823>o203:17d;6:188m0g=831b9o4?::mg5?6=3th:5;4?:583>5}#lm0=96F;869K0=6<,<i1=85f5983>>o213:17d;n:188ka7=831vn<l=:180>5<7s-no6;=4H5:4?M2?82.>o7<i;h7;>5<<a<31<75`d083>>{e9:k1<7=50;2x ab=>:1C8594H5:3?!3d28>0e8650;9j1<<722eo=7>5;|`ef?6=;3:1<v*kd;40?M2??2B?4=5+5b820>o203:17d;6:188ka7=831vn<=l:187>5<7s-no6;;4H5:4?M2?82.>o7==;h7;>5<<a<31<75f5`83>>ic93:17plid;290?6=8r.oh78:;I6;3>N3091/9n4<2:k6<?6=3`?26=44i4c94?=hl80;66sm1c794?2=83:p(ij5649K0=1<@=2;7);l:218m0>=831b944?::k6e?6=3fn:6=44}c02a?6=<3:1<v*kd;46?M2??2B?4=5+5b807>o203:17d;6:188m0g=831dh<4?::\7fa64`=83?1<7>t$ef92==O<1=0D96?;%7`>62<a<21<75f5883>>o2i3:17d;m:188ka7=831vn<68:186>5<7s-no6;64H5:4?M2?82.>o7k4i4:94?=n=00;66g:a;29?l3e2900ci?50;9~f77529086=4?{%fg>35<@=2<7E:70:&6g?743`?36=44i4;94?=hl80;66sm18794?3=83:p(ij5699K0=1<@=2;7);l:g9j1=<722c>57>5;h7b>5<<a<h1<75`d083>>{e9l>1<7;50;2x ab=>11C8594H5:3?!3d2:;0e8650;9j1<<722c>m7>5;h7a>5<<gm;1<75rb0g6>5<2290;w)jk:7:8L1>03A>3<6*:c;12?l3?2900e8750;9j1d<722c>n7>5;nf2>5<<uk;n:7>55;294~"cl3<37E:77:J7<5=#=j08=6g:8;29?l3>2900e8o50;9j1g<722eo=7>5;|`2a5<72<0;6=u+de85<>N30>1C85>4$4a974=n=10;66g:9;29?l3f2900e8l50;9l`4<722wi=h?50;794?6|,mn1:55G4958L1>73-?h6>?4i4:94?=n=00;66g:a;29?l3e2900ci?50;9~f4ge290>6=4?{%fg>3><@=2<7E:70:&6g?4c3`?36=44i4;94?=n=h0;66g:b;29?jb62900qo?nc;291?6=8r.oh787;I6;3>N3091/9n4=e:k6<?6=3`?26=44i4c94?=n=k0;66ak1;29?xd6im0;684?:1y'`a<102B?4:5G4928 0e=;81b954?::k6=?6=3`?j6=44i4`94?=hl80;66sm1`794?5=83:p(ij5629K0=1<@=2;7);l:3d8m0>=831b944?::mg5?6=3th:m:4?:483>5}#lm0=46F;869K0=6<,<i1?<5f5983>>o213:17d;n:188m0d=831dh<4?::\7fa5d>=83?1<7>t$ef92==O<1=0D96?;%7`>67<a<21<75f5883>>o2i3:17d;m:188ka7=831vn<66:180>5<7s-no6;=4H5:4?M2?82.>o774i4:94?=n=00;66ak1;29?xd6n90;6>4?:1y'`a<1;2B?4:5G4928 0e=9=1b954?::k6=?6=3fn:6=44}c3;g?6=<3:1<v*kd;46?M2??2B?4=5+5b8a?l3?2900e8750;9j1d<722eo=7>5;|`2b4<72=0;6=u+de851>N30>1C85>4$4a964=n=10;66g:9;29?l3f2900ci?50;9~f4>b290>6=4?{%fg>3><@=2<7E:70:&6g?b<a<21<75f5883>>o2i3:17d;m:188ka7=831vn<h=:186>5<7s-no6;64H5:4?M2?82.>o7<7;h7;>5<<a<31<75f5`83>>o2j3:17bj>:188yg7>83:1?7>50z&g`?043A>3;6F;819'1f<5i2c>47>5;h7:>5<<gm;1<75rb0:e>5<2290;w)jk:7:8L1>03A>3<6*:c;a8m0>=831b944?::k6e?6=3`?i6=44oe394?=zj8on6=4<:183\7f!bc2?90D968;I6;4>"2k38j7d;7:188m0?=831dh<4?::\7fa647=83?1<7>t$ef92==O<1=0D96?;%7`>74<a<21<75f5883>>o2i3:17d;m:188ka7=831vn<kk:186>5<7s-no6;64H5:4?M2?82.>o7<l;h7;>5<<a<31<75f5`83>>o2j3:17bj>:188yg71j3:187>50z&g`?023A>3;6F;819'1f<5j2c>47>5;h7:>5<<a<k1<75`d083>>{e90>1<7;50;2x ab=>11C8594H5:3?!3d2;i0e8650;9j1<<722c>m7>5;h7a>5<<gm;1<75rb04`>5<3290;w)jk:778L1>03A>3<6*:c;0a?l3?2900e8750;9j1d<722eo=7>5;|`2=7<72<0;6=u+de85<>N30>1C85>4$4a9g>o203:17d;6:188m0g=831b9o4?::mg5?6=3th?:84?:483>5}#lm0=46F;869K0=6<,<i1:6g:8;29?l3>2900e8o50;9j1g<722eo=7>5;|`723<72<0;6=u+de85<>N30>1C85>4$4a90>o203:17d;6:188m0g=831b9o4?::mg5?6=3th?::4?:483>5}#lm0=46F;869K0=6<,<i186g:8;29?l3>2900e8o50;9j1g<722eo=7>5;|`72=<72<0;6=u+de85<>N30>1C85>4$4a9e>o203:17d;6:188m0g=831b9o4?::mg5?6=3th:m;4?:483>5}#lm0=46F;869K0=6<,<i1?=5f5983>>o213:17d;n:188m0d=831dh<4?::\7fa5`4=83?1<7>t$ef92==O<1=0D96?;%7`>05<a<21<75f5883>>o2i3:17d;m:188ka7=831vn<o6:186>5<7s-no6;64H5:4?M2?82.>o7;<;h7;>5<<a<31<75f5`83>>o2j3:17bj>:188yg46l3:197>50z&g`?0?3A>3;6F;819'1f<6n2c>47>5;h7:>5<<a<k1<75f5c83>>ic93:17pl>dd83>0<729q/hi498:J7<2=O<1:0(8m53:k6<?6=3`?26=44i4c94?=n=k0;66ak1;29?xd5<;0;684?:1y'`a<3n2B?4:5G4928 0e=:2c8o7>5;h1f>5<<a=;1<75f4483>>ic03:17pl=4183>0<729q/hi4;f:J7<2=O<1:0(8m52:k0g?6=3`9n6=44i5394?=n<<0;66ak8;29?xd5<=0;684?:1y'`a<3n2B?4:5G4928 0e=:2c8o7>5;h1f>5<<a=;1<75f4483>>ic03:17pl=4783>0<729q/hi4;f:J7<2=O<1:0(8m52:k0g?6=3`9n6=44i5394?=n<<0;66ak8;29?xd6l;0;684?:1y'`a<3n2B?4:5G4928 0e=:2c8o7>5;h1f>5<<a=;1<75f4483>>ic03:17pl>d583>0<729q/hi4;f:J7<2=O<1:0(8m52:k0g?6=3`9n6=44i5394?=n<<0;66ak8;29?xd6l90;684?:1y'`a<3n2B?4:5G4928 0e=:2c8o7>5;h1f>5<<a=;1<75f4483>>ic03:17pl>d783>0<729q/hi4;f:J7<2=O<1:0(8m52:k0g?6=3`9n6=44i5394?=n<<0;66ak8;29?xd6l>0;684?:1y'`a<3n2B?4:5G4928 0e=:2c8o7>5;h1f>5<<a=;1<75f4483>>ic03:17pl=1883>7<729q/hi4:d:J7<2=O<1:0e8950;9l`4<722wi=o750;094?6|,mn19i5G4958L1>73`?<6=44oe394?=zj8om6=4=:183\7f!bc2<n0D968;I6;4>o2?3:17bj>:188yg46k3:197>50z&g`?013A>3;6F;819'1f<5?2c>47>5;h7:>5<<a<k1<75`6183>>ic93:17pl>b083>3<729q/hi499:J7<2=O<1:0(8m5289j1=<722c>57>5;h7b>5<<a<h1<75`6183>>ic93:17pl>9683>6<729q/hi494:J7<2=O<1:0(8m5159j1=<722c>57>5;n43>5<<uk;3m7>56;294~"cl3<27E:77:J7<5=#=j0>7d;7:188m0?=831b9l4?::k6f?6=3f<;6=44oe394?=zj8o86=4;:183\7f!bc2?=0D968;I6;4>"2k38i7d;7:188m0?=831b9l4?::m54?6=3th:ml4?:583>5}#lm0=;6F;869K0=6<,<i1>o5f5983>>o213:17d;n:188k36=831vn<ji:187>5<7s-no6;94H5:4?M2?82.>o7<9;h7;>5<<a<31<75f5`83>>i183:17p}:7683>3}Y=>=01<7n:4c894g62<h01<7k:4`894?12<k01<7::4:8yv2>j3:1>=uQ48f8Z1?73W?<j6P:7e9]0=`<V<=j7S;<a:\63`=Y=:h0R8;>;_6:e>X3101U8464^5;4?[2>>2T?585Q486891>?2<?01999:578910e2=?0199::57891132=?0199<:578911b2=?0199k:578941a2m=01<6?:e5894>62m=01<6=:e5894>42m=01<6;:e5894>22m=0q~;89;297~X2?0168:85d69>03d=l>1v\7f8=>:181\7f[34927:5k4k8:\7fp1<6=83=pR87?;<026?3>34>=97;m;<652?3>34>=;7;6;<65<?3e34;oj7;7;|q622<721?pR888;<65`?5d34>=o7=l;<65f?5d34><97=l;<640?5d34><?7=l;<3b7?5d34;<j7=l;<3;4?5d34;3=7=l;<3;6?5d34;3?7=l;<3;0?5d34;397=l;<3`b?5d34;o=7=l;<3g7?5d34;o97=l;<3g<?5d34;o57=l;<3`7?5d34;h87=l;<3`1?5d34;h47=l;<3`2?5d34;h;7=l;<306?5d34;8=7=l;<304?5d34;9j7=l;<31a?5d34;9h7=l;<354?5d34;>j7=l;<36a?5d34;>h7=l;<36g?5d34;>n7=l;<360?5d34;>?7=l;<366?5d34;>=7=l;<364?5d34;?j7=l;<33=?5d34;;47=l;<333?5d34;;:7=l;<331?5d34;;87=l;<3:f?5d34;247=l;<3b6?5d34;2j7=l;<3:a?5d349o97=l;<1g2?5d349n=7=l;<1fg?5d349m?7=l;<1e0?5d349m97=l;<1e2?5d349m;7=l;<1e<?5d349o;7=l;<1g<?5d349o57=l;<1ge?5d349on7=l;<1gg?5d349oh7=l;<1ga?5d349oj7=l;<1f4?5d349n>7=l;<1f7?5d349n87=l;<1f1?5d349n:7=l;<1f3?5d349n47=l;<1f=?5d349nm7=l;<1ff?5d349nh7=l;<1fa?5d349nj7=l;<1e4?5d349m=7=l;<1e6?5d348=:7=l;<051?5d348=87=l;<057?5d348=>7=l;<055?5d348>j7=l;<06a?5d348>h7=l;<06g?5d348>n7=l;<06e?5d348>57=l;<06<?5d348>;7=l;<062?5d348>87=l;<067?5d348>>7=l;<065?5d348><7=l;<07b?5d348?i7=l;<07`?5d348?o7=l;<07f?5d348=o7=l;<05f?5d348=m7=l;<05=?5d348=47=l;<053?5d348=<7=l;<061?5d348?m7=l;<07=?5d34;o>7=l;<3g0?5d34;o<7=l;<3g2?5d34;o;7=l;|q672<72;qU9>94=0f`>a><uz?3<7>5cey]1=6<5==36>m4=555>6e<5==<6>m4=55f>6e<5==o6>m4=0f`>6e<58ni6>m4=326>6e<5;:=6>m4=324>6e<5;:36>m4=32:>6e<5;:j6>m4=32a>6e<5o91?n52f380g>;a939h70h?:2a89``=;j16ih4<c:?264<4k27:>=4<c:?25c<4k27:=h4<c:?25a<4k27:=n4<c:?250<4k27:=94<c:?256<4k27:=?4<c:?254<4k27:==4<c:?20=<4k27:8:4<c:?203<4k27:884<c:?201<4k27:8>4<c:?16g<4k279>l4<c:?16f<4k279>54<c:?162<4k279>44<c:?170<4k279?>4<c:?171<4k279?54<c:?173<4k279?:4<c:?10=<4k2798:4<c:?100<4k2798>4<c:?104<4k279?k4<c:?1e0<30:16>;j5491897e12=2870<m0;6;7>;5jk0?4>522d590=5<5;n:696<;<0gg?2?;279;44;829>6c4=<1901?8j:5:0?84>i3>3?63=8587<6=::1l185=4=3c1>1>4348j<7:73:?1e4<30:16>l85491897g42=2870<n4;6;7>;5i>0?4>522`:90=5<5;ki696<;<0b=?2?;279ml4;829>6dc=<1901?ol:5:0?84fl3>3?63=b387<6=::hl185=4=3`2>1>4348i97:73:?1f6<30:16>o:5491897d?2=2870<m6;6;7>;5j>0?4>522ca90=5<5;h2696<;<0ae?2?;279nk4;829>6gb=<1901?lj:5:0?84d83>3?63=c087<6=::j>185=4=3a1>1>4348h?7:73:?1g=<30:16>n;5491897e02=2870<lb;6;7>;5k00?4>522bc90=5<5;in696<;<0`g?2?;279oi4;829>6a4=<1901?mi:5:0?84c83>3?63=d487<6=::m9185=4=3f7>1>4348o47:73:?1`3<30:16>i95491897b>2=2870<ka;6;7>;5ll0?4>522e`90=5<5;no696<;<0f5?2?;279hk4;829>6`6=<1901?k;:5:0?84b:3>3?63=e287<6=::l?185=4=3g5>1>4348nm7:73:?1a=<30:16>h75491897cc2=2870<jb;6;7>;5mj0?4>522g290=5<5;on696<;<0fb?2?;279j<4;829>6c5=<1901?h9:5:0?84a<3>3?63=f487<6=::o3185=4=3d4>1>4348m47:73:?1bf<30:16>ko5491897`e2=2870<81;6;7>;5>o0?4>5226290=5<5;=?696<;<046?2?;279;>4;829>621=<1901?9::5:0?840>3>3?63=7c87<6=::>2185=4=35b>1>4348<o7:73:?13a<30:16>5>54918971b2=2870<8f;6;7>;50:0?4>5229390=5<5;29696<;<0;3?2?;279484;829>6=0=<1901?67:5:0?84?13>3?63=8b87<6=::1k185=4=3:a>1>43482<7:73:?1<a<30:16>5k5491897?42=2870<61;6;7>;51;0?4>5228690=5<5;3>696<;<0:<?2?;2795;4;829>6<1=<1901?7l:5:0?84>13>3?63=9c87<6=::0l185=4=3;g>1>43482i7:73:?107<4k2798=4<c:?101<4k2798;4<c:\7fp1=`=838pR868;<03f?b?3ty>4i4?:3y]1=0<5;:j6i64}r7;g?6=:rT>485221;9`==z{<2i6=4={_7;0>;5810o46s|59c94?4|V<2870<?7;f;?xu2000;6?uQ590897612m20q~;78;296~X20816>=;5d99~w04?2909wS;?4:?123<c02wx9?850;0xZ064348=97j7;|q660<72;qU9=<4=347>a><uz?987>52z\644=::?91h55rs400>5<5sW?;<63=638g<>{t=;81<7<t^5de?84193n37p}:2183>7}Y<on01?;i:e:8yv36n3:1>vP;fb9>60c=l11v\7f8?j:181\7f[2aj2799i4k8:\7fp14b=838pR9hn;<06g?b?3ty>=n4?:3y]0c?<5;?i6i64}r72f?6=:rT?j55224c9`==z{<;j6=4={_6e3>;5=00o46s|50;94?4|V=l=70<:8;f;?xu2910;6?uQ4g7897302m20q~;>7;296~X3n=16>885d99~w0722909wS:i2:?111<c02wx9<:50;0xZ1`6348>?7j7;|q656<72;qU8k>4=371>a><uz?:>7>52z\7ac=::<;1h55rs432>5<5sW>ni63=518g<>{t=8:1<7<t^5gg?843n3n37p}:0g83>7}Y<li01?:j:e:8yv37m3:1>vP;ec9>61b=l11v\7f8>k:181\7f[2bi2798n4k8:\7fp15e=838pR9k6;<07f?b?3ty>>k4?:3y]15g<5;<h6i64}r71a?6=:rT><45227`9`==z{<8o6=4={_73<>;5>h0o46s|53a94?4|V<:<70<99;f;?xu2:k0;6?uQ5148970?2m20q~;=a;296~X28<16>;95d99~w04>2909wS:ie:?125<c02wx9??50;0xZ1`4348>97j7;|q653<72;qU8h64=36b>a><uz?;n7>52z\7a2=::=31h55rs455>5<5sW?=i63>848g<>{t=>>1<7<t^44g?87?<3n37p}:7283>7}Y=?i01<6<:e:8yv30:3:1>vP:6c9>5=4=l11v\7f89>:181\7f[31i27:4<4k8:\7fp126=838pR886;<3;4?b?3ty>:k4?:3y]13><58=m6i64}r6gb?6==rT?no5228a900=::0l1885228f900=::0o1885rs5fg>5<2sW>im63=99871>;51>0?963=98871>;51k0?96s|4ea94?3|V=h270<63;66?84><3>>70<65;66?84>>3>>7p};dc83>0}Y<k201?7?:57897>b2=?01?7>:57897?52=?0q~:ka;291~X3j>16>5m5449>6=g=<<16>5l5449>6=b=<<1v\7f9j6:186\7f[2e>2794:4;5:?1<3<3=279454;5:?1<<<3=2wx8i950;7xZ1d33483?7::;<0;5?223483>7::;<0;1?223ty?h;4?:4y]0g5<5;=o69;4=3:3>13<5;=n69;4=35e>13<uz>o97>55z\7f7=::>h1885226:900=::>k1885226a900=z{=n?6=4:{_6a5>;5?=0?963=76871>;5?<0?963=77871>{t<m91<7;t^5`3?84093>>70<80;66?840:3>>70<83;66?xu3l;0;68uQ4`d897`d2=?01?hn:57897`e2=?01?8i:578yv2c93:19vP;ad9>6c0=<<16>k75449>6c1=<<16>k65449~w1b7290>wS:nd:?1b4<3=279j>4;5:?1b1<3=279j84;5:\7fp0f`=83?pR9ol;<0f`?22348m<7::;<0fa?22348nj7::;|q7g`<72<qU8ll4=3gb>13<5;o269;4=3ga>13<5;oh69;4}r6`g?6==rT?m4522d6900=::l?188522d4900=::l21885rs5aa>5<2sW>j463=e0871>;5m90?963=e3871>;5m:0?96s|4bc94?3|V=k<70<ke;66?84cj3>>70<kd;66?84cn3>>7p};c883>0}Y<h<01?j7:57897b02=?01?j6:57897bf2=?0q~:l8;291~X3i<16>i;5449>6a5=<<16>i:5449>6a0=<<1v\7f9m8:186\7f[2f<279oh4;5:?1`7<3=279ok4;5:?1`5<3=2wx8n850;7xZ1g4348hn7::;<0`e?22348ho7::;<0``?223ty?o84?:4y]0d4<5;i369;4=3a6>13<5;i<69;4=3a:>13<uz>h87>55z\7e4=::j;188522b6900=::j8188522b1900=z{=i86=4:{_6b4>;5jo0?963=be871>;5jl0?963=c1871>{t<l<1<7;t^5a2?84e03>>70<mc;66?84e13>>70<ma;66?xu3m<0;68uQ4b2897d22=?01?l;:57897d12=?01?l8:578yv2b<3:19vP;bg9>6g4=<<16>lh5449>6g7=<<16>o=5449~w1c4290>wS:me:?1eg<3=279mh4;5:?1ef<3=279mi4;5:\7fp0`4=83?pR9lk;<0b3?22348j47::;<0b=?22348jm7::;|q7a4<72<qU8om4=3c1>13<5;k=69;4=3c0>13<5;k?69;4}r6f4?6==rT?n85228c900=::1l188522`2900=::h;1885rs5f;>5<2sW>jm63=78871>;5n;0?963=6d871>;50=0?96s|4bf94?3|V=3m70<l6;66?84b?3>>70<k1;66?84ck3>>7p};c383>0}Y<0o01?o::578970c2=?01?l?:57897de2=?0q~9?:186\7f82?13n870?9d;63?87003>;70?i3;63?87am3>;7p};6b83>6}:<?n1885247a9`==:<?h1?h5rs54g>5<5s4>=h7j7;<65b?3?3ty?;:4?:2y>02>=<<168:853d9>021=l11v\7f997:181\7f82003n370:8a;7;?xu3>k0;6>u247a900=:<?h1h55247d91<=z{===6=4<{<642?b?34><;7::;<64e?3>3ty?:h4?:5y>023=l>168::5d69>025=l>168;h5d09~w1152909=v3;748g<>;6i:0o;63>7g875>;6090?=63>80875>;60;0?=63>82875>;60=0?=63>84875>;6ko0?=63>d0875>;6l:0?=63>d4875>;6l10?=63>d8875>;6k:0o;63>c5875>;6k<0?=63>c9875>;6k?0?=63>c6875>;61k0?=63>99875>;6i;0?=63>9g8g3>;61l0o;63>8686=>;6l;0?=63>d5875>;6l90?=63>d7875>;6l>0?=63>8`86f>{t<>;1<7?6{<640?b?34;8>7:>;<305?2634;8<7:>;<31b?2634;9i7:>;<31`?2634;=<7:>;<36b?2634;>i7:>;<36`?2634;>o7:>;<36f?2634;>87:>;<367?2634;>>7:>;<365?2634;><7:>;<37b?2634;;57:>;<33<?2634;;;7:>;<332?2634;;97:>;<330?263ty?;=4?:5;x91142m201>j::53896b12=;01>k>:53896cd2=;01>h<:53896`32=;01>h::53896`12=;01>h8:53896`?2=;01>j8:53896b?2=;01>j6:53896bf2=;01>jm:53896bd2=;01>jk:53896bb2=;01>ji:53896c72=;01>k=:53896c42=;01>k;:53896c22=;01>k9:53896c02=;01>k7:53896c>2=;01>kn:53896ce2=;01>kk:53896cb2=;01>ki:53896`72=;01>h>:53896`52=;01?89:53897022=;01?8;:53897042=;01?8=:53897062=;01?;i:538973b2=;01?;k:538973d2=;01?;m:538973f2=;01?;6:538973?2=;01?;8:53897312=;01?;;:53897342=;01?;=:53897362=;01?;?:538972a2=;01?:j:538972c2=;01?:l:538972e2=;01?8l:538970e2=;01?8n:538970>2=;01?87:53897002=;01?8?:53897322=;01?:n:538972>2=;0q~:89;297~;3?l0o;63;7e8g3>;3?h0o=6s|46a94?47s4><i7j7;<3gg?b034;on7j8;<031?26348;:7:>;<033?26348;47:>;<03=?26348;m7:>;<03f?263489n7:>;<01e?263489o7:>;<01<?b03489;7:>;<01=?26348897:>;<007?b0348887:>;<00<?263488:7:>;<003?26348?47:>;<073?26348?97:>;<077?26348?=7:>;<00b?26348?>7:>;<074?26348?87:>;<072?263ty?;o4?:0;x911c2m201k=5409>b7<3927m=7:>;<d3>17<5ll18<52ed875>;6:80?=63>21875>;69o0?=63>1d875>;69m0?=63>1b875>;69<0?=63>15875>;69:0?=63>13875>;6980?=63>11875>;6<10?=63>46875>;6<?0?=63>44875>;6<=0?=63>42875>{t9h>1<7<t=0c0>13<58k26i?4}r3b7?6=;r7:m>4k8:?2=a<2027:584:9:\7fp5=0=838p1<9i:57894>02m;0q~?78;296~;6090?963>888g5>{t91h1<7<t=0:2>13<582h6i?4}r3;`?6=:r7:4?4;5:?2<`<c92wx=5h50;0x94>42=?01<6i:e38yv7>93:1>v3>85871>;61;0o=6s|18194?4|582>69;4=0;7>a7<uz;om7>536y>5f`=;l16=i?53d9>5a5=;l16=i;53d9>5a>=;l16=i753d9>5f5=;l16=n:53d9>5f3=;l16=n653d9>5f0=;l16=n953d9>7a3=;l16?i853d9>7`7=;l16?hm53d9>7c5=;l16?k:53d9>7c3=;l16?k853d9>7c1=;l16?k653d9>7a1=;l16?i653d9>7a?=;l16?io53d9>7ad=;l16?im53d9>7ab=;l16?ik53d9>7a`=;l16?h>53d9>7`4=;l16?h=53d9>7`2=;l16?h;53d9>7`0=;l16?h953d9>7`>=;l16?h753d9>7`g=;l16?hl53d9>7`b=;l16?hk53d9>7``=;l16?k>53d9>7c7=;l16?k<53d9>5<3=l816=l855c9>5a4=;l16=i:53d9>5a6=;l16=i853d9>5a1=;l1v\7f<lk:18:\7f87dn3>>70?l3;f;?87ei3?270?mb;7b?87ek3?j70?n8;7b?87c83>>70?m9;74?87e93?37p}>c883><5|58im6i64=3c6>1><5;<o6964=3a5>1><5;h;6964=3`a>1><5;o<6964=3f2>1><5;nh6964=35:>1><5;l96964=34f>1><5;3j6964=3:7>1><5;2m6964=3c1>1><5;k;6964=3c2>1><5;k=6964=3c0>1><5;k?6964=3c4>1><5;k36964=3ca>1><5;k26964=3cb>1><5;kn6964=3c`>1><5;ko6964=3`1>1><5;km6964=3`2>1><5;h>6964=3`0>1><5;h?6964=3`;>1><5;h=6964=3`4>1><5;hh6964=3`:>1><5;hj6964=3`e>1><5;ho6964=3`f>1><5;i;6964=3a2>1><5;i?6964=3a1>1><5;i86964=3a;>1><5;i>6964=3a4>1><5;ii6964=3a:>1><5;ij6964=3af>1><5;ih6964=3ag>1><5;n96964=3ae>1><5;n;6964=3f6>1><5;n86964=3f7>1><5;n36964=3f5>1><5;n<6964=3f:>1><5;nj6964=3ff>1><5;ni6964=3fg>1><5;o:6964=3fe>1><5;o;6964=3g7>1><5;o96964=3g0>1><5;o>6964=3g5>1><5;oj6964=3g;>1><5;o26964=3gg>1><5;oi6964=3g`>1><5;l;6964=3gf>1><5;om6964=3d2>1><5;l86964=3d5>1><5;l?6964=3d6>1><5;l26964=3d4>1><5;l36964=3d`>1><5;lj6964=3da>1><5;=:6964=34e>1><5;=;6964=357>1><5;=96964=350>1><5;=<6964=356>1><5;==6964=35a>1><5;=36964=35b>1><5;=h6964=35g>1><5;2;6964=35f>1><5;=m6964=3:0>1><5;2:6964=3:1>1><5;2<6964=3:6>1><5;2=6964=3:;>1><5;226964=3:`>1><5;2j6964=3:a>1><5;3;6964=3:g>1><5;2n6964=3;0>1><5;3:6964=3;1>1><5;3?6964=3;6>1><5;336964=3;5>1><5;3<6964=3;`>1><5;326964=3;a>1><5;3m6964=3;g>1><5;3n6964=d091<=:9hh19l5rs0`f>5<?s4;o=7::;<3`0?b?34;im7;7;<3af?3>34;io7;6;<3b1?3?34;o>7::;<3a5?3>3ty:ol4?:86x94b62m201?o::5;8970c2=301?m9:5;897d72=301?lm:5;897c02=301?j>:5;897bd2=301?96:5;897`52=301?8j:5;897?f2=301?6;:5;897>a2=301?o=:5;897g72=301?o>:5;897g12=301?o<:5;897g32=301?o8:5;897g?2=301?om:5;897g>2=301?on:5;897gb2=301?ol:5;897gc2=301?l=:5;897ga2=301?l>:5;897d22=301?l<:5;897d32=301?l7:5;897d12=301?l8:5;897dd2=301?l6:5;897df2=301?li:5;897dc2=301?lj:5;897e72=301?m>:5;897e32=301?m=:5;897e42=301?m7:5;897e22=301?m8:5;897ee2=301?m6:5;897ef2=301?mj:5;897ed2=301?mk:5;897b52=301?mi:5;897b72=301?j::5;897b42=301?j;:5;897b?2=301?j9:5;897b02=301?j6:5;897bf2=301?jj:5;897be2=301?jk:5;897c62=301?ji:5;897c72=301?k;:5;897c52=301?k<:5;897c22=301?k9:5;897cf2=301?k7:5;897c>2=301?kk:5;897ce2=301?kl:5;897`72=301?kj:5;897ca2=301?h>:5;897`42=301?h9:5;897`32=301?h::5;897`>2=301?h8:5;897`?2=301?hl:5;897`f2=301?hm:5;897162=301?8i:5;897172=301?9;:5;897152=301?9<:5;897102=301?9::5;897112=301?9m:5;8971?2=301?9n:5;8971d2=301?9k:5;897>72=301?9j:5;8971a2=301?6<:5;897>62=301?6=:5;897>02=301?6::5;897>12=301?67:5;897>>2=301?6l:5;897>f2=301?6m:5;897?72=301?6k:5;897>b2=301?7<:5;897?62=301?7=:5;897?32=301?7::5;897??2=301?79:5;897?02=301?7l:5;897?>2=301?7m:5;897?a2=301?7k:5;897?b2=301h<5599>a4<2127:mn4:b:\7fp5g`=83=p1<j<:57894e22m201<lm:4:894dd2<h01<o7:4:894b32=?01<l>:4c8yv7dj3:159u21e19`==::h?18l5227f90d=::j<18l522c290d=::kh18l522d590d=::m;18l522ea90d=::>318l522g090d=::?o18l5228c90d=::1>18l5229d90d=::h818l522`290d=::h;18l522`490d=::h918l522`690d=::h=18l522`:90d=::hh18l522`;90d=::hk18l522`g90d=::hi18l522`f90d=::k818l522`d90d=::k;18l522c790d=::k918l522c690d=::k218l522c490d=::k=18l522ca90d=::k318l522cc90d=::kl18l522cf90d=::ko18l522b290d=::j;18l522b690d=::j818l522b190d=::j218l522b790d=::j=18l522b`90d=::j318l522bc90d=::jo18l522ba90d=::jn18l522e090d=::jl18l522e290d=::m?18l522e190d=::m>18l522e:90d=::m<18l522e590d=::m318l522ec90d=::mo18l522e`90d=::mn18l522d390d=::ml18l522d290d=::l>18l522d090d=::l918l522d790d=::l<18l522dc90d=::l218l522d;90d=::ln18l522d`90d=::li18l522g290d=::lo18l522dd90d=::o;18l522g190d=::o<18l522g690d=::o?18l522g;90d=::o=18l522g:90d=::oi18l522gc90d=::oh18l5226390d=::?l18l5226290d=::>>18l5226090d=::>918l5226590d=::>?18l5226490d=::>h18l5226:90d=::>k18l5226a90d=::>n18l5229290d=::>o18l5226d90d=::1918l5229390d=::1818l5229590d=::1?18l5229490d=::1218l5229;90d=::1i18l5229c90d=::1h18l5228290d=::1n18l5229g90d=::0918l5228390d=::0818l5228690d=::0?18l5228:90d=::0<18l5228590d=::0i18l5228;90d=::0h18l5228d90d=::0n18l5228g90d=:m80>463j0;7:?87fj3?i7p}>c183>2}:9m?188521b49`==:9ki195521`591d=:9m<188521e5900=:9k;19o5rs0a`>5<>;r7:h84k8:?1e0<3j279:i4;b:?1g3<3j279n=4;b:?1fg<3j279i:4;b:?1`4<3j279hn4;b:?13<<3j279j?4;b:?12`<3j2795l4;b:?1<1<3j2794k4;b:?1e7<3j279m=4;b:?1e4<3j279m;4;b:?1e6<3j279m94;b:?1e2<3j279m54;b:?1eg<3j279m44;b:?1ed<3j279mh4;b:?1ef<3j279mi4;b:?1f7<3j279mk4;b:?1f4<3j279n84;b:?1f6<3j279n94;b:?1f=<3j279n;4;b:?1f2<3j279nn4;b:?1f<<3j279nl4;b:?1fc<3j279ni4;b:?1f`<3j279o=4;b:?1g4<3j279o94;b:?1g7<3j279o>4;b:?1g=<3j279o84;b:?1g2<3j279oo4;b:?1g<<3j279ol4;b:?1g`<3j279on4;b:?1ga<3j279h?4;b:?1gc<3j279h=4;b:?1`0<3j279h>4;b:?1`1<3j279h54;b:?1`3<3j279h:4;b:?1`<<3j279hl4;b:?1``<3j279ho4;b:?1`a<3j279i<4;b:?1`c<3j279i=4;b:?1a1<3j279i?4;b:?1a6<3j279i84;b:?1a3<3j279il4;b:?1a=<3j279i44;b:?1aa<3j279io4;b:?1af<3j279j=4;b:?1a`<3j279ik4;b:?1b4<3j279j>4;b:?1b3<3j279j94;b:?1b0<3j279j44;b:?1b2<3j279j54;b:?1bf<3j279jl4;b:?1bg<3j279;<4;b:?12c<3j279;=4;b:?131<3j279;?4;b:?136<3j279;:4;b:?130<3j279;;4;b:?13g<3j279;54;b:?13d<3j279;n4;b:?13a<3j2794=4;b:?13`<3j279;k4;b:?1<6<3j2794<4;b:?1<7<3j2794:4;b:?1<0<3j2794;4;b:?1<=<3j279444;b:?1<f<3j2794l4;b:?1<g<3j2795=4;b:?1<a<3j2794h4;b:?1=6<3j2795<4;b:?1=7<3j279594;b:?1=0<3j279554;b:?1=3<3j2795:4;b:?1=f<3j279544;b:?1=g<3j2795k4;b:?1=a<3j2795h4;b:?f4?3?34nm6874}r3`5?6==r7:h54;5:?2g2<c027:n?4:8:?2f0<2i27:m;4:9:\7fp5fb=83>ow0?k8;f;?870>3?270:>9;7;?82603?370:94;7;?821;3?370:<a;7;?82413?370:;f;7;?823m3?370::8;7;?822?3?370::2;7;?82293?370::5;7;?822<3?370::b;7;?822i3?370::e;7;?822l3?370=ie;7;?85al3?370:91;7;?82183?370=ib;7;?85ai3?370:?1;7;?82783?370:?4;7;?827;3?370:?7;7;?827>3?370:?a;7;?82713?370:?d;7;?827k3?370:>0;7;?827n3?370:>c;7;?826j3?370:>3;7;?826:3?370:>6;7;?826=3?370:>f;7;?826m3?370:=2;7;?82593?370:=5;7;?825<3?370:=8;7;?825?3?370:=b;7;?825i3?370:=e;7;?825l3?370:<7;7;?824>3?370:<1;7;?82483?370:<4;7;?824;3?370:<d;7;?824k3?370:;0;7;?824n3?370:;3;7;?823:3?370:;6;7;?823=3?370:;9;7;?82303?370:;c;7;?823j3?370ji:4:89ac==016=lm55`9~w4e5290?w0?k9;66?87d03n370?m5;7;?87f?3?37p}>cd83>7?|58n26i64=054>0?<58:269;4=534>ag<5=<96io4=51;>ag<5=>o6io4=575>ag<5=?;6io4=570>ag<5=?26io4=57`>ag<5:lh6io4=57e>ag<5:l26io4=2de>ag<5=:96io4=526>ag<5=:36io4=52a>ag<5=:n6io4=53b>ag<5=;:6io4=537>ag<5=;o6io4=503>ag<5=886io4=505>ag<5=826io4=50`>ag<5=9>6io4=50e>ag<5=996io4=51a>ag<5=9n6io4=562>ag<5=>?6io4=564>ag<5=>j6io4=eg91==:9hn19o5rs0fg>5<4s4;oo7::;<3gf?2234;n>7j>;|q2`g<72>q6=il5d99>644==1168;;55`9>030==k168;955c9>03>==016=ik55`9~w7632909w0<?5;66?87am3n:7p}=0b83>7}::9<188521dd9`4=z{;:o6=4={<033?2234;m<7j>;|q14`<72;q6>=65449>5c7=l81v\7f?>i:181\7f84713>>70?i2;f2?xu5990;6?u221c900=::8;1h<5rs0g`>5<5s48;n7::;<3f`?b63ty:mk4?:3y>5f5=<<16=o75d09~w4d12909w0?l4;66?87ei3n:7p}>b683>7}:9j?188521c`9`4=z{8h?6=4={<3`<?2234;i97j>;|q2f=<72;q6=n85449>5ge=l81v\7f<l?:181\7f87d?3>>70?m2;f2?xu6l90;6?u216091==:9m:1h55rs004>5<2s4;<>7;6;<35`?2134;9h7j7;<3bf?3>34;j47;m;|q237<72:q6=:<5d09>53b=lh16=:655g9~w40c2908w0?9d;f2?871m3>;70?89;63?xu6?l0;6?u216:9`4=:91=19o5rs0f1>5<5s4;<?7;7;<3g6?b?3ty:>54?:4y>525==016=;k5479>57c=l116=lm5589>5d3==01v\7f<9<:180\7f870;3n:70?9e;fb?87013?m7p}>6d83>6}:9?o1h<5217d905=:9>k18=5rs04b>5<0s4;<57j>;<3;=?3>34;3o7;n;<3;a?3f34;2<7;6;<35f?3f34;=o7;6;|q2`1<72;q6=::5599>5a2=l11v\7f<<6:186\7f870<3?270?9f;65?875n3n370?nb;7;?87f03?27p}>7583>6}:9>>1h<5217d9`d=:9>k19k5rs04e>5<4s4;=j7j>;<344?2734;<n7:?;|q223<72?q6=:o5d09>5=e==016=5k5589>5<6==116=;l5589>53e==11v\7f<j9:181\7f870=3?370?k6;f;?xu6:h0;68u216791<=:9>:18;521229`==:9hn194521`591g=z{8=>6=4<{<341?b634;<<7jn;<34f?3a3ty:;=4?:2y>526=l816=:?5419>52e=<91v\7f<88:186\7f870j3n:70?7e;7a?87?n3?270?64;7;?871k3?j7p}>2c83>0}:9><19552163903=:9:;1h5521`a91==:9h<1955rs055>5<4s4;<:7j>;<345?bf34;<o7;i;|q234<72;q6=:?5d09>52b=<91v\7f<87:187\7f870k3n:70?7f;7b?87><3?270?62;7:?xu6:j0;69u216591==:9:81h5521`f91d=:9h=1945rs054>5<5s4;<;7j>;<34`?3a3ty::44?:2y>52b=l816=4:55`9>5<4==h1v\7f?:?:180\7f87a03?370?i3;65?84383n37p}j8;290~;6n10>563je;f;?87b<3?270?j1;7a?xu6n10;6>u21g:9`4=:9o91hl521gg91c=z{8l86=4<{<3e7?b634;m87:?;<3eb?273ty98?4?:2y>5c?==116=k:5479>614=l11v\7fh750;6x94`>2<301hh5d99>5`3==h16=ik5599~w4`>2908w0?i9;f2?87a<3nj70?if;7e?xu6n=0;6>u21g69`4=:9o?18=52212905=z{8oi6=49{<3eb?b634;m<7;7;<3e5?3?34;m>7;7;<3fa?3?34;nj7;8;|q101<72:q6=ko5599>5c3=<?16>9:5d99~w`g=83>p1<hn:4;89c6=l116=h:55c9>5`7==01v\7f<hn:180\7f87ai3n:70?i5;fb?84783?m7p}>f483>6}:9o?1h<521g4905=::9;18=5rs0g4>5<2s48;<7j>;<3e4?3>34;m=7;6;<3e6?3>34;ni7;6;|qff?6=<r7:jo4:8:?e5?b?34;n:7;m;<3f4?3e3ty98;4?:2y>5cd==016=k85479>610=l11v\7f<hm:180\7f87aj3n:70?i6;fb?84793?m7p}>f783>6}:9o<1h<521g5905=::9818=5rs0g;>5<2s48;=7j>;<3e5?3f34;m>7;n;<025?3?34;nh7;7;|q17a<720q6=km5599>5c1=<?16>995d99>a1<2027n?7;6;<651?3?34>=:7;n;<653?3?34>=47;n;|qfg?6=<r7:jn4:9:?e6?b?34;n97;6;<3gb?3f3ty:jn4?:2y>5ce=l816=k95d`9>654==o1v\7f<h8:181\7f87a?3n:70<?3;63?xu6m00;69u22109`4=:9o819o5220391<=:9ln1945rs31f>5<?s4;mh7;7;<37<?22348?47j7;<g0>0><5=<>6874=545>0><5=<<68o4=54;>0><uzoo6=4;{<3e`?3>34l86i64=0g5>0?<58o;6874}r3e`?6=:r7:ji4k1:?146<2n2wx=ho50;1x97642m;01??>:4c894cc2<k0q~?>b;291~;a;3>>70?=1;f;?8`22<301k95599>b<<2i2wxj94?:3y>b7<3=27m97j>;|qe2?6=:r7m=7::;<d4>a7<uzl36=4;{<d3>13<5o31h<52fc86=>;al3?j7p}ia;296~;bn3>>70hm:e38yv`d2909w0kj:5789cb=l81v\7f<;n:186\7f874:3>>70?90;f;?874<3?270?<6;7;?87403?j7p}>3283>7}:9:;188521269`4=z{89>6=4={<304?2234;8:7j>;|q272<72=q6=?h5449>56>=l816=>o5589>56e==h1v\7f<=6:181\7f875m3>>70?<a;f2?xu6;k0;6?u213f900=:9:i1h<5rs06f>5<5s4;=<7::;<360?b?3ty:8i4?:3y>50`=<<16=8=5d99~w43>290?w0?:f;f;?874<3?370?<6;7:?87403?i7p}>4b83>7}:9<o188521409`==z{8?36=4<{<36a?b?34;8:7;n;<30<?3?3ty:8o4?:3y>50b=<<16=8?5d99~w4302909w0?:d;f;?87403?27p}>4`83>7}:9<i188521429`==z{8?=6=4<{<36g?b?34;8m7;7;<30g?3>3ty:844?:3y>50d=<<16=9h5d99~w4322909w0?:b;f;?874k3?37p}>0g83>7}:9;;188521079`==z{8:n6=4={<314?2234;:87j7;|q25d<72=q6=?>5d99>b0<2027m;7;6;<d:>0d<uz;;h7>52z?25c<3=27:=>4k8:\7fp54?=839p1<?i:e:89c1==h16j44:8:\7fp55e=838p1<?j:57894752m20q~?>8;296~;69l0o463i9;7:?xu68k0;6?u210f900=:98;1h55rs034>5<4s4;:h7j7;<da>0><5on1945rs02b>5<5s4;:o7::;<324?b?3ty:=;4?:3y>54e=l116ji4:8:\7fp514=838p1<;;:578942?2m20q~?;1;296~;6=:0?963>468g<>{t9=:1<7<t=071>13<58>=6i64}r30b?6=:r7:9<4;5:?200<c02wx=>k50;0x94372=?01<:;:e:8yv74l3:1>v3>4g871>;6<:0o46s|11194?4|58;>69;4=02:>a><uz;;>7>52z?251<3=27:<54k8:\7fp557=838p1<?<:57894602m20q~??0;296~;69;0?963>078g<>{tno0;6?u2103900=:99?1h55rsgg94?4|58;;69;4=027>a><uz;9>7>52z?24=<3=27oi7j>;|q266<72;q6==95449>`c<c92wx=?:50;0x94612=?01h>5d09~w4422909w0??5;66?8c62m;0q~?=6;296~;68=0?963j2;f2?xu6>80;6?u2155900=:m:0o=6s|17094?4|58>=69;4=d69`4=z{8<86=4={<371?2234o>6i?4}r350?6=:r7:894;5:?f2?b63ty::84?:3y>515=<<16i:4k1:\7fp5<e=838p1<7m:57894?c2m;0q~?6b;29<~;61k0o463>9`86=>;6i80>m63>9e86e>;61?0>463>9486f>;61>0>563>8`86=>{t9031<7=t=0;;>13<58k969;4=0;b>a7<uz;247>58z?2==<c027:5l4:8:?2e4<2127:5i4:9:?2=3<2127:584:a:?2=2<2027:4l4:8:\7fp5d4=839p1<o=:e:894>02<k01<6n:4c8yv7f83:1?v3>9g871>;61l0?963>a08g5>{t90o1<7<t=0;f>a><58k:6864}r65e?6=9>q6>?l53d9>67g=;l16>?m53d9>67>=;l16>?953d9>67?=;l16>>;53d9>665=;l16>>:53d9>66>=;l16>>853d9>661=;l16>9653d9>611=;l16>9;53d9>615=;l16>9?53d9>66`=;l16><<5d09>614=;l16>9>53d9>612=;l16>9853d9~w7732909w0<=b;66?846m3n:7p}=2483>0}::;h1h552225900=::8o1955220d91d=:9ml1945rs33;>5<5s489m7::;<02`?b63ty9>94?:7y>67g=l116>>85449>64c==h16><h55c9>5`6==h16><j5599~w7722909w0<=c;66?846n3n:7p}=2783>1}::;i1h55222:900=::8l195521d291==z{;;=6=4={<01<?22348:m7j>;|q167<72>q6>?65d99>662=<<16><o5599>64d==016><j55`9>5ac==016><m5589~w7742909w0<=7;66?84613n:7p}=2083>=}::;=1h552221900=::8k1945220`91d=:9l;19l5220f91<=::8319:5220a91==z{;;<6=4={<01=?22348:n7j>;|q166<72?q6>?75d99>663=<<16><l5599>5`7==116><j55c9>64e==h1v\7f?<i:187\7f844=3n370<;3;66?87b<3?j70<;4;66?xu5:m0;69u22219`==:::l188521d691==::=:1885rs30f>5<3s48887j7;<075?2234;n97;m;<076?223ty9??4?:2y>66>=l116>965449>5`0==11v\7f?=?:187\7f844>3n370<;5;66?87b>3?j70<;6;66?xu5;80;6>u22259`==::==188521d791==z{;9h6=463z?100<c0279m84<8:?12a<40279o;4<8:?1f5<40279no4<8:?1a2<40279h<4<8:?1`f<40279;44<8:?1b7<40279:h4<8:?1=d<40279494<8:?1<c<40279m?4<8:?1e5<40279m<4<8:?1e3<40279m>4<8:?1e1<40279m:4<8:?1e=<40279mo4<8:?1e<<40279ml4<8:?1e`<40279mn4<8:?1ea<40279n?4<8:?1ec<40279n<4<8:?1f0<40279n>4<8:?1f1<40279n54<8:?1f3<40279n:4<8:?1ff<40279n44<8:?1fd<40279nk4<8:?1fa<40279nh4<8:?1g5<40279o<4<8:?1g1<40279o?4<8:?1g6<40279o54<8:?1g0<40279o:4<8:?1gg<40279o44<8:?1gd<40279oh4<8:?1gf<40279oi4<8:?1`7<40279ok4<8:?1`5<40279h84<8:?1`6<40279h94<8:?1`=<40279h;4<8:?1`2<40279h44<8:?1`d<40279hh4<8:?1`g<40279hi4<8:?1a4<40279hk4<8:?1a5<40279i94<8:?1a7<40279i>4<8:?1a0<40279i;4<8:?1ad<40279i54<8:?1a<<40279ii4<8:?1ag<40279in4<8:?1b5<40279ih4<8:?1ac<40279j<4<8:?1b6<40279j;4<8:?1b1<40279j84<8:?1b<<40279j:4<8:?1b=<40279jn4<8:?1bd<40279jo4<8:?134<40279:k4<8:?135<40279;94<8:?137<40279;>4<8:?132<40279;84<8:?133<40279;o4<8:?13=<40279;l4<8:?13f<40279;i4<8:?1<5<40279;h4<8:?13c<402794>4<8:?1<4<402794?4<8:?1<2<40279484<8:?1<3<40279454<8:?1<<<402794n4<8:?1<d<402794o4<8:?1=5<402794i4<8:?1<`<402795>4<8:?1=4<402795?4<8:?1=1<40279584<8:?1==<402795;4<8:?1=2<402795n4<8:?1=<<402795o4<8:?1=c<402795i4<8:?1=`<4027n97;7;<g7>0?<uz88n7>592y>615=l116>l;5369>63b=;>16>n85369>6g6=;>16>ol5369>6`1=;>16>i?5369>6ae=;>16>:75369>6c4=;>16>;k5369>6<g=;>16>5:5369>6=`=;>16>l<5369>6d6=;>16>l?5369>6d0=;>16>l=5369>6d2=;>16>l95369>6d>=;>16>ll5369>6d?=;>16>lo5369>6dc=;>16>lm5369>6db=;>16>o<5369>6d`=;>16>o?5369>6g3=;>16>o=5369>6g2=;>16>o65369>6g0=;>16>o95369>6ge=;>16>o75369>6gg=;>16>oh5369>6gb=;>16>ok5369>6f6=;>16>n?5369>6f2=;>16>n<5369>6f5=;>16>n65369>6f3=;>16>n95369>6fd=;>16>n75369>6fg=;>16>nk5369>6fe=;>16>nj5369>6a4=;>16>nh5369>6a6=;>16>i;5369>6a5=;>16>i:5369>6a>=;>16>i85369>6a1=;>16>i75369>6ag=;>16>ik5369>6ad=;>16>ij5369>6`7=;>16>ih5369>6`6=;>16>h:5369>6`4=;>16>h=5369>6`3=;>16>h85369>6`g=;>16>h65369>6`?=;>16>hj5369>6`d=;>16>hm5369>6c6=;>16>hk5369>6``=;>16>k?5369>6c5=;>16>k85369>6c2=;>16>k;5369>6c?=;>16>k95369>6c>=;>16>km5369>6cg=;>16>kl5369>627=;>16>;h5369>626=;>16>::5369>624=;>16>:=5369>621=;>16>:;5369>620=;>16>:l5369>62>=;>16>:o5369>62e=;>16>:j5369>6=6=;>16>:k5369>62`=;>16>5=5369>6=7=;>16>5<5369>6=1=;>16>5;5369>6=0=;>16>565369>6=?=;>16>5m5369>6=g=;>16>5l5369>6<6=;>16>5j5369>6=c=;>16>4=5369>6<7=;>16>4<5369>6<2=;>16>4;5369>6<>=;>16>485369>6<1=;>16>4m5369>6<?=;>16>4l5369>6<`=;>16>4j5369>6<c=;>16i;4:8:?f1?3>3ty9?l4?:81x97262m201?o::248970c2:<01?m9:24897d72:<01?lm:24897c02:<01?j>:24897bd2:<01?96:24897`52:<01?8j:24897?f2:<01?6;:24897>a2:<01?o=:24897g72:<01?o>:24897g12:<01?o<:24897g32:<01?o8:24897g?2:<01?om:24897g>2:<01?on:24897gb2:<01?ol:24897gc2:<01?l=:24897ga2:<01?l>:24897d22:<01?l<:24897d32:<01?l7:24897d12:<01?l8:24897dd2:<01?l6:24897df2:<01?li:24897dc2:<01?lj:24897e72:<01?m>:24897e32:<01?m=:24897e42:<01?m7:24897e22:<01?m8:24897ee2:<01?m6:24897ef2:<01?mj:24897ed2:<01?mk:24897b52:<01?mi:24897b72:<01?j::24897b42:<01?j;:24897b?2:<01?j9:24897b02:<01?j6:24897bf2:<01?jj:24897be2:<01?jk:24897c62:<01?ji:24897c72:<01?k;:24897c52:<01?k<:24897c22:<01?k9:24897cf2:<01?k7:24897c>2:<01?kk:24897ce2:<01?kl:24897`72:<01?kj:24897ca2:<01?h>:24897`42:<01?h9:24897`32:<01?h::24897`>2:<01?h8:24897`?2:<01?hl:24897`f2:<01?hm:24897162:<01?8i:24897172:<01?9;:24897152:<01?9<:24897102:<01?9::24897112:<01?9m:248971?2:<01?9n:248971d2:<01?9k:24897>72:<01?9j:248971a2:<01?6<:24897>62:<01?6=:24897>02:<01?6::24897>12:<01?67:24897>>2:<01?6l:24897>f2:<01?6m:24897?72:<01?6k:24897>b2:<01?7<:24897?62:<01?7=:24897?32:<01?7::24897??2:<01?79:24897?02:<01?7l:24897?>2:<01?7m:24897?a2:<01?7k:24897?b2:<01h95599>a3<212wx>>750;;1\7f844n3n370<n5;16?841l39>70<l6;16?84e839>70<mb;16?84b?39>70<k1;16?84ck39>70<89;16?84a:39>70<9e;16?84>i39>70<74;16?84?n39>70<n2;16?84f839>70<n1;16?84f>39>70<n3;16?84f<39>70<n7;16?84f039>70<nb;16?84f139>70<na;16?84fm39>70<nc;16?84fl39>70<m2;16?84fn39>70<m1;16?84e=39>70<m3;16?84e<39>70<m8;16?84e>39>70<m7;16?84ek39>70<m9;16?84ei39>70<mf;16?84el39>70<me;16?84d839>70<l1;16?84d<39>70<l2;16?84d;39>70<l8;16?84d=39>70<l7;16?84dj39>70<l9;16?84di39>70<le;16?84dk39>70<ld;16?84c:39>70<lf;16?84c839>70<k5;16?84c;39>70<k4;16?84c039>70<k6;16?84c?39>70<k9;16?84ci39>70<ke;16?84cj39>70<kd;16?84b939>70<kf;16?84b839>70<j4;16?84b:39>70<j3;16?84b=39>70<j6;16?84bi39>70<j8;16?84b139>70<jd;16?84bj39>70<jc;16?84a839>70<je;16?84bn39>70<i1;16?84a;39>70<i6;16?84a<39>70<i5;16?84a139>70<i7;16?84a039>70<ic;16?84ai39>70<ib;16?840939>70<9f;16?840839>70<84;16?840:39>70<83;16?840?39>70<85;16?840>39>70<8b;16?840039>70<8a;16?840k39>70<8d;16?84?839>70<8e;16?840n39>70<73;16?84?939>70<72;16?84??39>70<75;16?84?>39>70<78;16?84?139>70<7c;16?84?i39>70<7b;16?84>839>70<7d;16?84?m39>70<63;16?84>939>70<62;16?84><39>70<65;16?84>039>70<66;16?84>?39>70<6c;16?84>139>70<6b;16?84>n39>70<6d;16?84>m39>70k8:4;8yv5?l3:1>v3<d4871>;3>;0o=6s|3c394?4|5:n>6i64=36:>13<uz9247>52z?0`3<3=27?=:4k1:\7fp7ge=838p1>j9:e:8972f2=?0q~=n3;296~;4m80?963;398g5>{t;j=1<7<t=2g2>a><5;?>69;4}r1be?6=:r78in4;5:?70a<c92wx?nk50;0x96cd2m201?8?:578yv5fj3:1>v3<f2871>;3=90o=6s|3bd94?4|5:l86i64=344>13<uz9jo7>52z?0b1<3=27?9>4k1:\7fp7a6=838p1>h;:e:8970?2=?0q~=nd;296~;4n<0?963;578g5>{t;m;1<7<t=2d6>a><5;<269;4}r1ba?6=:r78j;4;5:?71<<c92wx?i<50;0x96`12m201?8n:578yv5fn3:1>v3<f6871>;3=j0o=6s|3e194?4|5:l<6i64=34a>13<uz9i<7>52z?0b=<3=27?9k4k1:\7fp7a2=838p1>h7:e:8970d2=?0q~=7e;296~;4l>0?963<f88g5>{t;k81<7<t=2f4>a><5;>i69;4}r1;b?6=:r78h54;5:?0bf<c92wx?o=50;0x96b?2m201?:l:578yv5>83:1>v3<d8871>;4no0o=6s|3c694?4|5:n26i64=36g>13<uz92=7>52z?0`d<3=27?<?4k1:\7fp7g3=838p1>jn:e:8972b2=?0q~=62;296~;4lk0?963;048g5>{t;k<1<7<t=2fa>a><5;>m69;4}r1:7?6=:r78hn4;5:?74=<c92wx?o950;0x96bd2m201?;?:578yv5><3:1>v3<de871>;38k0o=6s|3c:94?4|5:no6i64=372>13<uz9297>52z?0``<3=27?<h4k1:\7fp7g?=838p1>jj:e:897352=?0q~=66;296~;4lo0?963;108g5>{t;kk1<7<t=2fe>a><5;?869;4}r1:3?6=:r78i=4;5:?751<c92wx?ol50;0x96c72m201?;;:578yv5>13:1>v3<e3871>;39h0o=6s|3cf94?4|5:o96i64=375>13<uz92m7>52z?0a6<3=27?=i4k1:\7fp7gc=838p1>k<:e:897302=?0q~=6b;296~;4m=0?963;218g5>{t;kl1<7<t=2g7>a><5;?369;4}r1:g?6=:r78i84;5:?766<c92wx?n>50;0x96c22m201?;6:578yv5>l3:1>v3<e7871>;3:?0o=6s|3b394?4|5:o=6i64=37b>13<uz92i7>52z?0a2<3=27?>44k1:\7fp7f4=838p1>k8:e:8973e2=?0q~=6f;296~;4m10?963;2b8g5>{t;j91<7<t=2g;>a><5;?h69;4}r1b4?6=:r78i44;5:?76c<c92wx?n:50;0x96c>2m201?;k:578yv5f93:1>v3<e`871>;3;;0o=6s|3b794?4|5:oj6i64=37f>13<uz9j>7>52z?0ag<3=27??84k1:\7fp7f0=838p1>km:e:8973a2=?0q~=n4;296~;4mm0?963;3c8g5>{t;j21<7<t=2gg>a><5;<:69;4}r1b1?6=:r78ih4;5:?77`<c92wx?n750;0x96cb2m201?8=:578yv5f>3:1>v3<eg871>;3<80o=6s|3bc94?4|5:om6i64=340>13<uz9j;7>52z?0b5<3=27?894k1:\7fp7fd=838p1>h?:e:897032=?0q~=n8;296~;4n80?963;468g5>{t;ji1<7<t=2d2>a><5;<>69;4}r1b=?6=:r78j?4;5:?70d<c92wx?nj50;0x96`52m201?89:578yv21>3:1>8u22`790=2<5;n:696;;<05a?2?<2795l4;859>6d5=<1>01?o7:5:7?84fk3>3863=b087<1=::k?185:4=3`:>1>3348ii7:74:?1g7<30=16>n95496897ee2=2?70<lf;6;0>;5l=0?49522e:90=2<5;no696;;<0f5?2?<279i84;859>6`g=<1>01?kj:5:7?84a;3>3863=f687<1=::oh185:4=352>1>3348<97:74:?13d<30=16>:k5496897>52=2?70<77;6;0>;50k0?495228290=2<5;3?696;;<0:<?2?<2795i4;859>030=l81v\7f>68:181\7f84f=3><70:94;7b?xu3><0;6?;t=34g>1>3348h:7:74:?1b7<30=16>5h5496897g52=2?70<n7;6;0>;5ik0?49522`d90=2<5;h?696;;<0a<?2?<279ni4;859>6f7=<1>01?m::5:7?84di3>3863=cd87<1=::m9185:4=3f4>1>3348on7:74:?1a5<30=16>h:5496897c>2=2?70<jd;6;0>;5n80?49522g490=2<5;lj696;;<044?2?<279;94;859>62>=<1>01?9k:5:7?84?93>3863=8787<1=::1k185:4=3:f>1>33482?7:74:?1=2<30=16>4m5496891022m;0q~=8c;296~;5>m0?;63;6586=>{t;821<7<t=3a5>11<5=;26874}r653?6=:<q6>o>5496897bd2=2?70<89;6;0>;5i90?49522`690=2<5;k2696;;<0b`?2?<279n?4;859>6g0=<1>01?ln:5:7?84en3>3863=c287<1=::j2185:4=3a`>1>3348o<7:74:?1`0<30=16>i75496897bb2=2?70<j2;6;0>;5m?0?49522d`90=2<5;om696;;<0e0?2?<279j54;859>6ce=<1>01?9=:5:7?840>3>3863=7c87<1=::>l185:4=3:0>1>3348347:74:?1<f<30=16>4?5496897?22=2?70<69;6;0>;51l0?49524759`4=z{::96=4={<0a4?2034>=?7;6;|q72=<72;?p1?lm:5:7?84b?3>3863=8587<1=::h;185:4=3c5>1>3348jm7:74:?1e`<30=16>o=5496897d02=2?70<mc;6;0>;5k90?49522b690=2<5;i2696;;<0``?2?<279h?4;859>6a0=<1>01?jn:5:7?84cn3>3863=e287<1=::l2185:4=3g`>1>3348m<7:74:?1b0<30=16>k754968970a2=2?70<83;6;0>;5?>0?495226a90=2<5;2;696;;<0;1?2?<279444;859>6=b=<1>01?7=:5:7?84>>3>3863=9c87<1=::0l185:4=54;>a7<uz9;h7>52z?1fg<3?27?:>4:a:\7fp76?=838p1?k8:558917?2<k0q~==3;296~;5l80?;63;1886e>{t;;o1<7<t=3f`>11<5=;36874}r16e?6=:r79;44;7:?77<<212wx?9:50;0x97`52==019=n:4;8yv53n3:1>v3=6d873>;3;h0>m6s|37;94?4|5;3j6994=56e>0g<uz9=97>52z?1<1<3?27??44:a:\7fp73>=838p1?6i:558912a2<30q~=9c;296~;5i;0?;63;5386=>{t;?k1<7<t=3c3>11<5=>n6874}r15f?6=:r79m<4;7:?70`<2i2wx?;h50;0x97g12==019;>:4c8yv51l3:1>v3=a2873>;3=;0>m6s|37g94?4|5;k?6994=572>0?<uz9<<7>52z?1e2<3?27?984:9:\7fp727=838p1?o7:55891322<k0q~=84;296~;5ik0?;63;5986=>{t;>81<7<t=3c:>11<5=??6874}r147?6=:r79ml4;7:?711<2i2wx?:950;0x97gb2==019;8:4c8yv50=3:1>v3=ab873>;3=10>m6s|36494?4|5;ko6994=574>0?<uz9<m7>52z?1f7<3?27?9l4:9:\7fp72>=838p1?oi:558913e2<30q~=89;296~;5j80?;63;5c86e>{t;>o1<7<t=3`6>11<5=?n68o4}r14f?6=:r79n>4;7:?71d<2i2wx?:j50;0x97d32==019;j:4;8yv5?93:1>v3=b9873>;3>80>56s|36d94?4|5;h=6994=57g>0?<uz93<7>52z?1f2<3?27?9i4:a:\7fp7=2=838p1?ll:55891072<k0q~=72;296~;5j00?;63;6086e>{t;191<7<t=3`b>11<5=<;6874}r1;<?6=:r79nk4;7:?0bd<212wx?5;50;0x97dc2==01>hm:4;8yv5?>3:1>v3=bd873>;4nk0>m6s|39;94?4|5;i;6994=2db>0g<uz93m7>52z?1g4<3?278jh4:9:\7fp6cb=838p1?m;:55896`c2<k0q~=7b;296~;5k;0?;63<fd86e>{t;1i1<7<t=3a0>11<5:lo6874}r134?6=:r79o54;7:?745<212wx>kk50;0x97e22==019>>:4;8yv4an3:1>v3=c6873>;3880>m6s|31694?4|5;ii6994=527>0g<uz9;=7>52z?1g<<3?27?<=4:a:\7fp755=838p1?mn:55891632<30q~=?7;296~;5kl0?;63;0686=>{t;9?1<7<t=3a`>11<5=:86874}r132?6=:r79oi4;7:?746<2i2wx?=o50;0x97b52==019>9:4c8yv5703:1>v3=cg873>;38>0>m6s|31;94?4|5;n;6994=525>0?<uz9;i7>52z?1`0<3?27?<44:9:\7fp75d=838p1?j<:558916f2<30q~=?c;296~;5l=0?;63;0`86e>{t;8;1<7<t=3f;>11<5=:o68o4}r13b?6=:r79h;4;7:?74<<2i2wx?<>50;0x97b02==019>k:4;8yv56:3:1>v3=d8873>;38j0>56s|30194?4|5;nj6994=52`>0g<uz9::7>52z?1``<3?27?<k4:9:\7fp742=838p1?jm:55891772<30q~=>5;296~;5lm0?;63;1186e>{t;8k1<7<t=3g2>11<5=;868o4}r123?6=:r79hk4;7:?74c<2i2wx?<750;0x97c72==019?<:4;8yv56l3:1>v3=e5873>;39?0>56s|30`94?4|5;o96994=531>0?<uz9:o7>52z?1a6<3?27?=?4:a:\7fp74c=838p1?k::55891712<k0q~=>f;296~;5m?0?;63;1486=>{t;;81<7<t=3gb>11<5=;h68o4}r114?6=:r79i54;7:?750<2i2wx???50;0x97c>2==019?l:4;8yv55>3:1>v3=ee873>;39o0>56s|33694?4|5;oi6994=53a>0?<uz9997>52z?1af<3?27?=o4:a:\7fp77?=838p1?h?:558917b2<k0q~==7;296~;5ml0?;63;1g86e>{t;;21<7<t=3ge>11<5=;n6874}r11e?6=:r79j<4;7:?767<212wx??l50;0x97`42==019<=:4c8yv55n3:1>v3=f7873>;3:<0>56s|33a94?4|5;l?6994=502>0?<uz99h7>52z?1b0<3?27?><4:a:\7fp764=838p1?h6:55891432<k0q~=<0;296~;5n>0?;63;2486e>{t;:;1<7<t=3d;>11<5=8?6874}r101?6=:r79jn4;7:?762<212wx?>=50;0x97`f2==019<7:4;8yv54<3:1>v3=fc873>;3:10>m6s|32:94?4|5;=:6994=50a>0g<uz98:7>52z?12c<3?27?>:4:a:\7fp761=838p1?9?:558914e2<30q~=<c;296~;5?=0?;63;2d86=>{t;:k1<7<t=351>11<5=8j6874}r10f?6=:r79;>4;7:?76d<2i2wx?>h50;0x97102==019<k:4c8yv54l3:1>v3=74873>;3:l0>m6s|32g94?4|5;==6994=50g>0?<uz9?>7>52z?13g<3?27??=4:9:\7fp716=838p1?97:55891562<30q~=;1;296~;5?h0?;63;3086e>{t;=91<7<t=35`>11<5=9;68o4}r171?6=:r79;i4;7:?771<212wx?9650;0x97>72==019=<:4c8yv53>3:1>v3=7d873>;3;=0>m6s|35594?4|5;=m6994=510>0?<uz9?n7>52z?1<6<3?27??;4:9:\7fp71?=838p1?6>:55891502<30q~=;a;296~;50;0?;63;3686e>{t;=o1<7<t=3:4>11<5=9o68o4}r17g?6=:r79484;7:?773<2i2wx?9j50;0x97>12==019=k:4;8yv5283:1>v3=89873>;3;j0>56s|34394?4|5;226994=51`>0g<uz9>87>52z?1<f<3?27??k4:9:\7fp704=838p1?6n:55891272<30q~=:3;296~;50k0?;63;4186e>{t;<=1<7<t=3;3>11<5=>868o4}r161?6=:r794i4;7:?77c<2i2wx?8850;0x97>b2==019:<:4;8yv52j3:1>v3=92873>;3<?0>56s|34:94?4|5;3:6994=561>0?<uz9>57>52z?1=7<3?27?8?4:a:\7fp70e=838p1?7;:55891212<k0q~=:d;296~;51<0?;63;4486=>{t;?:1<7<t=3;;>11<5=>268o4}r16a?6=:r795;4;7:?700<2i2wx?8h50;0x97?02==019:6:4;8yv51;3:1>v3=9b873>;3<j0>56s|37394?4|5;326994=56;>0?<uz9=>7>52z?1=g<3?27?854:a:\7fp731=838p1?7i:558912e2<k0q~=94;296~;51m0?;63;4b86e>{t;?<1<7<t=3;f>11<5=>i6874}r62=?6=:r7?=:4:8:?75<<c92wx8<650;0x91702<3019?7:e38yv21<3:1>v3;6386<>;3>=0o=6s|47194?4|5=<96874=540>a7<uz>8m7>52z?77=<2027??l4k1:\7fp06?=838p19=7:4;8915>2m;0q~:;f;296~;3<m0>463;4g8g5>{t<=o1<7<t=56g>0?<5=>n6i?4}r66<?6=:r7?9;4:8:?71=<c92wx88950;0x91312<3019;8:e38yv22:3:1>v3;5186<>;3=;0o=6s|44394?4|5=?;6874=572>a7<uz>>97>52z?716<2027?984k1:\7fp002=838p19;<:4;891332m;0q~::b;296~;3=00>463;5c8g5>{t<<k1<7<t=57:>0?<5=?j6i?4}r66a?6=:r7?9n4:8:?71`<c92wx88j50;0x913d2<3019;k:e38yv5am3:1>v3<fb86<>;4nl0o=6s|3gf94?4|5:lh6874=2dg>a7<uz>==7>52z?71c<2027?:<4k1:\7fp036=838p19;i:4;891072m;0q~=ib;296~;4n00>463<fc8g5>{t;ok1<7<t=2d:>0?<5:lj6i?4}r635?6=:r78jk4:8:?744<c92wx8=>50;0x96`a2<3019>?:e38yv27<3:1>v3;0386<>;38=0o=6s|41194?4|5=:96874=520>a7<uz>;;7>52z?740<2027?<:4k1:\7fp050=838p19>::4;891612m;0q~:?a;296~;3810>463;0`8g5>{t<931<7<t=52;>0?<5=:26i?4}r63`?6=:r7?<o4:8:?74a<c92wx8=m50;0x916e2<3019>l:e38yv2683:1>v3;0d86<>;3990o=6s|41d94?4|5=:n6874=52e>a7<uz>:o7>52z?75d<2027?=n4k1:\7fp04d=838p19?n:4;8917e2m;0q~:>3;296~;3980>463;128g5>{t<881<7<t=532>0?<5=;96i?4}r622?6=:r7?=94:8:?753<c92wx8<;50;0x91732<3019?::e38yv26n3:1>v3;1e86<>;39o0o=6s|40g94?4|5=;o6874=53f>a7<uz>9>7>52z?765<2027?>?4k1:\7fp077=838p19<?:4;891462m;0q~:=5;296~;3::0>463;248g5>{t<;>1<7<t=500>0?<5=8?6i?4}r61<?6=:r7?>;4:8:?76=<c92wx8?950;0x91412<3019<8:e38yv25j3:1>v3;2886<>;3:k0o=6s|43c94?4|5=826874=50b>a7<uz>9i7>52z?76f<2027?>h4k1:\7fp07b=838p19<l:4;8914c2m;0q~:<7;296~;3;<0>463;368g5>{t<:<1<7<t=516>0?<5=9=6i?4}r605?6=:r7?>k4:8:?774<c92wx8>>50;0x914a2<3019=?:e38yv24<3:1>v3;3386<>;3;=0o=6s|42194?4|5=996874=510>a7<uz>8h7>52z?77g<2027??i4k1:\7fp06e=838p19=m:4;8915d2m;0q~:;0;296~;3;l0>463;418g5>{t<:l1<7<t=51f>0?<5=9m6i?4}r677?6=:r7?8<4:8:?706<c92wx89<50;0x91262<3019:=:e38yv23>3:1>v3;4586<>;3<?0o=6s|45794?4|5=>?6874=566>a7<uz>?57>52z?702<2027?844k1:\7fp01>=838p19:8:4;8912?2m;0q~:;c;296~;3<h0>463;4b8g5>{t<=h1<7<t=56b>0?<5=>i6i?4}r65=?6=:<q6>;853d9>633=;l16>;:53d9>635=;l16>;<53d9>637=;l16>8h53d9>60c=;l16>8j53d9>60e=;l16>8l53d9>60g=;l16>8753d9>60>=;l16>8953d9>600=;l16>8:53d9>605=;l16>8<53d9>607=;l16>8>53d9>61`=;l16>9k53d9>61b=;l16>9m53d9>61d=;l16>;m53d9>63d=;l16>;o53d9>63?=;l16>;653d9>631=;l16>;>53d9>603=;l16>9o53d9>61?=;l16=485d09~wd1=838p1<l=:4;894d62?:0q~?m3;296~;6j<0>563>b08g5>{ti?0;6?u220g91<=::8i1:=5rs303>5<5s48:j7;6;<02g?b63ty:mh4?:3y>5=1==116=495619~w4c32909w0?j4;f2?87b;3?j7p}>e483>7}:9l?1h<521d191<=z{8o=6=4={<3f2?b634;n?7;7;|q2a5<72;q6=h>5d09>5`4==11v\7f<k>:181\7f87b93n:70?j2;7:?xu6ik0;6?u21``9`4=:9hk19l5rs0c`>5<5s4;jo7j>;<3be?3>3ty:h:4?:3y>5db==116=i95d99~w4gc2909w0?nd;f2?87fi3?37p}>a483>7}:9h?1h<521`491d=z{8k<6=4={<3b3?b634;j57;7;|q2e=<72;q6=l65d09>5d?==01v\7fll50;4x94>>2<201<6l:4:894>b2<201<6i:4:894?52<201<6n:e38yv0a2909w0?60;f2?87?n3?i7p}na;297~;6ml0o=63=1086f>;6mm0>n6s|a983>7}:9?h1955219c925=z{j;1<7<t=04a>a7<583?68l4}ra6>5<5s4;=o7j>;<3:6?3e3ty:m;4?:3y>5d0=l816=l755`9~w4bb2909w0?j2;7b?87cm3n:7p}81;296~;6m;0>n63>e2854>{t0>0;6?u21`;91g=:9hk1:=5rs8;94?4|58nn68l4=0fe>36<uty?hk4?:3y]0gd<5:k18ol4$55e>f7<uz>oh7>52z\7fd=:;h0?nl5+46d9g7=z{=nh6=4={_6a=>;4i3>i56*;7g8`1>{t<mh1<7<t^5`;?85f2=h37):8f;a:?xu3lh0;6?uQ4c5896g=<k=0(99i:638yv2c13:1>vP;b79>7d<3j?1/8:h57b9~w1b02909wS:m4:?0e?2e<2.?;k477:\7fp0a0=838pR9l<;<1b>1d43-><j77=;|q7`0<72;qU8o<4=2c90g4<,==m6474}r6g0?6=:rT?n<523`87f4=#<>l1m?5rs5f0>5<5sW>i<63<a;6a4>"3?o0j:6s|4e094?4|V=km70=n:5ce?!20n3k<7p};d083>7}Y<ho01>o54`g8 11a2h20q~:k0;296~X3im16?l4;ae9'02`=i01v\7f9mi:181\7f[2fk278m7:nc:&73c<fj2wx8nk50;0xZ1ge349j69om;%64b?gd3ty?on4?:3y]0d?<5:k18l74$55e>db<uz>hn7>52z\7e==:;h0?m55+46d9e`=z{=ij6=4={_6b3>;4i3>j;6*;7g8bb>{t<j31<7<t^5c5?85f2=k=7):8f;`3?xu3k10;6?uQ4`7896g=<h?0(99i:c38yv2d?3:1>vP;a59>7d<3i=1/8:h5b39~w1e12909wS:n3:?0e?2f;2.?;k4m3:\7fp0f3=838pR9o=;<1b>1g53-><j7l;;|q7g1<72;qU8l?4=2c90d7<,==m6o;4}r6`7?6=:rT?m=523`87e5=#<>l1n;5rs5g5>5<5sW>h=63<a;6`5>"3?o0i;6s|4d794?4|V=i;70=n:5a3?!20n3h37p};e583>7}Y<kl01>o54cd8 11a2k30q~:j3;296~X3jl16?l4;bd9'02`=jh1v\7f9k=:181\7f[2el278m7:md:&73c<ej2wx8h?50;0xZ1dd349j69ll;%64b?dd3ty?i=4?:3y]0g3<5:k18o;4$55e>gb<uz>o47>52z\7ed=:;h0?ml5+46d9f`=z{=io6=4={_6:b>;4i3>2j6*;7g8ab>{t<j81<7<t^5;f?85f2=3n7):8f;a3?xu2>>0;6?uQ575896g==?=0(99i:b18yv30?3:1>vP:769>7d<2?>1/8:h5c59~w01>2909wS;89:?0e?3012.?;k4l6:\7fp1=6=838pR86?;<1b>0>73-><j7m8;|q6=5<72;qU94>4=2c91<6<,==m6n64}r71<?6=:rT><9523`8641=#<>l1ol5rs405>5<5sW?;?63<a;737>"3?o0hn6s|53794?4|V<:970=n:421?!20n3ih7p}:2583>7}Y=9;01>o55138 11a2jn0q~;=3;296~X28916?l4:019'02`=kl1v\7f8<=:181\7f[2an278m7:if:&73c<0:2wx9?>50;0xZ1`c349j69hk;%64b?143ty>=k4?:3y]0ce<5:k18km4$55e>22<uz?:i7>52z\7bg=:;h0?jo5+46d930=z{<;o6=4={_6ee>;4i3>mm6*;7g842>{t=8i1<7<t^5d:?85f2=l27):8f;54?xu29k0;6?uQ4g:896g=<o20(99i:6:8yv36i3:1>vP;f69>7d<3n>1/8:h5789~w07>2909wS:i6:?0e?2a>2.?;k48a:\7fp14>=838pR9h:;<1b>1`23-><j79m;|q652<72;qU8k:4=2c90c2<,==m6:j4}r721?6=:rT?j?523`87b7=#<>l1;h5rs437>5<5sW>m=63<a;6e5>"3?o0<j6s|50194?4|V=l;70=n:5d3?!20n32;7p}:1383>7}Y<ll01>o54dd8 11a21;0q~;>1;296~X3ml16?l4;ed9'02`=0;1v\7f8??:181\7f[2bl278m7:jd:&73c<?;2wx9=h50;0xZ1cd349j69kl;%64b?>33ty><h4?:3y]0`d<5:k18hl4$55e>=3<uz?;h7>52z\7ad=:;h0?il5+46d9<3=z{<:h6=4={_6f=>;4i3>n56*;7g8;<>{t=;l1<7<t^42b?85f2<:j7):8f;::?xu2:l0;6?uQ51;896g==930(99i:9c8yv35l3:1>vP:099>7d<2811/8:h58c9~w04d2909wS;?7:?0e?37?2.?;k47c:\7fp17d=838pR8>9;<1b>0613-><j76k;|q66d<72;qU9=;4=2c9153<,==m65k4}r71=?6=:rT?jh523`87b`=#<>l14k5rs402>5<5sW>m?63<a;6e7>"3?o02<6s|50494?4|V=o370=n:5g;?!20n33:7p}:0c83>7}Y<l=01>o54d58 11a2090q~;<1;296~X2;816?l4:309'02`=1=1v\7f8=8:181\7f[34?278m7;<7:&73c<>=2wx9:850;0xZ00b349j688j;%64b??13ty>;94?:3y]13b<5:k19;j4$55e><1<uz?<?7>52z\62f=:;h0>:n5+46d9===z{<=96=4={_75f>;4i3?=n6*;7g8:e>{t=>;1<7<t^44b?85f2<<j7):8f;;a?xu2?90;6?uQ57;896g==?30(99i:8a8yv31n3:1>vP:699>7d<2>11/8:h59e9~w0>a2909wS;77:?0e?3??2.?;k46e:\7fp1=b=838pR869;<1b>0>13-><j77i;|q6<f<72;qU95;4=2c91=3<,==m6l>4}r7;f?6=:rT>49523`86<1=#<>l1m<5rs4:b>5<5sW?3?63<a;7;7>"3?o0j?6s|59;94?4|V<2970=n:4:1?!20n3k?7p}:8983>7}Y=1;01>o55938 11a2h?0qp`>3e394?4|@=2;7p`>3e094?4|@=2;7p`>3e194?4|@=2;7p`>3e694?4|@=2;7p`>3e794?4|@=2;7p`>3e494?4|@=2;7p`>3e594?4|@=2;7p`>3e:94?4|@=2;7p`>3e;94?4|@=2;7p`>3ec94?4|@=2;7p`>3e`94?4|@=2;7p`>3ea94?4|@=2;7p`>3ef94?4|@=2;7p`>3eg94?4|@=2;7p`>3ed94?4|@=2;7p`>3d294?4|@=2;7p`>3d394?4|@=2;7p`>3d094?4|@=2;7p`>3d194?4|@=2;7p`>3d694?4|@=2;7p`>3d794?4|@=2;7p`>3d494?4|@=2;7p`>3d594?4|@=2;7p`>3d:94?4|@=2;7p`>3d;94?4|@=2;7p`>3dc94?4|@=2;7p`>3d`94?4|@=2;7p`>3da94?4|@=2;7p`>3df94?4|@=2;7p`>3dg94?4|@=2;7p`>3dd94?4|@=2;7p`>3g294?4|@=2;7p`>3g394?4|@=2;7p`>3g094?4|@=2;7p`>3g194?4|@=2;7p`>3g694?4|@=2;7p`>3g794?4|@=2;7p`>3g494?4|@=2;7p`>3g594?4|@=2;7p`>3g:94?4|@=2;7p`>3g;94?4|@=2;7p`>3gc94?4|@=2;7p`>3g`94?4|@=2;7p`>3ga94?4|@=2;7p`>3gf94?4|@=2;7p`>3gg94?4|@=2;7p`>3gd94?4|@=2;7p`>41294?4|@=2;7p`>41394?4|@=2;7p`>41094?4|@=2;7p`>41194?4|@=2;7p`>41694?4|@=2;7p`>41794?4|@=2;7p`>41494?4|@=2;7p`>41594?4|@=2;7p`>41:94?4|@=2;7p`>41;94?4|@=2;7p`>41c94?4|@=2;7p`>41`94?4|@=2;7p`>41a94?4|@=2;7p`>41f94?4|@=2;7p`>41g94?4|@=2;7p`>41d94?4|@=2;7p`>40294?4|@=2;7p`>40394?4|@=2;7p`>40094?4|@=2;7p`>40194?4|@=2;7p`>40694?4|@=2;7p`>40794?4|@=2;7p`>40494?4|@=2;7p`>40594?4|@=2;7p`>40:94?4|@=2;7p`>40;94?4|@=2;7p`>40c94?4|@=2;7p`>40`94?4|@=2;7p`>40a94?4|@=2;7p`>40f94?4|@=2;7p`>40g94?4|@=2;7p`>40d94?4|@=2;7p`>43294?4|@=2;7p`>43394?4|@=2;7p`>43094?4|@=2;7p`>43194?4|@=2;7p`>43694?4|@=2;7p`>43794?4|@=2;7p`>43494?4|@=2;7p`>43594?4|@=2;7p`>43:94?4|@=2;7p`>43;94?4|@=2;7p`>43c94?4|@=2;7p`>43`94?4|@=2;7p`>43a94?4|@=2;7p`>43f94?4|@=2;7p`>16194?7|@=2;7p`>1e294?7|@=2;7p`>1e394?7|@=2;7p`>1e094?7|@=2;7p`>1e194?7|@=2;7p`>1e694?7|@=2;7p`>1e794?7|@=2;7p`>1e494?7|@=2;7p`>1e594?7|@=2;7p`>1e:94?7|@=2;7p`>1e;94?7|@=2;7p`>1ec94?7|@=2;7p`>1e`94?7|@=2;7p`>1ea94?7|@=2;7p`>1ef94?7|@=2;7p`>1eg94?7|@=2;7p`>1ed94?7|@=2;7p`>1d294?7|@=2;7p`>1d394?7|@=2;7p`>1d094?7|@=2;7p`>1d194?7|@=2;7p`>1d694?7|@=2;7p`>1d794?7|@=2;7p`>1d494?7|@=2;7p`>1d594?7|@=2;7p`>1d:94?7|@=2;7p`>1d;94?7|@=2;7p`>1dc94?7|@=2;7p`>1d`94?7|@=2;7p`>1da94?7|@=2;7p`>1df94?7|@=2;7p`>1dg94?7|@=2;7p`>1dd94?7|@=2;7p`>1g294?7|@=2;7p`>1g394?7|@=2;7p`>1g094?7|@=2;7p`>1g194?7|@=2;7p`>1g694?7|@=2;7p`>1g794?7|@=2;7p`>1g494?7|@=2;7p`>1g594?7|@=2;7p`>1g:94?7|@=2;7p`>1g;94?7|@=2;7p`>1gc94?7|@=2;7p`>1g`94?7|@=2;7p`>1ga94?7|@=2;7p`>1gf94?7|@=2;7p`>1gg94?7|@=2;7p`>1gd94?7|@=2;7p`>21294?7|@=2;7p`>21394?7|@=2;7p`>21094?7|@=2;7p`>21194?7|@=2;7p`>21694?7|@=2;7p`>21794?7|@=2;7p`>21494?7|@=2;7p`>21594?7|@=2;7p`>21:94?7|@=2;7p`>21;94?7|@=2;7p`>21c94?7|@=2;7p`>21`94?7|@=2;7p`>21a94?7|@=2;7p`>21f94?7|@=2;7p`>21g94?7|@=2;7p`>21d94?7|@=2;7p`>20294?7|@=2;7p`>20394?7|@=2;7p`>20094?7|@=2;7p`>20194?7|@=2;7p`>20694?7|@=2;7p`>20794?7|@=2;7p`>20494?7|@=2;7p`>20594?7|@=2;7p`>20:94?7|@=2;7p`>20;94?7|@=2;7p`>20c94?7|@=2;7p`>20`94?7|@=2;7p`>20a94?7|@=2;7p`>20f94?7|@=2;7p`>20g94?7|@=2;7p`>20d94?7|@=2;7p`>23294?7|@=2;7p`>23394?7|@=2;7p`>23094?7|@=2;7p`>23194?7|@=2;7p`>23694?7|@=2;7p`>23794?7|@=2;7p`>23494?7|@=2;7p`>23594?7|@=2;7p`>23:94?7|@=2;7p`>23;94?7|@=2;7p`>23c94?7|@=2;7p`>23`94?7|@=2;7p`>23a94?7|@=2;7p`>23f94?7|@=2;7p`>23g94?7|@=2;7p`>23d94?7|@=2;7p`>22294?7|@=2;7p`>22394?7|@=2;7p`>22094?7|@=2;7p`>22194?7|@=2;7p`>22694?7|@=2;7p`>22794?7|@=2;7p`>22494?7|@=2;7p`>22594?7|@=2;7p`>22:94?7|@=2;7p`>22;94?7|@=2;7p`>22c94?7|@=2;7p`>22`94?7|@=2;7p`>22a94?7|@=2;7p`>22f94?7|@=2;7p`>22g94?7|@=2;7p`>22d94?7|@=2;7p`>25294?7|@=2;7p`>25394?7|@=2;7p`>25094?7|@=2;7p`>25194?7|@=2;7p`>25694?7|@=2;7p`>25794?7|@=2;7p`>25494?7|@=2;7p`>25594?7|@=2;7p`>25:94?7|@=2;7p`>25;94?7|@=2;7p`>25c94?7|@=2;7p`>25`94?7|@=2;7p`>25a94?7|@=2;7p`>25f94?7|@=2;7p`>25g94?7|@=2;7p`>25d94?7|@=2;7p`>24294?7|@=2;7p`>24394?7|@=2;7p`>24094?7|@=2;7p`>24194?7|@=2;7p`>24694?7|@=2;7p`>24794?7|@=2;7p`>24494?7|@=2;7p`>24594?7|@=2;7p`>24:94?7|@=2;7p`>24;94?7|@=2;7p`>24c94?7|@=2;7p`>24`94?7|@=2;7p`>24a94?7|@=2;7p`>24f94?7|@=2;7p`>24g94?7|@=2;7p`>24d94?7|@=2;7p`>27294?7|@=2;7p`>27394?7|@=2;7p`>27094?7|@=2;7p`>27194?7|@=2;7p`>27694?7|@=2;7p`>27794?7|@=2;7p`>27494?7|@=2;7p`>27594?7|@=2;7p`>27:94?7|@=2;7p`>27;94?7|@=2;7p`>27c94?7|@=2;7p`>27`94?7|@=2;7p`>27a94?7|@=2;7p`>27f94?7|@=2;7p`>27g94?7|@=2;7p`>27d94?7|@=2;7p`>26294?7|@=2;7p`>26394?7|@=2;7p`>26094?7|@=2;7p`>26194?7|@=2;7p`>26694?7|@=2;7p`>26794?7|@=2;7p`>26494?7|@=2;7p`>26594?7|@=2;7p`>26:94?7|@=2;7p`>26;94?7|@=2;7p`>26c94?7|@=2;7p`>26`94?7|@=2;7p`>26a94?7|@=2;7p`>26f94?7|@=2;7p`>26g94?7|@=2;7p`>26d94?7|@=2;7p`>29294?7|@=2;7p`>29394?7|@=2;7p`>29094?7|@=2;7p`>29194?7|@=2;7p`>29694?7|@=2;7p`>29794?7|@=2;7p`>29494?7|@=2;7p`>29594?7|@=2;7p`>29:94?7|@=2;7p`>29;94?7|@=2;7p`>29c94?7|@=2;7p`>29`94?7|@=2;7p`>29a94?7|@=2;7p`>29f94?7|@=2;7p`>29g94?7|@=2;7p`>29d94?7|@=2;7p`>28294?7|@=2;7p`>28394?7|@=2;7p`>28094?7|@=2;7p`>28194?7|@=2;7p`>28694?7|@=2;7p`>28794?7|@=2;7p`>28494?7|@=2;7p`>28594?7|@=2;7p`>28:94?7|@=2;7p`>28;94?7|@=2;7p`>28c94?7|@=2;7p`>28`94?7|@=2;7p`>28a94?7|@=2;7p`>28f94?7|@=2;7p`>28g94?7|@=2;7p`>28d94?7|@=2;7p`>2`294?7|@=2;7p`>2`394?7|@=2;7p`>2`094?7|@=2;7p`>2`194?7|@=2;7p`>2`694?7|@=2;7p`>2`794?7|@=2;7p`>2`494?7|@=2;7p`>2`594?7|@=2;7p`>2`:94?7|@=2;7p`>2`;94?7|@=2;7p`>2`c94?7|@=2;7p`>2``94?7|@=2;7p`>2`a94?7|@=2;7p`>2`f94?7|@=2;7p`>2`g94?7|@=2;7p`>2`d94?7|@=2;7p`>2c294?7|@=2;7p`>2c394?7|@=2;7p`>2c094?7|@=2;7p`>2c194?7|@=2;7p`>2c694?7|@=2;7p`>2c794?7|@=2;7p`>2c494?7|@=2;7p`>2c594?7|@=2;7p`>2c:94?7|@=2;7p`>2c;94?7|@=2;7p`>2cc94?7|@=2;7p`>2c`94?7|@=2;7p`>2ca94?7|@=2;7p`>2cf94?7|@=2;7p`>2cg94?7|@=2;7p`>2cd94?7|@=2;7p`>2b294?7|@=2;7p`>2b394?7|@=2;7p`>2b094?7|@=2;7p`>2b194?7|@=2;7p`>2b694?7|@=2;7p`>2b794?7|@=2;7p`>2b494?7|@=2;7p`>2b594?7|@=2;7p`>2b:94?7|@=2;7p`>2b;94?7|@=2;7p`>2bc94?7|@=2;7p`>2b`94?7|@=2;7p`>2ba94?7|@=2;7p`>2bf94?7|@=2;7p`>2bg94?7|@=2;7p`>2bd94?7|@=2;7p`>2e294?7|@=2;7p`>2e394?7|@=2;7p`>2e094?7|@=2;7p`>2e194?7|@=2;7p`>2e694?7|@=2;7p`>2e794?7|@=2;7p`>2e494?7|@=2;7p`>2e594?7|@=2;7p`>2e:94?7|@=2;7p`>2e;94?7|@=2;7p`>2ec94?7|@=2;7p`>2e`94?7|@=2;7p`>2ea94?7|@=2;7p`>2ef94?7|@=2;7p`>2eg94?7|@=2;7p`>2ed94?7|@=2;7p`>2d294?7|@=2;7p`>2d394?7|@=2;7p`>2d094?7|@=2;7p`>2d194?7|@=2;7p`>2d694?7|@=2;7p`>2d794?7|@=2;7p`>2d494?7|@=2;7p`>2d594?7|@=2;7p`>2d:94?7|@=2;7p`>2d;94?7|@=2;7p`>2dc94?7|@=2;7p`>2d`94?7|@=2;7p`>2da94?7|@=2;7p`>2df94?7|@=2;7p`>2dg94?7|@=2;7p`>2dd94?7|@=2;7p`>2g294?7|@=2;7p`>2g394?7|@=2;7p`>2g094?7|@=2;7p`>2g194?7|@=2;7p`>2g694?7|@=2;7p`>2g794?7|@=2;7p`>2g494?7|@=2;7p`>2g594?7|@=2;7p`>2g:94?7|@=2;7p`>2g;94?7|@=2;7p`>2gc94?7|@=2;7p`>2g`94?7|@=2;7p`>2ga94?7|@=2;7p`>2gf94?7|@=2;7p`>2gg94?7|@=2;7p`>2gd94?7|@=2;7p`>31294?7|@=2;7p`>31394?7|@=2;7p`>31094?7|@=2;7p`>31194?7|@=2;7p`>31694?7|@=2;7p`>31794?7|@=2;7p`>31494?7|@=2;7p`>31594?7|@=2;7p`>31:94?7|@=2;7p`>31;94?7|@=2;7p`>31c94?7|@=2;7p`>31`94?7|@=2;7p`>31a94?7|@=2;7p`>31f94?7|@=2;7p`>31g94?7|@=2;7p`>31d94?7|@=2;7p`>30294?7|@=2;7p`>30394?7|@=2;7p`>30094?7|@=2;7p`>30194?7|@=2;7p`>30694?7|@=2;7p`>30794?7|@=2;7p`>30494?7|@=2;7p`>30594?7|@=2;7p`>30:94?7|@=2;7p`>30;94?7|@=2;7p`>30c94?7|@=2;7p`>30`94?7|@=2;7p`>30a94?7|@=2;7p`>30f94?7|@=2;7p`>30g94?7|@=2;7p`>30d94?7|@=2;7p`>33294?7|@=2;7p`>33394?7|@=2;7p`>33094?7|@=2;7p`>33194?7|@=2;7p`>33694?7|@=2;7p`>33794?7|@=2;7p`>33494?7|@=2;7p`>33594?7|@=2;7p`>33:94?7|@=2;7p`>33;94?7|@=2;7p`>33c94?7|@=2;7p`>33`94?7|@=2;7p`>33a94?7|@=2;7p`>33f94?7|@=2;7p`>33g94?7|@=2;7p`>33d94?7|@=2;7p`>32294?7|@=2;7p`>32394?7|@=2;7p`>32094?7|@=2;7p`>32194?7|@=2;7p`>32694?7|@=2;7p`>32794?7|@=2;7p`>32494?7|@=2;7p`>32594?7|@=2;7p`>32:94?7|@=2;7p`>32;94?7|@=2;7p`>32c94?7|@=2;7p`>32`94?7|@=2;7p`>32a94?7|@=2;7p`>32f94?7|@=2;7p`>32g94?7|@=2;7p`>32d94?7|@=2;7p`>35294?7|@=2;7p`>35394?7|@=2;7p`>35094?7|@=2;7p`>35194?7|@=2;7p`>35694?7|@=2;7p`>35794?7|@=2;7p`>35494?7|@=2;7p`>35594?7|@=2;7p`>35:94?7|@=2;7p`>35;94?7|@=2;7p`>35c94?7|@=2;7p`>35`94?7|@=2;7p`>35a94?7|@=2;7p`>35f94?7|@=2;7p`>35g94?7|@=2;7p`>35d94?7|@=2;7p`>34294?7|@=2;7p`>34394?7|@=2;7p`>34094?7|@=2;7p`>34194?7|@=2;7p`>34694?7|@=2;7p`>34794?7|@=2;7p`>34494?7|@=2;7p`>34594?7|@=2;7p`>34:94?7|@=2;7p`>34;94?7|@=2;7p`>34c94?7|@=2;7p`>34`94?7|@=2;7p`>34a94?7|@=2;7p`>34f94?7|@=2;7p`>34g94?7|@=2;7p`>34d94?7|@=2;7p`>37294?7|@=2;7p`>37394?7|@=2;7p`>37094?7|@=2;7p`>37194?7|@=2;7p`>37694?7|@=2;7p`>37794?7|@=2;7p`>37494?7|@=2;7p`>37594?7|@=2;7p`>37:94?7|@=2;7p`>37;94?7|@=2;7p`>37c94?7|@=2;7p`>37`94?7|@=2;7p`>37a94?7|@=2;7p`>37f94?7|@=2;7p`>37g94?7|@=2;7p`>37d94?7|@=2;7p`>36294?7|@=2;7p`>36394?7|@=2;7p`>36094?7|@=2;7p`>36194?7|@=2;7p`>36694?7|@=2;7p`>36794?7|@=2;7p`>36494?7|@=2;7p`>36594?7|@=2;7p`>36:94?7|@=2;7p`>36;94?7|@=2;7p`>36c94?7|@=2;7p`>36`94?7|@=2;7p`>36a94?7|@=2;7p`>36f94?7|@=2;7p`>36g94?7|@=2;7p`>36d94?7|@=2;7p`>39294?7|@=2;7p`>39394?7|@=2;7p`>39094?7|@=2;7p`>39194?7|@=2;7p`>39694?7|@=2;7p`>39794?7|@=2;7p`>39494?7|@=2;7p`>39594?7|@=2;7p`>39:94?7|@=2;7p`>39;94?7|@=2;7p`>39c94?7|@=2;7p`>39`94?7|@=2;7p`>39a94?7|@=2;7p`>39f94?7|@=2;7p`>39g94?7|@=2;7p`>39d94?7|@=2;7p`>38294?7|@=2;7p`>38394?7|@=2;7p`>38094?7|@=2;7p`>38194?7|@=2;7p`>38694?7|@=2;7p`>38794?7|@=2;7p`>38494?7|@=2;7p`>38594?7|@=2;7p`>38:94?7|@=2;7p`>38;94?7|@=2;7p`>38c94?7|@=2;7p`>38`94?7|@=2;7p`>38a94?7|@=2;7p`>38f94?7|@=2;7p`>38g94?7|@=2;7p`>38d94?7|@=2;7p`>3`294?7|@=2;7p`>3`394?7|@=2;7p`>3`094?7|@=2;7p`>3`194?7|@=2;7p`>3`694?7|@=2;7p`>3`794?7|@=2;7p`>3`494?7|@=2;7p`>3`594?7|@=2;7p`>3`:94?7|@=2;7p`>3`;94?7|@=2;7p`>3`c94?7|@=2;7p`>3``94?7|@=2;7p`>3`a94?7|@=2;7p`>3`f94?7|@=2;7p`>3`g94?7|@=2;7p`>3`d94?7|@=2;7p`>3c294?7|@=2;7p`>3c394?7|@=2;7p`>3c094?7|@=2;7p`>3c194?7|@=2;7p`>3c694?7|@=2;7p`>3c794?7|@=2;7p`>3c494?7|@=2;7p`>3c594?7|@=2;7p`>3c:94?7|@=2;7p`>3c;94?7|@=2;7p`>3cc94?7|@=2;7p`>3c`94?7|@=2;7p`>3ca94?7|@=2;7p`>3cf94?7|@=2;7p`>3cg94?7|@=2;7p`>3cd94?7|@=2;7p`>3b294?7|@=2;7p`>3b394?7|@=2;7p`>3b094?7|@=2;7p`>3b194?7|@=2;7p`>3b694?7|@=2;7p`>3b794?7|@=2;7p`>3b494?7|@=2;7p`>3b594?7|@=2;7p`>3b:94?7|@=2;7p`>3b;94?7|@=2;7p`>3bc94?7|@=2;7p`>3b`94?7|@=2;7p`>3ba94?7|@=2;7p`>3bf94?7|@=2;7p`>3bg94?7|@=2;7p`>3bd94?7|@=2;7p`>3e294?7|@=2;7psr}AB@\7f40?l3;?hkh977\7fCDG}7uIJ[wpNO
\ No newline at end of file
diff --git a/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.v b/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.v
new file mode 100644 (file)
index 0000000..e842376
--- /dev/null
@@ -0,0 +1,169 @@
+/*******************************************************************************
+*     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.                                                     *
+*******************************************************************************/
+// 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).
+
+// You must compile the wrapper file fifo_xlnx_64x36_2clk.v when simulating
+// the core, fifo_xlnx_64x36_2clk. When compiling the wrapper file, be sure to
+// reference the XilinxCoreLib Verilog simulation library. For detailed
+// instructions, please refer to the "CORE Generator Help".
+
+`timescale 1ns/1ps
+
+module fifo_xlnx_64x36_2clk(
+       din,
+       rd_clk,
+       rd_en,
+       rst,
+       wr_clk,
+       wr_en,
+       dout,
+       empty,
+       full,
+       rd_data_count,
+       wr_data_count);
+
+
+input [35 : 0] din;
+input rd_clk;
+input rd_en;
+input rst;
+input wr_clk;
+input wr_en;
+output [35 : 0] dout;
+output empty;
+output full;
+output [6 : 0] rd_data_count;
+output [6 : 0] wr_data_count;
+
+// synthesis translate_off
+
+      FIFO_GENERATOR_V4_3 #(
+               .C_COMMON_CLOCK(0),
+               .C_COUNT_TYPE(0),
+               .C_DATA_COUNT_WIDTH(7),
+               .C_DEFAULT_VALUE("BlankString"),
+               .C_DIN_WIDTH(36),
+               .C_DOUT_RST_VAL("0"),
+               .C_DOUT_WIDTH(36),
+               .C_ENABLE_RLOCS(0),
+               .C_FAMILY("spartan3"),
+               .C_FULL_FLAGS_RST_VAL(1),
+               .C_HAS_ALMOST_EMPTY(0),
+               .C_HAS_ALMOST_FULL(0),
+               .C_HAS_BACKUP(0),
+               .C_HAS_DATA_COUNT(0),
+               .C_HAS_INT_CLK(0),
+               .C_HAS_MEMINIT_FILE(0),
+               .C_HAS_OVERFLOW(0),
+               .C_HAS_RD_DATA_COUNT(1),
+               .C_HAS_RD_RST(0),
+               .C_HAS_RST(1),
+               .C_HAS_SRST(0),
+               .C_HAS_UNDERFLOW(0),
+               .C_HAS_VALID(0),
+               .C_HAS_WR_ACK(0),
+               .C_HAS_WR_DATA_COUNT(1),
+               .C_HAS_WR_RST(0),
+               .C_IMPLEMENTATION_TYPE(2),
+               .C_INIT_WR_PNTR_VAL(0),
+               .C_MEMORY_TYPE(2),
+               .C_MIF_FILE_NAME("BlankString"),
+               .C_MSGON_VAL(1),
+               .C_OPTIMIZATION_MODE(0),
+               .C_OVERFLOW_LOW(0),
+               .C_PRELOAD_LATENCY(0),
+               .C_PRELOAD_REGS(1),
+               .C_PRIM_FIFO_TYPE("512x36"),
+               .C_PROG_EMPTY_THRESH_ASSERT_VAL(4),
+               .C_PROG_EMPTY_THRESH_NEGATE_VAL(5),
+               .C_PROG_EMPTY_TYPE(0),
+               .C_PROG_FULL_THRESH_ASSERT_VAL(63),
+               .C_PROG_FULL_THRESH_NEGATE_VAL(62),
+               .C_PROG_FULL_TYPE(0),
+               .C_RD_DATA_COUNT_WIDTH(7),
+               .C_RD_DEPTH(64),
+               .C_RD_FREQ(1),
+               .C_RD_PNTR_WIDTH(6),
+               .C_UNDERFLOW_LOW(0),
+               .C_USE_DOUT_RST(1),
+               .C_USE_ECC(0),
+               .C_USE_EMBEDDED_REG(0),
+               .C_USE_FIFO16_FLAGS(0),
+               .C_USE_FWFT_DATA_COUNT(1),
+               .C_VALID_LOW(0),
+               .C_WR_ACK_LOW(0),
+               .C_WR_DATA_COUNT_WIDTH(7),
+               .C_WR_DEPTH(64),
+               .C_WR_FREQ(1),
+               .C_WR_PNTR_WIDTH(6),
+               .C_WR_RESPONSE_LATENCY(1))
+       inst (
+               .DIN(din),
+               .RD_CLK(rd_clk),
+               .RD_EN(rd_en),
+               .RST(rst),
+               .WR_CLK(wr_clk),
+               .WR_EN(wr_en),
+               .DOUT(dout),
+               .EMPTY(empty),
+               .FULL(full),
+               .RD_DATA_COUNT(rd_data_count),
+               .WR_DATA_COUNT(wr_data_count),
+               .CLK(),
+               .INT_CLK(),
+               .BACKUP(),
+               .BACKUP_MARKER(),
+               .PROG_EMPTY_THRESH(),
+               .PROG_EMPTY_THRESH_ASSERT(),
+               .PROG_EMPTY_THRESH_NEGATE(),
+               .PROG_FULL_THRESH(),
+               .PROG_FULL_THRESH_ASSERT(),
+               .PROG_FULL_THRESH_NEGATE(),
+               .RD_RST(),
+               .SRST(),
+               .WR_RST(),
+               .ALMOST_EMPTY(),
+               .ALMOST_FULL(),
+               .DATA_COUNT(),
+               .OVERFLOW(),
+               .PROG_EMPTY(),
+               .PROG_FULL(),
+               .VALID(),
+               .UNDERFLOW(),
+               .WR_ACK(),
+               .SBITERR(),
+               .DBITERR());
+
+
+// synthesis translate_on
+
+endmodule
+
diff --git a/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.veo b/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.veo
new file mode 100644 (file)
index 0000000..9c76137
--- /dev/null
@@ -0,0 +1,53 @@
+/*******************************************************************************
+*     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.                                                     *
+*******************************************************************************/
+// The following must be inserted into your Verilog file for this
+// core to be instantiated. Change the instance name and port connections
+// (in parentheses) to your own signal names.
+
+//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
+fifo_xlnx_64x36_2clk YourInstanceName (
+       .din(din), // Bus [35 : 0] 
+       .rd_clk(rd_clk),
+       .rd_en(rd_en),
+       .rst(rst),
+       .wr_clk(wr_clk),
+       .wr_en(wr_en),
+       .dout(dout), // Bus [35 : 0] 
+       .empty(empty),
+       .full(full),
+       .rd_data_count(rd_data_count), // Bus [6 : 0] 
+       .wr_data_count(wr_data_count)); // Bus [6 : 0] 
+
+// INST_TAG_END ------ End INSTANTIATION Template ---------
+
+// You must compile the wrapper file fifo_xlnx_64x36_2clk.v when simulating
+// the core, fifo_xlnx_64x36_2clk. When compiling the wrapper file, be sure to
+// reference the XilinxCoreLib Verilog simulation library. For detailed
+// instructions, please refer to the "CORE Generator Help".
+
diff --git a/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.xco b/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk.xco
new file mode 100644 (file)
index 0000000..c6e9aae
--- /dev/null
@@ -0,0 +1,82 @@
+##############################################################
+#
+# Xilinx Core Generator version K.39
+# Date: Thu Sep  3 17:22:56 2009
+#
+##############################################################
+#
+#  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 = False
+SET busformat = BusFormatAngleBracketNotRipped
+SET createndf = False
+SET designentry = Verilog
+SET device = xc3s2000
+SET devicefamily = spartan3
+SET flowvendor = Other
+SET formalverification = False
+SET foundationsym = False
+SET implementationfiletype = Ngc
+SET package = fg456
+SET removerpms = False
+SET simulationfiles = Behavioral
+SET speedgrade = -5
+SET verilogsim = True
+SET vhdlsim = False
+# END Project Options
+# BEGIN Select
+SELECT Fifo_Generator family Xilinx,_Inc. 4.3
+# END Select
+# BEGIN Parameters
+CSET almost_empty_flag=false
+CSET almost_full_flag=false
+CSET component_name=fifo_xlnx_64x36_2clk
+CSET data_count=false
+CSET data_count_width=7
+CSET disable_timing_violations=false
+CSET dout_reset_value=0
+CSET empty_threshold_assert_value=4
+CSET empty_threshold_negate_value=5
+CSET enable_ecc=false
+CSET enable_int_clk=false
+CSET fifo_implementation=Independent_Clocks_Distributed_RAM
+CSET full_flags_reset_value=1
+CSET full_threshold_assert_value=63
+CSET full_threshold_negate_value=62
+CSET input_data_width=36
+CSET input_depth=64
+CSET output_data_width=36
+CSET output_depth=64
+CSET overflow_flag=false
+CSET overflow_sense=Active_High
+CSET performance_options=First_Word_Fall_Through
+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=true
+CSET read_data_count_width=7
+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=true
+CSET valid_flag=false
+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=true
+CSET write_data_count_width=7
+# END Parameters
+GENERATE
+# CRC: 2bb925ae
+
diff --git a/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.lso b/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.lso
new file mode 100644 (file)
index 0000000..f1a6f78
--- /dev/null
@@ -0,0 +1,3 @@
+blkmemdp_v6_2
+blk_mem_gen_v2_6
+fifo_generator_v4_3
diff --git a/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt b/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
new file mode 100644 (file)
index 0000000..a23402f
--- /dev/null
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<document OS="lin64" product="ISE" version="10.1.03">
+
+  <!--The data in this file is primarily intended for consumption by Xilinx tools.
+    The structure and the elements are likely to change over the next few releases.
+    This means code written to parse this file will need to be revisited each subsequent release.-->
+
+  <application stringID="Xst" timeStamp="Thu Sep  3 10:22:37 2009">
+    <section stringID="XST_HDL_SYNTHESIS_REPORT">
+      <item dataType="int" stringID="XST_RAMS" value="1"></item>
+      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item>
+      <item dataType="int" stringID="XST_COUNTERS" value="2"></item>
+      <item dataType="int" stringID="XST_REGISTERS" value="32">
+        <item dataType="int" stringID="XST_1BIT_REGISTER" value="15"/>
+        <item dataType="int" stringID="XST_2BIT_REGISTER" value="1"/>
+        <item dataType="int" stringID="XST_3BIT_REGISTER" value="1"/>
+        <item dataType="int" stringID="XST_36BIT_REGISTER" value="2"/>
+        <item dataType="int" stringID="XST_6BIT_REGISTER" value="11"/>
+      </item>
+      <item dataType="int" stringID="XST_XORS" value="44">
+        <item dataType="int" stringID="XST_1BIT_XOR2" value="44"/>
+      </item>
+    </section>
+    <section stringID="XST_ADVANCED_HDL_SYNTHESIS_REPORT">
+      <item dataType="int" stringID="XST_FSMS" value="1"/>
+      <item dataType="int" stringID="XST_RAMS" value="1"></item>
+      <item dataType="int" stringID="XST_ADDERSSUBTRACTORS" value="4"></item>
+      <item dataType="int" stringID="XST_COUNTERS" value="2"></item>
+      <item dataType="int" stringID="XST_REGISTERS" value="165">
+        <item dataType="int" stringID="XST_FLIPFLOPS" value="165"/>
+      </item>
+      <item dataType="int" stringID="XST_XORS" value="44">
+        <item dataType="int" stringID="XST_1BIT_XOR2" value="44"/>
+      </item>
+    </section>
+    <section stringID="XST_FINAL_REGISTER_REPORT">
+      <item dataType="int" stringID="XST_REGISTERS" value="192">
+        <item dataType="int" stringID="XST_FLIPFLOPS" value="192"/>
+      </item>
+    </section>
+    <section stringID="XST_PARTITION_REPORT">
+      <section stringID="XST_PARTITION_IMPLEMENTATION_STATUS">
+        <section stringID="XST_NO_PARTITIONS_WERE_FOUND_IN_THIS_DESIGN"/>
+      </section>
+    </section>
+    <section stringID="XST_FINAL_REPORT">
+      <section stringID="XST_FINAL_RESULTS">
+        <item stringID="XST_TOP_LEVEL_OUTPUT_FILE_NAME" value="/home/matt/coregen/tmp/_cg/fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.ngc"/>
+        <item stringID="XST_OUTPUT_FORMAT" value="NGC"/>
+        <item stringID="XST_OPTIMIZATION_GOAL" value="SPEED"/>
+        <item stringID="XST_KEEP_HIERARCHY" value="no"/>
+      </section>
+      <section stringID="XST_DESIGN_STATISTICS">
+        <item stringID="XST_IOS" value="153"/>
+      </section>
+      <section stringID="XST_CELL_USAGE">
+        <item dataType="int" stringID="XST_BELS" value="227">
+          <item dataType="int" stringID="XST_GND" value="1"/>
+          <item dataType="int" stringID="XST_INV" value="3"/>
+          <item dataType="int" stringID="XST_LUT2" value="37"/>
+          <item dataType="int" stringID="XST_LUT2L" value="1"/>
+          <item dataType="int" stringID="XST_LUT3" value="86"/>
+          <item dataType="int" stringID="XST_LUT3D" value="1"/>
+          <item dataType="int" stringID="XST_LUT3L" value="3"/>
+          <item dataType="int" stringID="XST_LUT4" value="34"/>
+          <item dataType="int" stringID="XST_LUT4D" value="2"/>
+          <item dataType="int" stringID="XST_MUXCY" value="10"/>
+          <item dataType="int" stringID="XST_MUXF5" value="36"/>
+          <item dataType="int" stringID="XST_VCC" value="1"/>
+          <item dataType="int" stringID="XST_XORCY" value="12"/>
+        </item>
+        <item dataType="int" stringID="XST_FLIPFLOPSLATCHES" value="192">
+          <item dataType="int" stringID="XST_FD" value="4"/>
+          <item dataType="int" stringID="XST_FDC" value="58"/>
+          <item dataType="int" stringID="XST_FDCE" value="108"/>
+          <item dataType="int" stringID="XST_FDP" value="10"/>
+          <item dataType="int" stringID="XST_FDPE" value="5"/>
+        </item>
+        <item dataType="int" stringID="XST_RAMS" value="144">
+          <item dataType="int" stringID="XST_RAM16X1D" value="144"/>
+        </item>
+      </section>
+    </section>
+    <section stringID="XST_DEVICE_UTILIZATION_SUMMARY">
+      <item stringID="XST_SELECTED_DEVICE" value="3s2000fg456-5"/>
+      <item AVAILABLE="20480" dataType="int" stringID="XST_NUMBER_OF_SLICES" value="188"/>
+      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_SLICE_FLIP_FLOPS" value="192"/>
+      <item AVAILABLE="40960" dataType="int" stringID="XST_NUMBER_OF_4_INPUT_LUTS" value="455"/>
+      <item dataType="int" stringID="XST_NUMBER_USED_AS_LOGIC" value="167"/>
+      <item dataType="int" stringID="XST_NUMBER_USED_AS_RAMS" value="288"/>
+      <item dataType="int" stringID="XST_NUMBER_OF_IOS" value="153"/>
+      <item AVAILABLE="333" dataType="int" stringID="XST_NUMBER_OF_BONDED_IOBS" value="0"/>
+    </section>
+    <section stringID="XST_PARTITION_RESOURCE_SUMMARY">
+      <section stringID="XST_NO_PARTITIONS_WERE_FOUND_IN_THIS_DESIGN"/>
+    </section>
+    <section stringID="XST_ERRORS_STATISTICS">
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_ERRORS" value="0"/>
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_WARNINGS" value="73"/>
+      <item dataType="int" filtered="0" stringID="XST_NUMBER_OF_INFOS" value="10"/>
+    </section>
+  </application>
+
+</document>
diff --git a/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_flist.txt b/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_flist.txt
new file mode 100644 (file)
index 0000000..44e31eb
--- /dev/null
@@ -0,0 +1,8 @@
+# Output products list for <fifo_xlnx_64x36_2clk>
+fifo_xlnx_64x36_2clk.ngc
+fifo_xlnx_64x36_2clk.v
+fifo_xlnx_64x36_2clk.veo
+fifo_xlnx_64x36_2clk.xco
+fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
+fifo_xlnx_64x36_2clk_flist.txt
+fifo_xlnx_64x36_2clk_xmdf.tcl
diff --git a/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_readme.txt b/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_readme.txt
new file mode 100644 (file)
index 0000000..7734c00
--- /dev/null
@@ -0,0 +1,39 @@
+The following files were generated for 'fifo_xlnx_64x36_2clk' in directory 
+/home/matt/gnuradio.git/usrp2/fpga/coregen/:
+
+fifo_xlnx_64x36_2clk.ngc:
+   Binary Xilinx implementation netlist file containing the information
+   required to implement the module in a Xilinx (R) FPGA.
+
+fifo_xlnx_64x36_2clk.v:
+   Verilog wrapper file provided to support functional simulation.
+   This file contains simulation model customization data that is
+   passed to a parameterized simulation model for the core.
+
+fifo_xlnx_64x36_2clk.veo:
+   VEO template file containing code that can be used as a model for
+   instantiating a CORE Generator module in a Verilog design.
+
+fifo_xlnx_64x36_2clk.xco:
+   CORE Generator input file containing the parameters used to
+   regenerate a core.
+
+fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt:
+   Please see the core data sheet.
+
+fifo_xlnx_64x36_2clk_flist.txt:
+   Text file listing all of the output files produced when a customized
+   core was generated in the CORE Generator.
+
+fifo_xlnx_64x36_2clk_readme.txt:
+   Text file indicating the files generated and how they are used.
+
+fifo_xlnx_64x36_2clk_xmdf.tcl:
+   ISE Project Navigator interface file. ISE uses this file to determine
+   how the files output by CORE Generator for the core can be integrated
+   into your ISE project.
+
+
+Please see the Xilinx CORE Generator online help for further details on
+generated files and how to use them.
+
diff --git a/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_xmdf.tcl b/usrp2/fpga/coregen/fifo_xlnx_64x36_2clk_xmdf.tcl
new file mode 100644 (file)
index 0000000..ff5dfd3
--- /dev/null
@@ -0,0 +1,68 @@
+# The package naming convention is <core_name>_xmdf
+package provide fifo_xlnx_64x36_2clk_xmdf 1.0
+
+# This includes some utilities that support common XMDF operations
+package require utilities_xmdf
+
+# Define a namespace for this package. The name of the name space
+# is <core_name>_xmdf
+namespace eval ::fifo_xlnx_64x36_2clk_xmdf {
+# Use this to define any statics
+}
+
+# Function called by client to rebuild the params and port arrays
+# Optional when the use context does not require the param or ports
+# arrays to be available.
+proc ::fifo_xlnx_64x36_2clk_xmdf::xmdfInit { instance } {
+# Variable containg name of library into which module is compiled
+# Recommendation: <module_name>
+# Required
+utilities_xmdf::xmdfSetData $instance Module Attributes Name fifo_xlnx_64x36_2clk
+}
+# ::fifo_xlnx_64x36_2clk_xmdf::xmdfInit
+
+# Function called by client to fill in all the xmdf* data variables
+# based on the current settings of the parameters
+proc ::fifo_xlnx_64x36_2clk_xmdf::xmdfApplyParams { instance } {
+
+set fcount 0
+# Array containing libraries that are assumed to exist
+# Examples include unisim and xilinxcorelib
+# Optional
+# In this example, we assume that the unisim library will
+# be magically
+# available to the simulation and synthesis tool
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
+utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_64x36_2clk.ngc
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_64x36_2clk.v
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_64x36_2clk.veo
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog_template
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_64x36_2clk.xco
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_64x36_2clk_fifo_generator_v4_3_xst_1.ngc_xst.xrpt
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xlnx_64x36_2clk_xmdf.tcl
+utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
+incr fcount
+
+utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module fifo_xlnx_64x36_2clk
+incr fcount
+
+}
+
+# ::gen_comp_name_xmdf::xmdfApplyParams
diff --git a/usrp2/fpga/eth/bench/verilog/.gitignore b/usrp2/fpga/eth/bench/verilog/.gitignore
deleted file mode 100644 (file)
index 86fc44f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/a.out
-/*.vcd
-/*.sav
-/*.lxt
diff --git a/usrp2/fpga/eth/bench/verilog/100m.scr b/usrp2/fpga/eth/bench/verilog/100m.scr
deleted file mode 100644 (file)
index 0dd59b8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// This tests just runs a few packets at 10/100 Mbps and 1 Gbps instead of only the usual 1 Gbps\r
-\r
-// Read from register 24 to confirm that Rx CRC check is enabled\r
-03 00 18 00 01 ff ff\r
-\r
-// Set speed to 1000 Mbps for a starter\r
-01 00 22 00 04\r
-\r
-// Setup Tx and Rx MAC addresses and type field to "IP"\r
-// Set Tx Data at offset 0, length 14 to 123456789ABC CBA987654321 0800\r
-10 00 00 00 0E 12 34 56 78 9A BC CB A9 87 65 43 21 08 00\r
-\r
-// Transmit a 1000-byte frame 1 time - and expect it to be received again!\r
-20 03 E8 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Set speed to 100 Mbps - this is 10x slower!\r
-01 00 22 00 02\r
-\r
-// Transmit a 1000-byte frame 1 time - and expect it to be received again!\r
-20 03 E8 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Set speed to 10 Mbps - this is yet another 10x slower!\r
-01 00 22 00 01\r
-\r
-// Transmit a 1000-byte frame 1 time - and expect it to be received again!\r
-20 03 E8 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Halt\r
-FF\r
diff --git a/usrp2/fpga/eth/bench/verilog/Phy_sim.v b/usrp2/fpga/eth/bench/verilog/Phy_sim.v
deleted file mode 100644 (file)
index f51ddbd..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  Phy_sim.v                                                   ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: Phy_sim.v,v $\r
-// Revision 1.3  2006/11/17 17:53:07  maverickist\r
-// no message\r
-//\r
-// Revision 1.2  2006/01/19 14:07:50  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-// \r
-\r
-`timescale 1ns/100ps \r
-\r
-module Phy_sim(\r
-  input        Gtx_clk, // Used only in GMII mode\r
-  output       Rx_clk,\r
-  output       Tx_clk, // Used only in MII mode\r
-  input        Tx_er,\r
-  input        Tx_en,\r
-  input  [7:0] Txd,\r
-  output       Rx_er,\r
-  output       Rx_dv,\r
-  output [7:0] Rxd,\r
-  output       Crs,\r
-  output       Col,\r
-  input  [2:0] Speed,\r
-  input        Done\r
-);\r
-\r
-//////////////////////////////////////////////////////////////////////\r
-// this file used to simulate Phy.\r
-// generate clk and loop the Tx data to Rx data\r
-// full duplex mode can be verified on loop mode.\r
-//////////////////////////////////////////////////////////////////////\r
-//////////////////////////////////////////////////////////////////////\r
-// internal signals\r
-//////////////////////////////////////////////////////////////////////\r
-reg Clk_25m;  // Used for 100 Mbps mode\r
-reg Clk_2_5m; // Used for 10 Mbps mode\r
-\r
-//wire Rx_clk;\r
-//wire Tx_clk; // Used only in MII mode\r
-\r
-  initial \r
-    begin\r
-      #10;\r
-      while ( !Done )\r
-        begin\r
-          #20 Clk_25m = 0;\r
-          #20 Clk_25m = 1;\r
-        end\r
-    end\r
-\r
-  initial \r
-    begin\r
-      #10;\r
-      while ( !Done )\r
-        begin\r
-          #200 Clk_2_5m = 0;\r
-          #200 Clk_2_5m = 1;\r
-        end\r
-    end\r
-\r
-  assign Rx_clk = Speed[2] ? Gtx_clk : Speed[1] ? Clk_25m : Speed[0] ? Clk_2_5m : 0;        \r
-  assign Tx_clk = Speed[2] ? Gtx_clk : Speed[1] ? Clk_25m : Speed[0] ? Clk_2_5m : 0;\r
-\r
-  assign Rx_dv = Tx_en;\r
-  assign Rxd   = Txd;\r
-  assign Rx_er = Tx_er;\r
-  assign Crs   = Tx_en;\r
-  assign Col   = 0;\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/bench/verilog/User_int_sim.v b/usrp2/fpga/eth/bench/verilog/User_int_sim.v
deleted file mode 100644 (file)
index 3f4aa24..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  User_input_sim.v                                            ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: User_int_sim.v,v $\r
-// Revision 1.3  2006/11/17 17:53:07  maverickist\r
-// no message\r
-//\r
-// Revision 1.2  2006/01/19 14:07:50  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/13 12:15:35  Administrator\r
-// no message\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-// \r
-module User_int_sim (\r
-  Reset,\r
-  Clk_user,\r
-  CPU_init_end,\r
-\r
-  Rx_mac_ra,\r
-  Rx_mac_rd,\r
-  Rx_mac_data,\r
-  Rx_mac_BE,\r
-  Rx_mac_pa,\r
-  Rx_mac_sop,\r
-  Rx_mac_eop,\r
-\r
-  Tx_mac_wa,\r
-  Tx_mac_wr,\r
-  Tx_mac_data,\r
-  Tx_mac_BE,\r
-  Tx_mac_sop,\r
-  Tx_mac_eop\r
-);\r
-\r
-  input         Reset;\r
-  input         Clk_user;\r
-  input         CPU_init_end;\r
-\r
-  input         Rx_mac_ra;\r
-  output        Rx_mac_rd;\r
-  input [31:0]  Rx_mac_data;\r
-  input [1:0]   Rx_mac_BE;\r
-  input         Rx_mac_pa;\r
-  input         Rx_mac_sop;\r
-  input         Rx_mac_eop;\r
-\r
-  input             Tx_mac_wa;\r
-  output reg        Tx_mac_wr;\r
-  output reg [31:0] Tx_mac_data;\r
-  output reg [1:0]  Tx_mac_BE; // Big endian\r
-  output reg        Tx_mac_sop;\r
-  output reg        Tx_mac_eop;\r
-\r
-//////////////////////////////////////////////////////////////////////\r
-// Internal signals\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-  reg [4:0]     operation;\r
-  reg [31:0]    data;\r
-  reg           Rx_mac_rd;\r
-  reg           Start_tran;\r
-\r
-//////////////////////////////////////////////////////////////////////\r
-//generate Tx user data\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-  initial\r
-    begin\r
-      operation = 0;\r
-      data      = 0;\r
-    end\r
-\r
-  task SendPacket;\r
-    input [15:0] Length;\r
-    input [7:0]  StartByte;\r
-\r
-    reg [15:0] Counter;\r
-    reg [7:0]  TxData;\r
-\r
-    begin\r
-      Counter=Length;\r
-      TxData = StartByte;\r
-      Tx_mac_sop = 1; // First time\r
-      while ( Counter>0 )\r
-        begin\r
-          while ( !Tx_mac_wa )\r
-            begin\r
-              Tx_mac_wr = 0;\r
-              @( posedge Clk_user );\r
-            end\r
-\r
-          Tx_mac_data[31:24] = TxData;\r
-          Tx_mac_data[23:16] = TxData+1;\r
-          Tx_mac_data[15:8]  = TxData+2;\r
-          Tx_mac_data[ 7:0]  = TxData+3;\r
-          TxData = TxData+4;\r
-          if ( Counter<=4 )\r
-            begin\r
-              // Indicate how many bytes are valid\r
-              if ( Counter==4 )\r
-                Tx_mac_BE = 2'b00;\r
-              else\r
-                Tx_mac_BE = Counter;\r
-              Tx_mac_eop = 1;\r
-            end\r
-          Tx_mac_wr = 1;\r
-\r
-          if ( Counter >= 4 )\r
-            Counter = Counter - 4;\r
-          else\r
-            Counter = 0;\r
-          @( posedge Clk_user );\r
-          Tx_mac_sop = 0;\r
-        end\r
-\r
-      Tx_mac_eop = 0;\r
-      Tx_mac_wr = 0;\r
-      Tx_mac_data = 32'h0;\r
-      Tx_mac_BE   = 2'b00;\r
-    end\r
-  endtask\r
-\r
-  always @( posedge Clk_user or posedge Reset )\r
-    if (Reset)\r
-      Start_tran <= 0;\r
-    else if (Tx_mac_eop && !Tx_mac_wa)  \r
-      Start_tran <= 0;     \r
-    else if (Tx_mac_wa)\r
-      Start_tran <= 1;\r
-\r
-  always @(posedge Clk_user)\r
-    if (Tx_mac_wa && CPU_init_end)\r
-      /* $ip_32W_gen("../data/config.ini",operation,data); */\r
-      ;\r
-    else\r
-      begin\r
-        operation <= 0;\r
-        data      <= 0;\r
-      end\r
-\r
-  initial\r
-    begin\r
-      Tx_mac_sop = 0;\r
-      Tx_mac_eop = 0;\r
-      Tx_mac_wr  = 0;\r
-      Tx_mac_data = 32'h0;\r
-      Tx_mac_BE   = 2'b00;\r
-\r
-      #100;\r
-      while ( Reset )\r
-        @( posedge Clk_user );\r
-\r
-      @( posedge Clk_user );\r
-\r
-      while ( !CPU_init_end )\r
-        @( posedge Clk_user );\r
-\r
-      SendPacket( 64, 8'h11 );\r
-      repeat( 20 )\r
-        @( posedge Clk_user );\r
-      SendPacket( 1500, 8'h12 );\r
-        \r
-    end\r
-\r
-//  assign Tx_mac_data = data;\r
-//  assign Tx_mac_wr   = operation[4];\r
-//  assign Tx_mac_sop  = operation[3];\r
-//  assign Tx_mac_eop  = operation[2];\r
-//  assign Tx_mac_BE   = operation[1:0];\r
-\r
-//////////////////////////////////////////////////////////////////////\r
-//verify Rx user data\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-  always @ (posedge Clk_user or posedge Reset)\r
-    if (Reset)\r
-      Rx_mac_rd <= 0;\r
-    else if (Rx_mac_ra)\r
-      Rx_mac_rd <= 1;\r
-    else\r
-      Rx_mac_rd <= 0;\r
-\r
-  always @ (posedge Clk_user )\r
-    if (Rx_mac_pa)    \r
-      /* $ip_32W_check( Rx_mac_data,\r
-       {Rx_mac_sop,Rx_mac_eop,Rx_mac_eop?Rx_mac_BE:2'b0});\r
-       */\r
-      ;\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/bench/verilog/error.scr b/usrp2/fpga/eth/bench/verilog/error.scr
deleted file mode 100644 (file)
index af42634..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-// This tests sends 5 packets, injecting a bit error in two of them\r
-// to verify the Rx CRC check works. The corresponding RMON statistics\r
-// counter is finally checked to verify that the error was registered\r
-\r
-// Read from register 24 to confirm that Rx CRC check is enabled\r
-03 00 18 00 01 ff ff\r
-\r
-// Set speed to 1000 Mbps\r
-01 00 22 00 04\r
-\r
-// Setup Tx and Rx MAC addresses and type field to "IP"\r
-// Set Tx Data at offset 0, length 14 to 123456789ABC CBA987654321 0800\r
-10 00 00 00 0E 12 34 56 78 9A BC CB A9 87 65 43 21 08 00\r
-\r
-//--- Packets #0 & 1 --------------------------------------------------------\r
-\r
-// Transmit a 200-byte frame 1 time - and expect it to be received again!\r
-20 00 C8 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Transmit a 200-byte frame 1 time - but expect to receive it with error!\r
-25 00 C8 00 01\r
-\r
-// Inject a single bit error in the packet (data bit 0) - this will cause a CRC error\r
-23 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-//--- Packets #2 & 3 --------------------------------------------------------\r
-\r
-// Transmit a 200-byte frame 1 time - and expect it to be received again!\r
-20 00 C8 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Transmit a 200-byte frame 1 time - but expect to receive it with error!\r
-25 00 C8 00 01\r
-\r
-// Inject a single bit error in the packet (data bit 7) - this will cause a CRC error\r
-23 00 80\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-//--- Packets #4 & 5 --------------------------------------------------------\r
-\r
-// Transmit a 200-byte frame 1 time - and expect it to be received again!\r
-20 00 C8 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Transmit a 200-byte frame 1 time - but don't expect it to be received again!\r
-21 00 C8 00 01\r
-\r
-// Inject a single bit error in the packet (RxEn) - this will cause a packet discard!\r
-// (because it happens early in the packet)\r
-23 01 00\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-//--- Packets #6 & 7 --------------------------------------------------------\r
-\r
-// Transmit a 200-byte frame 1 time - and expect it to be received again!\r
-20 00 C8 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Transmit a 200-byte frame 1 time - but don't expect it to be received again!\r
-21 00 C8 00 01\r
-\r
-// Inject a single bit error in the packet (RxEr)\r
-23 02 00\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-//--- Packet #8 -------------------------------------------------------------\r
-\r
-// Transmit a 200-byte frame 1 time - and expect it to be received again!\r
-20 00 C8 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-//---------------------------------------------------------------------------\r
-\r
-// Set CPU_rd_addr to address RxCRCErrCounter\r
-01 00 1C 00 05\r
-\r
-// Assert CPU_rd_apply\r
-01 00 1D 00 01\r
-\r
-// Kill a little time while waiting for CPU_rd_grant to assert...\r
-02 00 1E\r
-02 00 1E\r
-02 00 1E\r
-02 00 1E\r
-\r
-// Confirm that CPU_rd_grant is asserted\r
-03 00 1E 00 01 ff ff\r
-\r
-// Read & check low part of RxCRCErrCounter (0x0002)\r
-03 00 1F 00 02 ff ff\r
-\r
-// Read & check high part of RxCRCErrCounter (0x0000)\r
-03 00 20 00 00 ff ff\r
-\r
-// Negate CPU_rd_apply\r
-01 00 1D 00 00\r
-\r
-//---------------------------------------------------------------------------\r
-\r
-// Set CPU_rd_addr to address RxTooShortTooLongCounter\r
-01 00 1C 00 07\r
-\r
-// Assert CPU_rd_apply\r
-01 00 1D 00 01\r
-\r
-// Kill a little time while waiting for CPU_rd_grant to assert...\r
-02 00 1E\r
-02 00 1E\r
-02 00 1E\r
-02 00 1E\r
-\r
-// Confirm that CPU_rd_grant is asserted\r
-03 00 1E 00 01 ff ff\r
-\r
-// Read & check low part of RxTooShortTooLongCounter (0x0002)\r
-03 00 1F 00 02 ff ff\r
-\r
-// Read & check high part of RxTooShortTooLongCounter (0x0000)\r
-03 00 20 00 00 ff ff\r
-\r
-// Negate CPU_rd_apply\r
-01 00 1D 00 00\r
-\r
-\r
-// Halt\r
-FF\r
diff --git a/usrp2/fpga/eth/bench/verilog/files.lst b/usrp2/fpga/eth/bench/verilog/files.lst
deleted file mode 100644 (file)
index 6175a4d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-../../rtl/verilog/MAC_rx/Broadcast_filter.v\r
-../../rtl/verilog/MAC_rx/CRC_chk.v\r
-../../rtl/verilog/MAC_rx/MAC_rx_add_chk.v\r
-../../rtl/verilog/MAC_rx/MAC_rx_ctrl.v\r
-../../rtl/verilog/MAC_rx/MAC_rx_FF.v\r
-\r
-../../rtl/verilog/MAC_tx/CRC_gen.v\r
-../../rtl/verilog/MAC_tx/flow_ctrl.v\r
-../../rtl/verilog/MAC_tx/MAC_tx_addr_add.v\r
-../../rtl/verilog/MAC_tx/MAC_tx_ctrl.v\r
-../../rtl/verilog/MAC_tx/MAC_tx_FF.v\r
-../../rtl/verilog/MAC_tx/Ramdon_gen.v\r
-\r
-../../rtl/verilog/miim/eth_clockgen.v\r
-../../rtl/verilog/miim/eth_outputcontrol.v\r
-../../rtl/verilog/miim/eth_shiftreg.v\r
-\r
-../../rtl/verilog/RMON/RMON_addr_gen.v\r
-../../rtl/verilog/RMON/RMON_ctrl.v\r
-../../rtl/verilog/RMON/RMON_dpram.v\r
-\r
-../../rtl/verilog/TECH/duram.v\r
-../../rtl/verilog/TECH/eth_clk_div2.v\r
-../../rtl/verilog/TECH/eth_clk_switch.v\r
-\r
-../../rtl/verilog/TECH/xilinx/BUFGMUX.v\r
-../../rtl/verilog/TECH/xilinx/RAMB16_S36_S36.v\r
-\r
-../../rtl/verilog/Clk_ctrl.v\r
-../../rtl/verilog/eth_miim.v\r
-../../rtl/verilog/MAC_rx.v\r
-../../rtl/verilog/MAC_top.v\r
-../../rtl/verilog/MAC_tx.v\r
-../../rtl/verilog/Phy_int.v\r
-../../rtl/verilog/Reg_int.v\r
-../../rtl/verilog/RMON.v\r
-\r
-../../bench/verilog/Phy_sim.v\r
-../../bench/verilog/User_int_sim.v\r
-../../bench/verilog/host_sim.v\r
-../../bench/verilog/xlnx_glbl.v\r
-../../bench/verilog/tb_top.v\r
diff --git a/usrp2/fpga/eth/bench/verilog/host_sim.v b/usrp2/fpga/eth/bench/verilog/host_sim.v
deleted file mode 100644 (file)
index 55abb85..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-module host_sim(\r
-  input             Reset,\r
-  input             Clk_reg,\r
-  output reg        CSB,\r
-  output reg        WRB,\r
-  output reg        CPU_init_end,\r
-  output reg [15:0] CD_in,\r
-  input      [15:0] CD_out,\r
-  output reg  [7:0] CA\r
-);\r
-\r
-////////////////////////////////////////\r
-\r
-task CPU_init;\r
-  begin\r
-    CA    = 0;\r
-    CD_in = 0;\r
-    WRB   = 1;\r
-    CSB   = 1; \r
-  end\r
-endtask\r
-\r
-////////////////////////////////////////\r
-\r
-task CPU_wr;\r
-  input [6:0]  Addr;\r
-  input [15:0] Data;\r
-  begin\r
-    CA    = {Addr,1'b0};\r
-    CD_in = Data;\r
-    WRB   = 0;\r
-    CSB   = 0; \r
-    #20;\r
-    CA    = 0;\r
-    CD_in = 0;\r
-    WRB   = 1;\r
-    CSB   = 1;\r
-    #20;\r
-  end\r
-endtask\r
-\r
-/////////////////////////////////////////\r
-\r
-task CPU_rd;\r
-  input [6:0] Addr;\r
-  begin\r
-    CA  = {Addr,1'b0};\r
-    WRB = 1;\r
-    CSB = 0; \r
-    #20;\r
-    CA  = 0;\r
-    WRB = 1;\r
-    CSB = 1;\r
-    #20; \r
-  end\r
-endtask\r
-\r
-/////////////////////////////////////////\r
-\r
-integer i;\r
-\r
-reg [31:0] CPU_data [255:0];\r
-reg [7:0]  write_times;\r
-reg [7:0]  write_add;\r
-reg [15:0] write_data;\r
-\r
-initial\r
-  begin\r
-    CPU_init;\r
-    CPU_init_end=0;\r
-    //$readmemh("../data/CPU.vec",CPU_data);\r
-    //{write_times,write_add,write_data}=CPU_data[0];\r
-    {write_times,write_add,write_data}='b0;\r
-    #90;\r
-    for (i=0;i<write_times;i=i+1)\r
-      begin\r
-        {write_times,write_add,write_data}=CPU_data[i];\r
-        CPU_wr(write_add[6:0],write_data);\r
-      end\r
-    CPU_init_end=1;\r
-  end\r
-endmodule\r
diff --git a/usrp2/fpga/eth/bench/verilog/icomp.bat b/usrp2/fpga/eth/bench/verilog/icomp.bat
deleted file mode 100644 (file)
index 11e221e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-iverilog -I ..\..\rtl\verilog -c files.lst\r
diff --git a/usrp2/fpga/eth/bench/verilog/isim.bat b/usrp2/fpga/eth/bench/verilog/isim.bat
deleted file mode 100644 (file)
index e779696..0000000
+++ /dev/null
@@ -1 +0,0 @@
-vvp a.out %*\r
diff --git a/usrp2/fpga/eth/bench/verilog/jumbo_err.scr b/usrp2/fpga/eth/bench/verilog/jumbo_err.scr
deleted file mode 100644 (file)
index b0177f4..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// This test performs transmission & reception of several Jumbo-frame of ~2Kbytes\r
-// In one of the frames an error is injected to allow analysis of how the\r
-// MAC Rx interface reacts to errors in long packets\r
-\r
-// Read from register 24 to confirm that Rx CRC check is enabled\r
-03 00 18 00 01 ff ff\r
-\r
-// Set speed to 1000 Mbps\r
-01 00 22 00 04\r
-\r
-// Setup Tx and Rx MAC addresses and type field to "IP"\r
-// Set Tx Data at offset 0, length 14 to 123456789ABC CBA987654321 0800\r
-10 00 00 00 0E 12 34 56 78 9A BC CB A9 87 65 43 21 08 00\r
-\r
-// Transmit a 2049-byte frame 2 times - and expect them to be received again!\r
-20 08 02 00 02\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Transmit a 2049-byte frame 1 time - but expect to receive it with error!\r
-25 08 02 00 01\r
-\r
-// Delay 256 NOPs to time the error injection to be late in the packet\r
-0F 01 00\r
-\r
-// Inject a single bit error in the packet (data bit 0)\r
-23 01 00\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Transmit a 2049-byte frame 2 times - and expect them to be received again!\r
-20 08 01 00 02\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Halt\r
-FF\r
diff --git a/usrp2/fpga/eth/bench/verilog/jumbos.scr b/usrp2/fpga/eth/bench/verilog/jumbos.scr
deleted file mode 100644 (file)
index f48870b..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// This test performs transmission & reception of several Jumbo-frames of ~2Kbytes each\r
-// At the same time it demonstrates the wire-speed capabilities of the core\r
-\r
-// Read from register 24 to confirm that Rx CRC check is enabled\r
-03 00 18 00 01 ff ff\r
-\r
-// Set speed to 1000 Mbps\r
-01 00 22 00 04\r
-\r
-// Setup Tx and Rx MAC addresses and type field to "IP"\r
-// Set Tx Data at offset 0, length 14 to 123456789ABC CBA987654321 0800\r
-10 00 00 00 0E 12 34 56 78 9A BC CB A9 87 65 43 21 08 00\r
-\r
-// Transmit a 2047-byte frame 3 times - and expect them to be received again!\r
-20 07 ff 00 03\r
-// Transmit a 2048-byte frame 3 times - and expect them to be received again!\r
-20 08 00 00 03\r
-// Transmit a 2049-byte frame 3 times - and expect them to be received again!\r
-20 08 01 00 03\r
-// Transmit a 2050-byte frame 3 times - and expect them to be received again!\r
-20 08 02 00 03\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Halt\r
-FF\r
diff --git a/usrp2/fpga/eth/bench/verilog/mdio.scr b/usrp2/fpga/eth/bench/verilog/mdio.scr
deleted file mode 100644 (file)
index 8ad9969..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// Read from register 24 to confirm that Rx CRC check is enabled\r
-03 00 18 00 01 ff ff\r
-\r
-// Set speed to 1000 Mbps\r
-01 00 22 00 04\r
-\r
-// Set MDIO clock (MDC) divider to 4 to speed up test\r
-01 00 23 00 04\r
-03 00 23 00 04 ff ff\r
-\r
-// Check default (reset) values in new (added) MDIO registers\r
-//03 00 23 00 64 ff ff\r
-03 00 24 00 00 ff ff\r
-03 00 25 00 00 ff ff\r
-03 00 26 00 00 ff ff\r
-03 00 27 00 00 ff ff\r
-03 00 28 00 00 ff ff\r
-\r
-// Set RGAD=0x00 (all zeroes), FIAD=0x1f (all ones), check it\r
-// - these values allows easy recognition in the waveform\r
-01 00 25 00 1f\r
-03 00 25 00 1f ff ff\r
-\r
-// Now start the read operation by writing a 1 to the MIICOMMAND[1] - RSTAT\r
-01 00 24 00 02\r
-03 00 24 00 02 ff ff\r
-\r
-// Delay for 768 NOP\r
-0F 03 00\r
-\r
-// Check that the read operation has completed\r
-03 00 28 00 00 ff ff\r
-\r
-// Set RGAD=0x1f (all ones), FIAD=0x00 (all zeroes), check it\r
-// - these values allows easy recognition in the waveform\r
-01 00 25 1f 00\r
-03 00 25 1f 00 ff ff\r
-// Set MIITX_DATA = 0xAAAA, check it\r
-01 00 26 AA AA\r
-03 00 26 AA AA ff ff\r
-// Check MIISTATUS - must still be zero\r
-03 00 28 00 00 ff ff\r
-\r
-// Now start the write operation by writing a 1 to the MIICOMMAND[2] - WCTRLDATA\r
-01 00 24 00 04\r
-03 00 24 00 04 ff ff\r
-\r
-// Delay for 768 NOP\r
-0F 03 00\r
-\r
-// Check that the write operation has completed\r
-03 00 28 00 00 ff ff\r
diff --git a/usrp2/fpga/eth/bench/verilog/miim_model.v b/usrp2/fpga/eth/bench/verilog/miim_model.v
deleted file mode 100644 (file)
index 936d99a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-// Skeleton PHY interface simulator
-
-module miim_model(input mdc_i, 
-                 inout mdio, 
-                 input phy_resetn_i, 
-                 input phy_clk_i, 
-                 output phy_intn_o,
-                 output [2:0] speed_o);
-
-   assign                     phy_intn_o = 1;    // No interrupts
-   assign                     speed_o = 3'b100;  // 1G mode
-   
-endmodule // miim_model
diff --git a/usrp2/fpga/eth/bench/verilog/misc.scr b/usrp2/fpga/eth/bench/verilog/misc.scr
deleted file mode 100644 (file)
index 0923629..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-// Read from register 24 to confirm that Rx CRC check is enabled\r
-03 00 18 00 01 ff ff\r
-\r
-// Set speed to 1000 Mbps\r
-01 00 22 00 04\r
-\r
-// Write MAC address 12 35 56 78 9A BC to Rx Address buffer\r
-01 00 10 00 00\r
-01 00 0f 00 12\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 01\r
-01 00 0f 00 34\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 02\r
-01 00 0f 00 56\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 03\r
-01 00 0f 00 78\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 04\r
-01 00 0f 00 9A\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 05\r
-01 00 0f 00 BC\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-\r
-// Write 1 to register 14, MAC_rx_add_chk_en\r
-// This turns on the Rx Destination MAC address filter\r
-01 00 0e 00 01\r
-\r
-// Setup Tx and Rx MAC addresses and type field to "IP"\r
-// Set Tx Data at offset 0, length 14 to 123456789ABC CBA987654321 0800\r
-// (i.e. Destination MAC address is 123456789ABC matching the above)\r
-10 00 00 00 0E 12 34 56 78 9A BC CB A9 87 65 43 21 08 00\r
-\r
-// Transmit a 60-byte frame 1 time - and expect it to be received again!\r
-20 00 3C 00 01\r
-// Transmit a 61-byte frame 1 time - and expect it to be received again!\r
-20 00 3D 00 01\r
-// Transmit a 62-byte frame 1 time - and expect it to be received again!\r
-20 00 3E 00 01\r
-// Transmit a 63-byte frame 1 time - and expect it to be received again!\r
-20 00 3F 00 01\r
-// Transmit a 64-byte frame 1 time - and expect it to be received again!\r
-20 00 40 00 01\r
-\r
-// Transmit a 500-byte frame 1 time - and expect it to be received again!\r
-20 01 4C 00 01\r
-\r
-// Transmit a 1500-byte frame 1 time - and expect it to be received again!\r
-20 05 DC 00 01\r
-\r
-// Transmit a 1514-byte frame 1 time - and expect it to be received again!\r
-20 05 EA 00 01\r
-\r
-// Transmit a 60-byte frame 3 times - and expect them to be received again!\r
-20 00 3C 00 03\r
-// Transmit a 61-byte frame 3 times - and expect them to be received again!\r
-20 00 3D 00 03\r
-// Transmit a 62-byte frame 3 times - and expect them to be received again!\r
-20 00 3E 00 03\r
-// Transmit a 63-byte frame 3 times - and expect them to be received again!\r
-20 00 3F 00 03\r
-// Transmit a 64-byte frame 3 times - and expect them to be received again!\r
-20 00 40 00 03\r
-\r
-// Transmit a 1510-byte frame 1 time - and expect it to be received again!\r
-20 05 E6 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Change Tx MAC to something different - we won't receive frames with this ID\r
-10 00 00 00 06 11 22 33 44 55 66\r
-\r
-// Transmit a 60 byte frame 3 times - but don't expect them to be received!\r
-21 00 3C 00 03\r
-\r
-//// Change Tx MAC back to 12 34 56 78 9A BC\r
-10 00 00 00 06 12 34 56 78 9A BC\r
-\r
-// Transmit a 60 byte frame 3 times - and expect them to be received again!\r
-20 00 3C 00 03\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
diff --git a/usrp2/fpga/eth/bench/verilog/pause.scr b/usrp2/fpga/eth/bench/verilog/pause.scr
deleted file mode 100644 (file)
index be74027..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-// This test demonstrates the ability to transmit a PAUSE frame, and the effect of\r
-// a PAUSE frame on the receiver\r
-\r
-// Read from register 24 to confirm that Rx CRC check is enabled\r
-03 00 18 00 01 ff ff\r
-\r
-// Set speed to 1000 Mbps\r
-01 00 22 00 04\r
-\r
-// Setup Tx and Rx MAC addresses and type field to "IP"\r
-// Set Tx Data at offset 0, length 14 to 123456789ABC CBA987654321 0800\r
-10 00 00 00 0E 12 34 56 78 9A BC CB A9 87 65 43 21 08 00\r
-\r
-// Set PAUSE quanta to 256 - corresponding to a pause of 256x512 = 128Kb = 16KB\r
-01 00 03 01 00\r
-\r
-// Enable the transmitter to send a PAUSE frame\r
-01 00 02 00 01\r
-\r
-// Enable the transmitter to react to received PAUSE frames\r
-01 00 0b 00 01\r
-\r
-// Expect to receive a PAUSE frame with quanta 256\r
-24 01 00\r
-\r
-// Transmit a 512-byte frame 1 time - and expect it to be received again!\r
-20 02 00 00 01\r
-\r
-// Request the transmission of a PAUSE frame - it will loopback to ourselves and delay\r
-// further transmission for a period of 16 KB, causing a significant (visible) delay\r
-// between first and second 512-byte frame!\r
-01 00 0c 00 01\r
-\r
-// - now this second time, we will experience a delay\r
-// Transmit a 512-byte frame 1 time - and expect it to be received again!\r
-20 02 00 00 01\r
-// - and a final 3rd time\r
-// Transmit a 512-byte frame 1 time - and expect it to be received again!\r
-20 02 00 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Halt\r
-FF\r
diff --git a/usrp2/fpga/eth/bench/verilog/tb_top.v b/usrp2/fpga/eth/bench/verilog/tb_top.v
deleted file mode 100644 (file)
index e54bc20..0000000
+++ /dev/null
@@ -1,1057 +0,0 @@
-`timescale 1 ns / 1 ps\r
-\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  tb_top.v                                                    ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: tb_top.v,v $\r
-// Revision 1.3  2006/01/19 14:07:51  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:13  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-// \r
-\r
-module tb_top;\r
-\r
-  //-------------------- Instantiate Xilinx glbl module ----------------------\r
-  // - this is needed to get ModelSim to work because e.g. I/O buffer models\r
-  //   refer directly to glbl.GTS and similar signals\r
-\r
-  wire GSR;\r
-  wire GTS;\r
-  xlnx_glbl glbl( .GSR( GSR ), .GTS( GTS ) );\r
-\r
-  reg  VLOG_ExitSignal = 0;\r
-  reg  Done = 0;\r
-  reg  Error = 0;\r
-\r
-  //-------------------------------------------------------------------------\r
-\r
-  // System signals\r
-  wire        Reset;\r
-  reg         Clk_125M;\r
-  reg         Clk_user;\r
-\r
-  reg         RST_I;\r
-  reg         CLK_I;\r
-  reg         STB_I;\r
-  reg         CYC_I;\r
-  reg [6:0]   ADR_I;\r
-  reg         WE_I;\r
-  reg [15:0]  DAT_I;\r
-  wire [15:0] DAT_O;\r
-  wire        ACK_O;\r
-\r
-  // User interface (Rx)\r
-  wire        Rx_mac_ra;\r
-  reg         Rx_mac_rd = 0;\r
-  wire [31:0] Rx_mac_data;\r
-  wire [1:0]  Rx_mac_BE;\r
-  wire        Rx_mac_pa;\r
-  wire        Rx_mac_sop;\r
-  wire        Rx_mac_err;\r
-  wire        Rx_mac_eop;\r
-\r
-  // User interface (Tx)\r
-  wire        Tx_mac_wa;\r
-  reg         Tx_mac_wr = 0;\r
-  reg  [31:0] Tx_mac_data = 32'bx;\r
-  reg  [1:0]  Tx_mac_BE = 2'bx;\r
-  reg         Tx_mac_sop = 1'bx;\r
-  reg         Tx_mac_eop = 1'bx;\r
-\r
-  // PHY interface (GMII/MII)\r
-  wire        Gtx_clk;\r
-  wire        Rx_clk;\r
-  wire        Tx_clk;\r
-  wire        Tx_er;\r
-  wire        Tx_en;\r
-  wire [7:0]  Txd;\r
-  wire        Rx_er;\r
-  wire        Rx_dv;\r
-  wire [7:0]  Rxd;\r
-  wire        Crs;\r
-  wire        Col;\r
-\r
-  // PHY int host interface\r
-\r
-  wire        Line_loop_en;\r
-  wire [2:0]  Speed;\r
-\r
-  // MDIO interface\r
-  wire        Mdio; // MII Management Data In\r
-  wire        Mdc;  // MII Management Data Clock\r
-\r
-  //-------------------------------------------------------------------------\r
-\r
-  // Generate generic reset signal from Wishbone specific one\r
-  assign Reset = RST_I;\r
-\r
-  MAC_top U_MAC_top(\r
-    // System signals\r
-    .Clk_125M    ( Clk_125M ),\r
-    .Clk_user    ( Clk_user ),\r
-    .Speed       ( Speed    ),\r
-\r
-    // Wishbone compliant core host interface\r
-    .RST_I      ( RST_I ),\r
-    .CLK_I      ( CLK_I ),\r
-    .STB_I      ( STB_I ),\r
-    .CYC_I      ( CYC_I ),\r
-    .ADR_I      ( ADR_I ),\r
-    .WE_I       ( WE_I  ),\r
-    .DAT_I      ( DAT_I ),\r
-    .DAT_O      ( DAT_O ),\r
-    .ACK_O      ( ACK_O ),\r
-\r
-    // User (packet) interface\r
-    .Rx_mac_ra  ( Rx_mac_ra   ),    \r
-    .Rx_mac_rd  ( Rx_mac_rd   ),\r
-    .Rx_mac_data( Rx_mac_data ),\r
-    .Rx_mac_BE  ( Rx_mac_BE   ),\r
-    .Rx_mac_pa  ( Rx_mac_pa   ),\r
-    .Rx_mac_sop ( Rx_mac_sop  ),\r
-    .Rx_mac_err ( Rx_mac_err  ),\r
-    .Rx_mac_eop ( Rx_mac_eop  ),\r
-\r
-    .Tx_mac_wa  ( Tx_mac_wa   ),\r
-    .Tx_mac_wr  ( Tx_mac_wr   ),\r
-    .Tx_mac_data( Tx_mac_data ),\r
-    .Tx_mac_BE  ( Tx_mac_BE   ),\r
-    .Tx_mac_sop ( Tx_mac_sop  ),\r
-    .Tx_mac_eop ( Tx_mac_eop  ),\r
-\r
-    // PHY interface (GMII/MII)\r
-    .Gtx_clk    ( Gtx_clk ),\r
-    .Rx_clk     ( Rx_clk  ),\r
-    .Tx_clk     ( Tx_clk  ),\r
-    .Tx_er      ( Tx_er   ),\r
-    .Tx_en      ( Tx_en   ),\r
-    .Txd        ( Txd     ),\r
-    .Rx_er      ( Rx_er   ),\r
-    .Rx_dv      ( Rx_dv   ),\r
-    .Rxd        ( Rxd     ),\r
-    .Crs        ( Crs     ),\r
-    .Col        ( Col     ),\r
-\r
-    // MDIO interface (to PHY)\r
-    .Mdio       ( Mdio ),\r
-    .Mdc        ( Mdc  )\r
-  );\r
-\r
-  reg [15:0] InjectError;\r
-  reg        InjectErrorDone;\r
-  reg [15:0] TxError;\r
-  wire       Tx_er_Modified;\r
-  wire       Tx_en_Modified;\r
-  wire [7:0] Txd_Modified;\r
-\r
-  Phy_sim U_Phy_sim(\r
-    .Gtx_clk( Gtx_clk ),\r
-    .Rx_clk ( Rx_clk  ),\r
-    .Tx_clk ( Tx_clk  ),\r
-    .Tx_er  ( Tx_er_Modified ),\r
-    .Tx_en  ( Tx_en_Modified ),\r
-    .Txd    ( Txd_Modified   ),\r
-    .Rx_er  ( Rx_er   ),\r
-    .Rx_dv  ( Rx_dv   ),\r
-    .Rxd    ( Rxd     ),\r
-    .Crs    ( Crs     ),\r
-    .Col    ( Col     ),\r
-    .Speed  ( Speed   ),\r
-    .Done   ( Done    )\r
-  );\r
-\r
-  integer TxTrackPreAmble;\r
-\r
-  always @( posedge Reset or posedge Tx_clk )\r
-    if ( Reset )\r
-      TxTrackPreAmble <= 0;\r
-    else\r
-      if ( ~Tx_en )\r
-        TxTrackPreAmble <= 0;\r
-      else\r
-        TxTrackPreAmble <= TxTrackPreAmble + 1;\r
-\r
-  // Asserted after the Destination MAC address in the packet\r
-  wire TxInPayload = Tx_en & (TxTrackPreAmble > (7+6));\r
-  assign Tx_er_Modified = Tx_er ^ ( TxError[9] & TxInPayload );\r
-  assign Tx_en_Modified = Tx_en ^ ( TxError[8] & TxInPayload );\r
-  assign Txd_Modified = Txd ^ ( TxError[7:0] & {8{TxInPayload}} );\r
-\r
-  always @( posedge Reset or posedge Tx_clk )\r
-    if ( Reset )\r
-      begin\r
-        InjectError <= 0;\r
-        InjectErrorDone <= 0;\r
-        TxError <= 'b0;\r
-      end\r
-    else\r
-      if ( InjectError )\r
-        begin\r
-          TxError <= InjectError;\r
-          InjectError <= 0;\r
-          InjectErrorDone <= TxInPayload;\r
-        end\r
-      else if ( TxInPayload || InjectErrorDone )\r
-        begin\r
-          TxError <= 8'h00;\r
-          InjectErrorDone <= 0;\r
-        end\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Track pause on Tx interface\r
-\r
-  reg TxEnSeenOnce;  \r
-  integer TxTrackPause;\r
-\r
-  always @( posedge Reset or posedge Tx_clk )\r
-    if ( Reset )\r
-      begin\r
-        TxEnSeenOnce <= 0;\r
-        TxTrackPause <= 0;\r
-      end\r
-    else\r
-      if ( Tx_en )\r
-        begin\r
-          if ( TxEnSeenOnce && (TxTrackPause >= 64) ) // 512 bits\r
-            $display( "IDLE period on Tx interface ended after %0d Tx clocks (%0d bits, tick ~ %0d)",\r
-                      TxTrackPause,\r
-                      (Speed == 4) ? TxTrackPause*8     : TxTrackPause*4,\r
-                      (Speed == 4) ? TxTrackPause*8/512 : TxTrackPause*4/512 );\r
-          TxEnSeenOnce <= 1;\r
-          TxTrackPause <= 0;\r
-        end\r
-      else\r
-        TxTrackPause <= TxTrackPause + 1;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Host access routines (register read & write)\r
-  //-------------------------------------------------------------------------\r
-\r
-  task HostInit;\r
-    begin\r
-      RST_I <= 1;\r
-\r
-      STB_I <= 0;\r
-      CYC_I <= 0;\r
-      ADR_I <= 'b0;\r
-      WE_I  <= 0;\r
-      DAT_I <= 'b0;\r
-\r
-      #100 RST_I <= 0;\r
-\r
-      // Wait a couple of clock edges before continuing to allow\r
-      // internal logic to get out of reset\r
-      repeat( 2 )\r
-        @( posedge CLK_I );\r
-    end\r
-  endtask\r
-  \r
-  task HostWriteReg;\r
-    input [6:0]  Addr;\r
-    input [15:0] Data;\r
-    begin\r
-      @( posedge CLK_I );\r
-      ADR_I <= Addr;\r
-      DAT_I <= Data;\r
-      WE_I  <= 1;\r
-      STB_I <= 1;\r
-      CYC_I <= 1;\r
-\r
-      @( posedge CLK_I );\r
-\r
-      while ( ~ACK_O )\r
-        @( posedge CLK_I );\r
-\r
-      STB_I <= 0;\r
-      CYC_I <= 0;\r
-    end\r
-  endtask\r
-  \r
-  task HostReadReg;\r
-    input [6:0]   Addr;\r
-    output [15:0] Data;\r
-    begin\r
-      @( posedge CLK_I );\r
-      ADR_I <= Addr;\r
-      WE_I  <= 0;\r
-      STB_I <= 1;\r
-      CYC_I <= 1;\r
-\r
-      @( posedge CLK_I );\r
-\r
-      while ( ~ACK_O )\r
-        @( posedge CLK_I );\r
-\r
-      Data = DAT_O;\r
-      STB_I <= 0;\r
-      CYC_I <= 0;\r
-    end\r
-  endtask\r
-\r
-  //-------------------------------------------------------------------------\r
-  // User interface access routines (packet Tx and Rx)\r
-  //-------------------------------------------------------------------------\r
-\r
-  `define FIFOSIZE 10000\r
-\r
-  integer FIFO_WrPtr = 0;\r
-  integer FIFO_RdPtr = 0;\r
-  integer FIFO_ElementCount = 0;\r
-  reg [35:0] FIFO_Data[0:`FIFOSIZE];\r
-\r
-  function FIFO_Empty;\r
-    input Dummy;\r
-    begin\r
-      if ( FIFO_ElementCount > 0 )\r
-        FIFO_Empty = 0;\r
-      else\r
-        FIFO_Empty = 1;\r
-    end\r
-  endfunction\r
-\r
-  function FIFO_Full;\r
-    input Dummy;\r
-    begin\r
-      if ( FIFO_ElementCount < `FIFOSIZE )\r
-        FIFO_Full = 0;\r
-      else\r
-        FIFO_Full = 1;\r
-    end\r
-  endfunction\r
-\r
-  task FIFO_Wr;\r
-    input [35:0] Data;\r
-\r
-    begin\r
-      if ( !FIFO_Full(0) )\r
-        begin\r
-          FIFO_Data[ FIFO_WrPtr ] = Data;\r
-          FIFO_WrPtr = (FIFO_WrPtr + 1) % `FIFOSIZE;\r
-          FIFO_ElementCount = FIFO_ElementCount + 1;\r
-        end\r
-      else\r
-        begin\r
-          $display( "ERROR: FIFO_Wr() - FIFO overflow!" );\r
-          Error = 1;\r
-          $finish;\r
-        end\r
-    end\r
-  endtask\r
-\r
-  task FIFO_Rd;\r
-    output [35:0] Data;\r
-\r
-    begin\r
-      if ( !FIFO_Empty(0) )\r
-        begin\r
-          Data = FIFO_Data[ FIFO_RdPtr ];\r
-          FIFO_RdPtr = (FIFO_RdPtr + 1) % `FIFOSIZE;\r
-          FIFO_ElementCount = FIFO_ElementCount - 1;\r
-        end\r
-      else\r
-        begin\r
-          $display( "ERROR: FIFO_Rd() - Reading from empty FIFO!" );\r
-          Error = 1;\r
-          $finish;\r
-        end\r
-    end\r
-  endtask\r
-\r
-  //-------------------------------------------------------------------------\r
-\r
-  `define TXDATALEN 8000\r
-  reg [7:0] TxData[0:`TXDATALEN-1];\r
-  reg [7:0] TxAltData[0:`TXDATALEN-1];\r
-\r
-  // By default change payload after Ethernet Header\r
-  reg [15:0] TxHeaderLength = 14;\r
-\r
-  real    TxStartTime;\r
-  integer TxPacketCount = 0;\r
-  integer TxByteCount;\r
-\r
-  task SendPacket;\r
-    input [15:0] Length;\r
-    // 0: Don't write to FIFO, 1: Write to FIFO, 2: Write Alternate to FIFO, 3: Write IGNORE to FIFO\r
-    input [1:0]  Wr2FIFO;\r
-\r
-    reg [15:0] Counter;\r
-    integer    TxIndex;\r
-    integer    i;\r
-\r
-    reg [31:0] Tx_fifo_data;\r
-\r
-    begin\r
-      @( posedge Clk_user ); #1;\r
-\r
-      TxPacketCount = TxPacketCount + 1;\r
-      TxByteCount = TxByteCount + Length;\r
-\r
-      Counter=Length;\r
-      TxIndex = 0;\r
-      Tx_mac_sop = 1; // First time\r
-\r
-      if ( TxStartTime == 0 )\r
-        TxStartTime = $realtime;\r
-\r
-      while ( Counter>0 )\r
-        begin\r
-          while ( !Tx_mac_wa )\r
-            begin\r
-              Tx_mac_wr = 0;\r
-              @( posedge Clk_user ); #1;\r
-            end\r
-\r
-          Tx_mac_data[31:24] = TxData[ TxIndex   ];\r
-          Tx_mac_data[23:16] = TxData[ TxIndex+1 ];\r
-          Tx_mac_data[15:8]  = TxData[ TxIndex+2 ];\r
-          Tx_mac_data[ 7:0]  = TxData[ TxIndex+3 ];\r
-\r
-          // Default take data from regular tx buffer\r
-          Tx_fifo_data = Tx_mac_data;\r
-          if ( Wr2FIFO==2 )\r
-            begin\r
-              // Put content of Alternate Tx buffer on Rx expectancy queue\r
-              if ( (TxIndex+0)<TxHeaderLength )\r
-                Tx_fifo_data[31:24] = TxAltData[ TxIndex ];\r
-              if ( (TxIndex+1)<TxHeaderLength )\r
-                Tx_fifo_data[23:16] = TxAltData[ TxIndex+1 ];\r
-              if ( (TxIndex+2)<TxHeaderLength )\r
-                Tx_fifo_data[15:8]  = TxAltData[ TxIndex+2 ];\r
-              if ( (TxIndex+3)<TxHeaderLength )\r
-                Tx_fifo_data[ 7:0]  = TxAltData[ TxIndex+3 ];\r
-            end\r
-\r
-          for ( i=0; i<4; i=i+1 )\r
-            begin\r
-              if ( TxIndex >= TxHeaderLength )\r
-                TxData[ TxIndex ] = TxData[ TxIndex ] + 1;\r
-              TxIndex = TxIndex+1;\r
-            end\r
-\r
-          if ( Counter<=4 )\r
-            begin\r
-              // Indicate how many bytes are valid\r
-              if ( Counter==4 )\r
-                Tx_mac_BE = 2'b00;\r
-              else\r
-                Tx_mac_BE = Counter;\r
-              Tx_mac_eop = 1;\r
-            end\r
-          else\r
-            begin\r
-              Tx_mac_BE = 2'b00;\r
-              Tx_mac_eop = 0;\r
-            end\r
-\r
-          casez ( Wr2FIFO )\r
-            1,\r
-            2: FIFO_Wr( { Tx_mac_sop, Tx_mac_eop, Tx_mac_BE, Tx_fifo_data } );\r
-            3: // Ignore\r
-              begin\r
-                FIFO_Wr( { 2'b11, 2'b00, 32'h00000000 } );\r
-                Wr2FIFO = 0;\r
-              end\r
-          endcase\r
-\r
-          Tx_mac_wr = 1;\r
-\r
-          if ( Counter >= 4 )\r
-            Counter = Counter - 4;\r
-          else\r
-            Counter = 0;\r
-          @( posedge Clk_user ); #1;\r
-          Tx_mac_sop = 0;\r
-        end\r
-\r
-      Tx_mac_sop = 1'bx;\r
-      Tx_mac_eop = 1'bx;\r
-      Tx_mac_wr = 0;\r
-      Tx_mac_data = 32'bx;\r
-      Tx_mac_BE   = 2'bx;\r
-    end\r
-  endtask\r
-\r
-  //-------------------------------------------------------------------------\r
-\r
-  reg Negate_Rx_mac_rd;\r
-\r
-  always @( posedge Clk_user or posedge Reset )\r
-    if ( Reset )\r
-      Rx_mac_rd <= 0;\r
-    else if ( Rx_mac_ra & ~Negate_Rx_mac_rd )\r
-      Rx_mac_rd <= 1;\r
-    else\r
-      Rx_mac_rd <= 0;\r
-\r
-  real    RxStartTime;\r
-  integer RxPacketCount;\r
-  integer RxByteCount;\r
-\r
-  reg     InPacket;\r
-  integer RxPacketLength;\r
-  reg     IgnoreUntilNextERR;\r
-\r
-   always @( posedge Clk_user or posedge Reset )\r
-    if ( Reset )\r
-      begin\r
-        InPacket = 0;\r
-        RxPacketCount = 0;\r
-        Negate_Rx_mac_rd <= 0;\r
-        IgnoreUntilNextERR = 0;\r
-      end\r
-    else\r
-      begin\r
-        Negate_Rx_mac_rd <= 0;\r
-\r
-        if ( Rx_mac_pa )\r
-          begin : RxWord\r
-            reg [35:0] RxData;\r
-            reg [35:0] Expected;\r
-            reg [35:0] Mask;\r
-\r
-            RxData = { Rx_mac_sop, Rx_mac_eop, Rx_mac_BE, Rx_mac_data };\r
-            casez ( Rx_mac_BE )\r
-              2'b01:   Mask = 36'hfff000000;\r
-              2'b10:   Mask = 36'hfffff0000;\r
-              2'b11:   Mask = 36'hfffffff00;\r
-              default: Mask = 36'hfffffffff;\r
-            endcase\r
-\r
-            // Retrieve expected packet data\r
-\r
-            if ( !IgnoreUntilNextERR )\r
-              begin\r
-                FIFO_Rd( Expected );\r
-                if ( Expected[35] & Expected[34] )\r
-                  begin\r
-                    // Both SOP & EOP are asserted in expectancy data\r
-                    // - this means that we should ignore all data received until next EOP\r
-                    $display( "The payload of this packet will be IGNORED - and an ERROR must be signalled!" );\r
-                    IgnoreUntilNextERR = 1;\r
-                  end\r
-              end\r
-            if ( IgnoreUntilNextERR )\r
-              Mask = 36'h000000000;\r
-\r
-            //$display( "DEBUG: RxData=0x%0x, Expected=0x%0x", RxData, Expected );\r
-\r
-            if ( (RxData & Mask) !== (Expected & Mask) )\r
-              begin\r
-                $display( "ERROR: Receiving unexpected packet data: Got 0x%0x, expected 0x%0x (Mask=0x%0x)",\r
-                          RxData, Expected, Mask );\r
-                Error = 1;\r
-              end\r
-\r
-            if ( InPacket )\r
-              begin\r
-                if ( Rx_mac_eop )\r
-                  begin\r
-                    // Ensure Rx_mac_rd is negated for one clock\r
-                    Negate_Rx_mac_rd <= 1;\r
-                    if ( Rx_mac_BE==2'b00 )\r
-                      RxPacketLength = RxPacketLength + 4;\r
-                    else\r
-                      RxPacketLength = RxPacketLength + Rx_mac_BE;\r
-                    $display( "Rx packet #%0d of length %0d ends",\r
-                              RxPacketCount,\r
-                              RxPacketLength );\r
-                    RxPacketCount = RxPacketCount + 1;\r
-                    RxByteCount = RxByteCount + RxPacketLength;\r
-                    InPacket = 0;\r
-                  end\r
-                else\r
-                  RxPacketLength = RxPacketLength + 4;\r
-              end\r
-            else\r
-              begin\r
-                if ( Rx_mac_sop )\r
-                  begin\r
-                    RxPacketLength = 4;\r
-                    $display( "Rx packet #%0d begins: 0x%08x", RxPacketCount, Rx_mac_data );\r
-                    InPacket = 1;\r
-                    if ( RxStartTime == 0 )\r
-                      RxStartTime = $realtime;\r
-                  end\r
-                else\r
-                  begin\r
-                    $display( "ERROR: Unexpectedly reading from Rx FIFO while not receiving a packet!" );\r
-                    Error = 1;\r
-                  end\r
-              end\r
-\r
-            if ( Rx_mac_err )\r
-              begin\r
-                if ( !Rx_mac_eop )\r
-                  begin\r
-                    $display( "ERROR: Rx_mac_err was asserted without Rx_mac_eop also being asserted!" );\r
-                    Error = 1;\r
-                  end\r
-                if ( IgnoreUntilNextERR )\r
-                  $display( "Info: Rx_mac_err was asserted as expected!" );\r
-                else\r
-                  begin\r
-                    $display( "ERROR: Rx_mac_err was unexpectedly asserted!" );\r
-                    Error = 1;\r
-                  end\r
-                IgnoreUntilNextERR = 0;\r
-              end\r
-          end\r
-      end\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Script handling\r
-  //-------------------------------------------------------------------------\r
-\r
-  integer PC;\r
-\r
-  task ScriptWriteReg;\r
-    input [15:0] Addr;\r
-    input [15:0] Data;\r
-\r
-    begin\r
-      $display( "WriteReg( 0x%04x, 0x%04x )", Addr, Data );\r
-      HostWriteReg( Addr, Data );\r
-    end\r
-  endtask\r
-\r
-  task ScriptReadReg;\r
-    input [15:0] Addr;\r
-\r
-    reg [15:0] Data;\r
-\r
-    begin\r
-      $write( "ReadReg( 0x%04x ): ", Addr );\r
-      HostReadReg( Addr, Data );\r
-      $display( "0x%04x", Data );\r
-    end\r
-  endtask\r
-\r
-  task ScriptReadRegAndMatch;\r
-    input [15:0] Addr;\r
-    input [15:0] Data;\r
-    input [15:0] Mask;\r
-\r
-    reg [15:0] Read;\r
-\r
-    begin\r
-      $write( "ReadRegAndMatch( 0x%04x, 0x%04x, 0x%04x ): ", Addr, Data, Mask );\r
-\r
-      HostReadReg( Addr, Read );\r
-      $display( "0x%04x, masked=0x%04x", Read, Read & Mask );\r
-\r
-      if ( Data !== (Read & Mask) )\r
-        begin\r
-          $display( "Error: Unexpected data read" );\r
-          Error = 1;\r
-        end\r
-    end\r
-  endtask\r
-\r
-  integer RxExpectPacketCount = 0;\r
-\r
-  task ScriptSendPacket;\r
-    input [15:0] Length;\r
-    // 0: Don't receive, 1: Receive & match, 2: Receive & match alternate, 3: Receive & ignore\r
-    input [1:0]  ExpectToRx;\r
-\r
-    begin\r
-      $display( "ScriptSendPacket( 0x%04x, %0d )", Length, ExpectToRx );\r
-      SendPacket( Length, ExpectToRx );\r
-      if ( ExpectToRx != 0 )\r
-        RxExpectPacketCount = RxExpectPacketCount + 1;\r
-    end\r
-  endtask\r
-\r
-  `define SCRIPTLEN 10000\r
-  integer i;\r
-  reg [7:0] Script[0:`SCRIPTLEN-1];\r
-\r
-  function [15:0] Get16bit;\r
-    input Dummy;\r
-\r
-    reg [15:0] Data;\r
-\r
-    begin\r
-      Data[15:8] = Script[PC];\r
-      Data[7:0]  = Script[PC+1];\r
-      PC = PC+2;\r
-\r
-      Get16bit = Data;\r
-    end\r
-  endfunction\r
-\r
-  task ExecuteScript;\r
-\r
-    reg [7:0] OpCode;\r
-    reg [15:0] Addr;\r
-    reg [15:0] Data;\r
-    reg [15:0] Length;\r
-    reg [15:0] Count;\r
-    reg [15:0] Mask;\r
-\r
-    reg ScriptDone;\r
-\r
-    begin\r
-      ScriptDone = 0;\r
-      Error = 0;\r
-      PC = 0;\r
-      \r
-      while ( !ScriptDone )\r
-        begin\r
-          OpCode = Script[PC];\r
-          //$write( "PC=%0d, OpCode=%02x: ", PC, OpCode );\r
-          PC = PC+1;\r
-          \r
-          casez ( OpCode )\r
-            8'h00: // NOP\r
-              begin\r
-//                $display( "NOP" );\r
-                #10;\r
-              end\r
-            8'h01: // Write\r
-              begin\r
-                Addr = Get16bit(i);\r
-                Data = Get16bit(i);\r
-                ScriptWriteReg( Addr, Data );\r
-              end\r
-            8'h02: // Read\r
-              begin\r
-                Addr = Get16bit(i);\r
-                ScriptReadReg( Addr );\r
-              end\r
-            8'h03: // Read & match\r
-              begin\r
-                Addr = Get16bit(i);\r
-                Data = Get16bit(i);\r
-                Mask = Get16bit(i);\r
-                ScriptReadRegAndMatch( Addr, Data, Mask );\r
-              end\r
-\r
-            8'h0f: // Delay\r
-              begin\r
-                Count = Get16bit(i);\r
-                $display( "Delay %0d", Count );\r
-                while ( Count > 0 )\r
-                  begin\r
-                    #10;\r
-                    Count = Count - 1;\r
-                  end\r
-              end\r
-\r
-            8'h10: // Setup Tx Data\r
-              begin\r
-                Addr   = Get16bit(i);\r
-                Length = Get16bit(i);\r
-                $write( "TxData( 0x%04x ), length=%0d: ", Addr, Length );\r
-                while ( Length != 0 )\r
-                  begin\r
-                    TxData[Addr] = Script[PC];\r
-                    $write( " 0x%02x", Script[PC] );\r
-                    PC = PC + 1;\r
-                    Addr = Addr + 1;\r
-                    Length = Length - 1;\r
-                  end\r
-                $display( "" );\r
-              end\r
-\r
-            8'h11: // Setup Alternative Tx Data\r
-              begin\r
-                Addr   = Get16bit(i);\r
-                Length = Get16bit(i);\r
-                $write( "TxAltData( 0x%04x ), length=%0d: ", Addr, Length );\r
-                while ( Length != 0 )\r
-                  begin\r
-                    TxAltData[Addr] = Script[PC];\r
-                    $write( " 0x%02x", Script[PC] );\r
-                    PC = PC + 1;\r
-                    Addr = Addr + 1;\r
-                    Length = Length - 1;\r
-                  end\r
-                $display( "" );\r
-              end\r
-\r
-            8'h20: // Transmit packet - and put it on Rx expectancy queue\r
-              begin\r
-                Length = Get16bit(i); // Length in bytes\r
-                Count  = Get16bit(i); // Number of times\r
-                while ( Count != 0 )\r
-                  begin\r
-                    ScriptSendPacket( Length, 1 );\r
-                    Count = Count - 1;\r
-                  end\r
-              end\r
-\r
-            8'h21: // Transmit packet - but DON'T put it on Rx expectancy queue\r
-              begin\r
-                Length = Get16bit(i); // Length in bytes\r
-                Count  = Get16bit(i); // Number of times\r
-                while ( Count != 0 )\r
-                  begin\r
-                    ScriptSendPacket( Length, 0 );\r
-                    Count = Count - 1;\r
-                  end\r
-              end\r
-\r
-            8'h22: // Wait\r
-              begin : OpCode22\r
-                reg NoTimeOut;\r
-                Count = Get16bit(i); // Timeout in ns\r
-                if ( Count==0 )\r
-                  NoTimeOut = 1;\r
-                else\r
-                  NoTimeOut = 0;\r
-\r
-                $display( "Waiting for # of Rx packets = # of Tx packets..." );\r
-                $display( "Timeout = %0d ns - Current # Rx =%0d, Expected=%0d",\r
-                          Count, RxPacketCount, RxExpectPacketCount );\r
-\r
-                while( (NoTimeOut || (Count != 0)) && ( RxExpectPacketCount != RxPacketCount ) && !Error )\r
-                  begin\r
-                    #1;\r
-                    if ( !NoTimeOut )\r
-                      Count = Count - 1;\r
-                    //$display( "NoTimeOut=%0d, Count=%0d", NoTimeOut, Count );\r
-                  end\r
-\r
-                if ( !Error )\r
-                  if ( RxExpectPacketCount != RxPacketCount )\r
-                    begin\r
-                      $display( "ERROR: Timeout waiting for Rx packet(s)!" );\r
-                      ScriptDone = 1;\r
-                      Error = 1;\r
-                    end\r
-                  else\r
-                    $display( "...Done waiting (time remaining = %0d ns)!", Count );\r
-              end\r
-\r
-            8'h23: // Inject bit error in Tx packet\r
-              begin\r
-                InjectError = Get16bit(i); // Get bit error pattern\r
-                $display( "Injecting a single bit-error in Tx packet: TxEr=%0d, TxEn=%0d, TxD=0x%02h (0x%03h)",\r
-                          InjectError[9], InjectError[8], InjectError[7:0], InjectError );\r
-              end\r
-\r
-            8'h24: // Store internally generated PAUSE frame in Rx expect queue\r
-              begin\r
-                Count = Get16bit(i); // Timeout in ns\r
-                $display( "Generating PAUSE frame (tick=%0d) on Rx expect queue", Count );\r
-                RxExpectPacketCount = RxExpectPacketCount + 1;\r
-                FIFO_Wr( { 1'b1, 1'b0, 2'b00, 32'h0180c200 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 16'h0001, 16'h0000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h88080001 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, Count, 16'h0000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b0, 2'b00, 32'h00000000 } );\r
-                FIFO_Wr( { 1'b0, 1'b1, 2'b00, 32'h00000000 } );\r
-              end\r
-\r
-            8'h25: // Transmit packet - and indicate that it must be IGNORED upon reception\r
-              begin\r
-                Length = Get16bit(i); // Length in bytes\r
-                Count  = Get16bit(i); // Number of times\r
-                while ( Count != 0 )\r
-                  begin\r
-                    ScriptSendPacket( Length, 3 );\r
-                    Count = Count - 1;\r
-                  end\r
-              end\r
-\r
-            8'h26: // Transmit packet - and put it on expectancy queue with Alternate header!\r
-              begin\r
-                Length = Get16bit(i); // Length in bytes\r
-                Count  = Get16bit(i); // Number of times\r
-                while ( Count != 0 )\r
-                  begin\r
-                    ScriptSendPacket( Length, 2 );\r
-                    Count = Count - 1;\r
-                  end\r
-              end\r
-\r
-            8'hff: // Halt\r
-              begin\r
-                $display( "HALT" );\r
-                ScriptDone = 1;\r
-                Done = 1;\r
-              end\r
-\r
-            default: // Unknown opcode\r
-              begin\r
-                $display( "Unknown instruction encountered @ PC=%0d: OpCode=0x%02x", PC-1, OpCode );\r
-                Error = 1;\r
-              end\r
-\r
-          endcase\r
-\r
-          if ( Error )\r
-            begin\r
-              ScriptDone = 1;\r
-              Done = 1;\r
-            end\r
-        end\r
-\r
-      if ( Error )\r
-        $display( "ERROR: Test failed!");\r
-      else\r
-        begin : ScriptSuccess\r
-          real TxTimeElapsed;\r
-          real RxTimeElapsed;\r
-          real ReferenceTime;\r
-\r
-          ReferenceTime = $realtime;\r
-          #1;\r
-          ReferenceTime = $realtime - ReferenceTime;\r
-\r
-          TxTimeElapsed = $realtime - TxStartTime;\r
-          RxTimeElapsed = $realtime - RxStartTime;\r
-\r
-          $display( "TxStartTime=%0e, Now=%0e", TxStartTime, $realtime );\r
-          $display( "RxStartTime=%0e, Now=%0e", RxStartTime, $realtime );\r
-          \r
-          $display( "Tx stats: %0d packet(s) send, total of %0d bytes in %0e ns ~ %1.2f Mbps",\r
-                    TxPacketCount, TxByteCount, TxTimeElapsed, TxByteCount*8*1e3/TxTimeElapsed );\r
-          $display( "Rx stats: %0d packet(s) received, total of %0d bytes in %0e ns ~ %1.2f Mbps",\r
-                    RxPacketCount, RxByteCount, RxTimeElapsed, RxByteCount*8*1e3/RxTimeElapsed );\r
-          $display( "Test succeeded!");\r
-        end\r
-\r
-    end\r
-  endtask\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Generate all clocks\r
-  //-------------------------------------------------------------------------\r
-\r
-  // GMII master clock (125 MHz)\r
-  initial \r
-    begin\r
-      #10;\r
-      while ( !Done )\r
-        begin\r
-          #4 Clk_125M = 0;\r
-          #4 Clk_125M = 1;\r
-        end\r
-    end\r
-\r
-  // User (packet) interface clock (100 MHz)\r
-  initial \r
-    begin\r
-      #10;\r
-      while ( !Done )\r
-        begin\r
-          #5 Clk_user = 0;\r
-          #5 Clk_user = 1;\r
-        end\r
-    end\r
-\r
-  // Wishbone host interface clock (50 MHz)\r
-  initial\r
-    begin\r
-      #10;\r
-      while ( !Done )\r
-        begin\r
-          #10 CLK_I = 0;\r
-          #10 CLK_I = 1;\r
-        end\r
-    end\r
-\r
-  //-------------------------------------------------------------------------\r
-\r
-  initial\r
-    begin\r
-      if ( $test$plusargs( "vcd" ) )\r
-        begin\r
-          $display( "Turning VCD data dump on" );\r
-          $dumpfile();\r
-          $dumpvars( 0 ); // Dump all signals in entire design\r
-        end\r
-    end\r
-\r
-  //-------------------------------------------------------------------------\r
-\r
-  reg [1023:0] ScriptFile;\r
-\r
-  initial\r
-    begin\r
-      HostInit;\r
-\r
-      TxStartTime = 0;\r
-      RxStartTime = 0;\r
-      TxByteCount = 0;\r
-      RxByteCount = 0;\r
-\r
-      for ( i=0; i<`TXDATALEN; i=i+1 )\r
-        TxData[i] = (i & 8'hff);\r
-\r
-      // Fill script memory with HALTs\r
-      for ( i=0; i<`SCRIPTLEN; i=i+1 )\r
-        Script[i] = 8'hff;\r
-\r
-      if ( !$value$plusargs( "script=%s", ScriptFile ) )\r
-        begin\r
-          $display( "Using default script file" );\r
-          ScriptFile = "test.scr";\r
-        end\r
-\r
-      $readmemh( ScriptFile, Script );\r
-\r
-//      for ( i=0; i<40; i=i+1 )\r
-//        $display( "Script[%0d]=0x%02x", i, Script[i] );\r
-\r
-      #10;\r
-\r
-      ExecuteScript;\r
-    end\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/bench/verilog/test.scr b/usrp2/fpga/eth/bench/verilog/test.scr
deleted file mode 100644 (file)
index 2ad127d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-// This tests just runs trough a couple of different packet lengths\r
-\r
-// Read from register 24 to confirm that Rx CRC check is enabled\r
-03 00 18 00 01 ff ff\r
-\r
-// Set speed to 1000 Mbps\r
-01 00 22 00 04\r
-\r
-// Setup Tx and Rx MAC addresses and type field to "IP"\r
-// Set Tx Data at offset 0, length 14 to 123456789ABC CBA987654321 0800\r
-10 00 00 00 0E 12 34 56 78 9A BC CB A9 87 65 43 21 08 00\r
-\r
-// Transmit a 320-byte frame 1 time - and expect it to be received again!\r
-20 01 40 00 01\r
-\r
-// Transmit a 80-byte frame 1 time - and expect it to be received again!\r
-20 00 50 00 01\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Halt\r
-FF\r
diff --git a/usrp2/fpga/eth/bench/verilog/txmac.scr b/usrp2/fpga/eth/bench/verilog/txmac.scr
deleted file mode 100644 (file)
index caa7db5..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-// Read from register 24 to confirm that Rx CRC check is enabled\r
-03 00 18 00 01 ff ff\r
-\r
-// Set speed to 1000 Mbps\r
-01 00 22 00 04\r
-\r
-// Write MAC address 12 35 56 78 9A BC to Rx Address buffer\r
-01 00 10 00 00\r
-01 00 0f 00 12\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 01\r
-01 00 0f 00 34\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 02\r
-01 00 0f 00 56\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 03\r
-01 00 0f 00 78\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 04\r
-01 00 0f 00 9A\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-01 00 10 00 05\r
-01 00 0f 00 BC\r
-01 00 11 00 01\r
-01 00 11 00 00\r
-\r
-// Write 1 to register 14, MAC_rx_add_chk_en\r
-// This turns on the Rx Destination MAC address filter\r
-01 00 0e 00 01\r
-\r
-// Setup Tx and Rx MAC addresses and type field to "IP"\r
-// Set Tx Data at offset 0, length 14 to 123456789ABC CBA987654321 0800\r
-// (i.e. Destination MAC address is 123456789ABC matching the above)\r
-10 00 00 00 0E 12 34 56 78 9A BC CB A9 87 65 43 21 08 00\r
-\r
-// Setup Alternate Tx and Rx MAC addresses and type field to "IP"\r
-// Set Tx Data at offset 0, length 14 to 123456789ABC 112233445566 0800\r
-// (i.e. Destination MAC address is 123456789ABC matching the above)\r
-11 00 00 00 0E 12 34 56 78 9A BC 11 22 33 44 55 66 08 00\r
-\r
-// Transmit a 60-byte frame 3 times - and expect them to be received again!\r
-20 00 3C 00 03\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Write MAC address 11 22 33 44 55 66 to Tx MAC Source Address buffer\r
-01 00 09 00 00\r
-01 00 08 00 11\r
-01 00 0a 00 01\r
-01 00 0a 00 00\r
-01 00 09 00 01\r
-01 00 08 00 22\r
-01 00 0a 00 01\r
-01 00 0a 00 00\r
-01 00 09 00 02\r
-01 00 08 00 33\r
-01 00 0a 00 01\r
-01 00 0a 00 00\r
-01 00 09 00 03\r
-01 00 08 00 44\r
-01 00 0a 00 01\r
-01 00 0a 00 00\r
-01 00 09 00 04\r
-01 00 08 00 55\r
-01 00 0a 00 01\r
-01 00 0a 00 00\r
-01 00 09 00 05\r
-01 00 08 00 66\r
-01 00 0a 00 01\r
-01 00 0a 00 00\r
-\r
-// Transmit a 60 byte frame 3 times - and expect them to be received again!\r
-20 00 3C 00 03\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
-\r
-// Write 1 to register 7, MAC_tx_add_en\r
-// This turns on the Tx Source MAC address replacement mechanism\r
-01 00 07 00 01\r
-\r
-// Transmit a 60 byte frame 3 times - and expect them to be received again with Alternate header!\r
-26 00 3C 00 03\r
-\r
-// Wait (indefinitely) for missing Rx packets\r
-22 00 00 \r
diff --git a/usrp2/fpga/eth/bench/verilog/xlnx_glbl.v b/usrp2/fpga/eth/bench/verilog/xlnx_glbl.v
deleted file mode 100644 (file)
index 662a60e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-module xlnx_glbl\r
-(\r
-  GSR,\r
-  GTS\r
-);\r
-\r
-  //--------------------------------------------------------------------------\r
-  // Parameters\r
-  //--------------------------------------------------------------------------\r
-\r
-  //--------------------------------------------------------------------------\r
-  // IO declarations\r
-  //--------------------------------------------------------------------------\r
-\r
-  output GSR;\r
-  output GTS;\r
-\r
-  //--------------------------------------------------------------------------\r
-  // Local declarations\r
-  //--------------------------------------------------------------------------\r
-\r
-  //--------------------------------------------------------------------------\r
-  // Internal declarations\r
-  //--------------------------------------------------------------------------\r
-\r
-  assign GSR = 0;\r
-  assign GTS = 0;\r
-  \r
-endmodule\r
diff --git a/usrp2/fpga/eth/demo/verilog/RAMB16_S1_S2.v b/usrp2/fpga/eth/demo/verilog/RAMB16_S1_S2.v
deleted file mode 100644 (file)
index 758760b..0000000
+++ /dev/null
@@ -1,1535 +0,0 @@
-// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/unisims/RAMB16_S1_S2.v,v 1.10 2005/03/14 22:54:41 wloo Exp $
-///////////////////////////////////////////////////////////////////////////////
-// Copyright (c) 1995/2005 Xilinx, Inc.
-// All Right Reserved.
-///////////////////////////////////////////////////////////////////////////////
-//   ____  ____
-//  /   /\/   /
-// /___/  \  /    Vendor : Xilinx
-// \   \   \/     Version : 8.1i (I.13)
-//  \   \         Description : Xilinx Functional Simulation Library Component
-//  /   /                  16K-Bit Data and 2K-Bit Parity Dual Port Block RAM
-// /___/   /\     Filename : RAMB16_S1_S2.v
-// \   \  /  \    Timestamp : Thu Mar 10 16:43:35 PST 2005
-//  \___\/\___\
-//
-// Revision:
-//    03/23/04 - Initial version.
-// End Revision
-
-`ifdef legacy_model
-
-`timescale  1 ps / 1 ps
-
-module RAMB16_S1_S2 (DOA, DOB, ADDRA, ADDRB, CLKA, CLKB, DIA, DIB, ENA, ENB, SSRA, SSRB, WEA, WEB);
-
-    parameter INIT_A = 1'h0;
-    parameter INIT_B = 2'h0;
-    parameter SRVAL_A = 1'h0;
-    parameter SRVAL_B = 2'h0;
-    parameter WRITE_MODE_A = "WRITE_FIRST";
-    parameter WRITE_MODE_B = "WRITE_FIRST";
-    parameter SIM_COLLISION_CHECK = "ALL";
-    localparam SETUP_ALL = 1000;
-    localparam SETUP_READ_FIRST = 3000;
-
-    parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-
-    output [0:0] DOA;
-    reg [0:0] doa_out;
-    wire doa_out0;
-
-    input [13:0] ADDRA;
-    input [0:0] DIA;
-    input ENA, CLKA, WEA, SSRA;
-
-    output [1:0] DOB;
-    reg [1:0] dob_out;
-    wire dob_out0, dob_out1;
-
-    input [12:0] ADDRB;
-    input [1:0] DIB;
-    input ENB, CLKB, WEB, SSRB;
-
-    reg [18431:0] mem;
-    reg [8:0] count;
-    reg [1:0] wr_mode_a, wr_mode_b;
-
-    reg [5:0] dmi, dbi;
-    reg [5:0] pmi, pbi;
-
-    wire [13:0] addra_int;
-    reg [13:0] addra_reg;
-    wire [0:0] dia_int;
-    wire ena_int, clka_int, wea_int, ssra_int;
-    reg ena_reg, wea_reg, ssra_reg;
-    wire [12:0] addrb_int;
-    reg [12:0] addrb_reg;
-    wire [1:0] dib_int;
-    wire enb_int, clkb_int, web_int, ssrb_int;
-    reg display_flag;
-    reg enb_reg, web_reg, ssrb_reg;
-
-    time time_clka, time_clkb;
-    time time_clka_clkb;
-    time time_clkb_clka;
-
-    reg setup_all_a_b;
-    reg setup_all_b_a;
-    reg setup_zero;
-    reg setup_rf_a_b;
-    reg setup_rf_b_a;
-    reg [1:0] data_collision, data_collision_a_b, data_collision_b_a;
-    reg memory_collision, memory_collision_a_b, memory_collision_b_a;
-    reg address_collision, address_collision_a_b, address_collision_b_a;
-    reg change_clka;
-    reg change_clkb;
-
-    wire [14:0] data_addra_int;
-    wire [14:0] data_addra_reg;
-    wire [14:0] data_addrb_int;
-    wire [14:0] data_addrb_reg;
-    wire [15:0] parity_addra_int;
-    wire [15:0] parity_addra_reg;
-    wire [15:0] parity_addrb_int;
-    wire [15:0] parity_addrb_reg;
-
-    tri0 GSR = glbl.GSR;
-
-    always @(GSR)
-       if (GSR) begin
-           assign doa_out = INIT_A[0:0];
-           assign dob_out = INIT_B[1:0];
-       end
-       else begin
-           deassign doa_out;
-           deassign dob_out;
-       end
-
-    buf b_doa_out0 (doa_out0, doa_out[0]);
-    buf b_dob_out0 (dob_out0, dob_out[0]);
-    buf b_dob_out1 (dob_out1, dob_out[1]);
-
-    buf b_doa0 (DOA[0], doa_out0);
-    buf b_dob0 (DOB[0], dob_out0);
-    buf b_dob1 (DOB[1], dob_out1);
-
-    buf b_addra_0 (addra_int[0], ADDRA[0]);
-    buf b_addra_1 (addra_int[1], ADDRA[1]);
-    buf b_addra_2 (addra_int[2], ADDRA[2]);
-    buf b_addra_3 (addra_int[3], ADDRA[3]);
-    buf b_addra_4 (addra_int[4], ADDRA[4]);
-    buf b_addra_5 (addra_int[5], ADDRA[5]);
-    buf b_addra_6 (addra_int[6], ADDRA[6]);
-    buf b_addra_7 (addra_int[7], ADDRA[7]);
-    buf b_addra_8 (addra_int[8], ADDRA[8]);
-    buf b_addra_9 (addra_int[9], ADDRA[9]);
-    buf b_addra_10 (addra_int[10], ADDRA[10]);
-    buf b_addra_11 (addra_int[11], ADDRA[11]);
-    buf b_addra_12 (addra_int[12], ADDRA[12]);
-    buf b_addra_13 (addra_int[13], ADDRA[13]);
-    buf b_dia_0 (dia_int[0], DIA[0]);
-    buf b_ena (ena_int, ENA);
-    buf b_clka (clka_int, CLKA);
-    buf b_ssra (ssra_int, SSRA);
-    buf b_wea (wea_int, WEA);
-    buf b_addrb_0 (addrb_int[0], ADDRB[0]);
-    buf b_addrb_1 (addrb_int[1], ADDRB[1]);
-    buf b_addrb_2 (addrb_int[2], ADDRB[2]);
-    buf b_addrb_3 (addrb_int[3], ADDRB[3]);
-    buf b_addrb_4 (addrb_int[4], ADDRB[4]);
-    buf b_addrb_5 (addrb_int[5], ADDRB[5]);
-    buf b_addrb_6 (addrb_int[6], ADDRB[6]);
-    buf b_addrb_7 (addrb_int[7], ADDRB[7]);
-    buf b_addrb_8 (addrb_int[8], ADDRB[8]);
-    buf b_addrb_9 (addrb_int[9], ADDRB[9]);
-    buf b_addrb_10 (addrb_int[10], ADDRB[10]);
-    buf b_addrb_11 (addrb_int[11], ADDRB[11]);
-    buf b_addrb_12 (addrb_int[12], ADDRB[12]);
-    buf b_dib_0 (dib_int[0], DIB[0]);
-    buf b_dib_1 (dib_int[1], DIB[1]);
-    buf b_enb (enb_int, ENB);
-    buf b_clkb (clkb_int, CLKB);
-    buf b_ssrb (ssrb_int, SSRB);
-    buf b_web (web_int, WEB);
-
-    initial begin
-       for (count = 0; count < 256; count = count + 1) begin
-           mem[count]            <= INIT_00[count];
-           mem[256 * 1 + count]  <= INIT_01[count];
-           mem[256 * 2 + count]  <= INIT_02[count];
-           mem[256 * 3 + count]  <= INIT_03[count];
-           mem[256 * 4 + count]  <= INIT_04[count];
-           mem[256 * 5 + count]  <= INIT_05[count];
-           mem[256 * 6 + count]  <= INIT_06[count];
-           mem[256 * 7 + count]  <= INIT_07[count];
-           mem[256 * 8 + count]  <= INIT_08[count];
-           mem[256 * 9 + count]  <= INIT_09[count];
-           mem[256 * 10 + count] <= INIT_0A[count];
-           mem[256 * 11 + count] <= INIT_0B[count];
-           mem[256 * 12 + count] <= INIT_0C[count];
-           mem[256 * 13 + count] <= INIT_0D[count];
-           mem[256 * 14 + count] <= INIT_0E[count];
-           mem[256 * 15 + count] <= INIT_0F[count];
-           mem[256 * 16 + count] <= INIT_10[count];
-           mem[256 * 17 + count] <= INIT_11[count];
-           mem[256 * 18 + count] <= INIT_12[count];
-           mem[256 * 19 + count] <= INIT_13[count];
-           mem[256 * 20 + count] <= INIT_14[count];
-           mem[256 * 21 + count] <= INIT_15[count];
-           mem[256 * 22 + count] <= INIT_16[count];
-           mem[256 * 23 + count] <= INIT_17[count];
-           mem[256 * 24 + count] <= INIT_18[count];
-           mem[256 * 25 + count] <= INIT_19[count];
-           mem[256 * 26 + count] <= INIT_1A[count];
-           mem[256 * 27 + count] <= INIT_1B[count];
-           mem[256 * 28 + count] <= INIT_1C[count];
-           mem[256 * 29 + count] <= INIT_1D[count];
-           mem[256 * 30 + count] <= INIT_1E[count];
-           mem[256 * 31 + count] <= INIT_1F[count];
-           mem[256 * 32 + count] <= INIT_20[count];
-           mem[256 * 33 + count] <= INIT_21[count];
-           mem[256 * 34 + count] <= INIT_22[count];
-           mem[256 * 35 + count] <= INIT_23[count];
-           mem[256 * 36 + count] <= INIT_24[count];
-           mem[256 * 37 + count] <= INIT_25[count];
-           mem[256 * 38 + count] <= INIT_26[count];
-           mem[256 * 39 + count] <= INIT_27[count];
-           mem[256 * 40 + count] <= INIT_28[count];
-           mem[256 * 41 + count] <= INIT_29[count];
-           mem[256 * 42 + count] <= INIT_2A[count];
-           mem[256 * 43 + count] <= INIT_2B[count];
-           mem[256 * 44 + count] <= INIT_2C[count];
-           mem[256 * 45 + count] <= INIT_2D[count];
-           mem[256 * 46 + count] <= INIT_2E[count];
-           mem[256 * 47 + count] <= INIT_2F[count];
-           mem[256 * 48 + count] <= INIT_30[count];
-           mem[256 * 49 + count] <= INIT_31[count];
-           mem[256 * 50 + count] <= INIT_32[count];
-           mem[256 * 51 + count] <= INIT_33[count];
-           mem[256 * 52 + count] <= INIT_34[count];
-           mem[256 * 53 + count] <= INIT_35[count];
-           mem[256 * 54 + count] <= INIT_36[count];
-           mem[256 * 55 + count] <= INIT_37[count];
-           mem[256 * 56 + count] <= INIT_38[count];
-           mem[256 * 57 + count] <= INIT_39[count];
-           mem[256 * 58 + count] <= INIT_3A[count];
-           mem[256 * 59 + count] <= INIT_3B[count];
-           mem[256 * 60 + count] <= INIT_3C[count];
-           mem[256 * 61 + count] <= INIT_3D[count];
-           mem[256 * 62 + count] <= INIT_3E[count];
-           mem[256 * 63 + count] <= INIT_3F[count];
-       end
-       address_collision <= 0;
-       address_collision_a_b <= 0;
-       address_collision_b_a <= 0;
-       change_clka <= 0;
-       change_clkb <= 0;
-       data_collision <= 0;
-       data_collision_a_b <= 0;
-       data_collision_b_a <= 0;
-       memory_collision <= 0;
-       memory_collision_a_b <= 0;
-       memory_collision_b_a <= 0;
-       setup_all_a_b <= 0;
-       setup_all_b_a <= 0;
-       setup_zero <= 0;
-       setup_rf_a_b <= 0;
-       setup_rf_b_a <= 0;
-    end
-
-    assign data_addra_int = addra_int * 1;
-    assign data_addra_reg = addra_reg * 1;
-    assign data_addrb_int = addrb_int * 2;
-    assign data_addrb_reg = addrb_reg * 2;
-
-
-    initial begin
-
-       display_flag = 1;
-
-       case (SIM_COLLISION_CHECK)
-
-           "NONE" : begin
-                        assign setup_all_a_b = 1'b0;
-                        assign setup_all_b_a = 1'b0;
-                        assign setup_zero = 1'b0;
-                        assign setup_rf_a_b = 1'b0;
-                        assign setup_rf_b_a = 1'b0;
-                        assign display_flag = 0;
-                    end
-           "WARNING_ONLY" : begin
-                                assign data_collision = 2'b00;
-                                assign data_collision_a_b = 2'b00;
-                                assign data_collision_b_a = 2'b00;
-                                assign memory_collision = 1'b0;
-                                assign memory_collision_a_b = 1'b0;
-                                assign memory_collision_b_a = 1'b0;
-                            end
-           "GENERATE_X_ONLY" : begin
-                                   assign display_flag = 0;
-                               end
-           "ALL" : ;
-           default : begin
-                         $display("Attribute Syntax Error : The Attribute SIM_COLLISION_CHECK on RAMB16_S1_S2 instance %m is set to %s.  Legal values for this attribute are ALL, NONE, WARNING_ONLY or GENERATE_X_ONLY.", SIM_COLLISION_CHECK);
-                         $finish;
-                     end
-
-       endcase // case(SIM_COLLISION_CHECK)
-
-    end // initial begin
-
-
-    always @(posedge clka_int) begin
-       time_clka = $time;
-       #0 time_clkb_clka = time_clka - time_clkb;
-       change_clka = ~change_clka;
-    end
-
-    always @(posedge clkb_int) begin
-       time_clkb = $time;
-       #0 time_clka_clkb = time_clkb - time_clka;
-       change_clkb = ~change_clkb;
-    end
-
-    always @(change_clkb) begin
-       if ((0 < time_clka_clkb) && (time_clka_clkb < SETUP_ALL))
-           setup_all_a_b = 1;
-       if ((0 < time_clka_clkb) && (time_clka_clkb < SETUP_READ_FIRST))
-           setup_rf_a_b = 1;
-    end
-
-    always @(change_clka) begin
-       if ((0 < time_clkb_clka) && (time_clkb_clka < SETUP_ALL))
-           setup_all_b_a = 1;
-       if ((0 < time_clkb_clka) && (time_clkb_clka < SETUP_READ_FIRST))
-           setup_rf_b_a = 1;
-    end
-
-    always @(change_clkb or change_clka) begin
-       if ((time_clkb_clka == 0) && (time_clka_clkb == 0))
-           setup_zero = 1;
-    end
-
-    always @(posedge setup_zero) begin
-       if ((ena_int == 1) && (wea_int == 1) &&
-           (enb_int == 1) && (web_int == 1) &&
-           (data_addra_int[14:1] == data_addrb_int[14:1]))
-           memory_collision <= 1;
-    end
-
-    always @(posedge setup_all_a_b or posedge setup_rf_a_b) begin
-       if ((ena_reg == 1) && (wea_reg == 1) &&
-           (enb_int == 1) && (web_int == 1) &&
-           (data_addra_reg[14:1] == data_addrb_int[14:1]))
-           memory_collision_a_b <= 1;
-    end
-
-    always @(posedge setup_all_b_a or posedge setup_rf_b_a) begin
-       if ((ena_int == 1) && (wea_int == 1) &&
-           (enb_reg == 1) && (web_reg == 1) &&
-           (data_addra_int[14:1] == data_addrb_reg[14:1]))
-           memory_collision_b_a <= 1;
-    end
-
-    always @(posedge setup_all_a_b) begin
-       if (data_addra_reg[14:1] == data_addrb_int[14:1]) begin
-       if ((ena_reg == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_reg, web_int})
-               6'b000011 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b000111 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b001011 : begin data_collision_a_b <= 2'b10; display_wa_wb; end
-//             6'b010011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b010111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b011011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-               6'b100011 : begin data_collision_a_b <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision_a_b <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b000101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b001001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b010101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b011001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b100101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b101001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_all_a_b <= 0;
-    end
-
-
-    always @(posedge setup_all_b_a) begin
-       if (data_addra_int[14:1] == data_addrb_reg[14:1]) begin
-       if ((ena_int == 1) && (enb_reg == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_reg})
-               6'b000011 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b000111 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b001011 : begin data_collision_b_a <= 2'b10; display_wa_wb; end
-               6'b010011 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b010111 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b011011 : begin data_collision_b_a <= 2'b10; display_wa_wb; end
-               6'b100011 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b000101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b001001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b010101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b011001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b100101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b101001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_all_b_a <= 0;
-    end
-
-
-    always @(posedge setup_zero) begin
-       if (data_addra_int[14:1] == data_addrb_int[14:1]) begin
-       if ((ena_int == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_int})
-               6'b000011 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b000111 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b001011 : begin data_collision <= 2'b10; display_wa_wb; end
-               6'b010011 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b010111 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b011011 : begin data_collision <= 2'b10; display_wa_wb; end
-               6'b100011 : begin data_collision <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b000101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b001001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b010101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b011001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b100101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b101001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_zero <= 0;
-    end
-
-    task display_ra_wb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S1_S2:%m at simulation time %.3f ns\nA read was performed on address %h (hex) of Port A while a write was requested to the same address on Port B. The write will be successful however the read value on Port A is unknown until the next CLKA cycle.", $time/1000.0, addra_int);
-    end
-    endtask
-
-    task display_wa_rb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S1_S2:%m at simulation time %.3f ns\nA read was performed on address %h (hex) of Port B while a write was requested to the same address on Port A. The write will be successful however the read value on Port B is unknown until the next CLKB cycle.", $time/1000.0, addrb_int);
-    end
-    endtask
-
-    task display_wa_wb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S1_S2:%m at simulation time %.3f ns\nA write was requested to the same address simultaneously at both Port A and Port B of the RAM. The contents written to the RAM at address location %h (hex) of Port A and address location %h (hex) of Port B are unknown.", $time/1000.0, addra_int, addrb_int);
-    end
-    endtask
-
-
-    always @(posedge setup_rf_a_b) begin
-       if (data_addra_reg[14:1] == data_addrb_int[14:1]) begin
-       if ((ena_reg == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_reg, web_int})
-//             6'b000011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b000111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b001011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-               6'b010011 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b010111 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b011011 : begin data_collision_a_b <= 2'b10; display_wa_wb; end
-//             6'b100011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b100111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b101011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b000001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b000101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b001001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b010001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b010101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b011001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b100001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b100101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b101001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b000010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b000110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b001010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-               6'b010010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b010110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b011010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-//             6'b100010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b100110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b101010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_rf_a_b <= 0;
-    end
-
-
-    always @(posedge setup_rf_b_a) begin
-       if (data_addra_int[14:1] == data_addrb_reg[14:1]) begin
-       if ((ena_int == 1) && (enb_reg == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_reg})
-//             6'b000011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b000111 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b001011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b010011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b010111 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b011011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b100011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b100111 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-//             6'b101011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b000001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b000101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b001001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b010001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b010101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b011001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b100001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b100101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b101001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b000010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b000110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b001010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b100010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b100110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b101010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_rf_b_a <= 0;
-    end
-
-
-    always @(posedge clka_int) begin
-       addra_reg <= addra_int;
-       ena_reg <= ena_int;
-       ssra_reg <= ssra_int;
-       wea_reg <= wea_int;
-    end
-
-    always @(posedge clkb_int) begin
-       addrb_reg <= addrb_int;
-       enb_reg <= enb_int;
-       ssrb_reg <= ssrb_int;
-       web_reg <= web_int;
-    end
-
-    // Data
-    always @(posedge memory_collision) begin
-       for (dmi = 0; dmi < 1; dmi = dmi + 1) begin
-           mem[data_addra_int + dmi] <= 1'bX;
-       end
-       memory_collision <= 0;
-    end
-
-    always @(posedge memory_collision_a_b) begin
-       for (dmi = 0; dmi < 1; dmi = dmi + 1) begin
-           mem[data_addra_reg + dmi] <= 1'bX;
-       end
-       memory_collision_a_b <= 0;
-    end
-
-    always @(posedge memory_collision_b_a) begin
-       for (dmi = 0; dmi < 1; dmi = dmi + 1) begin
-           mem[data_addra_int + dmi] <= 1'bX;
-       end
-       memory_collision_b_a <= 0;
-    end
-
-    always @(posedge data_collision[1]) begin
-       if (ssra_int == 0) begin
-           doa_out <= 1'bX;
-       end
-       data_collision[1] <= 0;
-    end
-
-    always @(posedge data_collision[0]) begin
-       if (ssrb_int == 0) begin
-           for (dbi = 0; dbi < 1; dbi = dbi + 1) begin
-               dob_out[data_addra_int[0 : 0] + dbi] <= 1'bX;
-           end
-       end
-       data_collision[0] <= 0;
-    end
-
-    always @(posedge data_collision_a_b[1]) begin
-       if (ssra_reg == 0) begin
-           doa_out <= 1'bX;
-       end
-       data_collision_a_b[1] <= 0;
-    end
-
-    always @(posedge data_collision_a_b[0]) begin
-       if (ssrb_int == 0) begin
-           for (dbi = 0; dbi < 1; dbi = dbi + 1) begin
-               dob_out[data_addra_reg[0 : 0] + dbi] <= 1'bX;
-           end
-       end
-       data_collision_a_b[0] <= 0;
-    end
-
-    always @(posedge data_collision_b_a[1]) begin
-       if (ssra_int == 0) begin
-           doa_out <= 1'bX;
-       end
-       data_collision_b_a[1] <= 0;
-    end
-
-    always @(posedge data_collision_b_a[0]) begin
-       if (ssrb_reg == 0) begin
-           for (dbi = 0; dbi < 1; dbi = dbi + 1) begin
-               dob_out[data_addra_int[0 : 0] + dbi] <= 1'bX;
-           end
-       end
-       data_collision_b_a[0] <= 0;
-    end
-
-
-    initial begin
-       case (WRITE_MODE_A)
-           "WRITE_FIRST" : wr_mode_a <= 2'b00;
-           "READ_FIRST"  : wr_mode_a <= 2'b01;
-           "NO_CHANGE"   : wr_mode_a <= 2'b10;
-           default       : begin
-                               $display("Attribute Syntax Error : The Attribute WRITE_MODE_A on RAMB16_S1_S2 instance %m is set to %s.  Legal values for this attribute are WRITE_FIRST, READ_FIRST or NO_CHANGE.", WRITE_MODE_A);
-                               $finish;
-                           end
-       endcase
-    end
-
-    initial begin
-       case (WRITE_MODE_B)
-           "WRITE_FIRST" : wr_mode_b <= 2'b00;
-           "READ_FIRST"  : wr_mode_b <= 2'b01;
-           "NO_CHANGE"   : wr_mode_b <= 2'b10;
-           default       : begin
-                               $display("Attribute Syntax Error : The Attribute WRITE_MODE_B on RAMB16_S1_S2 instance %m is set to %s.  Legal values for this attribute are WRITE_FIRST, READ_FIRST or NO_CHANGE.", WRITE_MODE_B);
-                               $finish;
-                           end
-       endcase
-    end
-
-    // Port A
-    always @(posedge clka_int) begin
-       if (ena_int == 1'b1) begin
-           if (ssra_int == 1'b1) begin
-               doa_out[0] <= SRVAL_A[0];
-           end
-           else begin
-               if (wea_int == 1'b1) begin
-                   if (wr_mode_a == 2'b00) begin
-                       doa_out <= dia_int;
-                   end
-                   else if (wr_mode_a == 2'b01) begin
-                       doa_out[0] <= mem[data_addra_int + 0];
-                   end
-               end
-               else begin
-                   doa_out[0] <= mem[data_addra_int + 0];
-               end
-           end
-       end
-    end
-
-    always @(posedge clka_int) begin
-       if (ena_int == 1'b1 && wea_int == 1'b1) begin
-           mem[data_addra_int + 0] <= dia_int[0];
-       end
-    end
-
-    // Port B
-    always @(posedge clkb_int) begin
-       if (enb_int == 1'b1) begin
-           if (ssrb_int == 1'b1) begin
-               dob_out[0] <= SRVAL_B[0];
-               dob_out[1] <= SRVAL_B[1];
-           end
-           else begin
-               if (web_int == 1'b1) begin
-                   if (wr_mode_b == 2'b00) begin
-                       dob_out <= dib_int;
-                   end
-                   else if (wr_mode_b == 2'b01) begin
-                       dob_out[0] <= mem[data_addrb_int + 0];
-                       dob_out[1] <= mem[data_addrb_int + 1];
-                   end
-               end
-               else begin
-                   dob_out[0] <= mem[data_addrb_int + 0];
-                   dob_out[1] <= mem[data_addrb_int + 1];
-               end
-           end
-       end
-    end
-
-    always @(posedge clkb_int) begin
-       if (enb_int == 1'b1 && web_int == 1'b1) begin
-           mem[data_addrb_int + 0] <= dib_int[0];
-           mem[data_addrb_int + 1] <= dib_int[1];
-       end
-    end
-
-    specify
-       (CLKA *> DOA) = (100, 100);
-       (CLKB *> DOB) = (100, 100);
-    endspecify
-
-endmodule
-
-`else
-
-// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/unisims/RAMB16_S1_S2.v,v 1.10 2005/03/14 22:54:41 wloo Exp $
-///////////////////////////////////////////////////////////////////////////////
-// Copyright (c) 1995/2005 Xilinx, Inc.
-// All Right Reserved.
-///////////////////////////////////////////////////////////////////////////////
-//   ____  ____
-//  /   /\/   /
-// /___/  \  /    Vendor : Xilinx
-// \   \   \/     Version : 8.1i (I.13)
-//  \   \         Description : Xilinx Timing Simulation Library Component
-//  /   /                  16K-Bit Data and 2K-Bit Parity Dual Port Block RAM
-// /___/   /\     Filename : RAMB16_S1_S2.v
-// \   \  /  \    Timestamp : Thu Mar 10 16:44:01 PST 2005
-//  \___\/\___\
-//
-// Revision:
-//    03/23/04 - Initial version.
-//    03/10/05 - Initialized outputs.
-// End Revision
-
-`timescale 1 ps/1 ps
-
-module RAMB16_S1_S2 (DOA, DOB, ADDRA, ADDRB, CLKA, CLKB, DIA, DIB, ENA, ENB, SSRA, SSRB, WEA, WEB);
-
-    parameter INIT_A = 1'h0;
-    parameter INIT_B = 2'h0;
-    parameter SRVAL_A = 1'h0;
-    parameter SRVAL_B = 2'h0;
-    parameter WRITE_MODE_A = "WRITE_FIRST";
-    parameter WRITE_MODE_B = "WRITE_FIRST";
-    parameter SIM_COLLISION_CHECK = "ALL";
-    localparam SETUP_ALL = 1000;
-    localparam SETUP_READ_FIRST = 3000;
-
-    parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-
-    output [0:0] DOA;
-    output [1:0] DOB;
-
-    input [13:0] ADDRA;
-    input [0:0] DIA;
-    input ENA, CLKA, WEA, SSRA;
-    input [12:0] ADDRB;
-    input [1:0] DIB;
-    input ENB, CLKB, WEB, SSRB;
-
-    reg [0:0] doa_out = INIT_A[0:0];
-    reg [1:0] dob_out = INIT_B[1:0];
-    
-    reg [1:0] mem [8191:0];
-    
-    reg [8:0] count, countp;
-    reg [1:0] wr_mode_a, wr_mode_b;
-
-    reg [5:0] dmi, dbi;
-    reg [5:0] pmi, pbi;
-
-    wire [13:0] addra_int;
-    reg [13:0] addra_reg;
-    wire [0:0] dia_int;
-    wire ena_int, clka_int, wea_int, ssra_int;
-    reg ena_reg, wea_reg, ssra_reg;
-    wire [12:0] addrb_int;
-    reg [12:0] addrb_reg;
-    wire [1:0] dib_int;
-    wire enb_int, clkb_int, web_int, ssrb_int;
-    reg display_flag, output_flag;
-    reg enb_reg, web_reg, ssrb_reg;
-
-    time time_clka, time_clkb;
-    time time_clka_clkb;
-    time time_clkb_clka;
-
-    reg setup_all_a_b;
-    reg setup_all_b_a;
-    reg setup_zero;
-    reg setup_rf_a_b;
-    reg setup_rf_b_a;
-    reg [1:0] data_collision, data_collision_a_b, data_collision_b_a;
-    reg memory_collision, memory_collision_a_b, memory_collision_b_a;
-    reg change_clka;
-    reg change_clkb;
-
-    wire [14:0] data_addra_int;
-    wire [14:0] data_addra_reg;
-    wire [14:0] data_addrb_int;
-    wire [14:0] data_addrb_reg;
-
-    wire dia_enable = ena_int && wea_int;
-    wire dib_enable = enb_int && web_int;
-
-    tri0 GSR = glbl.GSR;
-    wire gsr_int;
-
-    buf b_gsr (gsr_int, GSR);
-
-    buf b_doa [0:0] (DOA, doa_out);
-    buf b_addra [13:0] (addra_int, ADDRA);
-    buf b_dia [0:0] (dia_int, DIA);
-    buf b_ena (ena_int, ENA);
-    buf b_clka (clka_int, CLKA);
-    buf b_ssra (ssra_int, SSRA);
-    buf b_wea (wea_int, WEA);
-
-    buf b_dob [1:0] (DOB, dob_out);
-    buf b_addrb [12:0] (addrb_int, ADDRB);
-    buf b_dib [1:0] (dib_int, DIB);
-    buf b_enb (enb_int, ENB);
-    buf b_clkb (clkb_int, CLKB);
-    buf b_ssrb (ssrb_int, SSRB);
-    buf b_web (web_int, WEB);
-
-    
-    always @(gsr_int)
-       if (gsr_int) begin
-           assign {doa_out} = INIT_A;
-           assign {dob_out} = INIT_B;
-       end
-       else begin
-           deassign doa_out;
-           deassign dob_out;
-       end
-
-    
-    initial begin
-
-       for (count = 0; count < 128; count = count + 1) begin
-           mem[count]          = INIT_00[(count * 2) +: 2];
-           mem[128 * 1 + count]  = INIT_01[(count * 2) +: 2];
-           mem[128 * 2 + count]  = INIT_02[(count * 2) +: 2];
-           mem[128 * 3 + count]  = INIT_03[(count * 2) +: 2];
-           mem[128 * 4 + count]  = INIT_04[(count * 2) +: 2];
-           mem[128 * 5 + count]  = INIT_05[(count * 2) +: 2];
-           mem[128 * 6 + count]  = INIT_06[(count * 2) +: 2];
-           mem[128 * 7 + count]  = INIT_07[(count * 2) +: 2];
-           mem[128 * 8 + count]  = INIT_08[(count * 2) +: 2];
-           mem[128 * 9 + count]  = INIT_09[(count * 2) +: 2];
-           mem[128 * 10 + count] = INIT_0A[(count * 2) +: 2];
-           mem[128 * 11 + count] = INIT_0B[(count * 2) +: 2];
-           mem[128 * 12 + count] = INIT_0C[(count * 2) +: 2];
-           mem[128 * 13 + count] = INIT_0D[(count * 2) +: 2];
-           mem[128 * 14 + count] = INIT_0E[(count * 2) +: 2];
-           mem[128 * 15 + count] = INIT_0F[(count * 2) +: 2];
-           mem[128 * 16 + count] = INIT_10[(count * 2) +: 2];
-           mem[128 * 17 + count] = INIT_11[(count * 2) +: 2];
-           mem[128 * 18 + count] = INIT_12[(count * 2) +: 2];
-           mem[128 * 19 + count] = INIT_13[(count * 2) +: 2];
-           mem[128 * 20 + count] = INIT_14[(count * 2) +: 2];
-           mem[128 * 21 + count] = INIT_15[(count * 2) +: 2];
-           mem[128 * 22 + count] = INIT_16[(count * 2) +: 2];
-           mem[128 * 23 + count] = INIT_17[(count * 2) +: 2];
-           mem[128 * 24 + count] = INIT_18[(count * 2) +: 2];
-           mem[128 * 25 + count] = INIT_19[(count * 2) +: 2];
-           mem[128 * 26 + count] = INIT_1A[(count * 2) +: 2];
-           mem[128 * 27 + count] = INIT_1B[(count * 2) +: 2];
-           mem[128 * 28 + count] = INIT_1C[(count * 2) +: 2];
-           mem[128 * 29 + count] = INIT_1D[(count * 2) +: 2];
-           mem[128 * 30 + count] = INIT_1E[(count * 2) +: 2];
-           mem[128 * 31 + count] = INIT_1F[(count * 2) +: 2];
-           mem[128 * 32 + count] = INIT_20[(count * 2) +: 2];
-           mem[128 * 33 + count] = INIT_21[(count * 2) +: 2];
-           mem[128 * 34 + count] = INIT_22[(count * 2) +: 2];
-           mem[128 * 35 + count] = INIT_23[(count * 2) +: 2];
-           mem[128 * 36 + count] = INIT_24[(count * 2) +: 2];
-           mem[128 * 37 + count] = INIT_25[(count * 2) +: 2];
-           mem[128 * 38 + count] = INIT_26[(count * 2) +: 2];
-           mem[128 * 39 + count] = INIT_27[(count * 2) +: 2];
-           mem[128 * 40 + count] = INIT_28[(count * 2) +: 2];
-           mem[128 * 41 + count] = INIT_29[(count * 2) +: 2];
-           mem[128 * 42 + count] = INIT_2A[(count * 2) +: 2];
-           mem[128 * 43 + count] = INIT_2B[(count * 2) +: 2];
-           mem[128 * 44 + count] = INIT_2C[(count * 2) +: 2];
-           mem[128 * 45 + count] = INIT_2D[(count * 2) +: 2];
-           mem[128 * 46 + count] = INIT_2E[(count * 2) +: 2];
-           mem[128 * 47 + count] = INIT_2F[(count * 2) +: 2];
-           mem[128 * 48 + count] = INIT_30[(count * 2) +: 2];
-           mem[128 * 49 + count] = INIT_31[(count * 2) +: 2];
-           mem[128 * 50 + count] = INIT_32[(count * 2) +: 2];
-           mem[128 * 51 + count] = INIT_33[(count * 2) +: 2];
-           mem[128 * 52 + count] = INIT_34[(count * 2) +: 2];
-           mem[128 * 53 + count] = INIT_35[(count * 2) +: 2];
-           mem[128 * 54 + count] = INIT_36[(count * 2) +: 2];
-           mem[128 * 55 + count] = INIT_37[(count * 2) +: 2];
-           mem[128 * 56 + count] = INIT_38[(count * 2) +: 2];
-           mem[128 * 57 + count] = INIT_39[(count * 2) +: 2];
-           mem[128 * 58 + count] = INIT_3A[(count * 2) +: 2];
-           mem[128 * 59 + count] = INIT_3B[(count * 2) +: 2];
-           mem[128 * 60 + count] = INIT_3C[(count * 2) +: 2];
-           mem[128 * 61 + count] = INIT_3D[(count * 2) +: 2];
-           mem[128 * 62 + count] = INIT_3E[(count * 2) +: 2];
-           mem[128 * 63 + count] = INIT_3F[(count * 2) +: 2];
-       end
-
-       
-       change_clka <= 0;
-       change_clkb <= 0;
-       data_collision <= 0;
-       data_collision_a_b <= 0;
-       data_collision_b_a <= 0;
-       memory_collision <= 0;
-       memory_collision_a_b <= 0;
-       memory_collision_b_a <= 0;
-       setup_all_a_b <= 0;
-       setup_all_b_a <= 0;
-       setup_zero <= 0;
-       setup_rf_a_b <= 0;
-       setup_rf_b_a <= 0;
-    end
-
-    assign data_addra_int = addra_int * 1;
-    assign data_addra_reg = addra_reg * 1;
-    assign data_addrb_int = addrb_int * 2;
-    assign data_addrb_reg = addrb_reg * 2;
-
-
-    initial begin
-
-       display_flag = 1;
-       output_flag = 1;
-       
-       case (SIM_COLLISION_CHECK)
-
-           "NONE" : begin
-                        output_flag = 0;
-                        display_flag = 0;
-                    end
-           "WARNING_ONLY" : output_flag = 0;
-           "GENERATE_ONLY" : display_flag = 0;
-           "ALL" : ;
-
-           default : begin
-                         $display("Attribute Syntax Error : The Attribute SIM_COLLISION_CHECK on RAMB16_S1_S2 instance %m is set to %s.  Legal values for this attribute are ALL, NONE, WARNING_ONLY or GENERATE_ONLY.", SIM_COLLISION_CHECK);
-                         $finish;
-                     end
-
-       endcase // case(SIM_COLLISION_CHECK)
-
-    end // initial begin
-
-    
-    always @(posedge clka_int) begin
-       if ((output_flag || display_flag)) begin
-           time_clka = $time;
-           #0 time_clkb_clka = time_clka - time_clkb;
-           change_clka = ~change_clka;
-       end
-    end
-    
-    always @(posedge clkb_int) begin
-       if ((output_flag || display_flag)) begin
-           time_clkb = $time;
-           #0 time_clka_clkb = time_clkb - time_clka;
-           change_clkb = ~change_clkb;
-       end
-    end
-    
-    always @(change_clkb) begin
-       if ((0 < time_clka_clkb) && (time_clka_clkb < SETUP_ALL))
-           setup_all_a_b = 1;
-       if ((0 < time_clka_clkb) && (time_clka_clkb < SETUP_READ_FIRST))
-           setup_rf_a_b = 1;
-    end
-
-    always @(change_clka) begin
-       if ((0 < time_clkb_clka) && (time_clkb_clka < SETUP_ALL))
-           setup_all_b_a = 1;
-       if ((0 < time_clkb_clka) && (time_clkb_clka < SETUP_READ_FIRST))
-           setup_rf_b_a = 1;
-    end
-
-    always @(change_clkb or change_clka) begin
-       if ((time_clkb_clka == 0) && (time_clka_clkb == 0))
-           setup_zero = 1;
-    end
-
-    always @(posedge setup_zero) begin
-       if ((ena_int == 1) && (wea_int == 1) &&
-           (enb_int == 1) && (web_int == 1) &&
-           (data_addra_int[14:1] == data_addrb_int[14:1]))
-           memory_collision <= 1;
-    end
-
-    always @(posedge setup_all_a_b or posedge setup_rf_a_b) begin
-       if ((ena_reg == 1) && (wea_reg == 1) &&
-           (enb_int == 1) && (web_int == 1) &&
-           (data_addra_reg[14:1] == data_addrb_int[14:1]))
-           memory_collision_a_b <= 1;
-    end
-
-    always @(posedge setup_all_b_a or posedge setup_rf_b_a) begin
-       if ((ena_int == 1) && (wea_int == 1) &&
-           (enb_reg == 1) && (web_reg == 1) &&
-           (data_addra_int[14:1] == data_addrb_reg[14:1]))
-           memory_collision_b_a <= 1;
-    end
-
-    always @(posedge setup_all_a_b) begin
-       if (data_addra_reg[14:1] == data_addrb_int[14:1]) begin
-       if ((ena_reg == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_reg, web_int})
-               6'b000011 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b000111 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b001011 : begin data_collision_a_b <= 2'b10; display_wa_wb; end
-//             6'b010011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b010111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b011011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-               6'b100011 : begin data_collision_a_b <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision_a_b <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b000101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b001001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b010101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b011001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b100101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b101001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_all_a_b <= 0;
-    end
-
-
-    always @(posedge setup_all_b_a) begin
-       if (data_addra_int[14:1] == data_addrb_reg[14:1]) begin
-       if ((ena_int == 1) && (enb_reg == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_reg})
-               6'b000011 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b000111 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b001011 : begin data_collision_b_a <= 2'b10; display_wa_wb; end
-               6'b010011 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b010111 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b011011 : begin data_collision_b_a <= 2'b10; display_wa_wb; end
-               6'b100011 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b000101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b001001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b010101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b011001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b100101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b101001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_all_b_a <= 0;
-    end
-
-
-    always @(posedge setup_zero) begin
-       if (data_addra_int[14:1] == data_addrb_int[14:1]) begin
-       if ((ena_int == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_int})
-               6'b000011 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b000111 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b001011 : begin data_collision <= 2'b10; display_wa_wb; end
-               6'b010011 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b010111 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b011011 : begin data_collision <= 2'b10; display_wa_wb; end
-               6'b100011 : begin data_collision <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b000101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b001001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b010101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b011001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b100101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b101001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_zero <= 0;
-    end
-
-    task display_ra_wb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S1_S2:%m at simulation time %.3f ns\nA read was performed on address %h (hex) of Port A while a write was requested to the same address on Port B. The write will be successful however the read value on Port A is unknown until the next CLKA cycle.", $time/1000.0, addra_int);
-    end
-    endtask
-
-    task display_wa_rb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S1_S2:%m at simulation time %.3f ns\nA read was performed on address %h (hex) of Port B while a write was requested to the same address on Port A. The write will be successful however the read value on Port B is unknown until the next CLKB cycle.", $time/1000.0, addrb_int);
-    end
-    endtask
-
-    task display_wa_wb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S1_S2:%m at simulation time %.3f ns\nA write was requested to the same address simultaneously at both Port A and Port B of the RAM. The contents written to the RAM at address location %h (hex) of Port A and address location %h (hex) of Port B are unknown.", $time/1000.0, addra_int, addrb_int);
-    end
-    endtask
-
-
-    always @(posedge setup_rf_a_b) begin
-       if (data_addra_reg[14:1] == data_addrb_int[14:1]) begin
-       if ((ena_reg == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_reg, web_int})
-//             6'b000011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b000111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b001011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-               6'b010011 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b010111 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b011011 : begin data_collision_a_b <= 2'b10; display_wa_wb; end
-//             6'b100011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b100111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b101011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b000001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b000101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b001001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b010001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b010101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b011001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b100001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b100101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b101001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b000010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b000110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b001010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-               6'b010010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b010110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b011010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-//             6'b100010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b100110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b101010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_rf_a_b <= 0;
-    end
-
-
-    always @(posedge setup_rf_b_a) begin
-       if (data_addra_int[14:1] == data_addrb_reg[14:1]) begin
-       if ((ena_int == 1) && (enb_reg == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_reg})
-//             6'b000011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b000111 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b001011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b010011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b010111 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b011011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b100011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b100111 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-//             6'b101011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b000001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b000101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b001001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b010001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b010101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b011001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b100001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b100101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b101001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b000010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b000110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b001010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b100010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b100110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b101010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_rf_b_a <= 0;
-    end
-
-
-    always @(posedge clka_int) begin
-       if ((output_flag || display_flag)) begin
-           addra_reg <= addra_int;
-           ena_reg <= ena_int;
-           ssra_reg <= ssra_int;
-           wea_reg <= wea_int;
-       end
-    end
-    
-    always @(posedge clkb_int) begin
-       if ((output_flag || display_flag)) begin
-           addrb_reg <= addrb_int;
-           enb_reg <= enb_int;
-           ssrb_reg <= ssrb_int;
-           web_reg <= web_int;
-       end
-    end
-    
-           
-    // Data
-    always @(posedge memory_collision) begin
-       if ((output_flag || display_flag)) begin
-           mem[addra_int[13:1]][addra_int[0:0] * 1 +: 1] <= 1'bx;
-           memory_collision <= 0;
-       end
-       
-    end
-
-    always @(posedge memory_collision_a_b) begin
-       if ((output_flag || display_flag)) begin
-           mem[addra_reg[13:1]][addra_reg[0:0] * 1 +: 1] <= 1'bx;
-           memory_collision_a_b <= 0;
-       end
-    end
-    
-    always @(posedge memory_collision_b_a) begin
-       if ((output_flag || display_flag)) begin
-           mem[addra_int[13:1]][addra_int[0:0] * 1 +: 1] <= 1'bx;
-           memory_collision_b_a <= 0;
-       end
-    end
-    
-    always @(posedge data_collision[1]) begin
-       if (ssra_int == 0 && output_flag) begin
-           doa_out <= #100 1'bX;
-       end
-       data_collision[1] <= 0;
-    end
-
-    always @(posedge data_collision[0]) begin
-       if (ssrb_int == 0 && output_flag) begin
-           dob_out[addra_int[0:0] * 1 +: 1] <= #100 1'bX;
-       end
-       data_collision[0] <= 0;
-    end
-
-    always @(posedge data_collision_a_b[1]) begin
-       if (ssra_reg == 0 && output_flag) begin
-           doa_out <= #100 1'bX;
-       end
-       data_collision_a_b[1] <= 0;
-    end
-
-    always @(posedge data_collision_a_b[0]) begin
-       if (ssrb_int == 0 && output_flag) begin
-           dob_out[addra_reg[0:0] * 1 +: 1] <= #100 1'bX;
-       end
-       data_collision_a_b[0] <= 0;
-    end
-
-    always @(posedge data_collision_b_a[1]) begin
-       if (ssra_int == 0 && output_flag) begin
-           doa_out <= #100 1'bX;
-       end
-       data_collision_b_a[1] <= 0;
-    end
-
-    always @(posedge data_collision_b_a[0]) begin
-       if (ssrb_reg == 0 && output_flag) begin
-           dob_out[addra_int[0:0] * 1 +: 1] <= #100 1'bX;
-       end
-       data_collision_b_a[0] <= 0;
-    end
-
-
-    initial begin
-       case (WRITE_MODE_A)
-           "WRITE_FIRST" : wr_mode_a <= 2'b00;
-           "READ_FIRST"  : wr_mode_a <= 2'b01;
-           "NO_CHANGE"   : wr_mode_a <= 2'b10;
-           default       : begin
-                               $display("Attribute Syntax Error : The Attribute WRITE_MODE_A on RAMB16_S1_S2 instance %m is set to %s.  Legal values for this attribute are WRITE_FIRST, READ_FIRST or NO_CHANGE.", WRITE_MODE_A);
-                               $finish;
-                           end
-       endcase
-    end
-
-    initial begin
-       case (WRITE_MODE_B)
-           "WRITE_FIRST" : wr_mode_b <= 2'b00;
-           "READ_FIRST"  : wr_mode_b <= 2'b01;
-           "NO_CHANGE"   : wr_mode_b <= 2'b10;
-           default       : begin
-                               $display("Attribute Syntax Error : The Attribute WRITE_MODE_B on RAMB16_S1_S2 instance %m is set to %s.  Legal values for this attribute are WRITE_FIRST, READ_FIRST or NO_CHANGE.", WRITE_MODE_B);
-                               $finish;
-                           end
-       endcase
-    end
-
-
-    // Port A
-    always @(posedge clka_int) begin
-
-       if (ena_int == 1'b1) begin
-
-           if (ssra_int == 1'b1) begin
-               {doa_out} <= #100 SRVAL_A;
-           end
-           else begin
-               if (wea_int == 1'b1) begin
-                   if (wr_mode_a == 2'b00) begin
-                       doa_out <= #100 dia_int;
-                   end
-                   else if (wr_mode_a == 2'b01) begin
-
-                       doa_out <= #100 mem[addra_int[13:1]][addra_int[0:0] * 1 +: 1];
-
-                   end
-               end
-               else begin
-
-                   doa_out <= #100 mem[addra_int[13:1]][addra_int[0:0] * 1 +: 1];
-                   
-               end
-           end
-
-           // memory
-           if (wea_int == 1'b1) begin
-               mem[addra_int[13:1]][addra_int[0:0] * 1 +: 1] <= dia_int;
-           end
-           
-       end
-    end
-
-
-    // Port B
-    always @(posedge clkb_int) begin
-
-       if (enb_int == 1'b1) begin
-
-           if (ssrb_int == 1'b1) begin
-               {dob_out} <= #100 SRVAL_B;
-           end
-           else begin
-               if (web_int == 1'b1) begin
-                   if (wr_mode_b == 2'b00) begin
-                       dob_out <= #100 dib_int;
-                   end
-                   else if (wr_mode_b == 2'b01) begin
-                       dob_out <= #100 mem[addrb_int];
-                   end
-               end
-               else begin
-                   dob_out <= #100 mem[addrb_int];
-               end
-           end
-
-           // memory
-           if (web_int == 1'b1) begin
-               mem[addrb_int] <= dib_int;
-           end
-
-       end
-    end
-
-
-endmodule
-
-`endif
diff --git a/usrp2/fpga/eth/demo/verilog/demo.ucf b/usrp2/fpga/eth/demo/verilog/demo.ucf
deleted file mode 100644 (file)
index f3562b4..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-NET "Reset_n"          LOC = "C15"; // PushButton #4\r
-NET "Clk_100M"         LOC = "B15";\r
-NET "Clk_125M"         LOC = "A16"; // GMII only\r
-\r
-NET "RS232_TXD"        LOC = "A9";\r
-NET "RS232_RXD"        LOC = "F1";\r
-\r
-NET "USB_TXD"          LOC = "D1";\r
-NET "USB_RXD"          LOC = "A8";\r
-\r
-NET "PHY_RESET_n"      LOC = "E25";\r
-\r
-NET "PHY_RXC"          LOC = "B13";\r
-NET "PHY_RXD<0>"       LOC = "D16";\r
-NET "PHY_RXD<1>"       LOC = "C16";\r
-NET "PHY_RXD<2>"       LOC = "D15";\r
-NET "PHY_RXD<3>"       LOC = "D14";\r
-NET "PHY_RXD<4>"       LOC = "E14";\r
-NET "PHY_RXD<5>"       LOC = "F14";\r
-NET "PHY_RXD<6>"       LOC = "F11";\r
-NET "PHY_RXD<7>"       LOC = "F12";\r
-NET "PHY_RXDV"         LOC = "F13";\r
-NET "PHY_RXER"         LOC = "E13";\r
-\r
-NET "PHY_GTX_CLK"      LOC = "C26"; // GMII only\r
-NET "PHY_TXC"          LOC = "A10";\r
-NET "PHY_TXD<0>"       LOC = "H26";\r
-NET "PHY_TXD<1>"       LOC = "H24";\r
-NET "PHY_TXD<2>"       LOC = "G26";\r
-NET "PHY_TXD<3>"       LOC = "G24";\r
-NET "PHY_TXD<4>"       LOC = "F26";\r
-NET "PHY_TXD<5>"       LOC = "F24";\r
-NET "PHY_TXD<6>"       LOC = "E26";\r
-NET "PHY_TXD<7>"       LOC = "E24";\r
-NET "PHY_TXEN"         LOC = "D26";\r
-NET "PHY_TXER"         LOC = "D24";\r
-\r
-NET "PHY_COL"          LOC = "B24";\r
-NET "PHY_CRS"          LOC = "D25";\r
-\r
-NET "PHY_MDC"          LOC = "G25";\r
-NET "PHY_MDIO"         LOC = "H25";\r
-\r
-NET "LED<1>"           LOC = "D13"; // LED #1-4\r
-NET "LED<2>"           LOC = "D12";\r
-NET "LED<3>"           LOC = "C11";\r
-NET "LED<4>"           LOC = "D11";\r
-\r
-NET "Clk_100M" PERIOD = 10.000 ; # 100  MHz\r
-NET "Clk_125M" PERIOD = 8.000  ; # 125  MHz\r
-NET "PHY_RXC"  PERIOD = 8.000  ; # 125  MHz\r
-NET "PHY_TXC"  PERIOD = 8.000  ; # 125  MHz\r
diff --git a/usrp2/fpga/eth/demo/verilog/demo.v b/usrp2/fpga/eth/demo/verilog/demo.v
deleted file mode 100644 (file)
index 649903c..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-module demo(\r
-  Reset_n,\r
-  Clk_100M,\r
-  Clk_125M, // GMII only\r
-\r
-  RS232_TXD,\r
-  RS232_RXD,\r
-\r
-  USB_TXD,\r
-  USB_RXD,\r
-\r
-  //--- 10/100/1000BASE-T Ethernet PHY (MII/GMII)\r
-  PHY_RESET_n,\r
-\r
-  PHY_RXC,\r
-  PHY_RXD,\r
-  PHY_RXDV,\r
-  PHY_RXER,\r
-\r
-  PHY_GTX_CLK, // GMII only\r
-  PHY_TXC,\r
-  PHY_TXD,\r
-  PHY_TXEN,\r
-  PHY_TXER,\r
-\r
-  PHY_COL,\r
-  PHY_CRS,\r
-\r
-  PHY_MDC,\r
-  PHY_MDIO,\r
-\r
-  // Misc. I/Os\r
-  LED,\r
-  Button\r
-);\r
-\r
-  input        Reset_n;\r
-  input        Clk_100M;\r
-  input        Clk_125M; // GMII\r
-\r
-  output       RS232_TXD;\r
-  input        RS232_RXD;\r
-\r
-  output       USB_TXD;\r
-  input        USB_RXD;\r
-\r
-  //--- 10/100/1000BASE-T Ethernet PHY (MII/GMII)\r
-  output       PHY_RESET_n;\r
-\r
-  input        PHY_RXC;\r
-  input [7:0]  PHY_RXD;\r
-  input        PHY_RXDV;\r
-  input        PHY_RXER;\r
-\r
-  output       PHY_GTX_CLK; // GMII only\r
-  input        PHY_TXC;\r
-  output [7:0] PHY_TXD;\r
-  output       PHY_TXEN;\r
-  output       PHY_TXER;\r
-\r
-  input        PHY_COL;\r
-  input        PHY_CRS;\r
-\r
-  output       PHY_MDC;\r
-  inout        PHY_MDIO;\r
-\r
-  // Misc. I/Os\r
-  output [1:4] LED;\r
-\r
-  input [1:4]  Button;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Local declarations\r
-  //-------------------------------------------------------------------------\r
-\r
-  // Rename to "standard" core clock name\r
-  wire Clk = Clk_100M;\r
-\r
-  reg [27:0] Counter;\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      Counter <= 0;\r
-    else\r
-      Counter <= Counter + 1;\r
-\r
-  assign LED[1:4] = Counter[27:24];\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Instantiation of sub-modules\r
-  //-------------------------------------------------------------------------\r
-\r
-  //--- UART ----------------------------------------------------------------\r
-\r
-  wire       UART_RXD;\r
-  wire       UART_TXD;\r
-  wire       UART_RxValid;\r
-  wire [7:0] UART_RxData;\r
-  wire       UART_TxReady;\r
-  wire       UART_TxValid;\r
-  wire [7:0] UART_TxData;\r
-\r
-  demo_uart demo_uart(\r
-    .Reset_n( Reset_n ),\r
-    .Clk    ( Clk     ),\r
-\r
-    // Interface to UART PHY\r
-    .RXD_i( UART_RXD ),\r
-    .TXD_o( UART_TXD ),\r
-\r
-    // Clk is divided by (Prescaler+1) to generate 16x the bitrate\r
-`ifdef EHDL_SIMULATION\r
-    .Prescaler_i( 16'd3 ), // Corresponds to VERY FAST - for simulation only!\r
-`else                      \r
-    .Prescaler_i( 16'd650 ), // Corresponds to 9600 baud (assuming 100 MHz clock)\r
-`endif\r
-                      \r
-    // Pulsed when RxData is valid\r
-    .RxValid_o( UART_RxValid ),\r
-    .RxData_o ( UART_RxData  ),\r
-\r
-    // Asserted when ready for a new Tx byte\r
-    .TxReady_o( UART_TxReady ),\r
-\r
-    // Pulsed when TxData is valid\r
-    .TxValid_i( UART_TxValid ),\r
-    .TxData_i ( UART_TxData  )\r
-  );\r
-\r
-  // Transmit & receive in parallel on either RS232 or USB/RS232 interface\r
-//  assign UART_RXD = RS232_RXD & USB_RXD; // RS232 signals are high when inactive\r
-  assign     UART_RXD = RS232_RXD;\r
-\r
-  assign RS232_TXD = UART_TXD;\r
-  assign USB_TXD   = UART_TXD;\r
-\r
-  //--- UART-to-Wishbone Master ---------------------------------------------\r
-\r
-  wire        WB_STB_ETH;\r
-  wire        WB_STB_PDM;\r
-  wire        WB_STB_PG;\r
-  wire        WB_CYC;\r
-  wire [14:0] WB_ADR;\r
-  wire        WB_WE;\r
-  wire [15:0] WB_DAT_Wr;\r
-  wire [15:0] WB_DAT_Rd;\r
-  wire        WB_ACK;\r
-\r
-  demo_wishbone_master demo_wishbone_master(\r
-    .Reset_n( Reset_n ),\r
-    .Clk    ( Clk     ),\r
-\r
-    //--- UART interface\r
-\r
-    // Pulsed when RxData_i is valid\r
-    .RxValid_i( UART_RxValid ),\r
-    .RxData_i ( UART_RxData  ),\r
-\r
-    // Asserted when ready for a new Tx byte\r
-    .TxReady_i( UART_TxReady ),\r
-\r
-    // Pulsed when TxData_o is valid\r
-    .TxValid_o( UART_TxValid ),\r
-    .TxData_o ( UART_TxData  ),\r
-\r
-    //--- Wishbone interface\r
-    .STB_ETH_O( WB_STB_ETH ),\r
-    .STB_PDM_O( WB_STB_PDM ),\r
-    .STB_PG_O ( WB_STB_PG  ),\r
-    .CYC_O    ( WB_CYC     ),\r
-    .ADR_O    ( WB_ADR     ),\r
-    .WE_O     ( WB_WE      ), \r
-    .DAT_O    ( WB_DAT_Wr  ),\r
-    .DAT_I    ( WB_DAT_Rd  ),\r
-    .ACK_I    ( WB_ACK     )\r
-  );\r
-\r
-  //--- Wishbone clients ----------------------------------------------------\r
-\r
-  //--- Packet Descriptor Memory --------------------------------------------\r
-\r
-  wire [15:0] WB_DAT_Rd_PDM;\r
-  wire        WB_ACK_PDM;\r
-\r
-  wire        PDM_Rd;\r
-  wire [13:0] PDM_Addr;\r
-  wire [31:0] PDM_RdData;\r
-\r
-  demo_packet_descriptor_memory demo_packet_descriptor_memory(\r
-    .Reset_n( Reset_n ),\r
-    .Clk    ( Clk     ),\r
-\r
-    //--- Wishbone interface\r
-    .STB_I( WB_STB_PDM    ),\r
-    .CYC_I( WB_CYC        ),\r
-    .ADR_I( WB_ADR        ),\r
-    .WE_I ( WB_WE         ), \r
-    .DAT_I( WB_DAT_Wr     ),\r
-    .DAT_O( WB_DAT_Rd_PDM ),\r
-    .ACK_O( WB_ACK_PDM    ),\r
-\r
-    //--- Packet Generator interface\r
-    // RdData_o is always valid exactly one clock after Addr_i changes\r
-    // and Rd_i is asserted\r
-    .Rd_i    ( PDM_Rd     ),\r
-    .Addr_i  ( PDM_Addr   ),\r
-    .RdData_o( PDM_RdData )\r
-  );\r
-\r
-  //--- Packet Generator ----------------------------------------------------\r
-\r
-  wire [15:0] WB_DAT_Rd_PG;\r
-  wire        WB_ACK_PG;\r
-\r
-  wire        Rx_mac_ra;\r
-  wire        Rx_mac_rd;\r
-  wire [31:0] Rx_mac_data;\r
-  wire [1:0]  Rx_mac_BE;\r
-  wire        Rx_mac_pa;\r
-  wire        Rx_mac_sop;\r
-  wire        Rx_mac_err;\r
-  wire        Rx_mac_eop;\r
-\r
-  wire        Tx_mac_wa;\r
-  wire        Tx_mac_wr;\r
-  wire [31:0] Tx_mac_data;\r
-  wire [1:0]  Tx_mac_BE;\r
-  wire        Tx_mac_sop;\r
-  wire        Tx_mac_eop;\r
-\r
-  demo_packet_generator demo_packet_generator(\r
-    .Reset_n( Reset_n ),\r
-    .Clk    ( Clk     ),\r
-\r
-    //--- Wishbone interface\r
-    .STB_I( WB_STB_PG    ),\r
-    .CYC_I( WB_CYC       ),\r
-    .ADR_I( WB_ADR[1:0]  ),\r
-    .WE_I ( WB_WE        ),\r
-    .DAT_I( WB_DAT_Wr    ),\r
-    .DAT_O( WB_DAT_Rd_PG ),\r
-    .ACK_O( WB_ACK_PG    ),\r
-\r
-    //--- Packet Descriptor Memory interface\r
-    // RdData_i is always valid exactly one clock after Addr_o changes\r
-    // and Rd_o is asserted\r
-    .Rd_o    ( PDM_Rd     ),\r
-    .Addr_o  ( PDM_Addr   ),\r
-    .RdData_i( PDM_RdData ),\r
-\r
-    //--- User (packet) interface\r
-    .Rx_mac_ra  ( Rx_mac_ra   ),\r
-    .Rx_mac_rd  ( Rx_mac_rd   ),\r
-    .Rx_mac_data( Rx_mac_data ),\r
-    .Rx_mac_BE  ( Rx_mac_BE   ),\r
-    .Rx_mac_pa  ( Rx_mac_pa   ),\r
-    .Rx_mac_sop ( Rx_mac_sop  ),\r
-    .Rx_mac_err ( Rx_mac_err  ),\r
-    .Rx_mac_eop ( Rx_mac_eop  ),\r
-\r
-    .Tx_mac_wa  ( Tx_mac_wa   ),\r
-    .Tx_mac_wr  ( Tx_mac_wr   ),\r
-    .Tx_mac_data( Tx_mac_data ),\r
-    .Tx_mac_BE  ( Tx_mac_BE   ),\r
-    .Tx_mac_sop ( Tx_mac_sop  ),\r
-    .Tx_mac_eop ( Tx_mac_eop  )\r
-  );\r
-\r
-  //--- Simple Wishbone client ----------------------------------------------\r
-\r
-  reg [15:0] Reg1;\r
-  reg [15:0] Reg2;\r
-\r
-  reg        WB_ACK_Reg;\r
-  reg [15:0] WB_DAT_Reg;\r
-\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        WB_ACK_Reg <= 0;\r
-        WB_DAT_Reg <= 'b0;\r
-\r
-        Reg1 <= 16'h1234;\r
-        Reg2 <= 16'hABCD;\r
-      end\r
-    else\r
-      begin\r
-        WB_ACK_Reg <= 0;\r
-        if ( WB_CYC & ~( WB_STB_ETH | WB_STB_PG | WB_STB_PDM ) )\r
-          begin\r
-            WB_ACK_Reg <= 1;\r
-            if ( WB_WE )\r
-              begin\r
-                if ( WB_ADR[0] )\r
-                  Reg2 <= WB_DAT_Wr;\r
-                else\r
-                  Reg1 <= WB_DAT_Wr;\r
-              end\r
-            else\r
-              begin\r
-                if ( WB_ADR[0] )\r
-                  WB_DAT_Reg <= Reg2;\r
-                else\r
-                  WB_DAT_Reg <= Reg1;\r
-              end\r
-          end\r
-      end\r
-\r
-  //--- DUT - Ethernet Core -------------------------------------------------\r
-\r
-  wire [15:0] WB_DAT_Rd_ETH;\r
-  wire        WB_ACK_ETH;\r
-\r
-  wire [2:0] Speed;\r
-\r
-  MAC_top dut(\r
-    // System signals\r
-    .Clk_125M( Clk_125M ),\r
-    .Clk_user( Clk      ),\r
-    .Speed   ( Speed    ),\r
-\r
-    // Wishbone compliant core host interface\r
-    .RST_I( ~Reset_n ),\r
-    .CLK_I( Clk     ),\r
-    .STB_I( WB_STB_ETH    ),\r
-    .CYC_I( WB_CYC        ),\r
-    .ADR_I( WB_ADR[6:0]   ),\r
-    .WE_I ( WB_WE         ),\r
-    .DAT_I( WB_DAT_Wr     ),\r
-    .DAT_O( WB_DAT_Rd_ETH ),\r
-    .ACK_O( WB_ACK_ETH    ),\r
-\r
-    // User (packet) interface\r
-    .Rx_mac_ra  ( Rx_mac_ra   ),\r
-    .Rx_mac_rd  ( Rx_mac_rd   ),\r
-    .Rx_mac_data( Rx_mac_data ),\r
-    .Rx_mac_BE  ( Rx_mac_BE   ),\r
-    .Rx_mac_pa  ( Rx_mac_pa   ),\r
-    .Rx_mac_sop ( Rx_mac_sop  ),\r
-    .Rx_mac_err ( Rx_mac_err  ),\r
-    .Rx_mac_eop ( Rx_mac_eop  ),\r
-\r
-    .Tx_mac_wa  ( Tx_mac_wa   ),\r
-    .Tx_mac_wr  ( Tx_mac_wr   ),\r
-    .Tx_mac_data( Tx_mac_data ),\r
-    .Tx_mac_BE  ( Tx_mac_BE   ),\r
-    .Tx_mac_sop ( Tx_mac_sop  ),\r
-    .Tx_mac_eop ( Tx_mac_eop  ),\r
-\r
-    // PHY interface (GMII/MII)\r
-    .Gtx_clk( PHY_GTX_CLK  ), // Used only in GMII mode\r
-    .Rx_clk ( PHY_RXC      ),\r
-    .Tx_clk ( PHY_TXC      ),  // Used only in MII mode\r
-    .Tx_er  ( PHY_TXER     ),\r
-    .Tx_en  ( PHY_TXEN     ),\r
-    .Txd    ( PHY_TXD      ),\r
-    .Rx_er  ( PHY_RXER     ),\r
-    .Rx_dv  ( PHY_RXDV     ),\r
-    .Rxd    ( PHY_RXD      ),\r
-    .Crs    ( PHY_CRS      ),\r
-    .Col    ( PHY_COL      ),\r
-\r
-    // MDIO interface (to PHY)\r
-    .Mdio( PHY_MDIO ),\r
-    .Mdc ( PHY_MDC  )\r
-  );\r
-\r
-  //--- Combination of Wishbone read data and acknowledge -------------------\r
-\r
-  assign WB_DAT_Rd = ({16{WB_ACK_Reg}} & WB_DAT_Reg   ) |\r
-                     ({16{WB_ACK_PDM}} & WB_DAT_Rd_PDM) |\r
-                     ({16{WB_ACK_PG }} & WB_DAT_Rd_PG ) |\r
-                     ({16{WB_ACK_ETH}} & WB_DAT_Rd_ETH);\r
-\r
-  assign WB_ACK = WB_ACK_Reg | WB_ACK_PDM | WB_ACK_PG | WB_ACK_ETH;\r
-\r
-  assign PHY_RESET_n = Reset_n;                 \r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/demo/verilog/demo_packet_descriptor_memory.v b/usrp2/fpga/eth/demo/verilog/demo_packet_descriptor_memory.v
deleted file mode 100644 (file)
index a5588a7..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-module demo_packet_descriptor_memory(\r
-  Reset_n,\r
-  Clk,\r
-\r
-  //--- Wishbone interface\r
-  STB_I,\r
-  CYC_I,\r
-  ADR_I,\r
-  WE_I, \r
-  DAT_I,\r
-  DAT_O,\r
-  ACK_O,\r
-\r
-  //--- Packet Generator interface\r
-  // RdData_o is always valid exactly one clock after Addr_i changes\r
-  // and Rd_i is asserted\r
-  Rd_i,\r
-  Addr_i,\r
-  RdData_o\r
-);\r
-\r
-  input         Reset_n;\r
-  input         Clk;\r
-\r
-  //--- Wishbone interface\r
-  input         STB_I;\r
-  input         CYC_I;\r
-  input [14:0]  ADR_I;\r
-  input         WE_I;\r
-  input [15:0]  DAT_I;\r
-  output [15:0] DAT_O;\r
-  output        ACK_O;\r
-\r
-  //--- Packet Generator interface\r
-  // RdData_o is always valid exactly one clock after Addr_i changes\r
-  // and Rd_i is asserted\r
-  input         Rd_i;\r
-  input [13:0]  Addr_i;\r
-  output [31:0] RdData_o;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Local declarations\r
-  //-------------------------------------------------------------------------\r
-\r
-  reg ACK_O;\r
-\r
-  //-------------------------------------------------------------------------\r
-\r
-  wire [15:0] WrDataA = DAT_I;\r
-  wire [15:0] RdDataA;\r
-  wire [31:0] RdDataB;\r
-\r
-  assign DAT_O = RdDataA;\r
-  assign RdData_o = RdDataB;\r
-\r
-  wire WB_Access = STB_I & CYC_I;\r
-  wire WB_AccessClock1;\r
-  reg  WB_AccessClock2;\r
-\r
-  assign WB_AccessClock1 = WB_Access & ~WB_AccessClock2;\r
-\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        WB_AccessClock2 <= 0;\r
-        ACK_O <= 0;\r
-      end\r
-    else\r
-      begin\r
-        WB_AccessClock2 <= WB_Access;\r
-        ACK_O <= WB_AccessClock1;\r
-      end\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Instantiation of sub-modules\r
-  //-------------------------------------------------------------------------\r
-\r
-  //--- Instantiation of Xilinx 16 Kbit Dual Port Memory --------------------\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit0 (\r
-    .DOA( RdDataA[0] ),\r
-    .DOB( { RdDataB[0], RdDataB[16+0] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[0] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit1 (\r
-    .DOA( RdDataA[1] ),\r
-    .DOB( { RdDataB[1], RdDataB[16+1] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[1] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit2 (\r
-    .DOA( RdDataA[2] ),\r
-    .DOB( { RdDataB[2], RdDataB[16+2] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[2] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit3 (\r
-    .DOA( RdDataA[3] ),\r
-    .DOB( { RdDataB[3], RdDataB[16+3] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[3] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit4 (\r
-    .DOA( RdDataA[4] ),\r
-    .DOB( { RdDataB[4], RdDataB[16+4] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[4] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit5 (\r
-    .DOA( RdDataA[5] ),\r
-    .DOB( { RdDataB[5], RdDataB[16+5] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[5] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit6 (\r
-    .DOA( RdDataA[6] ),\r
-    .DOB( { RdDataB[6], RdDataB[16+6] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[6] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit7 (\r
-    .DOA( RdDataA[7] ),\r
-    .DOB( { RdDataB[7], RdDataB[16+7] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[7] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit8 (\r
-    .DOA( RdDataA[8] ),\r
-    .DOB( { RdDataB[8], RdDataB[16+8] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[8] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit9 (\r
-    .DOA( RdDataA[9] ),\r
-    .DOB( { RdDataB[9], RdDataB[16+9] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[9] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit10 (\r
-    .DOA( RdDataA[10] ),\r
-    .DOB( { RdDataB[10], RdDataB[16+10] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[10] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit11 (\r
-    .DOA( RdDataA[11] ),\r
-    .DOB( { RdDataB[11], RdDataB[16+11] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[11] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit12 (\r
-    .DOA( RdDataA[12] ),\r
-    .DOB( { RdDataB[12], RdDataB[16+12] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[12] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit13 (\r
-    .DOA( RdDataA[13] ),\r
-    .DOB( { RdDataB[13], RdDataB[16+13] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[13] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit14 (\r
-    .DOA( RdDataA[14] ),\r
-    .DOB( { RdDataB[14], RdDataB[16+14] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[14] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-  RAMB16_S1_S2 RAMB16_S1_S2_bit15 (\r
-    .DOA( RdDataA[15] ),\r
-    .DOB( { RdDataB[15], RdDataB[16+15] } ),\r
-\r
-    .ADDRA( ADR_I[13:0]     ),\r
-    .DIA  ( WrDataA[15] ),\r
-    .ENA  ( WB_AccessClock1 ),\r
-    .CLKA ( Clk             ),\r
-    .WEA  ( WE_I            ),\r
-    .SSRA ( 1'b0            ),\r
-\r
-    .ADDRB( Addr_i[12:0] ),\r
-    .DIB  ( 2'b00        ),\r
-    .ENB  ( Rd_i         ),\r
-    .CLKB ( Clk          ),\r
-    .WEB  ( 1'b0         ),\r
-    .SSRB ( 1'b0         )\r
-  );\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/demo/verilog/demo_packet_generator.v b/usrp2/fpga/eth/demo/verilog/demo_packet_generator.v
deleted file mode 100644 (file)
index 22ad52b..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-module demo_packet_generator(\r
-  Reset_n,\r
-  Clk,\r
-\r
-  //--- Wishbone interface\r
-  STB_I,\r
-  CYC_I,\r
-  ADR_I,\r
-  WE_I,\r
-  DAT_I,\r
-  DAT_O,\r
-  ACK_O,\r
-\r
-  //--- Packet Descriptor Memory interface\r
-  // RdData_i is always valid exactly one clock after Addr_o changes\r
-  // and Rd_o is asserted\r
-  Rd_o,\r
-  Addr_o,\r
-  RdData_i,\r
-\r
-  //--- User (packet) interface\r
-  Rx_mac_ra,\r
-  Rx_mac_rd,\r
-  Rx_mac_data,\r
-  Rx_mac_BE,\r
-  Rx_mac_pa,\r
-  Rx_mac_sop,\r
-  Rx_mac_err,\r
-  Rx_mac_eop,\r
-\r
-  Tx_mac_wa,\r
-  Tx_mac_wr,\r
-  Tx_mac_data,\r
-  Tx_mac_BE,\r
-  Tx_mac_sop,\r
-  Tx_mac_eop\r
-);\r
-\r
-  input         Reset_n;\r
-  input         Clk;\r
-\r
-  //--- Wishbone interface\r
-  input         STB_I;\r
-  input         CYC_I;\r
-  input [1:0]   ADR_I;\r
-  input         WE_I;\r
-  input [15:0]  DAT_I;\r
-  output [15:0] DAT_O;\r
-  output        ACK_O;\r
-\r
-  //--- Packet Generator interface\r
-  // RdData_o is always valid exactly one clock after Addr_o changes\r
-  // and Rd_o is asserted\r
-  output        Rd_o;\r
-  output [13:0] Addr_o;\r
-  input [31:0]  RdData_i;\r
-\r
-  //--- User (packet) interface\r
-  input         Rx_mac_ra;\r
-  output        Rx_mac_rd;\r
-  input [31:0]  Rx_mac_data;\r
-  input [1:0]   Rx_mac_BE;\r
-  input         Rx_mac_pa;\r
-  input         Rx_mac_sop;\r
-  input         Rx_mac_err;\r
-  input         Rx_mac_eop;\r
-\r
-  input         Tx_mac_wa;\r
-  output        Tx_mac_wr;\r
-  output [31:0] Tx_mac_data;\r
-  output [1:0]  Tx_mac_BE;\r
-  output        Tx_mac_sop;\r
-  output        Tx_mac_eop;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Local declarations\r
-  //-------------------------------------------------------------------------\r
-\r
-  reg        ACK_O;\r
-  reg [15:0] DAT_O;\r
-\r
-  reg        Rd_o;\r
-  reg        Tx_mac_wr;\r
-  reg [1:0]  Tx_mac_BE;\r
-  reg        Tx_mac_sop;\r
-  reg        Tx_mac_eop;\r
-\r
-  //--- Wishbone interface --------------------------------------------------\r
-\r
-  reg [1:0] PG_CFG;\r
-  wire      PG_Enable = PG_CFG[0];\r
-  \r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        ACK_O <= 0;\r
-        DAT_O <= 'b0;\r
-\r
-        PG_CFG <= 2'h0;\r
-      end\r
-    else\r
-      begin\r
-        ACK_O <= 0;\r
-        if ( CYC_I & STB_I )\r
-          begin\r
-            ACK_O <= ~ACK_O; // Generate single cycle pulse!\r
-            if ( WE_I )\r
-              begin\r
-                PG_CFG <= DAT_I;\r
-              end\r
-            else\r
-              begin\r
-                DAT_O[1:0] <= PG_CFG;\r
-              end\r
-          end\r
-      end\r
-\r
-  //--- Packet Generator FSM ------------------------------------------------\r
-\r
-  parameter  PG_FSM_STATE_IDLE               = 3'h0;\r
-  parameter  PG_FSM_STATE_LD_DESC_1          = 3'h1;\r
-  parameter  PG_FSM_STATE_LD_DESC_2          = 3'h2;\r
-  parameter  PG_FSM_STATE_RD_HEADER          = 3'h3;\r
-  parameter  PG_FSM_STATE_PAYLOAD_SEQ_NUMBER = 3'h4;\r
-  parameter  PG_FSM_STATE_PAYLOAD            = 3'h5;\r
-  parameter  PG_FSM_STATE_DONE               = 3'h6;\r
-  reg [2:0]  PG_FSM_State;\r
-\r
-  reg [9:0] DescHigh; // Selects currente descriptor\r
-  reg [3:0] DescLow; // Index into a single descriptor (16 entries)\r
-\r
-  reg        PDM_CFG1_LAST;\r
-  reg [3:0]  PDM_CFG1_REPEAT;\r
-  reg [3:0]  PDM_CFG1_HDRLEN;\r
-  reg [15:0] PDM_CFG2_PAYLDLEN;\r
-\r
-  reg [31:0] Tx_mac_data_reg;\r
-  reg        WriteHeader;\r
-  reg [15:0] PayloadRemaining;\r
-  reg [31:0] PacketSequenceNumber;\r
-  reg [31:0] Payload;\r
-  \r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        PG_FSM_State <= PG_FSM_STATE_IDLE;\r
-\r
-        Rd_o <= 0;\r
-\r
-        DescHigh <= 10'b0;\r
-        DescLow  <= 4'b0;\r
-\r
-        Tx_mac_wr  <= 0;\r
-        Tx_mac_sop <= 0;\r
-        Tx_mac_eop <= 0;\r
-        Tx_mac_BE  <= 2'b00;\r
-\r
-        Tx_mac_data_reg <= 32'b0;\r
-        WriteHeader <= 0;\r
-        PayloadRemaining <= 16'd0;\r
-\r
-        PacketSequenceNumber <= 32'd0;\r
-        Payload <= 32'h0;\r
-\r
-        { PDM_CFG1_HDRLEN, PDM_CFG1_REPEAT, PDM_CFG1_LAST, PDM_CFG2_PAYLDLEN } <= 'b0;\r
-      end\r
-    else\r
-      begin\r
-        casez ( PG_FSM_State )\r
-          PG_FSM_STATE_IDLE:\r
-            if ( PG_Enable )\r
-              begin\r
-                PG_FSM_State <= PG_FSM_STATE_LD_DESC_1;\r
-                Rd_o <= 1;\r
-              end\r
-            else\r
-              begin\r
-                DescHigh <= 10'b0;\r
-                DescLow  <= 4'b0;\r
-              end\r
-\r
-          PG_FSM_STATE_LD_DESC_1:\r
-            begin\r
-              PG_FSM_State <= PG_FSM_STATE_LD_DESC_2;\r
-\r
-              DescLow <= DescLow + 1;\r
-            end\r
-\r
-          PG_FSM_STATE_LD_DESC_2:\r
-            begin\r
-              PG_FSM_State <= PG_FSM_STATE_RD_HEADER;\r
-\r
-              { PDM_CFG1_LAST, PDM_CFG1_REPEAT, PDM_CFG1_HDRLEN, PDM_CFG2_PAYLDLEN } <=\r
-                { RdData_i[31], RdData_i[23:20], RdData_i[19:16], RdData_i[15:0] };\r
-            end\r
-\r
-          PG_FSM_STATE_RD_HEADER:\r
-            begin\r
-              Tx_mac_wr <= 0;\r
-              if ( Tx_mac_wa )\r
-                begin\r
-                  // Space in Tx FIFO - write next header word\r
-                  DescLow <= DescLow + 1;\r
-                  Tx_mac_wr <= 1;\r
-                  Tx_mac_sop <= ( DescLow == 1 ); // Assert SOP on first header word\r
-                  WriteHeader <= 1;\r
-                  if ( DescLow == PDM_CFG1_HDRLEN )\r
-                    begin\r
-                      // The requested number of header words has been read\r
-                      // - proceed to generate packet payload\r
-                      PG_FSM_State <= PG_FSM_STATE_PAYLOAD_SEQ_NUMBER;\r
-                      PayloadRemaining <= PDM_CFG2_PAYLDLEN;\r
-                    end\r
-                end\r
-            end\r
-\r
-          PG_FSM_STATE_PAYLOAD_SEQ_NUMBER:\r
-            begin\r
-              WriteHeader <= 0;\r
-              Tx_mac_data_reg <= PacketSequenceNumber;\r
-              Tx_mac_wr <= 0;\r
-              Tx_mac_sop <= 0;\r
-              if ( Tx_mac_wa )\r
-                begin\r
-                  Tx_mac_wr <= 1;\r
-                  PG_FSM_State <= PG_FSM_STATE_PAYLOAD;\r
-                  Payload <= 32'h01020304;\r
-                  PayloadRemaining <= PayloadRemaining - 4;\r
-                end\r
-            end\r
-\r
-          PG_FSM_STATE_PAYLOAD:\r
-            begin\r
-              Tx_mac_data_reg <= Payload;\r
-              Tx_mac_wr <= 0;\r
-              if ( Tx_mac_wa )\r
-                begin\r
-                  Tx_mac_wr <= 1;\r
-                  Tx_mac_data_reg <= Payload;\r
-                  Payload[31:24] <= Payload[31:24] + 8'h04;\r
-                  Payload[23:16] <= Payload[23:16] + 8'h04;\r
-                  Payload[15: 8] <= Payload[15: 8] + 8'h04;\r
-                  Payload[ 7: 0] <= Payload[ 7: 0] + 8'h04;\r
-                  PayloadRemaining <= PayloadRemaining - 4;\r
-                  if ( PayloadRemaining <= 4 )\r
-                    begin\r
-                      PG_FSM_State <= PG_FSM_STATE_DONE;\r
-\r
-                      Tx_mac_eop <= 1;\r
-                      // Indicate how many bytes are valid in this last transfer\r
-                      Tx_mac_BE <= PayloadRemaining[1:0];\r
-                    end\r
-                end\r
-            end\r
-\r
-          PG_FSM_STATE_DONE:\r
-            begin\r
-              // TBD: Add support for REPEAT, NEXT & LAST!\r
-              Tx_mac_wr <= 0;\r
-              Tx_mac_eop <= 0;\r
-            end\r
-        endcase\r
-      end\r
-\r
-  //-------------------------------------------------------------------------\r
-\r
-  assign Tx_mac_data = WriteHeader ?\r
-                       RdData_i : Tx_mac_data_reg;\r
-\r
-  assign Addr_o = { DescHigh, DescLow };\r
-\r
-  assign Rx_mac_rd = 0;\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/demo/verilog/demo_uart.v b/usrp2/fpga/eth/demo/verilog/demo_uart.v
deleted file mode 100644 (file)
index ba4a3c3..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-module demo_uart(\r
-  Reset_n,\r
-  Clk,\r
-\r
-  // Interface to UART PHY (RS232 level converter)\r
-  RXD_i,\r
-  TXD_o,\r
-\r
-  // Clk is divided by (Prescaler+1) to generate 16x the bitrate\r
-  Prescaler_i,\r
-\r
-  // Pulsed when RxData is valid\r
-  RxValid_o,\r
-  RxData_o,\r
-\r
-  // Asserted when ready for a new Tx byte\r
-  TxReady_o,\r
-\r
-  // Pulsed when TxData is valid\r
-  TxValid_i,\r
-  TxData_i\r
-);\r
-\r
-  input        Reset_n;\r
-  input        Clk;\r
-\r
-  // Interface to UART PHY (RS232 level converter)\r
-  input        RXD_i;\r
-  output       TXD_o;\r
-\r
-  // Clk is divided by (Prescaler+1) to generate 16x the bitrate\r
-  input [15:0] Prescaler_i;\r
-\r
-  // Pulsed when RxData is valid\r
-  output       RxValid_o;\r
-  output [7:0] RxData_o;\r
-\r
-  // Asserted when ready for a new Tx byte\r
-  output       TxReady_o;\r
-\r
-  // Pulsed when TxData is valid\r
-  input        TxValid_i;\r
-  input [7:0]  TxData_i;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Local declarations\r
-  //-------------------------------------------------------------------------\r
-\r
-  reg          TXD_o;\r
-  reg          RxValid_o;\r
-  reg [7:0]    RxData_o;\r
-  reg          TxReady_o;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Instantiation of sub-modules\r
-  //-------------------------------------------------------------------------\r
-\r
-  //--- Prescaler generating 16x bitrate clock ------------------------------\r
-\r
-  reg        Clk_16x;\r
-  reg [15:0] Prescaler;\r
-\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        Prescaler <= 0;\r
-        Clk_16x <= 0;\r
-      end\r
-    else\r
-      begin\r
-        if ( Prescaler == Prescaler_i )\r
-          begin\r
-            Prescaler <= 0;\r
-            Clk_16x <= 1;\r
-          end\r
-        else\r
-          begin\r
-            Prescaler <= Prescaler + 1;\r
-            Clk_16x <= 0;\r
-          end\r
-      end\r
-\r
-  //--- Transmitter logic ---------------------------------------------------\r
-\r
-  reg [3:0] TxCounter;\r
-  reg       TxSendBit;\r
-\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        TxCounter <= 0;\r
-        TxSendBit <= 0;\r
-      end\r
-    else\r
-      begin\r
-        TxSendBit <= 0;\r
-        if ( Clk_16x )\r
-          begin    \r
-            if ( TxCounter == 15 )\r
-              begin\r
-                TxCounter <= 0;\r
-                TxSendBit <= 1;\r
-              end\r
-            else\r
-              TxCounter <= TxCounter + 1;\r
-          end\r
-      end\r
-\r
-  reg [7:0] TxData_reg;\r
-  reg [3:0] TxBitCnt;\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        TXD_o      <= 1;\r
-        TxReady_o  <= 1;\r
-        TxData_reg <= 0;\r
-        TxBitCnt   <= 0;\r
-      end\r
-    else\r
-      begin\r
-        if ( TxReady_o )\r
-          begin\r
-            if ( TxValid_i )\r
-              begin\r
-                TxReady_o  <= 0;\r
-                TxData_reg <= TxData_i;\r
-                TxBitCnt   <= 0;\r
-              end\r
-          end\r
-        else\r
-          begin\r
-            if ( TxSendBit )\r
-              begin\r
-                // Only do anything on bit boundaries\r
-                casez ( TxBitCnt )\r
-                  0: // Tx START bit\r
-                    TXD_o <= 0;\r
-                  10: // Tx second STOP bit\r
-                    // Now we're done\r
-                    TxReady_o <= 1;\r
-                  default: // Tx data bit + first stop bit\r
-                    begin\r
-                      TXD_o <= TxData_reg[0];\r
-                      TxData_reg <= { 1'b1, TxData_reg[7:1] };\r
-                    end\r
-                endcase\r
-                \r
-                TxBitCnt <= TxBitCnt+1;\r
-              end\r
-          end\r
-      end\r
-\r
-  //--- Receiver logic ------------------------------------------------------\r
-\r
-  reg       RxHunt;\r
-  reg [3:0] RxCounter;\r
-  reg       RxSampleBit;\r
-  reg       RxDone;\r
-\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        RxCounter   <= 0;\r
-        RxSampleBit <= 0;\r
-\r
-        RxHunt <= 1;\r
-      end\r
-    else\r
-      begin\r
-        RxSampleBit <= 0;\r
-\r
-        if ( RxDone )\r
-          RxHunt <= 1;\r
-\r
-        if ( Clk_16x )\r
-          begin\r
-            if ( RxHunt )\r
-              begin\r
-                if ( RXD_i == 0 )\r
-                  begin\r
-                    // Receiving start bit!\r
-                    RxHunt <= 0;\r
-                    // Reset 16x bit counter\r
-                    RxCounter <= 0;\r
-                  end\r
-              end\r
-            else\r
-              begin\r
-                RxCounter <= RxCounter + 1;\r
-                if ( RxCounter == 7 )\r
-                  // In middle of Rx bit in next cycle\r
-                  RxSampleBit <= 1;\r
-              end\r
-          end\r
-      end\r
-\r
-  reg [3:0] RxBitCount;\r
-\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        RxValid_o <= 0;\r
-        RxData_o <= 'b0;\r
-        RxBitCount <= 0;\r
-        RxDone <= 0;\r
-      end\r
-    else\r
-      begin\r
-        RxValid_o <= 0;\r
-        RxDone <= 0;\r
-\r
-        if ( RxSampleBit )\r
-          begin\r
-            RxBitCount <= RxBitCount + 1;\r
-\r
-            casez ( RxBitCount )\r
-              0: // START bit - just ignore it\r
-                ;\r
-              9: // STOP bit - indicate we're ready again\r
-                begin\r
-                  RxDone <= 1;\r
-                  RxBitCount <= 0;\r
-                end\r
-              default: // Rx Data bits\r
-                begin\r
-                  RxData_o <= { RXD_i, RxData_o[7:1] };\r
-                  if ( RxBitCount == 8 )\r
-                    // Last data bit just received\r
-                    RxValid_o <= 1;\r
-                end\r
-            endcase\r
-          end\r
-      end\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/demo/verilog/demo_wishbone_master.v b/usrp2/fpga/eth/demo/verilog/demo_wishbone_master.v
deleted file mode 100644 (file)
index b3c64fb..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-module demo_wishbone_master(\r
-  Reset_n,\r
-  Clk,\r
-\r
-  //--- UART interface\r
-\r
-  // Pulsed when RxData_i is valid\r
-  RxValid_i,\r
-  RxData_i,\r
-\r
-  // Asserted when ready for a new Tx byte\r
-  TxReady_i,\r
-\r
-  // Pulsed when TxData_o is valid\r
-  TxValid_o,\r
-  TxData_o,\r
-\r
-  //--- Wishbone interface\r
-  STB_ETH_O,\r
-  STB_PDM_O,\r
-  STB_PG_O,\r
-  CYC_O,\r
-  ADR_O,\r
-  WE_O, \r
-  DAT_O,\r
-  DAT_I,\r
-  ACK_I\r
-);\r
-\r
-  input         Reset_n;\r
-  input         Clk;\r
-\r
-  //--- UART interface\r
-\r
-  // Pulsed when RxData_i is valid\r
-  input         RxValid_i;\r
-  input [7:0]   RxData_i;\r
-\r
-  // Asserted when ready for a new Tx byte\r
-  input         TxReady_i;\r
-\r
-  // Pulsed when TxData_o is valid\r
-  output        TxValid_o;\r
-  output [7:0]  TxData_o;\r
-\r
-  output        STB_ETH_O;\r
-  output        STB_PDM_O;\r
-  output        STB_PG_O;\r
-  output        CYC_O;\r
-  output [14:0] ADR_O;\r
-  output        WE_O;\r
-  output [15:0] DAT_O;\r
-  input [15:0]  DAT_I;\r
-  input         ACK_I;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Local declarations\r
-  //-------------------------------------------------------------------------\r
-\r
-  reg          TxValid_o;\r
-  reg [7:0]    TxData_o;\r
-  reg          STB_ETH_O;\r
-  reg          STB_PDM_O;\r
-  reg          STB_PG_O;\r
-  reg          CYC_O;\r
-  reg [14:0]   ADR_O;\r
-  reg          WE_O;\r
-  reg [15:0]   DAT_O;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Instantiation of sub-modules\r
-  //-------------------------------------------------------------------------\r
-\r
-  //--- Transmit FSM --------------------------------------------------------\r
-\r
-  parameter    TX_STATE_IDLE  = 0;\r
-  parameter    TX_STATE_INIT  = 1;\r
-  parameter    TX_STATE_OK    = 2;\r
-  parameter    TX_STATE_ERROR = 3;\r
-  parameter    TX_STATE_VALUE = 4;\r
-  parameter    TX_STATE_LF    = 5;\r
-\r
-  reg [2:0]    TxState;\r
-  reg [3:0]    TxIndex;\r
-  reg          TxLast;\r
-\r
-  wire [15:0]  TxValue16;\r
-  wire [3:0]   TxHexDigit;\r
-  wire [7:0]   TxHexChar;\r
-  reg          TxOK;\r
-  reg          TxERROR;\r
-  reg          TxValue;\r
-\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        TxState   <= TX_STATE_INIT;\r
-        TxIndex   <= 0;\r
-        TxLast    <= 0;\r
-\r
-        TxValid_o <= 0;\r
-        TxData_o  <= 'b0;\r
-      end\r
-    else\r
-      begin\r
-        TxValid_o <= 0;\r
-\r
-        // Don't do anything in cycle following TxValid_o being pulsed\r
-        if ( ~TxValid_o )\r
-          begin\r
-            casez ( TxState )\r
-              TX_STATE_INIT:\r
-                casez ( TxIndex )\r
-                  0: TxData_o <= "R";\r
-                  1: TxData_o <= "E";\r
-                  2: TxData_o <= "A";\r
-                  3: TxData_o <= "D";\r
-                  4: TxData_o <= "Y";\r
-                  default: TxLast <= 1;\r
-                endcase\r
-              \r
-              TX_STATE_OK:\r
-                casez ( TxIndex )\r
-                  0: TxData_o <= "O";\r
-                  1: TxData_o <= "K";\r
-                  default: TxLast <= 1;\r
-                endcase\r
-\r
-              TX_STATE_ERROR:\r
-                casez ( TxIndex )\r
-                  0: TxData_o <= "E";\r
-                  1: TxData_o <= "R";\r
-                  2: TxData_o <= "R";\r
-                  3: TxData_o <= "O";\r
-                  4: TxData_o <= "R";\r
-                  default: TxLast <= 1;\r
-                endcase\r
-\r
-              TX_STATE_VALUE:\r
-                casez ( TxIndex )\r
-                  0,1,2,3: TxData_o <= TxHexChar;\r
-                  default: TxLast <= 1;\r
-                endcase\r
-\r
-              TX_STATE_LF:\r
-                ;\r
-\r
-              default:\r
-                begin\r
-                  if ( TxOK )\r
-                    TxState <= TX_STATE_OK;\r
-                  else if ( TxERROR )\r
-                    TxState <= TX_STATE_ERROR;\r
-                  else if ( TxValue )\r
-                    begin                         \r
-                      TxState <= TX_STATE_VALUE;\r
-                      TxIndex <= 0;\r
-                    end\r
-                end\r
-            endcase\r
-\r
-            if ( (TxState != TX_STATE_IDLE) & TxReady_i )\r
-              begin\r
-                TxValid_o <= 1;\r
-\r
-                if ( TxLast )\r
-                  begin\r
-                    if ( TxState == TX_STATE_LF )\r
-                      begin\r
-                        TxData_o <= 10; // LF\r
-                        TxState  <= TX_STATE_IDLE;\r
-                        TxIndex  <= 0;\r
-                        TxLast   <= 0;\r
-                      end\r
-                    else\r
-                      begin\r
-                        TxData_o <= 13; // CR\r
-                        TxState  <= TX_STATE_LF;\r
-                      end\r
-                  end\r
-                else\r
-                  TxIndex <= TxIndex + 1;\r
-              end\r
-          end\r
-      end\r
-\r
-  assign TxHexDigit = (TxIndex==0) ? TxValue16[15:12] :\r
-                      (TxIndex==1) ? TxValue16[11: 8] :\r
-                      (TxIndex==2) ? TxValue16[ 7: 4] :\r
-                                     TxValue16[ 3: 0];\r
-\r
-  assign TxHexChar = (TxHexDigit <= 9) ? (TxHexDigit + "0") :\r
-                                         (TxHexDigit + "A"-'hA);\r
-\r
-  //--- Receive FSM ---------------------------------------------------------\r
-\r
-  parameter RX_STATE_IDLE           = 0;\r
-  parameter RX_STATE_VALUE16_FIRST  = 1;\r
-  parameter RX_STATE_VALUE16        = 2;\r
-  parameter RX_STATE_COMMENT        = 3;\r
-  parameter RX_STATE_CMD            = 4;\r
-\r
-  reg [2:0] RxState;\r
-\r
-  wire IsWhiteSpace = ( RxData_i==" "  ) |\r
-                      ( RxData_i=="\t" ) |\r
-                      ( RxData_i==","  ) |\r
-                      ( RxData_i==10   ) |\r
-                      ( RxData_i==13   );\r
-  wire IsHexDigit = (( RxData_i >= "0" ) & ( RxData_i <= "9" )) |\r
-                    (( RxData_i >= "a" ) & ( RxData_i <= "f" )) |\r
-                      (( RxData_i >= "A" ) & ( RxData_i <= "F" ));\r
-  wire [3:0] RxHexValue =\r
-               (( RxData_i >= "0" ) & ( RxData_i <= "9" )) ? RxData_i[3:0] :\r
-               (( RxData_i >= "a" ) & ( RxData_i <= "f" )) ? (RxData_i-"a"+'hA) :\r
-               (( RxData_i >= "A" ) & ( RxData_i <= "F" )) ? (RxData_i-"A"+'hA) : 0;\r
-\r
-  reg [15:0] RxValue16;\r
-  reg        RxWrite;\r
-  reg        RxWrData;\r
-\r
-  reg [15:0] RegAddr;\r
-  reg [15:0] RegRdData;\r
-\r
-  assign     TxValue16 = RegRdData;\r
-\r
-  always @( negedge Reset_n or posedge Clk )\r
-    if ( ~Reset_n )\r
-      begin\r
-        RxState   <= RX_STATE_IDLE;\r
-\r
-        RxValue16 <= 16'h0;\r
-        RxWrite   <= 0;\r
-        RxWrData  <= 0;\r
-\r
-        RegAddr   <= 'b0;\r
-        RegRdData <= 'b0;\r
-\r
-        STB_ETH_O <= 0;\r
-        STB_PDM_O <= 0;\r
-        STB_PG_O  <= 0;\r
-        CYC_O     <= 0;\r
-        ADR_O     <= 0;\r
-        WE_O      <= 0;\r
-        DAT_O     <= 0;\r
-\r
-        TxOK      <= 0;\r
-        TxERROR   <= 0;\r
-        TxValue   <= 0;\r
-      end\r
-    else\r
-      begin\r
-        TxOK    <= 0;\r
-        TxERROR <= 0;\r
-        TxValue <= 0;\r
-\r
-        if ( RxState == RX_STATE_CMD )\r
-          begin\r
-            STB_ETH_O <= ( RegAddr[15:12] == 4'h0 );\r
-            STB_PG_O  <= ( RegAddr[15:12] == 4'h1 );\r
-            STB_PDM_O <= ( RegAddr[15]    == 1'b1 );\r
-\r
-            CYC_O <= 1;\r
-            ADR_O <= RegAddr[14:0];\r
-            WE_O  <= RxWrite;\r
-\r
-            if ( ACK_I )\r
-              begin\r
-                // Register transaction is completing!\r
-                CYC_O     <= 0;\r
-                STB_ETH_O <= 0;\r
-                STB_PDM_O <= 0;\r
-                STB_PG_O  <= 0;\r
-\r
-                // Latch data read in case of a read\r
-                RegRdData <= DAT_I;\r
-\r
-                if ( RxWrite )\r
-                  // Transaction was a register write\r
-                  TxOK <= 1;\r
-                else\r
-                  TxValue <= 1;\r
-\r
-                RxState <= RX_STATE_IDLE;\r
-              end\r
-          end\r
-        else if ( (TxState == TX_STATE_IDLE) & RxValid_i )\r
-          begin\r
-            // A byte has been received!\r
-\r
-            casez ( RxState )\r
-              RX_STATE_IDLE:\r
-                if ( (RxData_i == "w") | (RxData_i == "W") )\r
-                  begin\r
-                    // Write Register Command: W rrrr dddd\r
-                    RxState  <= RX_STATE_VALUE16_FIRST;\r
-                    RxWrite  <= 1;\r
-                    RxWrData <= 0;\r
-                  end\r
-                else if ( (RxData_i == "r") | (RxData_i == "R") )\r
-                  begin\r
-                    // Read Register Command: R rrrr\r
-                    RxState <= RX_STATE_VALUE16_FIRST;\r
-                    RxWrite <= 0;\r
-                  end\r
-                else if ( RxData_i == "/" )\r
-                  begin\r
-                    // Comment!\r
-                    RxState <= RX_STATE_COMMENT;\r
-                  end\r
-                else if ( ~IsWhiteSpace )\r
-                  // Unknown command!\r
-                  TxERROR <= 1;\r
-\r
-              RX_STATE_COMMENT:\r
-                if ( (RxData_i == 13) | (RxData_i == 10) )\r
-                  // CR or LF - end of comment\r
-                  RxState <= RX_STATE_IDLE;\r
-\r
-              RX_STATE_VALUE16_FIRST:\r
-                if ( IsHexDigit )\r
-                  begin\r
-                    RxValue16 <= { 12'b0, RxHexValue };\r
-                    RxState <= RX_STATE_VALUE16;\r
-                  end\r
-                else if ( ~IsWhiteSpace )\r
-                  begin\r
-                    // Unexpected character!\r
-                    TxERROR <= 1;\r
-                    RxState <= RX_STATE_IDLE;\r
-                  end\r
-\r
-              RX_STATE_VALUE16:\r
-                if ( IsHexDigit )\r
-                  RxValue16 <= { RxValue16[11:0], RxHexValue };\r
-                else if ( IsWhiteSpace )\r
-                  begin\r
-                    // Done collecting 16-bit value\r
-                    if ( RxWrite )\r
-                      begin\r
-                        // This is a register write\r
-                        if ( RxWrData )\r
-                          begin\r
-                            // Second time around - just received write data\r
-                            DAT_O   <= RxValue16;\r
-                            RxState <= RX_STATE_CMD;\r
-                          end\r
-                        else\r
-                          begin\r
-                            // Just received register address - expecting second argument\r
-                            RegAddr <= RxValue16;\r
-                            RxState <= RX_STATE_VALUE16_FIRST;\r
-                            RxWrData <= 1; // Now receive the write data\r
-                          end\r
-                      end\r
-                    else\r
-                      begin\r
-                        // This is a register read\r
-                        RegAddr <= RxValue16;\r
-                        RxState <= RX_STATE_CMD;\r
-                      end\r
-                  end\r
-                else\r
-                  begin\r
-                    // Unexpected character!\r
-                    TxERROR <= 1;\r
-                    RxState <= RX_STATE_IDLE;\r
-                  end\r
-\r
-              default:\r
-                TxERROR <= 1;\r
-            endcase\r
-          end\r
-      end\r
-  \r
-endmodule\r
diff --git a/usrp2/fpga/eth/demo/verilog/tb_demo.v b/usrp2/fpga/eth/demo/verilog/tb_demo.v
deleted file mode 100644 (file)
index c5a8a3f..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-`timescale 1ns / 1ns\r
-\r
-module tb_demo;\r
-\r
-  //-------------------- Instantiate Xilinx glbl module ----------------------\r
-  // - this is needed to get ModelSim to work because e.g. I/O buffer models\r
-  //   refer directly to glbl.GTS and similar signals\r
-\r
-  wire GSR;\r
-  wire GTS;\r
-  xlnx_glbl glbl( .GSR( GSR ), .GTS( GTS ) );\r
-\r
-  reg  VLOG_ExitSignal = 0;\r
-  reg  Done = 0;\r
-  reg  Error = 0;\r
-\r
-  //-------------------------------------------------------------------------\r
-\r
-  reg        Reset_n;\r
-  reg        Clk_100M;\r
-  reg        Clk_125M;\r
-\r
-  wire       RS232_TXD;\r
-  wire       RS232_RXD;\r
-\r
-  wire       USB_TXD;\r
-  wire       USB_RXD;\r
-\r
-  //--- 10/100/1000BASE-T Ethernet PHY (MII/GMII)\r
-  wire       PHY_RESET_n;\r
-\r
-  wire       PHY_RXC;\r
-  wire [7:0] PHY_RXD;\r
-  wire       PHY_RXDV;\r
-  wire       PHY_RXER;\r
-\r
-  wire       PHY_GTX_CLK; // GMII only\r
-  wire       PHY_TXC;\r
-  wire [7:0] PHY_TXD;\r
-  wire       PHY_TXEN;\r
-  wire       PHY_TXER;\r
-\r
-  wire       PHY_COL = 0;\r
-  wire       PHY_CRS = 0;\r
-\r
-  wire       PHY_MDC;\r
-  wire       PHY_MDIO;\r
-\r
-  wire [1:4] LED;\r
-\r
-  reg [1:4]  Button = 4'b0000;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Local declarations\r
-  //-------------------------------------------------------------------------\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Instantiation of sub-modules\r
-  //-------------------------------------------------------------------------\r
-\r
-  //--- DUT\r
-\r
-  demo demo(\r
-    .Reset_n ( Reset_n  ),\r
-    .Clk_100M( Clk_100M ),\r
-    .Clk_125M( Clk_125M ),\r
-\r
-    .RS232_TXD( RS232_TXD ),\r
-    .RS232_RXD( RS232_RXD ),\r
-\r
-    .USB_TXD( USB_TXD ),\r
-    .USB_RXD( USB_RXD ),\r
-\r
-    //--- 10/100/1000BASE-T Ethernet PHY (MII/GMII)\r
-    .PHY_RESET_n( PHY_RESET_n ),\r
-\r
-    .PHY_RXC ( PHY_RXC  ),\r
-    .PHY_RXD ( PHY_RXD  ),\r
-    .PHY_RXDV( PHY_RXDV ),\r
-    .PHY_RXER( PHY_RXER ),\r
-\r
-    .PHY_GTX_CLK( PHY_GTX_CLK ), // GMII only\r
-    .PHY_TXC    ( PHY_TXC  ),\r
-    .PHY_TXD    ( PHY_TXD  ),\r
-    .PHY_TXEN   ( PHY_TXEN ),\r
-    .PHY_TXER   ( PHY_TXER ),\r
-\r
-    .PHY_COL( PHY_COL ),\r
-    .PHY_CRS( PHY_CRS ),\r
-\r
-    .PHY_MDC ( PHY_MDC  ),\r
-    .PHY_MDIO( PHY_MDIO ),\r
-\r
-    // Misc. I/Os\r
-    .LED   ( LED    ),\r
-    .Button( Button )\r
-  );\r
-\r
-  //-------------------------------------------------------------------------\r
-  // MII/GMII Ethernet PHY model\r
-\r
-  reg [2:0]  Speed = 3'b000;\r
-\r
-  Phy_sim U_Phy_sim(\r
-    .Gtx_clk( PHY_GTX_CLK ),\r
-    .Rx_clk ( PHY_RXC  ),\r
-    .Tx_clk ( PHY_TXC  ),\r
-    .Tx_er  ( PHY_TXER ),\r
-    .Tx_en  ( PHY_TXEN ),\r
-    .Txd    ( PHY_TXD  ),\r
-    .Rx_er  ( PHY_RXER ),\r
-    .Rx_dv  ( PHY_RXDV ),\r
-    .Rxd    ( PHY_RXD  ),\r
-    .Crs    ( PHY_CRS  ),\r
-    .Col    ( PHY_COL  ),\r
-    .Speed  ( Speed    ),\r
-    .Done   ( Done     )\r
-  );\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Generate all clocks & reset\r
-  //-------------------------------------------------------------------------\r
-\r
-  // Core master clock (100 MHz)\r
-  initial \r
-    begin\r
-      #10;\r
-      while ( !Done )\r
-        begin\r
-          #5 Clk_100M = 0;\r
-          #5 Clk_100M = 1;\r
-        end\r
-    end\r
-\r
-  // GMII master clock (125 MHz)\r
-  initial \r
-    begin\r
-      #10;\r
-      while ( !Done )\r
-        begin\r
-          #4 Clk_125M = 0;\r
-          #4 Clk_125M = 1;\r
-        end\r
-    end\r
-\r
-  initial\r
-    begin\r
-      Reset_n = 0;\r
-\r
-      #103;\r
-      Reset_n = 1;\r
-    end\r
-\r
-  //--- Emulate UART Transmitter --------------------------------------------\r
-\r
-  parameter    PRESCALER_16X = 3;\r
-  integer      Prescaler;\r
-  integer      TxLen = 0;\r
-  reg [2:0]    TxState;\r
-  integer      TxBit;\r
-  reg [1023:0] TxMsg;\r
-  reg          TXD;\r
-  reg          TxDone;\r
-\r
-  always @( negedge Reset_n or posedge Clk_100M )\r
-    if ( ~Reset_n )\r
-      begin\r
-        Prescaler <= 0;\r
-        TxState   = 0;\r
-        TXD       = 1;\r
-        TxBit     = 0;\r
-        TxDone    <= 0;\r
-      end\r
-    else\r
-      begin\r
-        TxDone <= 0;\r
-\r
-        if ( Prescaler == ((PRESCALER_16X + 1)*16 -1) )\r
-          Prescaler <= 0;\r
-        else\r
-          Prescaler <= Prescaler + 1;\r
-\r
-        if ( Prescaler==0 )\r
-          begin\r
-            casez ( TxState )\r
-              0: // IDLE\r
-                begin\r
-                  if ( TxLen != 0 )\r
-                    begin // Send start bit!\r
-                      TxBit = (TxLen-1)*8;\r
-                      TxLen = TxLen - 1;\r
-                      TXD = 0;\r
-                      TxState = 1;\r
-                    end\r
-                end\r
-\r
-              1: // Send next data bit\r
-                begin\r
-                  // Send next data bit\r
-                  TXD = TxMsg[ TxBit ];\r
-                  TxBit = TxBit + 1;\r
-                  if ( (TxBit % 8)==0 )\r
-                    // Next send two stop bits\r
-                    TxState = 2;\r
-                end\r
-\r
-              2: // First of two stop bits\r
-                begin\r
-                  TXD = 1;\r
-                  TxState = 3;\r
-                end\r
-\r
-              3: // Second of two stop bits\r
-                begin\r
-                  TXD = 1;\r
-                  TxState = 0;\r
-                  if ( TxLen == 0 )\r
-                    // Done with transmission!\r
-                    TxDone <= 1;\r
-                end\r
-            endcase\r
-          end\r
-      end\r
-\r
-  assign RS232_RXD = TXD;\r
-  assign USB_RXD = 1;\r
-\r
-  //--- Send commands to the DUT --------------------------------------------\r
-\r
-  initial\r
-    begin\r
-      #10;\r
-      while ( ~Reset_n ) #10;\r
-\r
-      // Wait a couple of clock edges before continuing to allow\r
-      // internal logic to get out of reset\r
-      repeat ( 5 )\r
-        @( posedge Clk_100M );\r
-\r
-      // Wait for the "READY" message to complete transmission\r
-      #60000;\r
-\r
-      // Select 100 Mbps\r
-      Speed = 3'b010;\r
-      TxMsg = "W 0022 0002 ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      TxMsg = "W 8000 8003 ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      TxMsg = "W 8001 0011 ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      TxMsg = "W 8002 1234 ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      TxMsg = "W 8003 5678 ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      TxMsg = "W 8004 9ABC ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      TxMsg = "W 8005 DEF0 ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      TxMsg = "W 8006 C5C0 ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      TxMsg = "W 8007 BABE ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      TxMsg = "R 8006 ";\r
-      TxLen = 7;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      // Enable PG!\r
-      TxMsg = "W 1000 0001 ";\r
-      TxLen = 12;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      // Read back that PG has been enabled!\r
-      TxMsg = "R 1000 ";\r
-      TxLen = 7;\r
-      while ( ~TxDone )\r
-        @( posedge Clk_100M );\r
-\r
-      #50000;\r
-\r
-      #50000;\r
-\r
-      Done = 1; #10;\r
-\r
-      $stop;\r
-    end\r
-\r
-  //--- Directly accesses a register on the internal Wishbone bus, bypassing the UART interface\r
-\r
-  task WrReg;\r
-    input [15:0] Reg;\r
-    input [15:0] Data;\r
-\r
-    begin\r
-    end\r
-  endtask\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/header_ram.v b/usrp2/fpga/eth/header_ram.v
deleted file mode 100644 (file)
index 699f16a..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-module header_ram
-  #(parameter REGNUM=0,
-    parameter WIDTH=32)
-    (input clk,
-     input set_stb,
-     input [7:0] set_addr,
-     input [31:0] set_data,
-     
-     input [3:0] addr,
-     output [31:0] q 
-     );
-   
-   reg [WIDTH-1:0] mini_ram[0:15];
-   wire           write_to_ram = (set_stb & (set_addr[7:4]==REGNUM[7:4]));
-   wire [3:0]     ram_addr = write_to_ram ? set_addr[3:0] : addr;
-                  
-   always @(posedge clk)
-     if(write_to_ram)
-       mini_ram[ram_addr] <= set_data;
-
-   assign         q = mini_ram[ram_addr];
-
-endmodule // header_ram
diff --git a/usrp2/fpga/eth/mac_rxfifo_int.v b/usrp2/fpga/eth/mac_rxfifo_int.v
deleted file mode 100644 (file)
index 6f6c5ed..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-
-module mac_rxfifo_int
-  (input clk, input rst,
-
-   input Rx_mac_empty,
-   output Rx_mac_rd,
-   input [31:0] Rx_mac_data,
-   input [1:0] Rx_mac_BE,
-   input Rx_mac_sop,
-   input Rx_mac_eop,
-   input Rx_mac_err,
-
-   output [31:0] wr_dat_o,
-   output wr_write_o,
-   output wr_done_o,
-   output wr_error_o,
-   input wr_ready_i,
-   input wr_full_i,
-
-   // FIFO Status
-   output [15:0] fifo_occupied,
-   output fifo_full,
-   output fifo_empty
-   );
-  
-   // Write side of short FIFO
-   //   Inputs: full, Rx_mac_empty, Rx_mac_sop, Rx_mac_eop, Rx_mac_err, Rx_mac_data/BE
-   //   Controls: write, datain, Rx_mac_rd
-
-   wire  write, full, read, empty, sop_o, eop_o, error_o;
-
-   // Write side of short FIFO
-   assign write = ~full & ~Rx_mac_empty;
-   assign Rx_mac_rd = write;
-
-`define LONGFIFO 0
-`ifdef LONGFIFO
-   cascadefifo2 #(.WIDTH(35),.SIZE(10)) mac_rx_longfifo
-     (.clk(clk),.rst(rst),.clear(0),
-      .datain({Rx_mac_sop,Rx_mac_eop,Rx_mac_err,Rx_mac_data}),.write(write),.full(full),
-      .dataout({sop_o,eop_o,error_o,wr_dat_o}),.read(read),.empty(empty),
-      .space(), .occupied(fifo_occupied) );   
-`else 
-   shortfifo #(.WIDTH(35)) mac_rx_sfifo
-     (.clk(clk),.rst(rst),.clear(0),
-      .datain({Rx_mac_sop,Rx_mac_eop,Rx_mac_err,Rx_mac_data}),.write(write),.full(full),
-      .dataout({sop_o,eop_o,error_o,wr_dat_o}),.read(read),.empty(empty),
-      .space(), .occupied(fifo_occupied[4:0]) );
-   assign fifo_occupied[15:5] = 0;
-`endif
-   
-   assign fifo_full = full;
-   assign fifo_empty = empty;
-   
-   // Read side of short FIFO
-   //    Inputs:    empty, dataout, wr_ready_i, wr_full_i
-   //    Controls:  read, wr_dat_o, wr_write_o, wr_done_o, wr_error_o
-
-   reg [1:0] rd_state;
-   localparam RD_IDLE = 0;
-   localparam RD_HAVEPKT = 1;
-   localparam RD_XFER = 2;
-   localparam RD_ERROR = 3;
-   
-   always @(posedge clk)
-     if(rst)
-       rd_state <= RD_IDLE;
-     else
-       case(rd_state)
-        RD_IDLE :
-          if(sop_o & ~empty)
-            rd_state <= RD_HAVEPKT;
-        RD_HAVEPKT :
-          if(wr_ready_i)
-            rd_state <= RD_XFER;
-        RD_XFER :
-          if(eop_o & ~empty)
-            rd_state <= RD_IDLE;
-          else if(wr_full_i)
-            rd_state <= RD_HAVEPKT;
-        RD_ERROR :
-          rd_state <= RD_IDLE;
-       endcase // case(rd_state)
-
-   assign     read = ~empty & ((rd_state == RD_XFER) | ((rd_state==RD_IDLE)&~sop_o));
-   assign     wr_write_o = ~empty & (rd_state == RD_XFER);
-   assign     wr_done_o = ~empty & (rd_state == RD_XFER)  & eop_o;
-   assign     wr_error_o = ~empty & (rd_state == RD_XFER) & error_o;
-
-endmodule // mac_rxfifo_int
diff --git a/usrp2/fpga/eth/mac_txfifo_int.v b/usrp2/fpga/eth/mac_txfifo_int.v
deleted file mode 100644 (file)
index 38d8d38..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-
-module mac_txfifo_int
-  (input clk, input rst, input mac_clk,
-
-   // To MAC
-   input Tx_mac_wa,
-   output Tx_mac_wr,
-   output [31:0] Tx_mac_data,
-   output [1:0] Tx_mac_BE,
-   output Tx_mac_sop,
-   output Tx_mac_eop,
-
-   // To buffer interface
-   input [31:0] rd_dat_i,
-   output rd_read_o,
-   output rd_done_o,
-   output rd_error_o,
-   input rd_sop_i,
-   input rd_eop_i,
-
-   // FIFO Status
-   output [15:0] fifo_occupied,
-   output fifo_full,
-   output fifo_empty  );
-
-   wire  empty, full, sfifo_write, sfifo_read;
-   wire [33:0] sfifo_in, sfifo_out;
-
-   /*
-   shortfifo #(.WIDTH(34)) txmac_sfifo
-     (.clk(clk),.rst(rst),.clear(0),
-      .datain(sfifo_in),.write(sfifo_write),.full(full),
-      .dataout(sfifo_out),.read(sfifo_read),.empty(empty));
-    */
-   fifo_xlnx_512x36_2clk mac_tx_fifo_2clk
-     (.rst(rst),
-      .wr_clk(clk),.din({2'b0,sfifo_in}),.full(full),.wr_en(sfifo_write),.wr_data_count(fifo_occupied[8:0]),
-      .rd_clk(mac_clk),.dout(sfifo_out),.empty(empty),.rd_en(sfifo_read),.rd_data_count() );
-   assign      fifo_occupied[15:9] = 0;
-   assign      fifo_full = full;
-   assign      fifo_empty = empty;   // Note empty is in wrong clock domain
-   
-   // MAC side signals
-   //  We are allowed to do one more write after we are told the FIFO is full
-   //  This allows us to register the _wa signal and speed up timing.
-   
-   reg                tx_mac_wa_d1;
-   always @(posedge clk)
-     tx_mac_wa_d1 <= Tx_mac_wa;
-   
-   assign      sfifo_read = ~empty & tx_mac_wa_d1;
-
-   assign      Tx_mac_wr = sfifo_read;
-   assign      Tx_mac_data = sfifo_out[31:0];
-   assign      Tx_mac_BE = 0;  // Since we only deal with packets that are multiples of 32 bits long
-   assign      Tx_mac_sop = sfifo_out[33];
-   assign      Tx_mac_eop = sfifo_out[32];
-
-
-   // BUFFER side signals
-   reg                xfer_active;
-   always @(posedge clk)
-     if(rst)
-       xfer_active <= 0;
-     else if(rd_eop_i & ~full)
-       xfer_active <= 0;
-     else if(rd_sop_i)
-       xfer_active <= 1;
-   
-   assign      sfifo_in = {rd_sop_i, rd_eop_i, rd_dat_i};
-   assign      sfifo_write = xfer_active & ~full;
-
-   assign      rd_read_o = sfifo_write;
-   assign      rd_done_o = 0;  // Always send everything we're given?
-   assign      rd_error_o = 0;  // No possible error situations?
-   
-endmodule // mac_txfifo_int
diff --git a/usrp2/fpga/eth/rtl/verilog/Clk_ctrl.v b/usrp2/fpga/eth/rtl/verilog/Clk_ctrl.v
deleted file mode 100644 (file)
index 9170826..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  Clk_ctrl.v                                                  ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: Clk_ctrl.v,v $\r
-// Revision 1.3  2006/01/19 14:07:52  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:13  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-// \r
-\r
-module Clk_ctrl(   \r
-Reset           ,\r
-Clk_125M        ,\r
-//host interface,\r
-Speed           ,\r
-//Phy interface ,\r
-Gtx_clk         ,\r
-Rx_clk          ,\r
-Tx_clk          ,\r
-//interface clk ,\r
-MAC_tx_clk      ,\r
-MAC_rx_clk      ,\r
-MAC_tx_clk_div  ,\r
-MAC_rx_clk_div  \r
-);\r
-input           Reset           ;\r
-input           Clk_125M        ;\r
-                //host interface\r
-input   [2:0]   Speed           ;       \r
-                //Phy interface         \r
-output          Gtx_clk         ;//used only in GMII mode\r
-input           Rx_clk          ;\r
-input           Tx_clk          ;//used only in MII mode\r
-                //interface clk signals\r
-output          MAC_tx_clk      ;\r
-output          MAC_rx_clk      ;\r
-output          MAC_tx_clk_div  ;\r
-output          MAC_rx_clk_div  ;\r
-\r
-\r
-// ******************************************************************************\r
-// internal signals                                                              \r
-// ******************************************************************************\r
-wire            Rx_clk_div2 ;\r
-wire            Tx_clk_div2 ;\r
-// ******************************************************************************\r
-//                                                              \r
-// ******************************************************************************\r
-   assign      Gtx_clk          = Clk_125M                   ;\r
-   assign      MAC_rx_clk       = Rx_clk                     ;\r
-   assign      MAC_rx_clk_div   = Rx_clk                     ;\r
-   assign      MAC_tx_clk       = Clk_125M;\r
-   assign      MAC_tx_clk_div   = Clk_125M;\r
-   \r
-\r
-   /* \r
-eth_clk_div2 U_0_CLK_DIV2(\r
-.Reset          (Reset          ),\r
-.IN             (Rx_clk         ),\r
-.OUT            (Rx_clk_div2    )\r
-);\r
-\r
-eth_clk_div2 U_1_CLK_DIV2(\r
-.Reset          (Reset          ),\r
-.IN             (Tx_clk         ),\r
-.OUT            (Tx_clk_div2    )\r
-);\r
-\r
-eth_clk_switch U_0_CLK_SWITCH(\r
-.IN_0           (Rx_clk_div2    ),\r
-.IN_1           (Rx_clk         ),\r
-.SW             (Speed[2]       ),\r
-.OUT            (MAC_rx_clk_div )\r
-);\r
-\r
-eth_clk_switch U_1_CLK_SWITCH(\r
-.IN_0           (Tx_clk         ),\r
-.IN_1           (Clk_125M       ),\r
-.SW             (Speed[2]       ),\r
-.OUT            (MAC_tx_clk     )\r
-);\r
-\r
-eth_clk_switch U_2_CLK_SWITCH(\r
-.IN_0           (Tx_clk_div2    ),\r
-.IN_1           (Clk_125M       ),\r
-.SW             (Speed[2]       ),\r
-.OUT            (MAC_tx_clk_div )\r
-);\r
-\r
-    */\r
-endmodule\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_rx.v b/usrp2/fpga/eth/rtl/verilog/MAC_rx.v
deleted file mode 100644 (file)
index 0e02e8f..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  MAC_rx.v                                                    ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: MAC_rx.v,v $\r
-// Revision 1.4  2006/11/17 17:53:07  maverickist\r
-// no message\r
-//\r
-// Revision 1.3  2006/01/19 14:07:52  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:13  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-// \r
-\r
-module MAC_rx \r
-  #(parameter RX_FF_DEPTH = 9)\r
-    (\r
-input           Reset   ,\r
-input           Clk_user,\r
-input           Clk     ,\r
-                //RMII interface\r
-input           MCrs_dv ,       \r
-input   [7:0]   MRxD    ,       \r
-input           MRxErr  ,       \r
-                //flow_control signals  \r
-output  [15:0]  pause_quanta,   \r
-output          pause_quanta_val,   \r
-output  [15:0]  rx_fifo_space,\r
-                //user interface \r
-output          Rx_mac_empty,\r
-input           Rx_mac_rd   ,\r
-output  [31:0]  Rx_mac_data ,\r
-output  [1:0]   Rx_mac_BE   ,\r
-output          Rx_mac_sop  ,\r
-output          Rx_mac_eop  ,\r
-output          Rx_mac_err  ,\r
-                //CPU\r
-input           MAC_rx_add_chk_en   ,   \r
-input   [7:0]   MAC_add_prom_data   ,   \r
-input   [2:0]   MAC_add_prom_add    ,   \r
-input           MAC_add_prom_wr     ,   \r
-input           broadcast_filter_en     ,\r
-input   [15:0]  broadcast_bucket_depth              ,    \r
-input   [15:0]  broadcast_bucket_interval           ,\r
-input           RX_APPEND_CRC,\r
-input   [4:0]   Rx_Hwmark           ,\r
-input   [4:0]   Rx_Lwmark           ,\r
-input           CRC_chk_en  ,               \r
-input   [5:0]   RX_IFG_SET    ,\r
-input   [15:0]  RX_MAX_LENGTH   ,// 1518\r
-input   [6:0]   RX_MIN_LENGTH   ,// 64\r
-                //RMON interface\r
-output  [15:0]  Rx_pkt_length_rmon      ,\r
-output          Rx_apply_rmon           ,\r
-output  [2:0]   Rx_pkt_err_type_rmon    ,\r
-output  [2:0]   Rx_pkt_type_rmon        ,\r
-\r
-     output [15:0] rx_fifo_occupied,\r
-     output rx_fifo_full,\r
-     output rx_fifo_empty,\r
-     output [31:0] debug\r
-);\r
-//******************************************************************************\r
-//internal signals                                                              \r
-//******************************************************************************\r
-                //CRC_chk interface\r
-wire            CRC_en  ;       \r
-wire    [7:0]   CRC_data;\r
-wire            CRC_init;       \r
-wire            CRC_err ;\r
-                //MAC_rx_add_chk interface\r
-wire            MAC_add_en          ;\r
-wire    [7:0]   MAC_add_data;\r
-wire            MAC_rx_add_chk_err  ;\r
-                //broadcast_filter\r
-wire            broadcast_ptr           ;\r
-wire            broadcast_drop          ;\r
-                //MAC_rx_ctrl interface \r
-wire    [7:0]   Fifo_data       ;\r
-wire            Fifo_data_en    ;\r
-wire            Fifo_full       ;\r
-wire            Fifo_data_err   ;\r
-wire            Fifo_data_drop  ;\r
-wire            Fifo_data_end   ;\r
-\r
-\r
-//******************************************************************************\r
-//instantiation                                                            \r
-//******************************************************************************\r
-\r
-\r
-MAC_rx_ctrl U_MAC_rx_ctrl(\r
-.Reset                       (Reset                     ),                                              \r
-.Clk                         (Clk                       ),                                                 \r
-  //RMII interface           ( //RMII interface         ),                                                    \r
-.MCrs_dv                     (MCrs_dv                   ),                             \r
-.MRxD                        (MRxD                      ),                         \r
-.MRxErr                      (MRxErr                    ),                             \r
- //CRC_chk interface         (//CRC_chk interface       ),                                                   \r
-.CRC_en                      (CRC_en                    ),                                          \r
-.CRC_data                    (CRC_data                  ),                                          \r
-.CRC_init                    (CRC_init                  ),                           \r
-.CRC_err                     (CRC_err                   ),                              \r
- //MAC_rx_add_chk interface  (//MAC_rx_add_chk interface),                                                   \r
-.MAC_add_en                  (MAC_add_en                ),                                             \r
-.MAC_add_data                (MAC_add_data              ),\r
-.MAC_rx_add_chk_err          (MAC_rx_add_chk_err        ),                             \r
- //broadcast_filter          (//broadcast_filter        ),                           \r
-.broadcast_ptr               (broadcast_ptr             ),                         \r
-.broadcast_drop              (broadcast_drop            ),                             \r
- //flow_control signals      (//flow_control signals    ),                           \r
-.pause_quanta                (pause_quanta              ),                         \r
-.pause_quanta_val            (pause_quanta_val          ),                         \r
- //MAC_rx_FF interface       (//MAC_rx_FF interface     ),                                                   \r
-.Fifo_data                   (Fifo_data                 ),                                         \r
-.Fifo_data_en                (Fifo_data_en              ),                                         \r
-.Fifo_data_err               (Fifo_data_err             ),                         \r
-.Fifo_data_drop              (Fifo_data_drop            ),                         \r
-.Fifo_data_end               (Fifo_data_end             ),                         \r
-.Fifo_full                   (Fifo_full                 ),                                      \r
- //RMON interface            (//RMON interface          ),                               \r
-.Rx_pkt_type_rmon            (Rx_pkt_type_rmon          ),                                        \r
-.Rx_pkt_length_rmon          (Rx_pkt_length_rmon        ),                                             \r
-.Rx_apply_rmon               (Rx_apply_rmon             ),                                         \r
-.Rx_pkt_err_type_rmon        (Rx_pkt_err_type_rmon      ),                                         \r
- //CPU                       (//CPU                     ),   \r
-.RX_IFG_SET                  (RX_IFG_SET                ),                             \r
-.RX_MAX_LENGTH               (RX_MAX_LENGTH             ),                           \r
-.RX_MIN_LENGTH               (RX_MIN_LENGTH             )                           \r
-);\r
-\r
-   assign      debug = {28'd0, Fifo_data_en, Fifo_data_err, Fifo_data_end,Fifo_full};\r
-   \r
-MAC_rx_FF #(.RX_FF_DEPTH(RX_FF_DEPTH))  U_MAC_rx_FF (\r
-.Reset                       (Reset                     ),\r
-.Clk_MAC                     (Clk                       ), \r
-.Clk_SYS                     (Clk_user                  ), \r
- //MAC_rx_ctrl interface     (//MAC_rx_ctrl interface   ),\r
-.Fifo_data                   (Fifo_data                 ),\r
-.Fifo_data_en                (Fifo_data_en              ),\r
-.Fifo_full                   (Fifo_full                 ),\r
-.Fifo_data_err               (Fifo_data_err             ),\r
-//.Fifo_data_drop              (Fifo_data_drop            ),\r
-.Fifo_data_end               (Fifo_data_end             ),\r
-.Fifo_space                  (rx_fifo_space             ),                                                  \r
- //CPU                       (//CPU                     ),\r
-.Rx_Hwmark                   (Rx_Hwmark                 ),\r
-.Rx_Lwmark                   (Rx_Lwmark                 ),\r
-.RX_APPEND_CRC               (RX_APPEND_CRC             ),\r
- //user interface            (//user interface          ),\r
-.Rx_mac_empty                (Rx_mac_empty              ),\r
-.Rx_mac_rd                   (Rx_mac_rd                 ),\r
-.Rx_mac_data                 (Rx_mac_data               ), \r
-.Rx_mac_BE                   (Rx_mac_BE                 ),\r
-.Rx_mac_sop                  (Rx_mac_sop                ), \r
-.Rx_mac_eop                  (Rx_mac_eop                ),\r
-.Rx_mac_err                  (Rx_mac_err                ),\r
-\r
-.fifo_occupied(rx_fifo_occupied),\r
-.fifo_full_dbg(rx_fifo_full),\r
-.fifo_empty(rx_fifo_empty)\r
-); \r
-\r
-   Broadcast_filter U_Broadcast_filter\r
-     (.Reset                      (Reset                      ),\r
-      .Clk                        (Clk                        ),\r
-      //MAC_rx_ctrl              (//MAC_rx_ctrl              ),\r
-      .broadcast_ptr              (broadcast_ptr              ),\r
-      .broadcast_drop             (broadcast_drop             ),\r
-      //FromCPU                  (//FromCPU                  ),\r
-      .broadcast_filter_en        (broadcast_filter_en        ),\r
-      .broadcast_bucket_depth     (broadcast_bucket_depth     ),           \r
-      .broadcast_bucket_interval  (broadcast_bucket_interval  )\r
-      ); \r
-   \r
-CRC_chk U_CRC_chk(\r
-.Reset                      (Reset                      ),\r
-.Clk                        (Clk                        ),\r
-.CRC_data                   (CRC_data                   ),\r
-.CRC_init                   (CRC_init                   ),\r
-.CRC_en                     (CRC_en                     ),\r
- //From CPU                 (//From CPU                 ),\r
-.CRC_chk_en                 (CRC_chk_en                 ),\r
-.CRC_err                    (CRC_err                    )\r
-);   \r
-   \r
-   MAC_rx_add_chk U_MAC_rx_add_chk\r
-     (.Reset                      (Reset                      ),\r
-      .Clk                        (Clk                        ),\r
-      .Init                       (CRC_init                   ),\r
-      .data                       (MAC_add_data               ),\r
-      .MAC_add_en                 (MAC_add_en                 ),\r
-      .MAC_rx_add_chk_err         (MAC_rx_add_chk_err         ),\r
-      //From CPU                 (//From CPU                 ),\r
-      .MAC_rx_add_chk_en          (MAC_rx_add_chk_en          ),\r
-      .MAC_add_prom_data          (MAC_add_prom_data          ),\r
-      .MAC_add_prom_add           (MAC_add_prom_add           ),\r
-      .MAC_add_prom_wr            (MAC_add_prom_wr            )\r
-      );\r
-   \r
-endmodule // MAC_rx\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_rx/Broadcast_filter.v b/usrp2/fpga/eth/rtl/verilog/MAC_rx/Broadcast_filter.v
deleted file mode 100644 (file)
index bc95e31..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  Broadcast_filter.v                                          ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: Broadcast_filter.v,v $\r
-// Revision 1.3  2006/01/19 14:07:54  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:16  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//    \r
-\r
-module Broadcast_filter (    \r
-Reset                   ,\r
-Clk                     ,\r
-//MAC_rx_ctrl           ,\r
-broadcast_ptr           ,\r
-broadcast_drop          ,\r
-//FromCPU               ,\r
-broadcast_filter_en     ,\r
-broadcast_bucket_depth    ,\r
-broadcast_bucket_interval \r
-);\r
-input           Reset                       ;\r
-input           Clk                         ;\r
-                //MAC_rx_ctrl               \r
-input           broadcast_ptr               ;\r
-output          broadcast_drop              ;\r
-                //FromCPU                   ;\r
-input           broadcast_filter_en         ;\r
-input   [15:0]  broadcast_bucket_depth      ;\r
-input   [15:0]  broadcast_bucket_interval   ;\r
-\r
-//******************************************************************************  \r
-//internal signals                                                                \r
-//******************************************************************************  \r
-reg     [15:0]  time_counter            ;\r
-reg     [15:0]  broadcast_counter        ;\r
-reg             broadcast_drop          ;\r
-//******************************************************************************  \r
-//                                                               \r
-//****************************************************************************** \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        time_counter    <=0;\r
-    else if (time_counter==broadcast_bucket_interval)\r
-        time_counter    <=0;\r
-    else\r
-        time_counter    <=time_counter+1;\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        broadcast_counter   <=0;\r
-    else if (time_counter==broadcast_bucket_interval)\r
-        broadcast_counter   <=0;\r
-    else if (broadcast_ptr&&broadcast_counter!=broadcast_bucket_depth)\r
-        broadcast_counter   <=broadcast_counter+1;\r
-                \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        broadcast_drop      <=0;\r
-    else if(broadcast_filter_en&&broadcast_counter==broadcast_bucket_depth)\r
-        broadcast_drop      <=1;\r
-    else\r
-        broadcast_drop      <=0;\r
-\r
-endmodule
\ No newline at end of file
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_rx/CRC_chk.v b/usrp2/fpga/eth/rtl/verilog/MAC_rx/CRC_chk.v
deleted file mode 100644 (file)
index d6bb22b..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  CRC_chk.v                                                   ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: CRC_chk.v,v $\r
-// Revision 1.3  2006/01/19 14:07:54  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:16  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//                                           \r
-\r
-module CRC_chk(\r
-Reset       ,\r
-Clk         ,\r
-CRC_data    ,\r
-CRC_init    ,\r
-CRC_en      ,\r
-//From CPU  \r
-CRC_chk_en  ,\r
-CRC_err     \r
-);\r
-input       Reset       ;\r
-input       Clk         ;\r
-input[7:0]  CRC_data    ;\r
-input       CRC_init    ;\r
-input       CRC_en      ;\r
-            //From CPU\r
-input       CRC_chk_en  ;\r
-output      CRC_err     ; \r
-//******************************************************************************   \r
-//internal signals                                                              \r
-//******************************************************************************\r
-reg [31:0]  CRC_reg;\r
-//******************************************************************************\r
-//input data width is 8bit, and the first bit is bit[0]\r
-function[31:0]  NextCRC;\r
-    input[7:0]      D;\r
-    input[31:0]     C;\r
-    reg[31:0]       NewCRC;\r
-    begin\r
-    NewCRC[0]=C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[1]=C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[2]=C[26]^D[5]^C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[3]=C[27]^D[4]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[4]=C[28]^D[3]^C[27]^D[4]^C[26]^D[5]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[5]=C[29]^D[2]^C[28]^D[3]^C[27]^D[4]^C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[6]=C[30]^D[1]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[7]=C[31]^D[0]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[24]^D[7];\r
-    NewCRC[8]=C[0]^C[28]^D[3]^C[27]^D[4]^C[25]^D[6]^C[24]^D[7];\r
-    NewCRC[9]=C[1]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^D[6];\r
-    NewCRC[10]=C[2]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[24]^D[7];\r
-    NewCRC[11]=C[3]^C[28]^D[3]^C[27]^D[4]^C[25]^D[6]^C[24]^D[7];\r
-    NewCRC[12]=C[4]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[13]=C[5]^C[30]^D[1]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[14]=C[6]^C[31]^D[0]^C[30]^D[1]^C[28]^D[3]^C[27]^D[4]^C[26]^D[5];\r
-    NewCRC[15]=C[7]^C[31]^D[0]^C[29]^D[2]^C[28]^D[3]^C[27]^D[4];\r
-    NewCRC[16]=C[8]^C[29]^D[2]^C[28]^D[3]^C[24]^D[7];\r
-    NewCRC[17]=C[9]^C[30]^D[1]^C[29]^D[2]^C[25]^D[6];\r
-    NewCRC[18]=C[10]^C[31]^D[0]^C[30]^D[1]^C[26]^D[5];\r
-    NewCRC[19]=C[11]^C[31]^D[0]^C[27]^D[4];\r
-    NewCRC[20]=C[12]^C[28]^D[3];\r
-    NewCRC[21]=C[13]^C[29]^D[2];\r
-    NewCRC[22]=C[14]^C[24]^D[7];\r
-    NewCRC[23]=C[15]^C[25]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[24]=C[16]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[25]=C[17]^C[27]^D[4]^C[26]^D[5];\r
-    NewCRC[26]=C[18]^C[28]^D[3]^C[27]^D[4]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[27]=C[19]^C[29]^D[2]^C[28]^D[3]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[28]=C[20]^C[30]^D[1]^C[29]^D[2]^C[26]^D[5];\r
-    NewCRC[29]=C[21]^C[31]^D[0]^C[30]^D[1]^C[27]^D[4];\r
-    NewCRC[30]=C[22]^C[31]^D[0]^C[28]^D[3];\r
-    NewCRC[31]=C[23]^C[29]^D[2];\r
-    NextCRC=NewCRC;\r
-    end\r
-        endfunction\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        CRC_reg     <=32'hffffffff;\r
-    else if (CRC_init)\r
-        CRC_reg     <=32'hffffffff;\r
-    else if (CRC_en)\r
-        CRC_reg     <=NextCRC(CRC_data,CRC_reg);\r
-\r
-assign  CRC_err = CRC_chk_en&(CRC_reg[31:0] != 32'hc704dd7b);\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_rx/MAC_rx_FF.v b/usrp2/fpga/eth/rtl/verilog/MAC_rx/MAC_rx_FF.v
deleted file mode 100644 (file)
index e212b89..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-\r
-// ////////////////////////////////////////////////////////////////////\r
-// Completely Rewritten by M. Ettus, no John Gao code left\r
-// ////////////////////////////////////////////////////////////////////\r
-\r
-module MAC_rx_FF \r
-  #(parameter RX_FF_DEPTH = 9)\r
-    (input         Reset,\r
-     input         Clk_MAC,\r
-     input         Clk_SYS,\r
-     \r
-     // MAC_rx_ctrl interface \r
-     input   [7:0] Fifo_data,\r
-     input         Fifo_data_en,\r
-     output        Fifo_full,\r
-     input         Fifo_data_err,\r
-     input         Fifo_data_end,\r
-     output [15:0] Fifo_space,\r
-\r
-     // CPU\r
-     input         RX_APPEND_CRC,\r
-     input [4:0]   Rx_Hwmark,\r
-     input [4:0]   Rx_Lwmark,\r
-     \r
-     // User interface \r
-     output        Rx_mac_empty,\r
-     input         Rx_mac_rd,\r
-     output [31:0] Rx_mac_data,\r
-     output [1:0]  Rx_mac_BE,\r
-     output        Rx_mac_sop,\r
-     output        Rx_mac_eop,\r
-     output        Rx_mac_err,\r
-\r
-     // FIFO Levels\r
-     output [15:0] fifo_occupied,\r
-     output fifo_full_dbg,\r
-     output fifo_empty\r
-     );\r
-\r
-   reg [1:0]      FF_state;       \r
-   reg [2:0]      PKT_state;\r
-   reg [31:0]     staging;\r
-   reg [35:0]     staging2;\r
-   reg                    line_ready, line_ready_d1;\r
-   wire           sop_i, eop_i;\r
-   reg [1:0]      be;\r
-   \r
-   always @(posedge Clk_MAC or posedge Reset)\r
-     if(Reset)\r
-       FF_state <= 0;\r
-     else\r
-       if(Fifo_data_err | Fifo_data_end)\r
-        FF_state <= 0;\r
-       else if(Fifo_data_en)\r
-        FF_state <= FF_state + 1;\r
-   \r
-   always @(posedge Clk_MAC or posedge Reset)\r
-     if(Reset)\r
-       staging[31:0] <= 0;\r
-     else if(Fifo_data_en)\r
-       case(FF_state)\r
-        0 : staging[31:24] <= Fifo_data;\r
-        1 : staging[23:16] <= Fifo_data;\r
-        2 : staging[15:8] <= Fifo_data;\r
-        3 : staging[7:0] <= Fifo_data;\r
-       endcase // case(FF_state)\r
-\r
-   localparam     PKT_idle = 0;\r
-   localparam     PKT_sop = 1;\r
-   localparam     PKT_pkt = 2;\r
-   localparam     PKT_end = 3;\r
-   localparam     PKT_err = 4;\r
-\r
-   always @(posedge Clk_MAC or posedge Reset)\r
-     if(Reset)\r
-       PKT_state <= 0;\r
-     else\r
-       case(PKT_state)\r
-        PKT_idle :\r
-          if(Fifo_data_en)\r
-            PKT_state <= PKT_sop;\r
-        PKT_sop, PKT_pkt :\r
-          if(Fifo_data_err | (line_ready & Fifo_full))\r
-            PKT_state <= PKT_err;\r
-          else if(Fifo_data_end)\r
-            PKT_state <= PKT_end;\r
-          else if(line_ready & ~Fifo_full)\r
-            PKT_state <= PKT_pkt;\r
-        PKT_end :\r
-          PKT_state <= PKT_idle;\r
-        PKT_err :\r
-          if(~Fifo_full)\r
-            PKT_state <= PKT_idle;\r
-       endcase // case(PKT_state)\r
-\r
-   assign         sop_i = (PKT_state == PKT_sop);\r
-   assign         eop_i = (PKT_state == PKT_end);\r
-   \r
-   always @(posedge Clk_MAC)\r
-     if(line_ready)\r
-       staging2 <= {sop_i, eop_i, be[1:0], staging};\r
-   \r
-   always @(posedge Clk_MAC)\r
-     if(Reset)\r
-       line_ready <= 0;\r
-     else if((Fifo_data_en & (FF_state==2'd3)) | Fifo_data_end | Fifo_data_err)\r
-       line_ready <= 1;\r
-     else\r
-       line_ready <= 0;\r
-\r
-   always @(posedge Clk_MAC)\r
-     line_ready_d1 <= line_ready;\r
-   \r
-   always @(posedge Clk_MAC)\r
-     if(Fifo_data_end | Fifo_data_err)\r
-       be <= FF_state;\r
-     else\r
-       be <= 0;\r
-   \r
-   wire           sop_o, eop_o, empty;\r
-   wire [1:0]     be_o;\r
-   wire [RX_FF_DEPTH-1:0] occupied, occupied_sysclk;\r
-   wire [31:0]            dataout;\r
-\r
-/*\r
-   fifo_2clock #(.DWIDTH(36),.AWIDTH(RX_FF_DEPTH)) mac_rx_fifo\r
-     (.wclk(Clk_MAC),.datain((PKT_state==PKT_err) ? 36'hF_FFFF_FFFF : staging2),.write(~Fifo_full & (line_ready_d1|(PKT_state==PKT_err))),\r
-      .full(Fifo_full),.level_wclk(occupied),\r
-      .rclk(Clk_SYS),.dataout({sop_o,eop_o,be_o[1:0],dataout}),.read(Rx_mac_rd),\r
-      .empty(empty),.level_rclk(),\r
-      .arst(Reset) );\r
-  */\r
-\r
-   fifo_xlnx_2Kx36_2clk mac_rx_ff_core\r
-     (\r
-      .din((PKT_state==PKT_err) ? 36'hF_FFFF_FFFF : staging2), // Bus [35 : 0] \r
-      .rd_clk(Clk_SYS),\r
-      .rd_en(Rx_mac_rd),\r
-      .rst(Reset),\r
-      .wr_clk(Clk_MAC),\r
-      .wr_en(~Fifo_full & (line_ready_d1|(PKT_state==PKT_err))),\r
-      .dout({sop_o,eop_o,be_o[1:0],dataout}), // Bus [35 : 0] \r
-      .empty(empty),\r
-      .full(Fifo_full),\r
-      .rd_data_count(occupied_sysclk), // Bus [11 : 0] \r
-      .wr_data_count(occupied)); // Bus [11 : 0] \r
-   \r
-   assign         Fifo_space[15:RX_FF_DEPTH] = 0;\r
-   assign         Fifo_space[RX_FF_DEPTH-1:0] = ~occupied;\r
-   assign         fifo_occupied = occupied_sysclk;\r
-   assign         fifo_full_dbg = Fifo_full;   // FIXME -- in wrong clock domain\r
-   assign         fifo_empty = empty;\r
-   \r
-   // mac side fifo interface\r
-   //   Input - Rx_mac_rd\r
-   //   Output - Rx_mac_empty, Rx_mac_sop, Rx_mac_eop, Rx_mac_err, Rx_mac_data, Rx_mac_BE\r
-\r
-   assign         Rx_mac_BE = be_o;\r
-   assign         Rx_mac_sop = sop_o & ~eop_o;\r
-   assign         Rx_mac_eop = eop_o;\r
-   assign         Rx_mac_err = sop_o & eop_o;\r
-   assign         Rx_mac_empty = empty;\r
-   assign         Rx_mac_data = dataout;\r
-   \r
-endmodule // MAC_rx_FF\r
-\r
-// FIXME  Should we send out an "almost full" signal instead of full?\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_rx/MAC_rx_add_chk.v b/usrp2/fpga/eth/rtl/verilog/MAC_rx/MAC_rx_add_chk.v
deleted file mode 100644 (file)
index 0c8d6bd..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-// ////////////////////////////////////////////////////////////////////\r
-// //                                                              ////\r
-// //  MAC_rx_add_chk.v                                            ////\r
-// //                                                              ////\r
-// //  This file is part of the Ethernet IP core project           ////\r
-// //  http://www.opencores.org/projects.cgi/wr_en/ethernet_tri_mode/////\r
-// //                                                              ////\r
-// //  Author(s):                                                  ////\r
-// //      - Jon Gao (gaojon@yahoo.com)                            ////\r
-// //                                                              ////\r
-// //                                                              ////\r
-// ////////////////////////////////////////////////////////////////////\r
-// //                                                              ////\r
-// // Copyright (C) 2001 Authors                                   ////\r
-// //                                                              ////\r
-// // This source file may be used and distributed without         ////\r
-// // restriction provided that this copyright statement is not    ////\r
-// // removed from the file and that any derivative work contains  ////\r
-// // the original copyright notice and the associated disclaimer. ////\r
-// //                                                              ////\r
-// // This source file is free software; you can redistribute it   ////\r
-// // and/or modify it under the terms of the GNU Lesser General   ////\r
-// // Public License as published by the Free Software Foundation; ////\r
-// // either version 2.1 of the License, or (at your option) any   ////\r
-// // later version.                                               ////\r
-// //                                                              ////\r
-// // This source is distributed in the hope that it will be       ////\r
-// // useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-// // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-// // PURPOSE.  See the GNU Lesser General Public License for more ////\r
-// // details.                                                     ////\r
-// //                                                              ////\r
-// // You should have received a copy of the GNU Lesser General    ////\r
-// // Public License along with this source; if not, download it   ////\r
-// // from http://www.opencores.org/lgpl.shtml                     ////\r
-// //                                                              ////\r
-// ////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: MAC_rx_add_chk.v,v $\r
-// Revision 1.3  2006/01/19 14:07:54  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:17  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//                                           \r
-\r
-module MAC_rx_add_chk \r
-  (Reset               ,                                \r
-   Clk                 ,                                \r
-   Init                ,                                \r
-   data                ,                                \r
-   MAC_add_en          ,                                \r
-   MAC_rx_add_chk_err  ,                                \r
-   //From CPU                                         \r
-   MAC_rx_add_chk_en   ,                                \r
-   MAC_add_prom_data   ,       \r
-   MAC_add_prom_add    ,       \r
-   MAC_add_prom_wr             \r
-   );\r
-\r
-   input Reset               ;\r
-   input Clk                 ;\r
-   input Init                ;\r
-   input [7:0] data                ;\r
-   input       MAC_add_en          ;\r
-   output      MAC_rx_add_chk_err  ;\r
-   //From CPU\r
-   input       MAC_rx_add_chk_en   ;   \r
-   input [7:0] MAC_add_prom_data   ;   \r
-   input [2:0] MAC_add_prom_add    ;   \r
-   input       MAC_add_prom_wr     ;   \r
-   \r
-   // ******************************************************************************   \r
-   // internal signals                                                              \r
-   // ******************************************************************************\r
-   reg [2:0]   addr_rd;\r
-   wire [2:0]  addr_wr;\r
-   wire [7:0]  din;\r
-   //wire [7:0]  dout;\r
-   reg [7:0]   dout;\r
-   wire        wr_en;\r
-   \r
-   reg         MAC_rx_add_chk_err;\r
-   reg         MAC_add_prom_wr_dl1;\r
-   reg         MAC_add_prom_wr_dl2;\r
-   reg [7:0]   data_dl1                ;\r
-   reg         MAC_add_en_dl1          ;\r
-\r
-   // ******************************************************************************   \r
-   // write data from cpu to prom                                                              \r
-   // ******************************************************************************\r
-   always @ (posedge Clk or posedge Reset)\r
-     if (Reset)\r
-       begin\r
-          data_dl1            <=0;\r
-          MAC_add_en_dl1      <=0;\r
-       end\r
-     else\r
-       begin\r
-          data_dl1            <=data;\r
-          MAC_add_en_dl1      <=MAC_add_en;\r
-       end        \r
-   \r
-   always @ (posedge Clk or posedge Reset)\r
-     if (Reset)\r
-       begin\r
-          MAC_add_prom_wr_dl1     <=0;\r
-          MAC_add_prom_wr_dl2     <=0;\r
-       end\r
-     else\r
-       begin\r
-          MAC_add_prom_wr_dl1     <=MAC_add_prom_wr;\r
-          MAC_add_prom_wr_dl2     <=MAC_add_prom_wr_dl1;\r
-       end    \r
-   \r
-   assign wr_en      =MAC_add_prom_wr_dl1&!MAC_add_prom_wr_dl2;\r
-   assign addr_wr    =MAC_add_prom_add;\r
-   assign din        =MAC_add_prom_data;\r
-   \r
-   // ******************************************************************************   \r
-   // mac add verify                                                             \r
-   // ******************************************************************************\r
-   always @ (posedge Clk or posedge Reset)\r
-     if (Reset)\r
-       addr_rd       <=0;\r
-     else if (Init)\r
-       addr_rd       <=0;\r
-     else if (MAC_add_en)\r
-       addr_rd       <=addr_rd + 1;\r
-   \r
-   always @ (posedge Clk or posedge Reset)\r
-     if (Reset)\r
-       MAC_rx_add_chk_err  <=0;\r
-     else if (Init)\r
-       MAC_rx_add_chk_err  <=0;\r
-     else if (MAC_rx_add_chk_en && MAC_add_en_dl1 && (dout!=data_dl1) )\r
-       MAC_rx_add_chk_err  <=1;\r
-   \r
-   \r
-   // ******************************************************************************   \r
-   // a port for read ,b port for write .\r
-   // ******************************************************************************     \r
-\r
-   reg [7:0] address_ram [0:7];\r
-   always @(posedge Clk)\r
-     if(wr_en)\r
-       address_ram[addr_wr] <= din;\r
-   \r
-   always @(posedge Clk)\r
-     dout <= address_ram[addr_rd];\r
-\r
-endmodule // MAC_rx_add_chk\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_rx/MAC_rx_ctrl.v b/usrp2/fpga/eth/rtl/verilog/MAC_rx/MAC_rx_ctrl.v
deleted file mode 100644 (file)
index 5ab7958..0000000
+++ /dev/null
@@ -1,664 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  MAC_rx_ctrl.v                                               ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: MAC_rx_ctrl.v,v $\r
-// Revision 1.4  2006/06/25 04:58:56  maverickist\r
-// no message\r
-//\r
-// Revision 1.3  2006/01/19 14:07:54  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.3  2005/12/16 06:44:17  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.2  2005/12/13 12:15:37  Administrator\r
-// no message\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//                                           \r
-\r
-module MAC_rx_ctrl (\r
-Reset   ,                                     \r
-Clk     ,                                     \r
-//RMII interface                                    \r
-MCrs_dv ,       //\r
-MRxD    ,       //  \r
-MRxErr  ,       //  \r
-//CRC_chk interface                                 \r
-CRC_en    ,                                 \r
-CRC_data,\r
-CRC_init  ,\r
-CRC_err  ,                      \r
-//MAC_rx_add_chk interface                          \r
-MAC_add_en          ,                         \r
-MAC_add_data,\r
-MAC_rx_add_chk_err  ,   \r
-//broadcast_filter     \r
-broadcast_ptr   ,      \r
-broadcast_drop  ,   \r
-//flow_control signals      \r
-pause_quanta        ,       \r
-pause_quanta_val    ,       \r
-//MAC_rx_FF interface                               \r
-Fifo_data       ,                             \r
-Fifo_data_en    ,                             \r
-Fifo_data_err   ,  \r
-Fifo_data_drop  ,\r
-Fifo_data_end   ,  \r
-Fifo_full       ,                          \r
-//RMON interface                \r
-Rx_pkt_type_rmon        ,                    \r
-Rx_pkt_length_rmon      ,                     \r
-Rx_apply_rmon           ,                     \r
-Rx_pkt_err_type_rmon    ,                     \r
-//CPU                                         \r
-RX_IFG_SET    ,\r
-RX_MAX_LENGTH,\r
-RX_MIN_LENGTH\r
-);\r
-\r
-input           Reset   ;         \r
-input           Clk     ;         \r
-                //RMII interface  \r
-input           MCrs_dv ;                                       \r
-input   [7:0]   MRxD    ;                                       \r
-input           MRxErr  ;                                       \r
-                //CRC_chk interface\r
-output          CRC_en  ;       \r
-output          CRC_init;       \r
-output [7:0]    CRC_data;\r
-input           CRC_err ;\r
-                //MAC_rx_add_chk interface\r
-output          MAC_add_en          ;\r
-output [7:0]    MAC_add_data;\r
-input           MAC_rx_add_chk_err  ;\r
-                //broadcast_filter\r
-output          broadcast_ptr           ;\r
-input           broadcast_drop          ;\r
-                //flow_control signals  \r
-output  [15:0]  pause_quanta        ;   \r
-output          pause_quanta_val    ;   \r
-                //MAC_rx_FF interface\r
-output  [7:0]   Fifo_data       ;\r
-output          Fifo_data_en    ;\r
-output          Fifo_data_err   ;\r
-output          Fifo_data_drop  ;\r
-output          Fifo_data_end   ;\r
-input           Fifo_full;\r
-                //RMON interface\r
-output  [15:0]  Rx_pkt_length_rmon      ;\r
-output          Rx_apply_rmon           ;\r
-output  [2:0]   Rx_pkt_err_type_rmon    ;\r
-output  [2:0]   Rx_pkt_type_rmon        ;\r
-                //CPU\r
-input   [5:0]   RX_IFG_SET    ;\r
-input   [15:0]  RX_MAX_LENGTH   ;// 1518\r
-input   [6:0]   RX_MIN_LENGTH   ;// 64\r
-\r
-//******************************************************************************\r
-//internal signals\r
-//******************************************************************************\r
-parameter       State_idle          =4'd00;\r
-parameter       State_preamble      =4'd01;\r
-parameter       State_SFD           =4'd02;\r
-parameter       State_data          =4'd03;\r
-parameter       State_checkCRC      =4'd04;\r
-parameter       State_OkEnd         =4'd07;\r
-parameter       State_DropEnd       =4'd08;\r
-parameter       State_ErrEnd        =4'd09;\r
-parameter       State_CRCErrEnd     =4'd10;\r
-parameter       State_FFFullDrop    =4'd11;\r
-parameter       State_FFFullErrEnd  =4'd12;\r
-parameter       State_IFG           =4'd13;\r
-parameter       State_Drop2End      =4'd14;\r
-\r
-parameter       Pause_idle          =4'd0;   \r
-parameter       Pause_pre_syn       =4'd1;    \r
-parameter       Pause_quanta_hi     =4'd2;   \r
-parameter       Pause_quanta_lo     =4'd3;   \r
-parameter       Pause_syn           =4'd4;   \r
-                                                  \r
-reg [3:0]       Current_state /* synthesis syn_keep=1 */;                          \r
-reg [3:0]       Next_state; \r
-reg [3:0]       Pause_current /* synthesis syn_keep=1 */; \r
-reg [3:0]       Pause_next;                             \r
-reg [5:0]       IFG_counter;   \r
-reg             Crs_dv  ;      \r
-reg [7:0]       RxD ;\r
-reg [7:0]       RxD_dl1 ;\r
-reg             RxErr   ;\r
-reg [15:0]      Frame_length_counter;\r
-reg             Too_long;\r
-reg             Too_short;\r
-reg             ProcessingHeader;\r
-//reg             Fifo_data_en;\r
-//reg             Fifo_data_err;\r
-//reg             Fifo_data_drop;\r
-//reg             Fifo_data_end;\r
-reg             CRC_en;\r
-reg             CRC_init;\r
-reg             Rx_apply_rmon;\r
-reg [2:0]       Rx_pkt_err_type_rmon;\r
-reg             MAC_add_en;\r
-reg [2:0]       Rx_pkt_type_rmon;\r
-reg [7:0]       pause_quanta_h      ;\r
-reg [15:0]      pause_quanta        ;\r
-reg             pause_quanta_val    ;\r
-reg             pause_quanta_val_tmp;\r
-reg             pause_frame_ptr     ;\r
-reg             broadcast_ptr           ;\r
-//******************************************************************************\r
-//delay signals                                                          \r
-//******************************************************************************\r
-    \r
-always @ (posedge Reset or posedge Clk)                 \r
-    if (Reset) \r
-        begin  \r
-            Crs_dv      <=0;\r
-            RxD         <=0;                                                            \r
-            RxErr       <=0; \r
-        end\r
-    else\r
-        begin  \r
-            Crs_dv      <=MCrs_dv   ;\r
-            RxD         <=MRxD      ;                                                            \r
-            RxErr       <=MRxErr    ; \r
-        end\r
-\r
-always @ (posedge Reset or posedge Clk)                 \r
-    if (Reset) \r
-        RxD_dl1     <=0;\r
-    else \r
-        RxD_dl1     <=RxD;\r
-                                   \r
-//---------------------------------------------------------------------------\r
-// Small pre-FIFO (acutally a synchronously clearable shift-register) for\r
-// storing the first part of a packet before writing it to the "real" FIFO\r
-// in MAC_rx_FF. This allows a packet to be dropped safely if an error\r
-// happens in the beginning of a packet (or if the MAC address doesn't pass\r
-// the receive filter!)\r
-//---------------------------------------------------------------------------\r
-\r
-  reg           pre_fifo_data_drop;\r
-  reg           pre_fifo_data_en;\r
-  reg           pre_fifo_data_err;\r
-  reg           pre_fifo_data_end;\r
-  wire [7:0]    pre_fifo_wrdata;\r
-\r
-  reg [8+3-1:0] pre_fifo_element_0;\r
-  reg [8+3-1:0] pre_fifo_element_1;\r
-  reg [8+3-1:0] pre_fifo_element_2;\r
-  reg [8+3-1:0] pre_fifo_element_3;\r
-  reg [8+3-1:0] pre_fifo_element_4;\r
-  reg [8+3-1:0] pre_fifo_element_5;\r
-  reg [8+3-1:0] pre_fifo_element_6;\r
-  reg [8+3-1:0] pre_fifo_element_7;\r
-  reg [8+3-1:0] pre_fifo_element_8;\r
-  reg [8+3-1:0] pre_fifo_element_9;\r
-\r
-  always @( posedge Reset or posedge Clk )\r
-    if ( Reset )\r
-      begin\r
-        pre_fifo_element_0 <= 'b0;\r
-        pre_fifo_element_1 <= 'b0;\r
-        pre_fifo_element_2 <= 'b0;\r
-        pre_fifo_element_3 <= 'b0;\r
-        pre_fifo_element_4 <= 'b0;\r
-        pre_fifo_element_5 <= 'b0;\r
-        pre_fifo_element_6 <= 'b0;\r
-        pre_fifo_element_7 <= 'b0;\r
-        pre_fifo_element_8 <= 'b0;\r
-        pre_fifo_element_9 <= 'b0;\r
-      end\r
-    else\r
-      begin\r
-        if ( pre_fifo_data_drop )\r
-          begin\r
-            pre_fifo_element_0 <= 'b0;\r
-            pre_fifo_element_1 <= 'b0;\r
-            pre_fifo_element_2 <= 'b0;\r
-            pre_fifo_element_3 <= 'b0;\r
-            pre_fifo_element_4 <= 'b0;\r
-            pre_fifo_element_5 <= 'b0;\r
-            pre_fifo_element_6 <= 'b0;\r
-            pre_fifo_element_7 <= 'b0;\r
-            pre_fifo_element_8 <= 'b0;\r
-            pre_fifo_element_9 <= 'b0;\r
-          end\r
-        else\r
-          begin\r
-            pre_fifo_element_0 <= pre_fifo_element_1;\r
-            pre_fifo_element_1 <= pre_fifo_element_2;\r
-            pre_fifo_element_2 <= pre_fifo_element_3;\r
-            pre_fifo_element_3 <= pre_fifo_element_4;\r
-            pre_fifo_element_4 <= pre_fifo_element_5;\r
-            pre_fifo_element_5 <= pre_fifo_element_6;\r
-            pre_fifo_element_6 <= pre_fifo_element_7;\r
-            pre_fifo_element_7 <= pre_fifo_element_8;\r
-            pre_fifo_element_8 <= pre_fifo_element_9;\r
-            pre_fifo_element_9 <= { pre_fifo_data_en,\r
-                                    pre_fifo_data_err,\r
-                                    pre_fifo_data_end,\r
-                                    pre_fifo_wrdata };\r
-          end\r
-      end\r
-\r
-  assign Fifo_data     = pre_fifo_element_0[7:0];\r
-  assign Fifo_data_end = pre_fifo_element_0[8];\r
-  assign Fifo_data_err = pre_fifo_element_0[9];\r
-  assign Fifo_data_en  = pre_fifo_element_0[10];\r
-\r
-  assign CRC_data     = pre_fifo_wrdata;\r
-  assign MAC_add_data = pre_fifo_wrdata;\r
-\r
-//******************************************************************************\r
-//State_machine                                                           \r
-//******************************************************************************\r
-                                                    \r
-always @( posedge Reset or posedge Clk )\r
-  if ( Reset )\r
-    Current_state <= State_idle;\r
-  else\r
-    Current_state <= Next_state;\r
-\r
-always @ (*)\r
-  case (Current_state)\r
-    State_idle:\r
-      if ( Crs_dv&&RxD==8'h55 )\r
-        Next_state = State_preamble;\r
-      else\r
-        Next_state = Current_state;\r
-\r
-    State_preamble:\r
-      if ( !Crs_dv )\r
-        Next_state = State_DropEnd;\r
-      else if ( RxErr )\r
-        Next_state = State_DropEnd;\r
-      else if ( RxD==8'hd5 )\r
-        Next_state = State_SFD;\r
-      else if ( RxD==8'h55 )\r
-        Next_state =Current_state;\r
-      else\r
-        Next_state = State_DropEnd;\r
-\r
-    State_SFD:\r
-      if ( !Crs_dv )\r
-        Next_state = State_DropEnd;\r
-      else if ( RxErr )\r
-        Next_state = State_DropEnd;\r
-      else\r
-        Next_state = State_data;\r
-\r
-    State_data:\r
-      if ( !Crs_dv && !ProcessingHeader && !Too_short && !Too_long )\r
-        Next_state = State_checkCRC;\r
-      else if ( !Crs_dv && ProcessingHeader )\r
-        Next_state = State_Drop2End;\r
-      else if ( !Crs_dv && (Too_short | Too_long) )\r
-        Next_state = State_ErrEnd;\r
-       else if ( Fifo_full )\r
-         Next_state = State_FFFullErrEnd;\r
-       else if ( RxErr && ProcessingHeader )\r
-         Next_state = State_Drop2End;\r
-       else if ( RxErr || Too_long )\r
-         Next_state = State_ErrEnd;\r
-       else if ( MAC_rx_add_chk_err || broadcast_drop )\r
-         Next_state = State_DropEnd;\r
-       else\r
-         Next_state = State_data;\r
-\r
-    State_checkCRC:\r
-      if ( CRC_err )\r
-        Next_state = State_CRCErrEnd;\r
-      else\r
-        Next_state = State_OkEnd;\r
-\r
-    State_OkEnd:\r
-      Next_state = State_IFG;\r
-\r
-    State_ErrEnd:\r
-      Next_state = State_IFG;\r
-\r
-    State_DropEnd:\r
-      Next_state = State_IFG;\r
-\r
-    State_Drop2End:\r
-      Next_state = State_IFG;\r
-\r
-    State_CRCErrEnd:\r
-      Next_state = State_IFG;\r
-\r
-    State_FFFullErrEnd:\r
-      Next_state = State_FFFullDrop;\r
-\r
-    State_FFFullDrop:\r
-      if ( !Crs_dv )\r
-        Next_state  =State_IFG;     \r
-      else                                \r
-        Next_state  =Current_state;                                                \r
-\r
-    State_IFG:\r
-      if ( IFG_counter==RX_IFG_SET-4 ) // Remove some additional time?\r
-        Next_state = State_idle;\r
-      else\r
-        Next_state = Current_state;\r
-\r
-    default:\r
-      Next_state = State_idle;\r
-  endcase\r
-\r
-always @( posedge Reset or posedge Clk )\r
-  if ( Reset )\r
-    IFG_counter <= 0;\r
-  else if ( Current_state!=State_IFG )\r
-    IFG_counter <= 0;\r
-  else\r
-    IFG_counter <= IFG_counter + 1;\r
-\r
-//******************************************************************************\r
-//gen fifo interface signals                                                     \r
-//******************************************************************************                     \r
-\r
-assign pre_fifo_wrdata = RxD_dl1;\r
-\r
-always @( Current_state )\r
-  if ( Current_state==State_data )\r
-    pre_fifo_data_en = 1;\r
-  else\r
-    pre_fifo_data_en = 0;\r
-        \r
-always @( Current_state )\r
-  if ( (Current_state==State_ErrEnd      ) ||\r
-       (Current_state==State_OkEnd       ) ||\r
-       (Current_state==State_CRCErrEnd   ) ||\r
-       (Current_state==State_FFFullErrEnd) ||\r
-       (Current_state==State_DropEnd     ) ||\r
-       (Current_state==State_Drop2End    ) )\r
-    pre_fifo_data_end = 1;\r
-  else\r
-    pre_fifo_data_end = 0;\r
-\r
-always @( Current_state )\r
-  if ( (Current_state==State_ErrEnd      ) ||\r
-       (Current_state==State_CRCErrEnd   ) ||\r
-       (Current_state==State_FFFullErrEnd) ||\r
-       (Current_state==State_DropEnd     ) ||\r
-       (Current_state==State_Drop2End    ) )\r
-    pre_fifo_data_err = 1;\r
-  else\r
-    pre_fifo_data_err = 0;\r
-\r
-always @( Current_state )\r
-  if ( (Current_state==State_DropEnd ) ||\r
-       (Current_state==State_Drop2End) )\r
-    pre_fifo_data_drop = 1;\r
-  else\r
-    pre_fifo_data_drop = 0;\r
-\r
-  // Drop in main Rx FIFO is no longer supported!\r
-  assign Fifo_data_drop = 0;\r
-\r
-//******************************************************************************\r
-//CRC_chk interface                                               \r
-//****************************************************************************** \r
-\r
-always @(Current_state)\r
-    if (Current_state==State_data)\r
-        CRC_en  =1;\r
-    else\r
-        CRC_en  =0;\r
-        \r
-always @(Current_state)\r
-    if (Current_state==State_SFD)\r
-        CRC_init    =1;\r
-    else\r
-        CRC_init    =0;\r
-        \r
-//******************************************************************************\r
-//gen rmon signals                                         \r
-//******************************************************************************    \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)  \r
-        Frame_length_counter        <=0;\r
-    else if (Current_state==State_SFD)\r
-        Frame_length_counter        <=1;\r
-    else if (Current_state==State_data)\r
-        Frame_length_counter        <=Frame_length_counter+ 1'b1;\r
-        \r
-always @( Frame_length_counter )\r
-  if ( Frame_length_counter < 8 )\r
-    ProcessingHeader = 1;\r
-  else\r
-    ProcessingHeader = 0;\r
-\r
-always @ (Frame_length_counter or RX_MIN_LENGTH)\r
-    if (Frame_length_counter<RX_MIN_LENGTH)\r
-        Too_short   =1;\r
-    else\r
-        Too_short   =0;\r
-        \r
-always @ (*)\r
-    if (Frame_length_counter>RX_MAX_LENGTH)\r
-        Too_long    =1;\r
-    else\r
-        Too_long    =0;\r
-        \r
-assign Rx_pkt_length_rmon = Frame_length_counter-1'b1;\r
-\r
-reg [2:0] Rx_apply_rmon_reg;\r
-\r
-always @( posedge Clk or posedge Reset )\r
-  if ( Reset )\r
-    begin\r
-      Rx_apply_rmon <= 0;\r
-      Rx_apply_rmon_reg <= 'b0;\r
-    end\r
-  else\r
-    begin\r
-      if ( (Current_state==State_OkEnd       ) ||\r
-           (Current_state==State_ErrEnd      ) ||\r
-           (Current_state==State_CRCErrEnd   ) ||\r
-           (Current_state==State_Drop2End    ) ||\r
-           (Current_state==State_FFFullErrEnd) )\r
-        Rx_apply_rmon <= 1;\r
-      else\r
-        if ( Rx_apply_rmon_reg[2] )\r
-          Rx_apply_rmon <= 0;\r
-\r
-      Rx_apply_rmon_reg <= { Rx_apply_rmon_reg[1:0], Rx_apply_rmon  };\r
-    end\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Rx_pkt_err_type_rmon    <=0;\r
-    else if (Current_state==State_CRCErrEnd)\r
-        Rx_pkt_err_type_rmon    <=3'b001    ;//\r
-    else if (Current_state==State_FFFullErrEnd)\r
-        Rx_pkt_err_type_rmon    <=3'b010    ;// \r
-    else if ( (Current_state==State_ErrEnd) || (Current_state==State_Drop2End) )\r
-        Rx_pkt_err_type_rmon    <=3'b011    ;//\r
-    else if(Current_state==State_OkEnd)\r
-        Rx_pkt_err_type_rmon    <=3'b100    ;\r
-\r
-\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Rx_pkt_type_rmon        <=0;\r
-    else if (Current_state==State_OkEnd&&pause_frame_ptr)\r
-        Rx_pkt_type_rmon        <=3'b100    ;//\r
-    else if(Current_state==State_SFD&&Next_state==State_data)\r
-        Rx_pkt_type_rmon        <={1'b0,MRxD[7:6]};\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        broadcast_ptr   <=0;\r
-    else if(Current_state==State_IFG)\r
-        broadcast_ptr   <=0;\r
-    else if(Current_state==State_SFD&&Next_state==State_data&&MRxD[7:6]==2'b11)\r
-        broadcast_ptr   <=1;\r
-\r
-        \r
-    \r
-//******************************************************************************\r
-//MAC add checker signals                                                              \r
-//******************************************************************************\r
-always @ (Frame_length_counter or pre_fifo_data_en)\r
-    if(Frame_length_counter>=1&&Frame_length_counter<=6)\r
-        MAC_add_en  <=pre_fifo_data_en;\r
-    else\r
-        MAC_add_en  <=0;\r
-\r
-//******************************************************************************\r
-//flow control signals                                                            \r
-//******************************************************************************\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Pause_current   <=Pause_idle;\r
-    else\r
-        Pause_current   <=Pause_next;\r
-        \r
-always @ (*)\r
-    case (Pause_current)\r
-        Pause_idle  : \r
-            if(Current_state==State_SFD)\r
-                Pause_next  =Pause_pre_syn;\r
-            else\r
-                Pause_next  =Pause_current;\r
-        Pause_pre_syn:\r
-            case (Frame_length_counter)\r
-                16'd1:  if (RxD_dl1==8'h01)\r
-                            Pause_next  =Pause_current;\r
-                        else\r
-                            Pause_next  =Pause_idle;\r
-                16'd2:  if (RxD_dl1==8'h80)\r
-                            Pause_next  =Pause_current;\r
-                        else\r
-                            Pause_next  =Pause_idle;            \r
-                16'd3:  if (RxD_dl1==8'hc2)\r
-                            Pause_next  =Pause_current;\r
-                        else\r
-                            Pause_next  =Pause_idle;\r
-                16'd4:  if (RxD_dl1==8'h00)\r
-                            Pause_next  =Pause_current;\r
-                        else\r
-                            Pause_next  =Pause_idle;\r
-                16'd5:  if (RxD_dl1==8'h00)\r
-                            Pause_next  =Pause_current;\r
-                        else\r
-                            Pause_next  =Pause_idle;\r
-                16'd6:  if (RxD_dl1==8'h01)\r
-                            Pause_next  =Pause_current;\r
-                        else\r
-                            Pause_next  =Pause_idle;\r
-                16'd13: if (RxD_dl1==8'h88)\r
-                            Pause_next  =Pause_current;\r
-                        else\r
-                            Pause_next  =Pause_idle;\r
-                16'd14: if (RxD_dl1==8'h08)\r
-                            Pause_next  =Pause_current;\r
-                        else\r
-                            Pause_next  =Pause_idle;\r
-                16'd15: if (RxD_dl1==8'h00)\r
-                            Pause_next  =Pause_current;\r
-                        else\r
-                            Pause_next  =Pause_idle;\r
-                16'd16: if (RxD_dl1==8'h01)\r
-                            Pause_next  =Pause_quanta_hi;\r
-                        else\r
-                            Pause_next  =Pause_idle;\r
-                default:    Pause_next  =Pause_current;\r
-            endcase\r
-        Pause_quanta_hi :\r
-            Pause_next  =Pause_quanta_lo;\r
-        Pause_quanta_lo :\r
-            Pause_next  =Pause_syn; \r
-        Pause_syn       :\r
-            if (Current_state==State_IFG)\r
-                Pause_next  =Pause_idle;\r
-            else\r
-                Pause_next  =Pause_current;\r
-        default\r
-            Pause_next  =Pause_idle;\r
-    endcase\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        pause_quanta_h      <=0;\r
-    else if(Pause_current==Pause_quanta_hi)\r
-        pause_quanta_h      <=RxD_dl1;\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        pause_quanta        <=0;\r
-    else if(Pause_current==Pause_quanta_lo)\r
-        pause_quanta        <={pause_quanta_h,RxD_dl1};\r
-\r
-   // The following 2 always blocks are a strange way of holding\r
-   // pause_quanta_val high for 2 cycles\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)      \r
-        pause_quanta_val_tmp    <=0;\r
-    else if(Current_state==State_OkEnd&&Pause_current==Pause_syn)\r
-        pause_quanta_val_tmp    <=1;\r
-    else\r
-        pause_quanta_val_tmp    <=0;\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)      \r
-        pause_quanta_val    <=0;\r
-    else if(Current_state==State_OkEnd&&Pause_current==Pause_syn||pause_quanta_val_tmp)\r
-        pause_quanta_val    <=1;\r
-    else\r
-        pause_quanta_val    <=0;        \r
-    \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)  \r
-        pause_frame_ptr     <=0;\r
-    else if(Pause_current==Pause_syn)\r
-        pause_frame_ptr     <=1;\r
-    else\r
-        pause_frame_ptr     <=0;\r
-                \r
-endmodule\r
-                \r
-                                                \r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_top.v b/usrp2/fpga/eth/rtl/verilog/MAC_top.v
deleted file mode 100644 (file)
index 4e5b0db..0000000
+++ /dev/null
@@ -1,518 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  MAC_top.v                                                   ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-module MAC_top\r
-  #(parameter TX_FF_DEPTH = 9, \r
-    parameter RX_FF_DEPTH = 9)\r
-    (\r
-  // System signals\r
-  input         Clk_125M,\r
-  input         Clk_user,\r
-\r
-     input rst_mac,\r
-     input rst_user,\r
-     \r
-  // Wishbone compliant core host interface\r
-  input         RST_I, // Active high (async) reset of the Wishbone interface\r
-  input         CLK_I, // Wishbone interface clock (nominally 50 MHz)\r
-  input         STB_I, // Active high module-select\r
-  input         CYC_I, // Active high cycle-enable\r
-  input [6:0]   ADR_I, // Module register address\r
-  input         WE_I,  // Active high for writes, low for reads\r
-  input [31:0]  DAT_I, // Write data\r
-  output [31:0] DAT_O, // Read data\r
-  output        ACK_O, // Acknowledge output \96 single high pulse\r
-\r
-  // User (packet) interface\r
-  output        Rx_mac_empty,\r
-  input         Rx_mac_rd,\r
-  output [31:0] Rx_mac_data,\r
-  output [1:0]  Rx_mac_BE,\r
-  output        Rx_mac_sop,\r
-  output        Rx_mac_eop,\r
-  output        Rx_mac_err,\r
-\r
-  output        Tx_mac_wa,\r
-  input         Tx_mac_wr,\r
-  input [31:0]  Tx_mac_data,\r
-  input [1:0]   Tx_mac_BE,\r
-  input         Tx_mac_sop,\r
-  input         Tx_mac_eop,\r
-\r
-  // PHY interface (GMII/MII)\r
-  output        Gtx_clk, // Used only in GMII mode\r
-  input         Rx_clk,\r
-  input         Tx_clk,  // Used only in MII mode\r
-  output        Tx_er,\r
-  output        Tx_en,\r
-  output [7:0]  Txd,\r
-  input         Rx_er,\r
-  input         Rx_dv,\r
-  input [7:0]   Rxd,\r
-  input         Crs,\r
-  input         Col,\r
-\r
-  // MDIO interface (to PHY)\r
-  inout         Mdio,\r
-  output        Mdc,\r
-\r
-     // FIFO levels\r
-     output [15:0] rx_fifo_occupied,\r
-     output rx_fifo_full,\r
-     output rx_fifo_empty,\r
-     output [15:0] tx_fifo_occupied,\r
-     output tx_fifo_full,\r
-     output tx_fifo_empty,\r
-     \r
-     // Debug Interface\r
-     output [31:0] debug0,\r
-     output [31:0] debug1\r
-);\r
-\r
-   wire           rst_mac_rx = rst_mac;\r
-   wire           rst_mac_tx = rst_mac;\r
-   wire [2:0]     Speed;\r
-   \r
-   wire [31:0]            debug_rx;\r
-   wire [31:0]            debug_tx0;\r
-   wire [31:0]            debug_tx1;\r
-   \r
-  //-------------------------------------------------------------------------\r
-  // Local declarations\r
-  //-------------------------------------------------------------------------\r
-\r
-  // RMON interface\r
-  wire [15:0] Rx_pkt_length_rmon;\r
-  wire        Rx_apply_rmon;\r
-  wire [2:0]  Rx_pkt_err_type_rmon;\r
-  wire [2:0]  Rx_pkt_type_rmon;\r
-  wire [2:0]  Tx_pkt_type_rmon;\r
-  wire [15:0] Tx_pkt_length_rmon;\r
-  wire        Tx_apply_rmon;\r
-  wire [2:0]  Tx_pkt_err_type_rmon;\r
-\r
-  // PHY interface\r
-  wire        MCrs_dv;\r
-  wire [7:0]  MRxD;\r
-  wire        MRxErr;\r
-\r
-   // Flow-control signals\r
-   wire [15:0] pause_quanta;\r
-   wire        pause_quanta_val;\r
-   wire [15:0] rx_fifo_space;\r
-   wire        pause_apply, pause_quanta_sub;\r
-   wire        xon_gen, xoff_gen, xon_gen_complete, xoff_gen_complete;\r
-   wire [15:0] fc_hwmark, fc_lwmark, fc_padtime;\r
-   \r
-  //PHY interface\r
-  wire [7:0]  MTxD;\r
-  wire        MTxEn;\r
-  wire        MCRS;\r
-\r
-  // Interface clk signals\r
-  wire        MAC_tx_clk;\r
-  wire        MAC_rx_clk;\r
-  wire        MAC_tx_clk_div;\r
-  wire        MAC_rx_clk_div;\r
-\r
-  // Reg signals\r
-  wire [4:0]  Tx_Hwmark;\r
-  wire [4:0]  Tx_Lwmark;\r
-  wire        pause_frame_send_en;\r
-  wire [15:0] pause_quanta_set;\r
-  wire        MAC_tx_add_en;\r
-  wire        FullDuplex;\r
-  wire [3:0]  MaxRetry;\r
-  wire [5:0]  IFGset;\r
-  wire [7:0]  MAC_tx_add_prom_data;\r
-  wire [2:0]  MAC_tx_add_prom_add;\r
-  wire        MAC_tx_add_prom_wr;\r
-  wire        tx_pause_en;\r
-\r
-  // Rx host interface\r
-  wire        MAC_rx_add_chk_en;\r
-  wire [7:0]  MAC_rx_add_prom_data;\r
-  wire [2:0]  MAC_rx_add_prom_add;\r
-  wire        MAC_rx_add_prom_wr;\r
-  wire        broadcast_filter_en;\r
-  wire        RX_APPEND_CRC;\r
-  wire [4:0]  Rx_Hwmark;\r
-  wire [4:0]  Rx_Lwmark;\r
-  wire        CRC_chk_en;\r
-  wire [5:0]  RX_IFG_SET;\r
-  wire [15:0] RX_MAX_LENGTH;\r
-  wire [6:0]  RX_MIN_LENGTH;\r
-\r
-  // RMON host interface\r
-  wire [5:0]  CPU_rd_addr;\r
-  wire        CPU_rd_apply;\r
-  wire        CPU_rd_grant;\r
-  wire [31:0] CPU_rd_dout;\r
-\r
-  // PHY int host interface\r
-  wire        Line_loop_en;\r
-\r
-  // MII to CPU             \r
-  wire [7:0]  Divider;\r
-  wire [15:0] CtrlData;\r
-  wire [4:0]  Rgad;\r
-  wire [4:0]  Fiad;\r
-  wire        NoPre;\r
-  wire        WCtrlData;\r
-  wire        RStat;\r
-  wire        ScanStat;\r
-  wire        Busy;\r
-  wire        LinkFail;\r
-  wire        Nvalid;\r
-  wire [15:0] Prsd;\r
-  wire        WCtrlDataStart;\r
-  wire        RStatStart;\r
-  wire        UpdateMIIRX_DATAReg;\r
-  wire [15:0] broadcast_bucket_depth;\r
-  wire [15:0] broadcast_bucket_interval;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Instantiation of sub-modules\r
-  //-------------------------------------------------------------------------\r
-\r
-   MAC_rx #(.RX_FF_DEPTH(RX_FF_DEPTH))\r
-     U_MAC_rx(\r
-    .Reset                    ( rst_mac_rx                ),\r
-    .Clk_user                 ( Clk_user                  ),\r
-    .Clk                      ( MAC_rx_clk_div            ),\r
-\r
-    // RMII interface\r
-    .MCrs_dv                  ( MCrs_dv                   ),\r
-    .MRxD                     ( MRxD                      ),\r
-    .MRxErr                   ( MRxErr                    ),\r
-\r
-    // Flow-control signals\r
-    .pause_quanta             ( pause_quanta              ),\r
-    .pause_quanta_val         ( pause_quanta_val          ),\r
-    .rx_fifo_space            ( rx_fifo_space             ),\r
-             \r
-    // User interface\r
-    .Rx_mac_empty             ( Rx_mac_empty              ),\r
-    .Rx_mac_rd                ( Rx_mac_rd                 ),\r
-    .Rx_mac_data              ( Rx_mac_data               ),\r
-    .Rx_mac_BE                ( Rx_mac_BE                 ),\r
-    .Rx_mac_sop               ( Rx_mac_sop                ),\r
-    .Rx_mac_eop               ( Rx_mac_eop                ),\r
-    .Rx_mac_err               ( Rx_mac_err                ),\r
-\r
-    // CPU\r
-    .MAC_rx_add_chk_en        ( MAC_rx_add_chk_en         ),\r
-    .MAC_add_prom_data        ( MAC_rx_add_prom_data      ),\r
-    .MAC_add_prom_add         ( MAC_rx_add_prom_add       ),\r
-    .MAC_add_prom_wr          ( MAC_rx_add_prom_wr        ),\r
-    .broadcast_filter_en      ( broadcast_filter_en       ),\r
-    .broadcast_bucket_depth   ( broadcast_bucket_depth    ),\r
-    .broadcast_bucket_interval( broadcast_bucket_interval ),\r
-    .RX_APPEND_CRC            ( RX_APPEND_CRC             ),\r
-    .Rx_Hwmark                ( Rx_Hwmark                 ),\r
-    .Rx_Lwmark                ( Rx_Lwmark                 ),\r
-    .CRC_chk_en               ( CRC_chk_en                ),\r
-    .RX_IFG_SET               ( RX_IFG_SET                ),\r
-    .RX_MAX_LENGTH            ( RX_MAX_LENGTH             ),\r
-    .RX_MIN_LENGTH            ( RX_MIN_LENGTH             ),\r
-\r
-    // RMON interface\r
-    .Rx_pkt_length_rmon       ( Rx_pkt_length_rmon        ),\r
-    .Rx_apply_rmon            ( Rx_apply_rmon             ),\r
-    .Rx_pkt_err_type_rmon     ( Rx_pkt_err_type_rmon      ),\r
-    .Rx_pkt_type_rmon         ( Rx_pkt_type_rmon          ),\r
-\r
-             .rx_fifo_occupied(rx_fifo_occupied),\r
-             .rx_fifo_full(rx_fifo_full),\r
-             .rx_fifo_empty(rx_fifo_empty),\r
-             .debug(debug_rx)\r
-  );\r
-\r
-   MAC_tx #(.TX_FF_DEPTH(TX_FF_DEPTH))\r
-     U_MAC_tx(\r
-    .Reset               ( rst_mac_tx           ),\r
-    .Clk                 ( MAC_tx_clk_div       ),\r
-    //.Clk_user            ( Clk_user             ),\r
-    .Clk_user            ( MAC_tx_clk_div             ),\r
-\r
-    // PHY interface\r
-    .TxD                 ( MTxD                 ),\r
-    .TxEn                ( MTxEn                ),\r
-    .CRS                 ( MCRS                 ),\r
-\r
-    // RMON\r
-    .Tx_pkt_type_rmon    ( Tx_pkt_type_rmon     ),\r
-    .Tx_pkt_length_rmon  ( Tx_pkt_length_rmon   ),\r
-    .Tx_apply_rmon       ( Tx_apply_rmon        ),\r
-    .Tx_pkt_err_type_rmon( Tx_pkt_err_type_rmon ),\r
-\r
-    // User interface\r
-    .Tx_mac_wa           ( Tx_mac_wa            ),\r
-    .Tx_mac_wr           ( Tx_mac_wr            ),\r
-    .Tx_mac_data         ( Tx_mac_data          ),\r
-    .Tx_mac_BE           ( Tx_mac_BE            ),\r
-    .Tx_mac_sop          ( Tx_mac_sop           ),\r
-    .Tx_mac_eop          ( Tx_mac_eop           ),\r
-\r
-    // Host interface\r
-    .Tx_Hwmark           ( Tx_Hwmark            ),\r
-    .Tx_Lwmark           ( Tx_Lwmark            ),\r
-    .MAC_tx_add_en       ( MAC_tx_add_en        ),\r
-    .FullDuplex          ( FullDuplex           ),\r
-    .MaxRetry            ( MaxRetry             ),\r
-    .IFGset              ( IFGset               ),\r
-    .MAC_add_prom_data   ( MAC_tx_add_prom_data ),\r
-    .MAC_add_prom_add    ( MAC_tx_add_prom_add  ),\r
-    .MAC_add_prom_wr     ( MAC_tx_add_prom_wr   ),\r
-\r
-    .pause_apply         ( pause_apply          ),\r
-    .pause_quanta_sub    ( pause_quanta_sub     ),\r
-    .pause_quanta_set    ( pause_quanta_set     ),\r
-    .xoff_gen            ( xoff_gen             ),\r
-    .xon_gen             ( xon_gen              ),\r
-    .xoff_gen_complete   ( xoff_gen_complete    ),\r
-    .xon_gen_complete    ( xon_gen_complete     ),\r
-             .debug0(debug_tx0),\r
-             .debug1(debug_tx1)\r
-    );\r
-\r
-   // Flow control outbound -- when other side sends PAUSE, we wait\r
-   flow_ctrl_tx flow_ctrl_tx\r
-     (.rst(rst_mac_tx), \r
-      .tx_clk(MAC_tx_clk_div), \r
-      // Setting\r
-      .tx_pause_en              ( tx_pause_en               ),\r
-      // From RX side\r
-      .pause_quanta (pause_quanta), \r
-      .pause_quanta_val(pause_quanta_val), // Other guy sent a PAUSE\r
-      // To TX side\r
-      .pause_apply (pause_apply),          // To TX, stop sending new frames\r
-      .pause_quanta_sub (pause_quanta_sub) // From TX, indicates we have used up 1 quanta\r
-      );\r
-   \r
-   flow_ctrl_rx flow_ctrl_rx  //  When we are running out of RX space, send a PAUSE\r
-     (.rst(rst_mac_rx),  // FIXME\r
-      // Settings\r
-      .pause_frame_send_en      ( pause_frame_send_en       ),\r
-      .pause_quanta_set         ( pause_quanta_set          ),\r
-      .fc_hwmark (fc_hwmark),\r
-      .fc_lwmark (fc_lwmark),\r
-      .fc_padtime (fc_padtime),\r
-      // From RX side\r
-      .rx_clk(MAC_rx_clk_div),\r
-      .rx_fifo_space (rx_fifo_space),    // Decide if we need to send a PAUSE\r
-      // To TX side\r
-      .tx_clk(MAC_tx_clk_div), \r
-      .xoff_gen (xoff_gen), \r
-      .xon_gen(xon_gen),  // Tell our TX to send PAUSE frames\r
-      .xoff_gen_complete (xoff_gen_complete), \r
-      .xon_gen_complete(xon_gen_complete)\r
-      );\r
-\r
-  RMON U_RMON(\r
-    .Clk                 ( CLK_I                ),\r
-    .Reset               ( RST_I                ),\r
-\r
-    // Tx RMON\r
-    .Tx_pkt_type_rmon    ( Tx_pkt_type_rmon     ),\r
-    .Tx_pkt_length_rmon  ( Tx_pkt_length_rmon   ),\r
-    .Tx_apply_rmon       ( Tx_apply_rmon        ),\r
-    .Tx_pkt_err_type_rmon( Tx_pkt_err_type_rmon ),\r
-\r
-    // Rx RMON\r
-    .Rx_pkt_type_rmon    ( Rx_pkt_type_rmon     ),\r
-    .Rx_pkt_length_rmon  ( Rx_pkt_length_rmon   ),\r
-    .Rx_apply_rmon       ( Rx_apply_rmon        ),\r
-    .Rx_pkt_err_type_rmon( Rx_pkt_err_type_rmon ),\r
-\r
-    // CPU\r
-    .CPU_rd_addr         ( CPU_rd_addr          ),\r
-    .CPU_rd_apply        ( CPU_rd_apply         ),\r
-    .CPU_rd_grant        ( CPU_rd_grant         ),\r
-    .CPU_rd_dout         ( CPU_rd_dout          )\r
-  );\r
-\r
-   Phy_int U_Phy_int(\r
-    .rst_mac_rx  ( rst_mac_rx   ),\r
-    .rst_mac_tx  ( rst_mac_tx   ),\r
-    .MAC_rx_clk  ( MAC_rx_clk   ),\r
-    .MAC_tx_clk  ( MAC_tx_clk   ),\r
-    // Rx interface\r
-    .MCrs_dv     ( MCrs_dv      ),\r
-    .MRxD        ( MRxD         ),\r
-    .MRxErr      ( MRxErr       ),\r
-    // Tx interface\r
-    .MTxD        ( MTxD         ),\r
-    .MTxEn       ( MTxEn        ),\r
-    .MCRS        ( MCRS         ),\r
-    // PHY interface\r
-    .Tx_er       ( Tx_er        ),\r
-    .Tx_en       ( Tx_en        ),\r
-    .Txd         ( Txd          ),\r
-    .Rx_er       ( Rx_er        ),\r
-    .Rx_dv       ( Rx_dv        ),\r
-    .Rxd         ( Rxd          ),\r
-    .Crs         ( Crs          ),\r
-    .Col         ( Col          ),\r
-    // Host interface\r
-    .Line_loop_en( Line_loop_en ),\r
-    .Speed       ( Speed        )  );\r
-\r
-  Clk_ctrl U_Clk_ctrl(\r
-    .Reset         ( rst_mac        ),\r
-    .Clk_125M      ( Clk_125M       ),\r
-\r
-    // Host interface\r
-    .Speed         ( Speed          ),\r
-\r
-    // Phy interface\r
-    .Gtx_clk       ( Gtx_clk        ),\r
-    .Rx_clk        ( Rx_clk         ),\r
-    .Tx_clk        ( Tx_clk         ),\r
-\r
-    // Interface clocks\r
-    .MAC_tx_clk    ( MAC_tx_clk     ),\r
-    .MAC_rx_clk    ( MAC_rx_clk     ),\r
-    .MAC_tx_clk_div( MAC_tx_clk_div ),\r
-    .MAC_rx_clk_div( MAC_rx_clk_div )\r
-  );\r
-\r
-  eth_miim U_eth_miim(\r
-    .Clk                ( CLK_I               ),\r
-    .Reset              ( RST_I               ),\r
-    .Divider            ( Divider             ),\r
-    .NoPre              ( NoPre               ),\r
-    .CtrlData           ( CtrlData            ),\r
-    .Rgad               ( Rgad                ),\r
-    .Fiad               ( Fiad                ),\r
-    .WCtrlData          ( WCtrlData           ),\r
-    .RStat              ( RStat               ),\r
-    .ScanStat           ( ScanStat            ),\r
-    .Mdio               ( Mdio                ),\r
-    .Mdc                ( Mdc                 ),\r
-    .Busy               ( Busy                ),\r
-    .Prsd               ( Prsd                ),\r
-    .LinkFail           ( LinkFail            ),\r
-    .Nvalid             ( Nvalid              ),\r
-    .WCtrlDataStart     ( WCtrlDataStart      ),\r
-    .RStatStart         ( RStatStart          ),\r
-    .UpdateMIIRX_DATAReg( UpdateMIIRX_DATAReg )\r
-  );\r
-\r
-  Reg_int U_Reg_int(\r
-    // Wishbone compliant core host interface\r
-    .CLK_I( CLK_I ),\r
-    .RST_I( RST_I ),\r
-    .STB_I( STB_I ),\r
-    .CYC_I( CYC_I ),\r
-    .ADR_I( ADR_I ),\r
-    .WE_I ( WE_I  ),\r
-    .DAT_I( DAT_I ),\r
-    .DAT_O( DAT_O ),\r
-    .ACK_O( ACK_O ),\r
-\r
-    // Tx host interface\r
-    .Tx_Hwmark                ( Tx_Hwmark                 ),\r
-    .Tx_Lwmark                ( Tx_Lwmark                 ),\r
-    .MAC_tx_add_en            ( MAC_tx_add_en             ),\r
-    .FullDuplex               ( FullDuplex                ),\r
-    .MaxRetry                 ( MaxRetry                  ),\r
-    .IFGset                   ( IFGset                    ),\r
-    .MAC_tx_add_prom_data     ( MAC_tx_add_prom_data      ),\r
-    .MAC_tx_add_prom_add      ( MAC_tx_add_prom_add       ),\r
-    .MAC_tx_add_prom_wr       ( MAC_tx_add_prom_wr        ),\r
-\r
-    // Rx host interface\r
-    .MAC_rx_add_chk_en        ( MAC_rx_add_chk_en         ),\r
-    .MAC_rx_add_prom_data     ( MAC_rx_add_prom_data      ),\r
-    .MAC_rx_add_prom_add      ( MAC_rx_add_prom_add       ),\r
-    .MAC_rx_add_prom_wr       ( MAC_rx_add_prom_wr        ),\r
-    .broadcast_filter_en      ( broadcast_filter_en       ),\r
-    .broadcast_bucket_depth   ( broadcast_bucket_depth    ),\r
-    .broadcast_bucket_interval( broadcast_bucket_interval ),\r
-    .RX_APPEND_CRC            ( RX_APPEND_CRC             ),\r
-    .Rx_Hwmark                ( Rx_Hwmark                 ),\r
-    .Rx_Lwmark                ( Rx_Lwmark                 ),\r
-    .CRC_chk_en               ( CRC_chk_en                ),\r
-    .RX_IFG_SET               ( RX_IFG_SET                ),\r
-    .RX_MAX_LENGTH            ( RX_MAX_LENGTH             ),\r
-    .RX_MIN_LENGTH            ( RX_MIN_LENGTH             ),\r
-\r
-    // Flow Control settings\r
-    .pause_frame_send_en      ( pause_frame_send_en       ),\r
-    .pause_quanta_set         ( pause_quanta_set          ),\r
-    .tx_pause_en              ( tx_pause_en               ),\r
-    .fc_hwmark                ( fc_hwmark                 ),\r
-    .fc_lwmark                ( fc_lwmark                 ),\r
-    .fc_padtime               ( fc_padtime                ),\r
-                   \r
-    // RMON host interface\r
-    .CPU_rd_addr              ( CPU_rd_addr               ),\r
-    .CPU_rd_apply             ( CPU_rd_apply              ),\r
-    .CPU_rd_grant             ( CPU_rd_grant              ),\r
-    .CPU_rd_dout              ( CPU_rd_dout               ),\r
-\r
-    // PHY int host interface\r
-    .Line_loop_en             ( Line_loop_en              ),\r
-    .Speed                    ( Speed                     ),\r
-\r
-    // MII to CPU\r
-    .Divider                  ( Divider                   ),\r
-    .CtrlData                 ( CtrlData                  ),\r
-    .Rgad                     ( Rgad                      ),\r
-    .Fiad                     ( Fiad                      ),\r
-    .NoPre                    ( NoPre                     ),\r
-    .WCtrlData                ( WCtrlData                 ),\r
-    .RStat                    ( RStat                     ),\r
-    .ScanStat                 ( ScanStat                  ),\r
-    .Busy                     ( Busy                      ),\r
-    .LinkFail                 ( LinkFail                  ),\r
-    .Nvalid                   ( Nvalid                    ),\r
-    .Prsd                     ( Prsd                      ),\r
-    .WCtrlDataStart           ( WCtrlDataStart            ),\r
-    .RStatStart               ( RStatStart                ),\r
-    .UpdateMIIRX_DATAReg      ( UpdateMIIRX_DATAReg       )\r
-  );\r
-\r
-   assign     debug0 = {xon_gen, xoff_gen, xon_gen_complete, xoff_gen_complete, debug_rx[3:0]};\r
-   //assign     debug0 = {{debug_rx[3:0], xon_gen, xon_gen_complete, xoff_gen, xoff_gen_complete},\r
-   //                  {1'b0,Rx_mac_err,Rx_mac_empty,Rx_mac_rd,Rx_mac_sop,Rx_mac_eop,Rx_mac_BE[1:0]},\r
-   //                  {rx_fifo_space}};\r
-   //assign     debug0 = debug_tx0;\r
-   //assign debug1 = debug_tx1;\r
-endmodule\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_tx.v b/usrp2/fpga/eth/rtl/verilog/MAC_tx.v
deleted file mode 100644 (file)
index bbf3310..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  MAC_tx.v                                                    ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: MAC_tx.v,v $\r
-// Revision 1.4  2006/11/17 17:53:07  maverickist\r
-// no message\r
-//\r
-// Revision 1.3  2006/01/19 14:07:53  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:14  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-//   \r
-\r
-module MAC_tx\r
-  #(parameter TX_FF_DEPTH = 9)\r
-    (\r
-input           Reset               ,\r
-input           Clk                 ,\r
-input           Clk_user            ,\r
-                //PHY interface\r
-output  [7:0]   TxD                 ,\r
-output          TxEn                ,   \r
-input           CRS                 ,\r
-                //RMON\r
-output  [2:0]   Tx_pkt_type_rmon    ,\r
-output  [15:0]  Tx_pkt_length_rmon  ,\r
-output          Tx_apply_rmon       ,\r
-output  [2:0]   Tx_pkt_err_type_rmon,\r
-                //user interface \r
-output          Tx_mac_wa           ,\r
-input           Tx_mac_wr           ,\r
-input   [31:0]  Tx_mac_data         ,\r
-input   [1:0]   Tx_mac_BE           ,//big endian\r
-input           Tx_mac_sop          ,\r
-input           Tx_mac_eop          ,\r
-                //host interface \r
-input   [4:0]   Tx_Hwmark           ,\r
-input   [4:0]   Tx_Lwmark           ,   \r
-input           MAC_tx_add_en       ,               \r
-input           FullDuplex          ,\r
-input   [3:0]   MaxRetry            ,\r
-input   [5:0]   IFGset              ,\r
-input   [7:0]   MAC_add_prom_data   ,\r
-input   [2:0]   MAC_add_prom_add    ,\r
-input           MAC_add_prom_wr     ,\r
-                // Flow control stuff\r
-input           pause_apply         ,\r
-output          pause_quanta_sub,\r
-input   [15:0]  pause_quanta_set    ,\r
-input           xoff_gen,\r
-input           xon_gen,\r
-output          xoff_gen_complete,\r
-output          xon_gen_complete,\r
-     output [31:0] debug0,\r
-     output [31:0] debug1\r
-);\r
-\r
-   // ******************************************************************************        \r
-   // internal signals                                                              \r
-   // ******************************************************************************   \r
-   //CRC_gen Interface \r
-wire            CRC_init            ;\r
-wire[7:0]       Frame_data          ;\r
-wire            Data_en             ;\r
-wire            CRC_rd              ;\r
-wire            CRC_end             ;\r
-wire[7:0]       CRC_out             ;\r
-                //Random_gen interface\r
-wire            Random_init         ;\r
-wire[3:0]       RetryCnt            ;\r
-wire            Random_time_meet    ;//levle hight indicate random time passed away\r
-                //flow control\r
-                //MAC_rx_FF\r
-wire[7:0]       Fifo_data           ;\r
-wire            Fifo_rd             ;\r
-wire            Fifo_eop            ;\r
-wire            Fifo_da             ;\r
-wire            Fifo_rd_finish      ;\r
-wire            Fifo_rd_retry       ;\r
-wire            Fifo_ra             ;\r
-wire            Fifo_data_err_empty ;\r
-wire            Fifo_data_err_full  ;\r
-                //MAC_tx_addr_add\r
-wire            MAC_tx_addr_init    ;\r
-wire            MAC_tx_addr_rd      ;\r
-wire[7:0]       MAC_tx_addr_data    ;\r
-\r
-\r
-   reg                 xon_gen_d1, xoff_gen_d1;\r
-   always @(posedge Clk) xon_gen_d1 <= xon_gen;\r
-   always @(posedge Clk) xoff_gen_d1 <= xoff_gen;\r
-   \r
-//******************************************************************************        \r
-//instantiation                                                              \r
-//****************************************************************************** \r
-MAC_tx_ctrl U_MAC_tx_ctrl(\r
-.Reset                    (Reset                  ),                    \r
-.Clk                      (Clk                    ),            \r
- //CRC_gen Interface      (//CRC_gen Interface    ),           \r
-.CRC_init                 (CRC_init               ),        \r
-.Frame_data               (Frame_data             ),            \r
-.Data_en                  (Data_en                ),            \r
-.CRC_rd                   (CRC_rd                 ),            \r
-.CRC_end                  (CRC_end                ),            \r
-.CRC_out                  (CRC_out                ),            \r
- //Random_gen interfac    (//Random_gen interfac  ),           \r
-.Random_init              (Random_init            ),            \r
-.RetryCnt                 (RetryCnt               ),        \r
-.Random_time_meet         (Random_time_meet       ),        \r
- //flow control           (//flow control         ),           \r
-.pause_apply              (pause_apply            ),            \r
-.pause_quanta_sub         (pause_quanta_sub       ),        \r
-.xoff_gen                 (xoff_gen_d1            ),        \r
-.xoff_gen_complete        (xoff_gen_complete      ),            \r
-.xon_gen                  (xon_gen_d1             ),            \r
-.xon_gen_complete         (xon_gen_complete       ),        \r
- //MAC_tx_FF              (//MAC_tx_FF            ),           \r
-.Fifo_data                (Fifo_data              ),            \r
-.Fifo_rd                  (Fifo_rd                ),            \r
-.Fifo_eop                 (Fifo_eop               ),        \r
-.Fifo_da                  (Fifo_da                ),            \r
-.Fifo_rd_finish           (Fifo_rd_finish         ),            \r
-.Fifo_rd_retry            (Fifo_rd_retry          ),            \r
-.Fifo_ra                  (Fifo_ra                ),            \r
-.Fifo_data_err_empty      (Fifo_data_err_empty    ),            \r
-.Fifo_data_err_full       (Fifo_data_err_full     ),            \r
- //RMII                   (//RMII                 ),           \r
-.TxD                      (TxD                    ),            \r
-.TxEn                     (TxEn                   ),        \r
-.CRS                      (CRS                    ),            \r
- //MAC_tx_addr_add        (//MAC_tx_addr_add      ),           \r
-.MAC_tx_addr_rd           (MAC_tx_addr_rd         ),            \r
-.MAC_tx_addr_data         (MAC_tx_addr_data       ),        \r
-.MAC_tx_addr_init         (MAC_tx_addr_init       ),           \r
- //RMON                   (//RMON                 ),           \r
-.Tx_pkt_type_rmon         (Tx_pkt_type_rmon       ),        \r
-.Tx_pkt_length_rmon       (Tx_pkt_length_rmon     ),            \r
-.Tx_apply_rmon            (Tx_apply_rmon          ),            \r
-.Tx_pkt_err_type_rmon     (Tx_pkt_err_type_rmon   ),           \r
- //CPU                    (//CPU                  ),           \r
-.pause_quanta_set         (pause_quanta_set       ),                \r
-.MAC_tx_add_en            (MAC_tx_add_en          ),            \r
-.FullDuplex               (FullDuplex             ),            \r
-.MaxRetry                 (MaxRetry               ),        \r
-.IFGset                   (IFGset                 )            \r
-);\r
-\r
-CRC_gen U_CRC_gen(\r
-.Reset                    (Reset                  ),\r
-.Clk                      (Clk                    ),\r
-.Init                     (CRC_init               ),\r
-.Frame_data               (Frame_data             ),\r
-.Data_en                  (Data_en                ),\r
-.CRC_rd                   (CRC_rd                 ),\r
-.CRC_out                  (CRC_out                ),\r
-.CRC_end                  (CRC_end                )\r
-);\r
-\r
-   MAC_tx_addr_add U_MAC_tx_addr_add\r
-     (.Reset                    (Reset                  ),\r
-      .Clk                      (Clk                    ),\r
-      .MAC_tx_addr_rd           (MAC_tx_addr_rd         ),\r
-      .MAC_tx_addr_init         (MAC_tx_addr_init       ),\r
-      .MAC_tx_addr_data         (MAC_tx_addr_data       ),\r
-      //CPU\r
-      .MAC_add_prom_data        (MAC_add_prom_data      ),\r
-      .MAC_add_prom_add         (MAC_add_prom_add       ),\r
-      .MAC_add_prom_wr          (MAC_add_prom_wr        )\r
-      );\r
-   \r
-MAC_tx_FF #(.TX_FF_DEPTH(TX_FF_DEPTH)) U_MAC_tx_FF(\r
-.Reset                    (Reset                  ),\r
-.Clk_MAC                  (Clk                    ),\r
-.Clk_SYS                  (Clk_user               ),\r
- //MAC_rx_ctrl interf     (//MAC_rx_ctrl interf   ),\r
-.Fifo_data                (Fifo_data              ),\r
-.Fifo_rd                  (Fifo_rd                ),\r
-.Fifo_rd_finish           (Fifo_rd_finish         ),\r
-.Fifo_rd_retry            (Fifo_rd_retry          ),\r
-.Fifo_eop                 (Fifo_eop               ),\r
-.Fifo_da                  (Fifo_da                ),\r
-.Fifo_ra                  (Fifo_ra                ),\r
-.Fifo_data_err_empty      (Fifo_data_err_empty    ),\r
-.Fifo_data_err_full       (Fifo_data_err_full     ),\r
- //user interface         (//user interface       ),\r
-.Tx_mac_wa                (Tx_mac_wa              ),\r
-.Tx_mac_wr                (Tx_mac_wr              ),\r
-.Tx_mac_data              (Tx_mac_data            ),\r
-.Tx_mac_BE                (Tx_mac_BE              ),\r
-.Tx_mac_sop               (Tx_mac_sop             ),\r
-.Tx_mac_eop               (Tx_mac_eop             ),\r
- //host interface         (//host interface       ),\r
-.FullDuplex               (FullDuplex             ),\r
-.Tx_Hwmark                (Tx_Hwmark              ),\r
-.Tx_Lwmark                (Tx_Lwmark              ),\r
-.debug0(debug0),                                                  \r
-.debug1(debug1)                                                   \r
-);\r
-\r
-Random_gen U_Random_gen(\r
-.Reset                    (Reset                  ),\r
-.Clk                      (Clk                    ),\r
-.Init                     (Random_init            ),\r
-.RetryCnt                 (RetryCnt               ),\r
-.Random_time_meet         (Random_time_meet       ) \r
-);\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_tx/CRC_gen.v b/usrp2/fpga/eth/rtl/verilog/MAC_tx/CRC_gen.v
deleted file mode 100644 (file)
index 4a16e7c..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  CRC_gen.v                                                   ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: CRC_gen.v,v $\r
-// Revision 1.3  2006/01/19 14:07:54  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:17  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//                                           \r
-\r
-module CRC_gen (\r
-Reset       ,\r
-Clk         ,\r
-Init        ,\r
-Frame_data  ,\r
-Data_en     ,\r
-CRC_rd      ,\r
-CRC_end     ,\r
-CRC_out     \r
-\r
-);\r
-input           Reset       ;\r
-input           Clk         ;\r
-input           Init        ;\r
-input   [7:0]   Frame_data  ;\r
-input           Data_en     ;\r
-input           CRC_rd      ;\r
-output  [7:0]   CRC_out     ;\r
-output          CRC_end     ;\r
-\r
-//******************************************************************************   \r
-//internal signals                                                              \r
-//******************************************************************************\r
-reg [7:0]       CRC_out     ;\r
-reg [31:0]      CRC_reg;\r
-reg             CRC_end;\r
-reg [3:0]       Counter;\r
-//******************************************************************************\r
-//******************************************************************************\r
-//input data width is 8bit, and the first bit is bit[0]\r
-function[31:0]  NextCRC;\r
-    input[7:0]      D;\r
-    input[31:0]     C;\r
-    reg[31:0]       NewCRC;\r
-    begin\r
-    NewCRC[0]=C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[1]=C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[2]=C[26]^D[5]^C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[3]=C[27]^D[4]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[4]=C[28]^D[3]^C[27]^D[4]^C[26]^D[5]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[5]=C[29]^D[2]^C[28]^D[3]^C[27]^D[4]^C[25]^C[31]^D[0]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[6]=C[30]^D[1]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[7]=C[31]^D[0]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[24]^D[7];\r
-    NewCRC[8]=C[0]^C[28]^D[3]^C[27]^D[4]^C[25]^D[6]^C[24]^D[7];\r
-    NewCRC[9]=C[1]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^D[6];\r
-    NewCRC[10]=C[2]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[24]^D[7];\r
-    NewCRC[11]=C[3]^C[28]^D[3]^C[27]^D[4]^C[25]^D[6]^C[24]^D[7];\r
-    NewCRC[12]=C[4]^C[29]^D[2]^C[28]^D[3]^C[26]^D[5]^C[25]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[13]=C[5]^C[30]^D[1]^C[29]^D[2]^C[27]^D[4]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[14]=C[6]^C[31]^D[0]^C[30]^D[1]^C[28]^D[3]^C[27]^D[4]^C[26]^D[5];\r
-    NewCRC[15]=C[7]^C[31]^D[0]^C[29]^D[2]^C[28]^D[3]^C[27]^D[4];\r
-    NewCRC[16]=C[8]^C[29]^D[2]^C[28]^D[3]^C[24]^D[7];\r
-    NewCRC[17]=C[9]^C[30]^D[1]^C[29]^D[2]^C[25]^D[6];\r
-    NewCRC[18]=C[10]^C[31]^D[0]^C[30]^D[1]^C[26]^D[5];\r
-    NewCRC[19]=C[11]^C[31]^D[0]^C[27]^D[4];\r
-    NewCRC[20]=C[12]^C[28]^D[3];\r
-    NewCRC[21]=C[13]^C[29]^D[2];\r
-    NewCRC[22]=C[14]^C[24]^D[7];\r
-    NewCRC[23]=C[15]^C[25]^D[6]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[24]=C[16]^C[26]^D[5]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[25]=C[17]^C[27]^D[4]^C[26]^D[5];\r
-    NewCRC[26]=C[18]^C[28]^D[3]^C[27]^D[4]^C[24]^C[30]^D[1]^D[7];\r
-    NewCRC[27]=C[19]^C[29]^D[2]^C[28]^D[3]^C[25]^C[31]^D[0]^D[6];\r
-    NewCRC[28]=C[20]^C[30]^D[1]^C[29]^D[2]^C[26]^D[5];\r
-    NewCRC[29]=C[21]^C[31]^D[0]^C[30]^D[1]^C[27]^D[4];\r
-    NewCRC[30]=C[22]^C[31]^D[0]^C[28]^D[3];\r
-    NewCRC[31]=C[23]^C[29]^D[2];\r
-    NextCRC=NewCRC;\r
-    end\r
-        endfunction\r
-//******************************************************************************\r
-\r
-always @ (posedge Clk) // or posedge Reset)\r
-//    if (Reset)\r
-//        CRC_reg     <=32'hffffffff;\r
-//    else \r
-    if (Init)\r
-        CRC_reg     <=32'hffffffff;\r
-    else if (Data_en)\r
-        CRC_reg     <=NextCRC(Frame_data,CRC_reg);\r
-    else if (CRC_rd)\r
-        CRC_reg     <={CRC_reg[23:0],8'hff};\r
-        \r
-always @ (CRC_rd or CRC_reg)\r
-//    if (CRC_rd)\r
-        CRC_out     <=~{\r
-                        CRC_reg[24],\r
-                        CRC_reg[25],\r
-                        CRC_reg[26],\r
-                        CRC_reg[27],\r
-                        CRC_reg[28],\r
-                        CRC_reg[29],\r
-                        CRC_reg[30],\r
-                        CRC_reg[31]\r
-                        };\r
-//    else\r
-//        CRC_out     <=0;\r
-        \r
-//caculate CRC out length ,4 cycles     \r
-//CRC_end aligned to last CRC checksum data\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Counter     <=0;\r
-    else if (!CRC_rd)\r
-        Counter     <=0;\r
-    else \r
-        Counter     <=Counter + 1;\r
-        \r
-always @ (Counter)\r
-    if (Counter==3)\r
-        CRC_end=1;\r
-    else\r
-        CRC_end=0;\r
-\r
-endmodule\r
-\r
-\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_tx/MAC_tx_FF.v b/usrp2/fpga/eth/rtl/verilog/MAC_tx/MAC_tx_FF.v
deleted file mode 100644 (file)
index e62346f..0000000
+++ /dev/null
@@ -1,722 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  MAC_tx_FF.v                                                 ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-module MAC_tx_FF \r
-  #(parameter TX_FF_DEPTH = 9)\r
-    (input           Reset               ,\r
-     input           Clk_MAC             ,\r
-     input           Clk_SYS             ,\r
-     //MAC_tx_ctrl\r
-     output reg [7:0]Fifo_data           ,\r
-     input           Fifo_rd             ,\r
-     input           Fifo_rd_finish      ,\r
-     input           Fifo_rd_retry       ,\r
-     output reg      Fifo_eop            ,\r
-     output reg      Fifo_da             ,\r
-     output reg      Fifo_ra             ,\r
-     output reg      Fifo_data_err_empty ,\r
-     output          Fifo_data_err_full  ,\r
-     //user interface \r
-     output reg      Tx_mac_wa           ,\r
-     input           Tx_mac_wr           ,\r
-     input   [31:0]  Tx_mac_data         ,\r
-     input   [1:0]   Tx_mac_BE           ,//big endian\r
-     input           Tx_mac_sop          ,\r
-     input           Tx_mac_eop          ,\r
-     //host interface \r
-     input           FullDuplex          ,\r
-     input   [4:0]   Tx_Hwmark           ,\r
-     input   [4:0]   Tx_Lwmark           ,\r
-     output  [31:0]  debug0,\r
-     output [31:0]   debug1\r
-     );\r
-\r
-//******************************************************************************\r
-//internal signals                                                              \r
-//******************************************************************************\r
-localparam       MAC_byte3               =4'd00;     \r
-localparam       MAC_byte2               =4'd01;\r
-localparam       MAC_byte1               =4'd02; \r
-localparam       MAC_byte0               =4'd03; \r
-localparam       MAC_wait_finish         =4'd04;\r
-localparam       MAC_retry               =4'd08;\r
-localparam       MAC_idle                =4'd09;\r
-localparam       MAC_FFEmpty             =4'd10;\r
-localparam       MAC_FFEmpty_drop        =4'd11;\r
-localparam       MAC_pkt_sub             =4'd12;\r
-localparam       MAC_FF_Err              =4'd13;\r
-\r
-\r
-reg [3:0]       Next_state_MAC              ;\r
-\r
-\r
-localparam       SYS_idle                =4'd0;\r
-localparam       SYS_WaitSop             =4'd1;\r
-localparam       SYS_SOP                 =4'd2;\r
-localparam       SYS_MOP                 =4'd3;\r
-localparam       SYS_DROP                =4'd4;\r
-localparam       SYS_EOP_ok              =4'd5;  \r
-localparam       SYS_FFEmpty             =4'd6;         \r
-localparam       SYS_EOP_err             =4'd7;\r
-localparam       SYS_SOP_err             =4'd8;\r
-\r
-reg [3:0]       Next_state_SYS;\r
-\r
-reg [TX_FF_DEPTH-1:0]       Add_wr          ;\r
-reg [TX_FF_DEPTH-1:0]       Add_wr_ungray   ;\r
-reg [TX_FF_DEPTH-1:0]       Add_wr_gray     ;\r
-reg [TX_FF_DEPTH-1:0]       Add_wr_gray_dl1 ;\r
-reg [TX_FF_DEPTH-1:0]       Add_wr_gray_dl2 ;\r
-\r
-reg [TX_FF_DEPTH-1:0]       Add_rd          ;\r
-reg [TX_FF_DEPTH-1:0]       Add_rd_reg      ;\r
-reg [TX_FF_DEPTH-1:0]       Add_rd_gray     ;\r
-reg [TX_FF_DEPTH-1:0]       Add_rd_gray_dl1 ;\r
-reg [TX_FF_DEPTH-1:0]       Add_rd_gray_dl2 ;\r
-reg [TX_FF_DEPTH-1:0]       Add_rd_ungray   ;\r
-wire[35:0]      Din             ;\r
-wire[35:0]      Dout            ;\r
-reg             Wr_en           ;\r
-wire[TX_FF_DEPTH-1:0]                  Add_wr_pluse;\r
-wire[TX_FF_DEPTH-1:0]                  Add_wr_pluse_pluse;\r
-reg [TX_FF_DEPTH-1:TX_FF_DEPTH-5] Add_rd_reg_dl1;\r
-\r
-reg [3:0]       Current_state_MAC;\r
-reg [3:0]       Current_state_MAC_reg;\r
-reg [3:0]       Current_state_SYS;\r
-reg             Full;\r
-reg             AlmostFull;\r
-reg             Empty;\r
-reg [35:0]      Dout_reg;\r
-reg             Packet_number_sub_edge;\r
-reg             Packet_number_add;\r
-reg [5:0]       Packet_number_inFF;\r
-reg [5:0]       Packet_number_inFF_reg;\r
-reg             Dout_reg_en;\r
-reg             Add_rd_add;\r
-\r
-\r
-reg             Tx_mac_wr_dl1           ;\r
-reg [31:0]      Tx_mac_data_dl1         ;\r
-reg [1:0]       Tx_mac_BE_dl1           ;\r
-reg             FF_FullErr              ;\r
-wire[1:0]       Dout_BE                 ;\r
-wire            Dout_eop                ;\r
-wire            Dout_err                ;\r
-wire[31:0]      Dout_data               ;     \r
-reg             Packet_number_sub_dl1   ;\r
-reg             Packet_number_sub_dl2   ;\r
-reg [4:0]       Fifo_data_count         ;\r
-reg             Fifo_ra_tmp             ;      \r
-reg             Pkt_sub_apply_tmp       ;\r
-reg             Pkt_sub_apply           ;\r
-reg             Add_rd_reg_rdy_tmp      ;\r
-reg             Add_rd_reg_rdy          ;   \r
-reg             Add_rd_reg_rdy_dl1      ;   \r
-reg             Add_rd_reg_rdy_dl2      ;\r
-reg [4:0]       Tx_Hwmark_pl            ;\r
-reg [4:0]       Tx_Lwmark_pl            ;\r
-reg             Add_rd_jump_tmp         ;\r
-reg             Add_rd_jump_tmp_pl1     ;\r
-reg             Add_rd_jump             ;\r
-reg             Add_rd_jump_wr_pl1      ;\r
-\r
-//******************************************************************************\r
-//write data to from FF .\r
-//domain Clk_SYS\r
-//******************************************************************************\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Current_state_SYS   <=SYS_idle;\r
-    else\r
-        Current_state_SYS   <=Next_state_SYS;\r
-        \r
-always @ (Current_state_SYS or Tx_mac_wr or Tx_mac_sop or Full or AlmostFull \r
-            or Tx_mac_eop )\r
-    case (Current_state_SYS)\r
-        SYS_idle:\r
-            if (Tx_mac_wr&&Tx_mac_sop&&!Full)\r
-                Next_state_SYS      =SYS_SOP;\r
-            else\r
-                Next_state_SYS      =Current_state_SYS ;\r
-        SYS_SOP:\r
-                Next_state_SYS      =SYS_MOP;\r
-        SYS_MOP:\r
-            if (AlmostFull)\r
-                Next_state_SYS      =SYS_DROP;\r
-            else if (Tx_mac_wr&&Tx_mac_sop)\r
-                Next_state_SYS      =SYS_SOP_err;\r
-            else if (Tx_mac_wr&&Tx_mac_eop)\r
-                Next_state_SYS      =SYS_EOP_ok;\r
-            else\r
-                Next_state_SYS      =Current_state_SYS ;\r
-        SYS_EOP_ok:\r
-            if (Tx_mac_wr&&Tx_mac_sop)\r
-                Next_state_SYS      =SYS_SOP;\r
-            else\r
-                Next_state_SYS      =SYS_idle;\r
-        SYS_EOP_err:\r
-            if (Tx_mac_wr&&Tx_mac_sop)\r
-                Next_state_SYS      =SYS_SOP;\r
-            else\r
-                Next_state_SYS      =SYS_idle;\r
-        SYS_SOP_err:\r
-                Next_state_SYS      =SYS_DROP;\r
-        SYS_DROP: //FIFO overflow           \r
-            if (Tx_mac_wr&&Tx_mac_eop)\r
-                Next_state_SYS      =SYS_EOP_err;\r
-            else \r
-                Next_state_SYS      =Current_state_SYS ;\r
-        default:\r
-                Next_state_SYS      =SYS_idle;\r
-    endcase\r
-    \r
-//delay signals \r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        begin       \r
-        Tx_mac_wr_dl1           <=0;\r
-        Tx_mac_data_dl1         <=0;\r
-        Tx_mac_BE_dl1           <=0;\r
-        end  \r
-    else\r
-        begin       \r
-        Tx_mac_wr_dl1           <=Tx_mac_wr     ;\r
-        Tx_mac_data_dl1         <=Tx_mac_data   ;\r
-        Tx_mac_BE_dl1           <=Tx_mac_BE     ;\r
-        end \r
-\r
-always @(Current_state_SYS) \r
-    if (Current_state_SYS==SYS_EOP_err)\r
-        FF_FullErr      =1;\r
-    else\r
-        FF_FullErr      =0; \r
-\r
-reg     Tx_mac_eop_gen;\r
-\r
-always @(Current_state_SYS) \r
-    if (Current_state_SYS==SYS_EOP_err||Current_state_SYS==SYS_EOP_ok)\r
-        Tx_mac_eop_gen      =1;\r
-    else\r
-        Tx_mac_eop_gen      =0; \r
-                \r
-assign  Din={Tx_mac_eop_gen,FF_FullErr,Tx_mac_BE_dl1,Tx_mac_data_dl1};\r
-\r
-always @(Current_state_SYS or Tx_mac_wr_dl1)\r
-    if ((Current_state_SYS==SYS_SOP||Current_state_SYS==SYS_EOP_ok||\r
-        Current_state_SYS==SYS_MOP||Current_state_SYS==SYS_EOP_err)&&Tx_mac_wr_dl1)\r
-        Wr_en   = 1;\r
-    else\r
-        Wr_en   = 0;\r
-        \r
-        \r
-//\r
-        \r
-        \r
-always @ (posedge Reset or posedge Clk_SYS)\r
-    if (Reset)\r
-        Add_wr_gray         <=0;\r
-    else \r
-      begin : Add_wr_gray_loop\r
-        integer i;\r
-       Add_wr_gray[TX_FF_DEPTH-1]      <=Add_wr[TX_FF_DEPTH-1];\r
-       for (i=TX_FF_DEPTH-2;i>=0;i=i-1)\r
-         Add_wr_gray[i] <=Add_wr[i+1]^Add_wr[i];\r
-      end\r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Add_rd_gray_dl1         <=0;\r
-    else\r
-        Add_rd_gray_dl1         <=Add_rd_gray;\r
-\r
-   always @(posedge Clk_SYS or posedge Reset)\r
-     if (Reset)\r
-       Add_rd_gray_dl2 <= 0;\r
-     else\r
-       Add_rd_gray_dl2 <= Add_rd_gray_dl1;\r
-   \r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Add_rd_jump_wr_pl1  <=0;\r
-    else        \r
-        Add_rd_jump_wr_pl1  <=Add_rd_jump;\r
-                    \r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Add_rd_ungray       =0;\r
-    else if (!Add_rd_jump_wr_pl1)       \r
-      begin : Add_rd_ungray_loop\r
-        integer i;\r
-       Add_rd_ungray[TX_FF_DEPTH-1] = Add_rd_gray_dl2[TX_FF_DEPTH-1];\r
-       for (i=TX_FF_DEPTH-2;i>=0;i=i-1)\r
-         Add_rd_ungray[i] = Add_rd_ungray[i+1]^Add_rd_gray_dl2[i];\r
-      end\r
-\r
-assign          Add_wr_pluse        =Add_wr+1;\r
-assign          Add_wr_pluse_pluse  =Add_wr+4;\r
-\r
-always @ (Add_wr_pluse or Add_rd_ungray)\r
-    if (Add_wr_pluse==Add_rd_ungray)\r
-        Full    =1;\r
-    else\r
-        Full    =0;\r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        AlmostFull  <=0;\r
-    else if (Add_wr_pluse_pluse==Add_rd_ungray)\r
-        AlmostFull  <=1;\r
-    else\r
-        AlmostFull  <=0;\r
-        \r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Add_wr  <= 0;\r
-    else if (Wr_en&&!Full)\r
-        Add_wr  <= Add_wr +1;\r
-        \r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        begin\r
-        Packet_number_sub_dl1   <=0;\r
-        Packet_number_sub_dl2   <=0;\r
-        end\r
-    else \r
-        begin\r
-        Packet_number_sub_dl1   <=Pkt_sub_apply;\r
-        Packet_number_sub_dl2   <=Packet_number_sub_dl1;\r
-        end\r
-        \r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Packet_number_sub_edge  <=0;\r
-    else if (Packet_number_sub_dl1&!Packet_number_sub_dl2)\r
-        Packet_number_sub_edge  <=1;\r
-    else\r
-        Packet_number_sub_edge  <=0;\r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Packet_number_add       <=0;    \r
-    else if (Current_state_SYS==SYS_EOP_ok||Current_state_SYS==SYS_EOP_err)\r
-        Packet_number_add       <=1;\r
-    else\r
-        Packet_number_add       <=0;    \r
-        \r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Packet_number_inFF      <=0;\r
-    else if (Packet_number_add&&!Packet_number_sub_edge)\r
-        Packet_number_inFF      <=Packet_number_inFF + 1'b1;\r
-    else if (!Packet_number_add&&Packet_number_sub_edge)\r
-        Packet_number_inFF      <=Packet_number_inFF - 1'b1;\r
-\r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Packet_number_inFF_reg      <=0;\r
-    else\r
-        Packet_number_inFF_reg      <=Packet_number_inFF;\r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        begin\r
-        Add_rd_reg_rdy_dl1          <=0;\r
-        Add_rd_reg_rdy_dl2          <=0;\r
-        end\r
-    else\r
-        begin\r
-        Add_rd_reg_rdy_dl1          <=Add_rd_reg_rdy;\r
-        Add_rd_reg_rdy_dl2          <=Add_rd_reg_rdy_dl1;\r
-        end     \r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Add_rd_reg_dl1              <=0;\r
-    else if (Add_rd_reg_rdy_dl1&!Add_rd_reg_rdy_dl2)\r
-        Add_rd_reg_dl1              <=Add_rd_reg[TX_FF_DEPTH-1:TX_FF_DEPTH-5];\r
-\r
-\r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Fifo_data_count     <=0;\r
-    else if (FullDuplex)\r
-        Fifo_data_count     <=Add_wr[TX_FF_DEPTH-1:TX_FF_DEPTH-5]-Add_rd_ungray[TX_FF_DEPTH-1:TX_FF_DEPTH-5];\r
-    else\r
-        Fifo_data_count     <=Add_wr[TX_FF_DEPTH-1:TX_FF_DEPTH-5]-Add_rd_reg_dl1[TX_FF_DEPTH-1:TX_FF_DEPTH-5]; //for half duplex backoff requirement\r
-        \r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Fifo_ra_tmp <=0;    \r
-    else if (Packet_number_inFF_reg>=1||Fifo_data_count>=Tx_Lwmark)\r
-        Fifo_ra_tmp <=1;        \r
-    else \r
-        Fifo_ra_tmp <=0;\r
-\r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        begin \r
-        Tx_Hwmark_pl        <=0;\r
-        Tx_Lwmark_pl        <=0;    \r
-        end\r
-    else\r
-        begin \r
-        Tx_Hwmark_pl        <=Tx_Hwmark;\r
-        Tx_Lwmark_pl        <=Tx_Lwmark;    \r
-        end    \r
-    \r
-always @ (posedge Clk_SYS or posedge Reset)\r
-    if (Reset)\r
-        Tx_mac_wa   <=0;  \r
-    else if (Fifo_data_count>=Tx_Hwmark_pl)\r
-        Tx_mac_wa   <=0;\r
-    else if (Fifo_data_count<Tx_Lwmark_pl)\r
-        Tx_mac_wa   <=1;\r
-\r
-//******************************************************************************\r
-//rd data to from FF .\r
-//domain Clk_MAC\r
-//******************************************************************************\r
-reg[35:0]   Dout_dl1;\r
-\r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Dout_dl1    <=0;\r
-    else\r
-        Dout_dl1    <=Dout;\r
-\r
-always @ (Current_state_MAC or Next_state_MAC)\r
-    if ((Current_state_MAC==MAC_idle||Current_state_MAC==MAC_byte0)&&Next_state_MAC==MAC_byte3)\r
-        Dout_reg_en     =1;\r
-    else\r
-        Dout_reg_en     =0; \r
-            \r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Dout_reg        <=0;\r
-    else if (Dout_reg_en)\r
-        Dout_reg    <=Dout_dl1;     \r
-        \r
-assign {Dout_eop,Dout_err,Dout_BE,Dout_data}=Dout_reg;\r
-\r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Current_state_MAC   <=MAC_idle;\r
-    else\r
-        Current_state_MAC   <=Next_state_MAC;       \r
-        \r
-always @ (Current_state_MAC or Fifo_rd or Dout_BE or Dout_eop or Fifo_rd_retry\r
-            or Fifo_rd_finish or Empty or Fifo_rd or Fifo_eop)\r
-        case (Current_state_MAC)\r
-            MAC_idle:\r
-                if (Empty&&Fifo_rd)\r
-                    Next_state_MAC=MAC_FF_Err;\r
-                else if (Fifo_rd)\r
-                    Next_state_MAC=MAC_byte3;\r
-                else\r
-                    Next_state_MAC=Current_state_MAC;\r
-            MAC_byte3:\r
-                if (Fifo_rd_retry)\r
-                    Next_state_MAC=MAC_retry;           \r
-                else if (Fifo_eop)\r
-                    Next_state_MAC=MAC_wait_finish;\r
-                else if (Fifo_rd&&!Fifo_eop)\r
-                    Next_state_MAC=MAC_byte2;\r
-                else\r
-                    Next_state_MAC=Current_state_MAC;\r
-            MAC_byte2:\r
-                if (Fifo_rd_retry)\r
-                    Next_state_MAC=MAC_retry;\r
-                else if (Fifo_eop)\r
-                    Next_state_MAC=MAC_wait_finish;\r
-                else if (Fifo_rd&&!Fifo_eop)\r
-                    Next_state_MAC=MAC_byte1;\r
-                else\r
-                    Next_state_MAC=Current_state_MAC;       \r
-            MAC_byte1:\r
-                if (Fifo_rd_retry)\r
-                    Next_state_MAC=MAC_retry;\r
-                else if (Fifo_eop)\r
-                    Next_state_MAC=MAC_wait_finish;\r
-                else if (Fifo_rd&&!Fifo_eop)\r
-                    Next_state_MAC=MAC_byte0;\r
-                else\r
-                    Next_state_MAC=Current_state_MAC;   \r
-            MAC_byte0:\r
-                if (Empty&&Fifo_rd&&!Fifo_eop)\r
-                    Next_state_MAC=MAC_FFEmpty;\r
-                else if (Fifo_rd_retry)\r
-                    Next_state_MAC=MAC_retry;\r
-                else if (Fifo_eop)\r
-                    Next_state_MAC=MAC_wait_finish;     \r
-                else if (Fifo_rd&&!Fifo_eop)\r
-                    Next_state_MAC=MAC_byte3;\r
-                else\r
-                    Next_state_MAC=Current_state_MAC;   \r
-            MAC_retry:\r
-                    Next_state_MAC=MAC_idle;\r
-            MAC_wait_finish:\r
-                if (Fifo_rd_finish)\r
-                    Next_state_MAC=MAC_pkt_sub;\r
-                else\r
-                    Next_state_MAC=Current_state_MAC;\r
-            MAC_pkt_sub:\r
-                    Next_state_MAC=MAC_idle;\r
-            MAC_FFEmpty:\r
-                if (!Empty)\r
-                    Next_state_MAC=MAC_byte3;\r
-                else\r
-                    Next_state_MAC=Current_state_MAC;\r
-            MAC_FF_Err:  //stopped state-machine need change                         \r
-                    Next_state_MAC=Current_state_MAC;\r
-            default\r
-                    Next_state_MAC=MAC_idle;    \r
-        endcase\r
-//\r
-always @ (posedge Reset or posedge Clk_MAC)\r
-    if (Reset)\r
-        Add_rd_gray         <=0;\r
-    else \r
-      begin : Add_rd_gray_loop\r
-        integer i;\r
-       Add_rd_gray[TX_FF_DEPTH-1]      <=Add_rd[TX_FF_DEPTH-1];\r
-       for (i=TX_FF_DEPTH-2;i>=0;i=i-1)\r
-         Add_rd_gray[i] <= Add_rd[i+1]^Add_rd[i];\r
-      end\r
-//\r
-\r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Add_wr_gray_dl1     <=0;\r
-    else\r
-        Add_wr_gray_dl1     <=Add_wr_gray;\r
-\r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Add_wr_gray_dl2     <=0;\r
-    else\r
-        Add_wr_gray_dl2     <=Add_wr_gray_dl1;\r
-            \r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Add_wr_ungray       =0;\r
-    else        \r
-      begin : Add_wr_ungray_loop\r
-        integer i;\r
-       Add_wr_ungray[TX_FF_DEPTH-1] = Add_wr_gray_dl2[TX_FF_DEPTH-1];\r
-       for (i=TX_FF_DEPTH-2;i>=0;i=i-1)\r
-         Add_wr_ungray[i] = Add_wr_ungray[i+1]^Add_wr_gray_dl2[i];     \r
-      end           \r
-\r
-//empty     \r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)      \r
-        Empty   <=1;\r
-    else if (Add_rd==Add_wr_ungray)\r
-        Empty   <=1;\r
-    else\r
-        Empty   <=0;    \r
-        \r
-//ra\r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Fifo_ra <=0;\r
-    else\r
-        Fifo_ra <=Fifo_ra_tmp;\r
-\r
-\r
-\r
-always @ (posedge Clk_MAC or posedge Reset)     \r
-    if (Reset)  \r
-        Pkt_sub_apply_tmp   <=0;\r
-    else if (Current_state_MAC==MAC_pkt_sub)\r
-        Pkt_sub_apply_tmp   <=1;\r
-    else\r
-        Pkt_sub_apply_tmp   <=0;\r
-        \r
-always @ (posedge Clk_MAC or posedge Reset) \r
-    if (Reset)\r
-        Pkt_sub_apply   <=0;\r
-    else if ((Current_state_MAC==MAC_pkt_sub)||Pkt_sub_apply_tmp)\r
-        Pkt_sub_apply   <=1;\r
-    else                \r
-        Pkt_sub_apply   <=0;\r
-\r
-//reg Add_rd for collison retry\r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Add_rd_reg      <=0;\r
-    else if (Fifo_rd_finish)\r
-        Add_rd_reg      <=Add_rd;\r
-\r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Add_rd_reg_rdy_tmp      <=0;\r
-    else if (Fifo_rd_finish)\r
-        Add_rd_reg_rdy_tmp      <=1;\r
-    else\r
-        Add_rd_reg_rdy_tmp      <=0;\r
-        \r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Add_rd_reg_rdy      <=0;\r
-    else if (Fifo_rd_finish||Add_rd_reg_rdy_tmp)\r
-        Add_rd_reg_rdy      <=1;\r
-    else\r
-        Add_rd_reg_rdy      <=0;         \r
\r
-\r
-always @ (Current_state_MAC or Next_state_MAC)\r
-    if ((Current_state_MAC==MAC_idle||Current_state_MAC==MAC_byte0)&&Next_state_MAC==MAC_byte3)\r
-        Add_rd_add  =1;\r
-    else\r
-        Add_rd_add  =0;\r
-        \r
-        \r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Add_rd          <=0;\r
-    else if (Current_state_MAC==MAC_retry)\r
-        Add_rd          <= Add_rd_reg;\r
-    else if (Add_rd_add)\r
-        Add_rd          <= Add_rd + 1;  \r
-                    \r
-always @ (posedge Clk_MAC or posedge Reset)\r
-       if (Reset)\r
-           Add_rd_jump_tmp <=0;\r
-       else if (Current_state_MAC==MAC_retry)\r
-           Add_rd_jump_tmp <=1;\r
-       else\r
-           Add_rd_jump_tmp <=0;\r
-\r
-always @ (posedge Clk_MAC or posedge Reset)\r
-       if (Reset)\r
-           Add_rd_jump_tmp_pl1 <=0;\r
-       else\r
-           Add_rd_jump_tmp_pl1 <=Add_rd_jump_tmp;       \r
-           \r
-always @ (posedge Clk_MAC or posedge Reset)\r
-       if (Reset)\r
-           Add_rd_jump <=0;\r
-       else if (Current_state_MAC==MAC_retry)\r
-           Add_rd_jump <=1;\r
-       else if (Add_rd_jump_tmp_pl1)\r
-           Add_rd_jump <=0;    \r
-                                               \r
-//gen Fifo_data \r
-\r
-        \r
-always @ (Dout_data or Current_state_MAC)\r
-    case (Current_state_MAC)\r
-        MAC_byte3:\r
-            Fifo_data   =Dout_data[31:24];\r
-        MAC_byte2:\r
-            Fifo_data   =Dout_data[23:16];\r
-        MAC_byte1:\r
-            Fifo_data   =Dout_data[15:8];\r
-        MAC_byte0:\r
-            Fifo_data   =Dout_data[7:0];\r
-        default:\r
-            Fifo_data   =0;     \r
-    endcase\r
-        \r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Fifo_da         <=0;\r
-    else if ((Current_state_MAC==MAC_byte0||Current_state_MAC==MAC_byte1||\r
-              Current_state_MAC==MAC_byte2||Current_state_MAC==MAC_byte3)&&Fifo_rd&&!Fifo_eop)\r
-        Fifo_da         <=1;\r
-    else\r
-        Fifo_da         <=0;\r
-\r
-//gen Fifo_data_err_empty\r
-assign  Fifo_data_err_full=Dout_err;\r
-//gen Fifo_data_err_empty\r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Current_state_MAC_reg   <=0;\r
-    else\r
-        Current_state_MAC_reg   <=Current_state_MAC;\r
-        \r
-always @ (posedge Clk_MAC or posedge Reset)\r
-    if (Reset)\r
-        Fifo_data_err_empty     <=0;\r
-    else if (Current_state_MAC_reg==MAC_FFEmpty)\r
-        Fifo_data_err_empty     <=1;\r
-    else\r
-        Fifo_data_err_empty     <=0;\r
-    \r
-//always @ (posedge Clk_MAC)\r
-//    if (Current_state_MAC_reg==MAC_FF_Err)  \r
-//        begin\r
-//        $finish(2); \r
-//        $display("mac_tx_FF meet error status at time :%t",$time);\r
-//        end\r
-\r
-//gen Fifo_eop aligned to last valid data byte\r
-always @ ( Current_state_MAC or Dout_eop or Dout_BE )\r
-  if ( ( ( Current_state_MAC==MAC_byte0 && Dout_BE==2'b00 ) ||\r
-         ( Current_state_MAC==MAC_byte1 && Dout_BE==2'b11 ) ||\r
-         ( Current_state_MAC==MAC_byte2 && Dout_BE==2'b10 ) ||\r
-         ( Current_state_MAC==MAC_byte3 && Dout_BE==2'b01 ) ) && Dout_eop )\r
-    Fifo_eop = 1;\r
-  else\r
-    Fifo_eop = 0;\r
-   \r
-   // Dual port RAM for FIFO\r
-   ram_2port #(.DWIDTH(36),.AWIDTH(TX_FF_DEPTH)) mac_tx_ff_ram\r
-     (.clka(Clk_SYS),.ena(1'b1),.wea(Wr_en),.addra(Add_wr),.dia(Din),.doa(),\r
-      .clkb(Clk_MAC),.enb(1'b1),.web(1'b0),.addrb(Add_rd),.dib(36'b0),.dob(Dout) );\r
-\r
-   assign debug0 = \r
-         { { 5'd0, Empty, Full, AlmostFull },\r
-           { Current_state_SYS, Current_state_MAC },\r
-           { Fifo_rd, Fifo_rd_finish, Fifo_rd_retry, Fifo_eop, Fifo_da, Fifo_ra, Fifo_data_err_empty, Fifo_data_err_full },\r
-           { 2'b0, Dout_BE, Tx_mac_wa, Tx_mac_wr, Tx_mac_sop, Tx_mac_eop} };\r
-           \r
-   assign debug1 = \r
-         { { 8'd0 },\r
-           { 8'd0 },\r
-           { 8'd0 },\r
-           { 8'd0 } };\r
-   \r
-endmodule // MAC_tx_FF\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_tx/MAC_tx_addr_add.v b/usrp2/fpga/eth/rtl/verilog/MAC_tx/MAC_tx_addr_add.v
deleted file mode 100644 (file)
index 76026ce..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-// ////////////////////////////////////////////////////////////////////\r
-// //                                                              ////\r
-// //  MAC_tx_addr_add.v                                           ////\r
-// //                                                              ////\r
-// //  This file is part of the Ethernet IP core project           ////\r
-// //  http://www.opencores.org/projects.cgi/wr_en/ethernet_tri_mode/////\r
-// //                                                              ////\r
-// //  Author(s):                                                  ////\r
-// //      - Jon Gao (gaojon@yahoo.com)                            ////\r
-// //                                                              ////\r
-// //                                                              ////\r
-// ////////////////////////////////////////////////////////////////////\r
-// //                                                              ////\r
-// // Copyright (C) 2001 Authors                                   ////\r
-// //                                                              ////\r
-// // This source file may be used and distributed without         ////\r
-// // restriction provided that this copyright statement is not    ////\r
-// // removed from the file and that any derivative work contains  ////\r
-// // the original copyright notice and the associated disclaimer. ////\r
-// //                                                              ////\r
-// // This source file is free software; you can redistribute it   ////\r
-// // and/or modify it under the terms of the GNU Lesser General   ////\r
-// // Public License as published by the Free Software Foundation; ////\r
-// // either version 2.1 of the License, or (at your option) any   ////\r
-// // later version.                                               ////\r
-// //                                                              ////\r
-// // This source is distributed in the hope that it will be       ////\r
-// // useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-// // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-// // PURPOSE.  See the GNU Lesser General Public License for more ////\r
-// // details.                                                     ////\r
-// //                                                              ////\r
-// // You should have received a copy of the GNU Lesser General    ////\r
-// // Public License along with this source; if not, download it   ////\r
-// // from http://www.opencores.org/lgpl.shtml                     ////\r
-// //                                                              ////\r
-// ////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: MAC_tx_addr_add.v,v $\r
-// Revision 1.3  2006/01/19 14:07:54  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:18  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//                                           \r
-\r
-module MAC_tx_addr_add \r
-  (Reset               ,\r
-   Clk                 ,\r
-   MAC_tx_addr_init    ,\r
-   MAC_tx_addr_rd      ,\r
-   MAC_tx_addr_data    ,\r
-   //CPU               ,\r
-   MAC_add_prom_data   ,\r
-   MAC_add_prom_add    ,\r
-   MAC_add_prom_wr     \r
-   );\r
-   \r
-   input Reset               ;\r
-   input Clk                 ;\r
-   input MAC_tx_addr_rd      ;\r
-   input MAC_tx_addr_init    ;\r
-   output [7:0] MAC_tx_addr_data    ;\r
-   //CPU               ;\r
-   input [7:0]         MAC_add_prom_data   ;\r
-   input [2:0]         MAC_add_prom_add    ;\r
-   input       MAC_add_prom_wr     ;\r
-   \r
-   // ******************************************************************************   \r
-   // internal signals                                                              \r
-   // ******************************************************************************\r
-   reg [2:0]   add_rd;\r
-   wire [2:0]  add_wr;\r
-   wire [7:0]  din;\r
-   //wire [7:0]        dout;\r
-   reg [7:0]   dout;\r
-   wire        wr_en;\r
-   reg                 MAC_add_prom_wr_dl1;\r
-   reg                 MAC_add_prom_wr_dl2;\r
-   // ******************************************************************************   \r
-   // write data from cpu to prom                                                              \r
-   // ******************************************************************************\r
-   always @ (posedge Clk or posedge Reset)\r
-     if (Reset)\r
-       begin\r
-          MAC_add_prom_wr_dl1     <=0;\r
-          MAC_add_prom_wr_dl2     <=0;\r
-       end\r
-     else\r
-       begin\r
-          MAC_add_prom_wr_dl1     <=MAC_add_prom_wr;\r
-          MAC_add_prom_wr_dl2     <=MAC_add_prom_wr_dl1;\r
-       end     \r
-   \r
-   assign wr_en   =MAC_add_prom_wr_dl1&!MAC_add_prom_wr_dl2;\r
-   assign add_wr  =MAC_add_prom_add;\r
-   assign din     =MAC_add_prom_data;\r
-   \r
-   // ******************************************************************************   \r
-   // read data from cpu to prom                                                              \r
-   // ******************************************************************************\r
-   always @ (posedge Clk or posedge Reset)\r
-     if (Reset)\r
-       add_rd       <=0;\r
-     else if (MAC_tx_addr_init)\r
-       add_rd       <=0;\r
-     else if (MAC_tx_addr_rd)\r
-       add_rd       <=add_rd + 1;\r
-   assign MAC_tx_addr_data=dout;      \r
-   // ******************************************************************************   \r
-   // b port for read ,a port for write .\r
-   // ******************************************************************************\r
-   \r
-   reg [7:0] address_ram [0:7];\r
-   always @(posedge Clk)\r
-     if(wr_en)\r
-       address_ram[add_wr] <= din;\r
-\r
-   always @(posedge Clk)\r
-     dout <= address_ram[add_rd];\r
-\r
-endmodule // MAC_tx_addr_add\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_tx/MAC_tx_ctrl.v b/usrp2/fpga/eth/rtl/verilog/MAC_tx/MAC_tx_ctrl.v
deleted file mode 100644 (file)
index 8da2e25..0000000
+++ /dev/null
@@ -1,656 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  MAC_tx_ctrl.v                                               ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: MAC_tx_Ctrl.v,v $\r
-// Revision 1.4  2006/06/25 04:58:56  maverickist\r
-// no message\r
-//\r
-// Revision 1.3  2006/01/19 14:07:54  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.3  2005/12/16 06:44:17  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.2  2005/12/13 12:15:38  Administrator\r
-// no message\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//                                           \r
-\r
-module MAC_tx_ctrl (  \r
-Reset               ,\r
-Clk                 ,\r
-//CRC_gen Interface  \r
-CRC_init            ,\r
-Frame_data          ,\r
-Data_en             ,\r
-CRC_rd              ,\r
-CRC_end             ,\r
-CRC_out             ,\r
-//Ramdon_gen interfac\r
-Random_init         ,\r
-RetryCnt            ,\r
-Random_time_meet    ,\r
-//flow control      \r
-pause_apply         ,\r
-pause_quanta_sub    ,\r
-xoff_gen            ,\r
-xoff_gen_complete   ,\r
-xon_gen             ,\r
-xon_gen_complete    ,\r
-//MAC_tx_FF          \r
-Fifo_data           ,\r
-Fifo_rd             ,\r
-Fifo_eop            ,\r
-Fifo_da             ,\r
-Fifo_rd_finish      ,\r
-Fifo_rd_retry       ,\r
-Fifo_ra             ,\r
-Fifo_data_err_empty ,\r
-Fifo_data_err_full  ,\r
-//RMII               \r
-TxD                 ,\r
-TxEn                ,\r
-CRS                 , \r
-//MAC_tx_addr_add   \r
-MAC_tx_addr_rd      ,\r
-MAC_tx_addr_data    ,\r
-MAC_tx_addr_init    ,\r
-//RMON               \r
-Tx_pkt_type_rmon    ,\r
-Tx_pkt_length_rmon  ,\r
-Tx_apply_rmon       ,\r
-Tx_pkt_err_type_rmon,\r
-//CPU  \r
-pause_quanta_set    ,              \r
-MAC_tx_add_en       ,  \r
-FullDuplex          ,\r
-MaxRetry            ,\r
-IFGset          \r
-);\r
-\r
-input           Reset               ;\r
-input           Clk                 ;\r
-                //CRC_gen Interface \r
-output          CRC_init            ;\r
-output  [7:0]   Frame_data          ;\r
-output          Data_en             ;\r
-output          CRC_rd              ;\r
-input           CRC_end             ;\r
-input   [7:0]   CRC_out             ;\r
-                //Ramdon_gen interface\r
-output          Random_init         ;\r
-output  [3:0]   RetryCnt            ;\r
-input           Random_time_meet    ;//levle hight indicate random time passed away\r
-                //flow control\r
-input           pause_apply         ;\r
-output          pause_quanta_sub    ;\r
-input           xoff_gen            ;\r
-output          xoff_gen_complete   ;\r
-input           xon_gen             ;\r
-output          xon_gen_complete    ;               \r
-                //MAC_rx_FF\r
-input   [7:0]   Fifo_data           ;\r
-output          Fifo_rd             ;\r
-input           Fifo_eop            ;\r
-input           Fifo_da             ;\r
-output          Fifo_rd_finish      ;\r
-output          Fifo_rd_retry       ;\r
-input           Fifo_ra             ;\r
-input           Fifo_data_err_empty ;\r
-input           Fifo_data_err_full  ;\r
-                //RMII\r
-output  [7:0]   TxD                 ;\r
-output          TxEn                ;   \r
-input           CRS                 ;\r
-                //MAC_tx_addr_add\r
-output          MAC_tx_addr_init    ;\r
-output          MAC_tx_addr_rd      ;\r
-input   [7:0]   MAC_tx_addr_data    ;\r
-                //RMON\r
-output  [2:0]   Tx_pkt_type_rmon    ;\r
-output  [15:0]  Tx_pkt_length_rmon  ;\r
-output          Tx_apply_rmon       ;\r
-output  [2:0]   Tx_pkt_err_type_rmon;   \r
-                //CPU\r
-input   [15:0]  pause_quanta_set    ;\r
-input           MAC_tx_add_en       ;               \r
-input           FullDuplex          ;\r
-input   [3:0]   MaxRetry            ;\r
-input   [5:0]   IFGset              ;\r
-//******************************************************************************        \r
-//internal signals                                                              \r
-//******************************************************************************   \r
-parameter       StateIdle           =4'd00;\r
-parameter       StatePreamble       =4'd01;\r
-parameter       StateSFD            =4'd02;\r
-parameter       StateData           =4'd03;\r
-parameter       StatePause          =4'd04;\r
-parameter       StatePAD            =4'd05;\r
-parameter       StateFCS            =4'd06;\r
-parameter       StateIFG            =4'd07;\r
-parameter       StateJam            =4'd08;\r
-parameter       StateBackOff        =4'd09;\r
-parameter       StateJamDrop        =4'd10;\r
-parameter       StateFFEmptyDrop    =4'd11;\r
-parameter       StateSwitchNext     =4'd12;\r
-parameter       StateDefer          =4'd13;\r
-parameter       StateSendPauseFrame =4'd14;\r
-\r
-reg [3:0]      Current_state;\r
-reg [3:0]       Next_state;\r
-reg [5:0]       IFG_counter;\r
-reg [4:0]       Preamble_counter;//\r
-reg [7:0]       TxD_tmp             ;   \r
-reg             TxEn_tmp            ;   \r
-reg [15:0]      Tx_pkt_length_rmon  ;\r
-reg             Tx_apply_rmon       ;\r
-reg [2:0]       Tx_pkt_err_type_rmon;   \r
-reg [3:0]       RetryCnt            ;\r
-reg             Random_init         ;\r
-reg             Fifo_rd_finish      ;\r
-reg             Fifo_rd_retry       ;\r
-reg [7:0]       TxD                 ;   \r
-reg             TxEn                ;   \r
-reg             CRC_init            ;\r
-reg             Data_en             ;\r
-reg             CRC_rd              ;\r
-reg             Fifo_rd             ;\r
-reg             MAC_tx_addr_rd      ;\r
-reg             MAC_header_slot     ;\r
-reg             MAC_header_slot_tmp ;\r
-reg [2:0]       Tx_pkt_type_rmon    ;\r
-wire            Collision           ; \r
-reg             MAC_tx_addr_init    ;\r
-reg             Src_MAC_ptr         ;\r
-reg [7:0]       IPLengthCounter     ;//for pad append\r
-reg [1:0]       PADCounter          ;\r
-reg [7:0]       JamCounter          ;\r
-reg             PktDrpEvenPtr       ;\r
-reg [7:0]       pause_counter       ;\r
-reg             pause_quanta_sub    ;\r
-reg [15:0]      pause_quanta_set_dl1    ;\r
-reg             xoff_gen_complete   ;\r
-reg             xon_gen_complete    ;\r
-//******************************************************************************    \r
-//boundery signal processing                                                             \r
-//****************************************************************************** \r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        begin  \r
-        pause_quanta_set_dl1            <=0;\r
-        end\r
-    else\r
-        begin  \r
-        pause_quanta_set_dl1            <=pause_quanta_set      ;\r
-        end     \r
-//******************************************************************************    \r
-//state machine                                                             \r
-//****************************************************************************** \r
-assign Collision=TxEn&CRS;\r
-\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        IPLengthCounter     <=0;\r
-    else if (Current_state==StateDefer)\r
-        IPLengthCounter     <=0;    \r
-    else if (IPLengthCounter!=8'hff&&(Current_state==StateData||Current_state==StateSendPauseFrame||Current_state==StatePAD))\r
-        IPLengthCounter     <=IPLengthCounter+1;\r
-\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        PADCounter      <=0;\r
-    else if (Current_state!=StatePAD)\r
-        PADCounter      <=0;\r
-    else\r
-        PADCounter      <=PADCounter+1;\r
-\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Current_state       <=StateDefer;\r
-    else \r
-        Current_state       <=Next_state;    \r
-        \r
-always @ (*)\r
-        case (Current_state)   \r
-            StateDefer:\r
-                if ((FullDuplex)||(!FullDuplex&&!CRS))\r
-                    Next_state=StateIFG;\r
-                else\r
-                    Next_state=Current_state;   \r
-            StateIFG:\r
-                if (!FullDuplex&&CRS)\r
-                    Next_state=StateDefer;\r
-                else if ((FullDuplex&&IFG_counter==IFGset-4)||(!FullDuplex&&!CRS&&IFG_counter==IFGset-4))//remove some additional time\r
-                    Next_state=StateIdle;\r
-                else\r
-                    Next_state=Current_state;           \r
-            StateIdle:\r
-                if (!FullDuplex&&CRS)\r
-                    Next_state=StateDefer;\r
-               else if (xoff_gen||xon_gen)\r
-                 Next_state=StatePreamble;\r
-                else if (pause_apply)\r
-                    Next_state=StatePause;          \r
-                else if ((FullDuplex||~CRS)&&Fifo_ra)\r
-                    Next_state=StatePreamble;\r
-                else\r
-                    Next_state=Current_state;   \r
-            StatePause:\r
-                if (pause_counter==512/8)\r
-                    Next_state=StateDefer;\r
-               else if (xoff_gen||xon_gen)\r
-                 Next_state=StateIdle;\r
-                else\r
-                    Next_state=Current_state;               \r
-            StatePreamble:\r
-                if (!FullDuplex&&Collision)\r
-                    Next_state=StateJam;\r
-                else if ((FullDuplex&&Preamble_counter==6)||(!FullDuplex&&!Collision&&Preamble_counter==6))\r
-                    Next_state=StateSFD;\r
-                else\r
-                    Next_state=Current_state;\r
-            StateSFD:\r
-                if (!FullDuplex&&Collision)\r
-                    Next_state=StateJam;\r
-                else if (xoff_gen||xon_gen)\r
-                    Next_state=StateSendPauseFrame;\r
-                else \r
-                    Next_state=StateData;\r
-            StateSendPauseFrame:\r
-                if (IPLengthCounter==17)\r
-                    Next_state=StatePAD;\r
-                else\r
-                    Next_state=Current_state;\r
-            StateData:\r
-                if (!FullDuplex&&Collision)\r
-                    Next_state=StateJam;\r
-                else if (Fifo_data_err_empty)\r
-                    Next_state=StateFFEmptyDrop;                \r
-                else if (Fifo_eop&&IPLengthCounter>=59)//IP+MAC+TYPE=60 ,start from 0\r
-                    Next_state=StateFCS;\r
-                else if (Fifo_eop)\r
-                    Next_state=StatePAD;\r
-                else \r
-                    Next_state=StateData;       \r
-            StatePAD:\r
-                if (!FullDuplex&&Collision)\r
-                    Next_state=StateJam; \r
-                else if (IPLengthCounter>=59)\r
-                    Next_state=StateFCS;        \r
-                else \r
-                    Next_state=Current_state;\r
-            StateJam:\r
-                if (RetryCnt<=MaxRetry&&JamCounter==16) \r
-                    Next_state=StateBackOff;\r
-                else if (RetryCnt>MaxRetry)\r
-                    Next_state=StateJamDrop;\r
-                else\r
-                    Next_state=Current_state;\r
-            StateBackOff:\r
-                if (Random_time_meet)\r
-                    Next_state  =StateDefer;\r
-                else \r
-                    Next_state  =Current_state;\r
-            StateFCS:\r
-                if (!FullDuplex&&Collision)\r
-                    Next_state  =StateJam;\r
-                else if (CRC_end)\r
-                    Next_state  =StateSwitchNext;\r
-                else\r
-                    Next_state  =Current_state;\r
-            StateFFEmptyDrop:\r
-                if (Fifo_eop)\r
-                    Next_state  =StateSwitchNext;\r
-                else\r
-                    Next_state  =Current_state;             \r
-            StateJamDrop:\r
-                if (Fifo_eop)\r
-                    Next_state  =StateSwitchNext;\r
-                else\r
-                    Next_state  =Current_state;\r
-            StateSwitchNext:\r
-                    Next_state  =StateDefer;            \r
-            default:\r
-                Next_state  =StateDefer;\r
-        endcase\r
-\r
\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        JamCounter      <=0;\r
-    else if (Current_state!=StateJam)\r
-        JamCounter      <=0;\r
-    else if (Current_state==StateJam)\r
-        JamCounter      <=JamCounter+1;\r
-        \r
-             \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        RetryCnt        <=0;\r
-    else if (Current_state==StateSwitchNext)\r
-        RetryCnt        <=0;\r
-    else if (Current_state==StateJam&&Next_state==StateBackOff)\r
-        RetryCnt        <=RetryCnt + 1;\r
-            \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        IFG_counter     <=0;\r
-    else if (Current_state!=StateIFG)\r
-        IFG_counter     <=0;\r
-    else \r
-        IFG_counter     <=IFG_counter + 1;\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Preamble_counter    <=0;\r
-    else if (Current_state!=StatePreamble)\r
-        Preamble_counter    <=0;\r
-    else\r
-        Preamble_counter    <=Preamble_counter+ 1;\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)      \r
-        PktDrpEvenPtr       <=0;\r
-    else if(Current_state==StateJamDrop||Current_state==StateFFEmptyDrop)\r
-        PktDrpEvenPtr       <=~PktDrpEvenPtr;\r
-//******************************************************************************    \r
-//generate output signals                                                           \r
-//****************************************************************************** \r
-//CRC related\r
-always @(Current_state)\r
-    if (Current_state==StateSFD)\r
-        CRC_init    =1;\r
-    else\r
-        CRC_init    =0;\r
-        \r
-assign Frame_data=TxD_tmp;\r
-\r
-always @(Current_state)\r
-    if (Current_state==StateData||Current_state==StateSendPauseFrame||Current_state==StatePAD)\r
-        Data_en     =1;\r
-    else\r
-        Data_en     =0;\r
-        \r
-always @(Current_state)\r
-    if (Current_state==StateFCS)\r
-        CRC_rd      =1;\r
-    else\r
-        CRC_rd      =0;     \r
-    \r
-//Ramdon_gen interface\r
-always @(Current_state or Next_state)\r
-    if (Current_state==StateJam&&Next_state==StateBackOff)\r
-        Random_init =1;\r
-    else\r
-        Random_init =0; \r
-\r
-//MAC_rx_FF\r
-//data have one cycle delay after fifo read signals  \r
-always @ (*)\r
-    if (Current_state==StateData ||\r
-        Current_state==StateSFD&&!(xoff_gen||xon_gen)  ||\r
-        Current_state==StateJamDrop&&PktDrpEvenPtr||\r
-        Current_state==StateFFEmptyDrop&&PktDrpEvenPtr )\r
-        Fifo_rd     =1;\r
-    else\r
-        Fifo_rd     =0; \r
-        \r
-always @ (Current_state)\r
-    if (Current_state==StateSwitchNext)     \r
-        Fifo_rd_finish  =1;\r
-    else\r
-        Fifo_rd_finish  =0;\r
-        \r
-always @ (Current_state)\r
-    if (Current_state==StateJam)        \r
-        Fifo_rd_retry   =1;\r
-    else\r
-        Fifo_rd_retry   =0;     \r
-//RMII\r
-always @(Current_state)\r
-    if (Current_state==StatePreamble||Current_state==StateSFD||\r
-        Current_state==StateData||Current_state==StateSendPauseFrame||\r
-        Current_state==StateFCS||Current_state==StatePAD||Current_state==StateJam)\r
-        TxEn_tmp    =1;\r
-    else\r
-        TxEn_tmp    =0;\r
-\r
-//gen txd data      \r
-always @(*)\r
-    case (Current_state)\r
-        StatePreamble:\r
-            TxD_tmp =8'h55;\r
-        StateSFD:\r
-            TxD_tmp =8'hd5;\r
-        StateData:\r
-            if (Src_MAC_ptr&&MAC_tx_add_en)       \r
-                TxD_tmp =MAC_tx_addr_data;\r
-            else\r
-                TxD_tmp =Fifo_data;\r
-        StateSendPauseFrame:\r
-            if (Src_MAC_ptr&&MAC_tx_add_en)       \r
-                TxD_tmp =MAC_tx_addr_data;\r
-            else \r
-                case (IPLengthCounter)\r
-                    8'd0:   TxD_tmp =8'h01;\r
-                    8'd1:   TxD_tmp =8'h80;\r
-                    8'd2:   TxD_tmp =8'hc2;\r
-                    8'd3:   TxD_tmp =8'h00;\r
-                    8'd4:   TxD_tmp =8'h00;\r
-                    8'd5:   TxD_tmp =8'h01;\r
-                    8'd12:  TxD_tmp =8'h88;//type\r
-                    8'd13:  TxD_tmp =8'h08;//\r
-                    8'd14:  TxD_tmp =8'h00;//opcode\r
-                    8'd15:  TxD_tmp =8'h01;\r
-                    8'd16:  TxD_tmp =xon_gen?8'b0:pause_quanta_set_dl1[15:8];\r
-                    8'd17:  TxD_tmp =xon_gen?8'b0:pause_quanta_set_dl1[7:0];\r
-//                    8'd60:  TxD_tmp =8'h26;\r
-//                    8'd61:  TxD_tmp =8'h6b;\r
-//                    8'd62:  TxD_tmp =8'hae;\r
-//                    8'd63:  TxD_tmp =8'h0a;\r
-                    default:TxD_tmp =0;\r
-                endcase\r
-        \r
-        StatePAD:\r
-                TxD_tmp =8'h00; \r
-        StateJam:\r
-                TxD_tmp =8'h01; //jam sequence\r
-        StateFCS:\r
-            TxD_tmp =CRC_out;\r
-        default:\r
-            TxD_tmp =2'b0;\r
-    endcase\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        begin\r
-        TxD     <=0;\r
-        TxEn    <=0;\r
-        end\r
-    else\r
-        begin\r
-        TxD     <=TxD_tmp;\r
-        TxEn    <=TxEn_tmp;\r
-        end     \r
-//RMON\r
-\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Tx_pkt_length_rmon      <=0;\r
-    else if (Current_state==StateSFD)\r
-        Tx_pkt_length_rmon      <=0;\r
-    else if (Current_state==StateData||Current_state==StateSendPauseFrame||Current_state==StatePAD||Current_state==StateFCS)\r
-        Tx_pkt_length_rmon      <=Tx_pkt_length_rmon+1;\r
-        \r
-\r
-reg [2:0] Tx_apply_rmon_reg;\r
-\r
-always @( posedge Clk or posedge Reset )\r
-  if ( Reset )\r
-    begin\r
-      Tx_apply_rmon <= 0;\r
-      Tx_apply_rmon_reg <= 'b0;\r
-    end\r
-  else\r
-    begin\r
-      if ( (Fifo_eop&&Current_state==StateJamDrop)     ||\r
-           (Fifo_eop&&Current_state==StateFFEmptyDrop) ||\r
-           CRC_end )\r
-        Tx_apply_rmon <= 1;\r
-      else\r
-        if ( Tx_apply_rmon_reg[2] )\r
-          Tx_apply_rmon <= 0;\r
-\r
-      Tx_apply_rmon_reg <= { Tx_apply_rmon_reg[1:0], Tx_apply_rmon  };\r
-    end\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Tx_pkt_err_type_rmon    <=0;    \r
-    else if(Fifo_eop&&Current_state==StateJamDrop)\r
-        Tx_pkt_err_type_rmon    <=3'b001;//\r
-    else if(Fifo_eop&&Current_state==StateFFEmptyDrop)\r
-        Tx_pkt_err_type_rmon    <=3'b010;//underflow\r
-    else if(Fifo_eop&&Fifo_data_err_full)\r
-        Tx_pkt_err_type_rmon    <=3'b011;//overflow\r
-    else if(CRC_end)\r
-        Tx_pkt_err_type_rmon    <=3'b100;//normal\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        MAC_header_slot_tmp <=0;\r
-    else if(Current_state==StateSFD&&Next_state==StateData)\r
-        MAC_header_slot_tmp <=1;    \r
-    else\r
-        MAC_header_slot_tmp <=0;\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        MAC_header_slot     <=0;\r
-    else \r
-        MAC_header_slot     <=MAC_header_slot_tmp;\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Tx_pkt_type_rmon    <=0;\r
-    else if (Current_state==StateSendPauseFrame)\r
-        Tx_pkt_type_rmon    <=3'b100;\r
-    else if(MAC_header_slot)\r
-        Tx_pkt_type_rmon    <={1'b0,TxD[7:6]};\r
-\r
-       \r
-always @(Tx_pkt_length_rmon)\r
-    if (Tx_pkt_length_rmon>=6&&Tx_pkt_length_rmon<=11)\r
-        Src_MAC_ptr         =1;\r
-    else\r
-        Src_MAC_ptr         =0;        \r
-\r
-//MAC_tx_addr_add  \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        MAC_tx_addr_rd  <=0;\r
-    else if ((Tx_pkt_length_rmon>=4&&Tx_pkt_length_rmon<=9)&&(MAC_tx_add_en||Current_state==StateSendPauseFrame))\r
-        MAC_tx_addr_rd  <=1;\r
-    else\r
-        MAC_tx_addr_rd  <=0;\r
-\r
-   always @*\r
-     //if ((Tx_pkt_length_rmon==3)&&Fifo_rd)\r
-     if (Current_state==StatePreamble)\r
-       MAC_tx_addr_init=1;\r
-     else\r
-       MAC_tx_addr_init=0;\r
-\r
-//**************************************************************************************************************\r
-// CFH: this implementation delays the time it sends an entire Ethernet frame with 512 bits for every pause\r
-//      request of 512 bits. Actually, it should only delay the time it takes to transmit 512 bits, not counting\r
-//      Ethernet header, CRC, Interframe Gap etc.\r
-//      Hence the current implementation waits longer than the pause frame actually requests (~20% more)\r
-//**************************************************************************************************************\r
-\r
-//flow control\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        pause_counter   <=0;\r
-    else if (Current_state!=StatePause)\r
-        pause_counter   <=0;\r
-    else \r
-        pause_counter   <=pause_counter+1;\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        pause_quanta_sub    <=0;\r
-    else if(pause_counter==512/8)\r
-        pause_quanta_sub    <=1;\r
-    else\r
-        pause_quanta_sub    <=0;\r
-\r
-// FIXME  The below probably won't work if the pause request comes when we are in the wrong state\r
-   reg clear_xonxoff;\r
-   always @(posedge Clk or posedge Reset)\r
-     if(Reset)\r
-       clear_xonxoff <= 0;\r
-     else if((Current_state==StateSendPauseFrame) & (IPLengthCounter==17))\r
-       clear_xonxoff <= 1;\r
-     else if(~xon_gen & ~xoff_gen)\r
-       clear_xonxoff <= 0;\r
-   \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset) \r
-        xoff_gen_complete   <=0;\r
-    else if(clear_xonxoff & xoff_gen)\r
-        xoff_gen_complete   <=1;\r
-    else\r
-        xoff_gen_complete   <=0;\r
-    \r
-    \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset) \r
-        xon_gen_complete    <=0;\r
-    else if(clear_xonxoff & xon_gen)\r
-        xon_gen_complete    <=1;\r
-    else\r
-        xon_gen_complete    <=0;\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/rtl/verilog/MAC_tx/Random_gen.v b/usrp2/fpga/eth/rtl/verilog/MAC_tx/Random_gen.v
deleted file mode 100644 (file)
index fd57008..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  Random_gen.v                                                ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-module Random_gen( \r
-Reset           ,\r
-Clk             ,\r
-Init            ,\r
-RetryCnt        ,\r
-Random_time_meet\r
-);\r
-input           Reset           ;\r
-input           Clk             ;\r
-input           Init            ;\r
-input   [3:0]   RetryCnt        ;\r
-output          Random_time_meet;   \r
-\r
-//******************************************************************************\r
-//internal signals                                                              \r
-//******************************************************************************\r
-reg [9:0]       Random_sequence ;\r
-reg [9:0]       Random          ;\r
-reg [9:0]       Random_counter  ;\r
-reg [7:0]       Slot_time_counter; //256*2=512bit=1 slot time\r
-reg             Random_time_meet;\r
-\r
-//******************************************************************************\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Random_sequence     <=0;\r
-    else\r
-        Random_sequence     <={Random_sequence[8:0],~(Random_sequence[2]^Random_sequence[9])};\r
-        \r
-always @ (RetryCnt or Random_sequence)\r
-    case (RetryCnt)\r
-        4'h0    :   Random={9'b0,Random_sequence[0]};\r
-        4'h1    :   Random={8'b0,Random_sequence[1:0]};     \r
-        4'h2    :   Random={7'b0,Random_sequence[2:0]};\r
-        4'h3    :   Random={6'b0,Random_sequence[3:0]};\r
-        4'h4    :   Random={5'b0,Random_sequence[4:0]};\r
-        4'h5    :   Random={4'b0,Random_sequence[5:0]};\r
-        4'h6    :   Random={3'b0,Random_sequence[6:0]};\r
-        4'h7    :   Random={2'b0,Random_sequence[7:0]};\r
-        4'h8    :   Random={1'b0,Random_sequence[8:0]};\r
-        4'h9    :   Random={     Random_sequence[9:0]};  \r
-        default :   Random={     Random_sequence[9:0]};\r
-    endcase\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Slot_time_counter       <=0;\r
-    else if(Init)\r
-        Slot_time_counter       <=0;\r
-    else if(!Random_time_meet)\r
-        Slot_time_counter       <=Slot_time_counter+1;\r
-    \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Random_counter      <=0;\r
-    else if (Init)\r
-        Random_counter      <=Random;\r
-    else if (Random_counter!=0&&Slot_time_counter==255)\r
-        Random_counter      <=Random_counter -1 ;\r
-        \r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Random_time_meet    <=1;\r
-    else if (Init)\r
-        Random_time_meet    <=0;\r
-    else if (Random_counter==0)\r
-        Random_time_meet    <=1;\r
-        \r
-endmodule\r
-\r
-\r
diff --git a/usrp2/fpga/eth/rtl/verilog/Phy_int.v b/usrp2/fpga/eth/rtl/verilog/Phy_int.v
deleted file mode 100644 (file)
index c85d4f6..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  Phy_int.v                                                   ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: Phy_int.v,v $\r
-// Revision 1.3  2006/01/19 14:07:53  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.3  2005/12/16 06:44:14  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.2  2005/12/13 12:15:36  Administrator\r
-// no message\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-// \r
-\r
-module Phy_int \r
-  (input rst_mac_rx,\r
-   input rst_mac_tx,\r
-   input MAC_rx_clk,\r
-   input MAC_tx_clk,\r
-\r
-   // Rx interface\r
-   output reg MCrs_dv,\r
-   output reg [7:0] MRxD,\r
-   output MRxErr,\r
-\r
-   // Tx interface\r
-   input [7:0] MTxD,\r
-   input MTxEn,\r
-   output MCRS,\r
-\r
-   // PHY interface\r
-   output Tx_er,\r
-   output reg Tx_en,\r
-   output reg [7:0] Txd,\r
-   input Rx_er,\r
-   input Rx_dv,\r
-   input [7:0] Rxd,\r
-   input Crs,\r
-   input Col,\r
-\r
-   // Host interface\r
-   input Line_loop_en,\r
-   input [2:0] Speed  );\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Local declarations\r
-  //-------------------------------------------------------------------------\r
-\r
-  reg [7:0] MTxD_dl1;\r
-  reg       MTxEn_dl1;\r
-  reg       Tx_odd_data_ptr;\r
-  reg       Rx_odd_data_ptr;\r
-  reg       Rx_er_dl1;\r
-  reg       Rx_dv_dl1;\r
-  reg       Rx_dv_dl2;\r
-  reg [7:0] Rxd_dl1;\r
-  reg [7:0] Rxd_dl2;\r
-  reg       Crs_dl1;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Tx control\r
-  //-------------------------------------------------------------------------\r
-\r
-  // Reg boundary signals\r
-  always @( posedge MAC_tx_clk or posedge rst_mac_tx )\r
-    if ( rst_mac_tx )\r
-      begin\r
-        MTxD_dl1  <= 0;\r
-        MTxEn_dl1 <= 0;\r
-      end  \r
-    else\r
-      begin\r
-        MTxD_dl1  <= MTxD;\r
-        MTxEn_dl1 <= MTxEn;\r
-      end \r
-     \r
-  always @( posedge MAC_tx_clk or posedge rst_mac_tx )\r
-    if ( rst_mac_tx )   \r
-      Tx_odd_data_ptr <= 0;\r
-    else if ( !MTxD_dl1 )\r
-      Tx_odd_data_ptr <= 0;\r
-    else \r
-      Tx_odd_data_ptr <= !Tx_odd_data_ptr;\r
-        \r
-\r
-  always @( posedge MAC_tx_clk or posedge rst_mac_tx )\r
-    if ( rst_mac_tx )\r
-      Txd <= 0;\r
-    else if ( Speed[2] && MTxEn_dl1 )\r
-      Txd <= MTxD_dl1;\r
-    else if ( MTxEn_dl1 && !Tx_odd_data_ptr )\r
-      Txd <= { 4'b0, MTxD_dl1[3:0] };\r
-    else if ( MTxEn_dl1 &&  Tx_odd_data_ptr )\r
-      Txd <= { 4'b0, MTxD_dl1[7:4] };\r
-    else\r
-      Txd <=0;\r
-\r
-  always @( posedge MAC_tx_clk or posedge rst_mac_tx )\r
-    if ( rst_mac_tx )\r
-      Tx_en <= 0;\r
-    else if ( MTxEn_dl1 )\r
-      Tx_en <= 1;    \r
-    else\r
-      Tx_en <= 0;\r
-\r
-  assign Tx_er = 0;\r
-\r
-  //-------------------------------------------------------------------------\r
-  // Rx control\r
-  //-------------------------------------------------------------------------\r
-\r
-  // Reg boundery signals\r
-  always @( posedge MAC_rx_clk or posedge rst_mac_rx )\r
-    if ( rst_mac_rx )\r
-      begin\r
-        Rx_er_dl1 <= 0;\r
-        Rx_dv_dl1 <= 0;\r
-        Rx_dv_dl2 <= 0;\r
-        Rxd_dl1   <= 0;\r
-        Rxd_dl2   <= 0;\r
-        Crs_dl1   <= 0;\r
-      end\r
-    else\r
-      begin\r
-        Rx_er_dl1 <= Rx_er;\r
-        Rx_dv_dl1 <= Rx_dv;\r
-        Rx_dv_dl2 <= Rx_dv_dl1;\r
-        Rxd_dl1   <= Rxd;\r
-        Rxd_dl2   <= Rxd_dl1;\r
-        Crs_dl1   <= Crs;\r
-      end\r
-\r
-  assign MRxErr = Rx_er_dl1;\r
-  assign MCRS   = Crs_dl1;\r
-\r
-  always @( posedge MAC_rx_clk or posedge rst_mac_rx )\r
-    if ( rst_mac_rx )\r
-      MCrs_dv <= 0;\r
-    else if ( Line_loop_en )\r
-      MCrs_dv <= Tx_en;\r
-    else if( Rx_dv_dl2 )\r
-      MCrs_dv <= 1;\r
-    else\r
-      MCrs_dv <= 0;\r
-\r
-  always @ ( posedge MAC_rx_clk or posedge rst_mac_rx )\r
-    if ( rst_mac_rx )\r
-      Rx_odd_data_ptr <= 0;\r
-    else if ( !Rx_dv_dl1 )\r
-      Rx_odd_data_ptr <= 0;\r
-    else \r
-      Rx_odd_data_ptr <= !Rx_odd_data_ptr;\r
-\r
-  always @ ( posedge MAC_rx_clk or posedge rst_mac_rx )\r
-    if ( rst_mac_rx )  \r
-      MRxD <= 0;\r
-    else if( Line_loop_en )\r
-      MRxD <= Txd;\r
-    else if( Speed[2] && Rx_dv_dl2 )\r
-      MRxD <= Rxd_dl2;\r
-    else if( Rx_dv_dl1 && Rx_odd_data_ptr )\r
-      MRxD <={ Rxd_dl1[3:0], Rxd_dl2[3:0] };\r
-\r
-endmodule           \r
diff --git a/usrp2/fpga/eth/rtl/verilog/RMON.v b/usrp2/fpga/eth/rtl/verilog/RMON.v
deleted file mode 100644 (file)
index 18a84be..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  RMON.v                                                      ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: RMON.v,v $\r
-// Revision 1.4  2006/06/25 04:58:56  maverickist\r
-// no message\r
-//\r
-// Revision 1.3  2006/01/19 14:07:53  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:16  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-// \r
-\r
-module RMON \r
-  (input               Clk                 ,\r
-   input               Reset               ,\r
-   //Tx_RMON\r
-   input   [2:0]       Tx_pkt_type_rmon    ,\r
-   input   [15:0]      Tx_pkt_length_rmon  ,\r
-   input               Tx_apply_rmon       ,\r
-   input   [2:0]       Tx_pkt_err_type_rmon,\r
-   //Tx_RMON\r
-   input   [2:0]       Rx_pkt_type_rmon    ,\r
-   input   [15:0]      Rx_pkt_length_rmon  ,\r
-   input               Rx_apply_rmon       ,\r
-   input   [2:0]       Rx_pkt_err_type_rmon,\r
-   //CPU\r
-   input   [5:0]       CPU_rd_addr         ,\r
-   input               CPU_rd_apply        ,\r
-   output              CPU_rd_grant        ,\r
-   output  [31:0]      CPU_rd_dout\r
-   );\r
-   \r
-   // ******************************************************************************  \r
-   // interface signals\r
-   // ******************************************************************************  \r
-   wire                Reg_apply_0     ;\r
-   wire [4:0]         Reg_addr_0      ;\r
-   wire [15:0]                Reg_data_0      ;\r
-   wire                Reg_next_0      ;\r
-   wire                Reg_apply_1     ;\r
-   wire [4:0]         Reg_addr_1      ;\r
-   wire [15:0]                Reg_data_1      ;\r
-   wire                Reg_next_1      ;\r
-   wire [5:0]         Addra           ;\r
-   wire [31:0]                Dina            ;\r
-   reg [31:0]         Douta           ;\r
-   wire                Wea             ;\r
-\r
-   // ******************************************************************************  \r
-   \r
-   RMON_addr_gen U_0_Rx_RMON_addr_gen\r
-     (.Clk                    (Clk                        ),                                            \r
-      .Reset                  (Reset                      ),                              \r
-      //RMON                                   \r
-      .Pkt_type_rmon          (Rx_pkt_type_rmon           ),                          \r
-      .Pkt_length_rmon        (Rx_pkt_length_rmon         ),                                  \r
-      .Apply_rmon             (Rx_apply_rmon              ),\r
-      .Pkt_err_type_rmon      (Rx_pkt_err_type_rmon       ),                             \r
-      //Rmon_ctrl\r
-      .Reg_apply              (Reg_apply_0                ),                          \r
-      .Reg_addr               (Reg_addr_0                 ),                              \r
-      .Reg_data               (Reg_data_0                 ),                              \r
-      .Reg_next               (Reg_next_0                 ),                              \r
-      //CPU\r
-      .Reg_drop_apply         (                           ) );\r
-   \r
-   RMON_addr_gen U_0_Tx_RMON_addr_gen\r
-     (.Clk                    (Clk                        ),                                            \r
-      .Reset                  (Reset                      ),                              \r
-      //RMON\r
-      .Pkt_type_rmon          (Tx_pkt_type_rmon           ),                          \r
-      .Pkt_length_rmon        (Tx_pkt_length_rmon         ),                                  \r
-      .Apply_rmon             (Tx_apply_rmon              ),\r
-      .Pkt_err_type_rmon      (Tx_pkt_err_type_rmon       ),                             \r
-      //Rmon_ctrl\r
-      .Reg_apply              (Reg_apply_1                ),                          \r
-      .Reg_addr               (Reg_addr_1                 ),                              \r
-      .Reg_data               (Reg_data_1                 ),                              \r
-      .Reg_next               (Reg_next_1                 ),                              \r
-      //CPU\r
-      .Reg_drop_apply         (                           ) );\r
-   \r
-   RMON_ctrl U_RMON_ctrl\r
-     (.Clk                    (Clk                        ),        \r
-      .Reset                  (Reset                      ), \r
-      //RMON_ctrl\r
-      .Reg_apply_0            (Reg_apply_0                ),         \r
-      .Reg_addr_0             (Reg_addr_0                 ), \r
-      .Reg_data_0             (Reg_data_0                 ), \r
-      .Reg_next_0             (Reg_next_0                 ), \r
-      .Reg_apply_1            (Reg_apply_1                ),         \r
-      .Reg_addr_1             (Reg_addr_1                 ), \r
-      .Reg_data_1             (Reg_data_1                 ), \r
-      .Reg_next_1             (Reg_next_1                 ), \r
-      //dual-port ram\r
-      .Addra                  (Addra                      ), \r
-      .Dina                   (Dina                       ), \r
-      .Douta                  (Douta                      ), \r
-      .Wea                    (Wea                        ),       \r
-      //CPU\r
-      .CPU_rd_addr            (CPU_rd_addr                ),     \r
-      .CPU_rd_apply           (CPU_rd_apply               ), \r
-      .CPU_rd_grant           (CPU_rd_grant               ), \r
-      .CPU_rd_dout            (CPU_rd_dout                ) );\r
-   \r
-   reg [31:0]         RMON_ram [0:63];\r
-   wire [31:0]        Douta_imm = RMON_ram[Addra];\r
-   integer            i;\r
-   initial\r
-     for(i=0;i<64;i=i+1)\r
-       RMON_ram[i] = 32'd0;\r
-   \r
-   always @(posedge Clk)\r
-     if(Wea)\r
-       RMON_ram[Addra] <= Dina;\r
-\r
-   always @(posedge Clk)\r
-     Douta <= Douta_imm;\r
-   \r
-endmodule // RMON\r
diff --git a/usrp2/fpga/eth/rtl/verilog/RMON/RMON_addr_gen.v b/usrp2/fpga/eth/rtl/verilog/RMON/RMON_addr_gen.v
deleted file mode 100644 (file)
index 9da8d1f..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  RMON_addr_gen.v                                             ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: RMON_addr_gen.v,v $\r
-// Revision 1.4  2006/06/25 04:58:57  maverickist\r
-// no message\r
-//\r
-// Revision 1.3  2006/01/19 14:07:55  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:19  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//         \r
-module RMON_addr_gen(\r
-Clk                 ,                              \r
-Reset               ,                              \r
-//RMON                                             \r
-Pkt_type_rmon       ,                              \r
-Pkt_length_rmon     ,                              \r
-Apply_rmon          ,//pluse signal looks like eop \r
-Pkt_err_type_rmon   ,                              \r
-//                                                 \r
-Reg_apply           ,                              \r
-Reg_addr            ,                              \r
-Reg_data            ,                              \r
-Reg_next            ,                              \r
-//CPU                                              \r
-Reg_drop_apply                                \r
-);\r
-input           Clk                 ;\r
-input           Reset               ;\r
-                //RMON\r
-input   [2:0]   Pkt_type_rmon       ;\r
-input   [15:0]  Pkt_length_rmon     ;\r
-input           Apply_rmon          ;//pluse signal looks like eop\r
-input   [2:0]   Pkt_err_type_rmon   ;\r
-                //RMON_ctrl\r
-output          Reg_apply           ;\r
-output  [4:0]   Reg_addr            ;\r
-output  [15:0]  Reg_data            ;\r
-input           Reg_next            ;\r
-                //CPU\r
-output          Reg_drop_apply      ;\r
-\r
-//******************************************************************************\r
-//internal signals                                                              \r
-//******************************************************************************\r
-parameter       StateIdle       =4'd0;\r
-parameter       StatePktLength  =4'd1;\r
-parameter       StatePktNumber  =4'd2;\r
-parameter       StatePktType    =4'd3;\r
-parameter       StatePktRange   =4'd4;\r
-\r
-reg [3:0]       CurrentState /* synthesys syn_keep=1 */;\r
-reg [3:0]       NextState;\r
-    \r
-reg [2:0]       PktTypeReg      ;\r
-reg [15:0]      PktLengthReg    ;\r
-reg [2:0]       PktErrTypeReg   ;\r
-    \r
-reg             Reg_apply       ;\r
-reg [4:0]       Reg_addr            ;\r
-reg [15:0]      Reg_data            ;\r
-reg             Reg_drop_apply  ;\r
-//******************************************************************************\r
-//register boundery signals    \r
-                                                    \r
-//******************************************************************************\r
-reg             Apply_rmon_dl1;\r
-reg             Apply_rmon_dl2;\r
-reg             Apply_rmon_pulse;\r
-reg [2:0]       Pkt_type_rmon_dl1       ;\r
-reg [15:0]      Pkt_length_rmon_dl1     ;\r
-reg [2:0]       Pkt_err_type_rmon_dl1   ;\r
-\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        begin\r
-        Pkt_type_rmon_dl1       <=0;\r
-        Pkt_length_rmon_dl1     <=0;\r
-        Pkt_err_type_rmon_dl1   <=0;\r
-        end              \r
-    else\r
-        begin\r
-        Pkt_type_rmon_dl1       <=Pkt_type_rmon     ;   \r
-        Pkt_length_rmon_dl1     <=Pkt_length_rmon   ;\r
-        Pkt_err_type_rmon_dl1   <=Pkt_err_type_rmon ;\r
-        end \r
-\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        begin\r
-        Apply_rmon_dl1  <=0;\r
-        Apply_rmon_dl2  <=0;\r
-        end\r
-    else\r
-        begin\r
-        Apply_rmon_dl1  <=Apply_rmon;\r
-        Apply_rmon_dl2  <=Apply_rmon_dl1;\r
-        end \r
-    \r
-always @(Apply_rmon_dl1 or Apply_rmon_dl2)\r
-    if (Apply_rmon_dl1&!Apply_rmon_dl2)\r
-        Apply_rmon_pulse    =1;\r
-    else\r
-        Apply_rmon_pulse    =0;\r
-\r
-\r
-    \r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        begin\r
-        PktTypeReg          <=0;\r
-        PktLengthReg        <=0;\r
-        PktErrTypeReg       <=0;    \r
-        end\r
-    else if (Apply_rmon_pulse&&CurrentState==StateIdle)\r
-        begin\r
-        PktTypeReg          <=Pkt_type_rmon_dl1     ;\r
-        PktLengthReg        <=Pkt_length_rmon_dl1   ;\r
-        PktErrTypeReg       <=Pkt_err_type_rmon_dl1 ;    \r
-        end     \r
-        \r
-\r
-//******************************************************************************\r
-//State Machine                                                             \r
-//******************************************************************************\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        CurrentState    <=StateIdle;\r
-    else\r
-        CurrentState    <=NextState;\r
-        \r
-always @(CurrentState or Apply_rmon_pulse or Reg_next)\r
-    case (CurrentState)\r
-        StateIdle:\r
-            if (Apply_rmon_pulse)\r
-                NextState   =StatePktLength;\r
-            else\r
-                NextState   =StateIdle;\r
-        StatePktLength:\r
-            if (Reg_next)\r
-                NextState   =StatePktNumber;\r
-            else\r
-                NextState   =CurrentState;\r
-        StatePktNumber:\r
-            if (Reg_next)\r
-                NextState   =StatePktType;\r
-            else\r
-                NextState   =CurrentState;\r
-        StatePktType:\r
-            if (Reg_next)\r
-                NextState   =StatePktRange;\r
-            else\r
-                NextState   =CurrentState;\r
-        StatePktRange:\r
-            if (Reg_next)\r
-                NextState   =StateIdle;\r
-            else\r
-                NextState   =CurrentState;\r
-        default:\r
-                NextState   =StateIdle;\r
-    endcase \r
-            \r
-//******************************************************************************\r
-//gen output signals                                                            \r
-//******************************************************************************\r
-//Reg_apply\r
-always @ (CurrentState)\r
-    if (CurrentState==StatePktLength||CurrentState==StatePktNumber||\r
-        CurrentState==StatePktType||CurrentState==StatePktRange)\r
-        Reg_apply   =1;\r
-    else\r
-        Reg_apply   =0;\r
-        \r
-//Reg_addr\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Reg_addr    <=0;\r
-    else case (CurrentState)\r
-            StatePktLength:\r
-                Reg_addr    <=5'd00;\r
-            StatePktNumber:\r
-                Reg_addr    <=5'd01;\r
-            StatePktType:\r
-                case(PktTypeReg)\r
-                    3'b011:\r
-                        Reg_addr    <=5'd02;    //broadcast\r
-                    3'b001:\r
-                        Reg_addr    <=5'd03;    //multicast \r
-                    3'b100:\r
-                        Reg_addr    <=5'd16;    //pause frame   \r
-                    default:\r
-                        Reg_addr    <=5'd04;    //unicast\r
-                endcase\r
-            StatePktRange:\r
-                case(PktErrTypeReg)\r
-                    3'b001:\r
-                        Reg_addr    <=5'd05; \r
-                    3'b010:\r
-                        Reg_addr    <=5'd06;    \r
-                    3'b011:\r
-                        Reg_addr    <=5'd07;    \r
-                    3'b100:\r
-                        if (PktLengthReg<64)    \r
-                            Reg_addr    <=5'd08; \r
-                        else if (PktLengthReg==64)\r
-                            Reg_addr    <=5'd09; \r
-                        else if (PktLengthReg<128)\r
-                            Reg_addr    <=5'd10; \r
-                        else if (PktLengthReg<256)\r
-                            Reg_addr    <=5'd11; \r
-                        else if (PktLengthReg<512)\r
-                            Reg_addr    <=5'd12; \r
-                        else if (PktLengthReg<1024)\r
-                            Reg_addr    <=5'd13; \r
-                        else if (PktLengthReg<1519)\r
-                            Reg_addr    <=5'd14; \r
-                        else\r
-                            Reg_addr    <=5'd15; \r
-                    default:\r
-                        Reg_addr    <=5'd05;\r
-                endcase\r
-            default:\r
-                    Reg_addr    <=5'd05;\r
-        endcase\r
-                \r
-//Reg_data\r
-always @ (CurrentState or PktLengthReg)\r
-    case (CurrentState)\r
-        StatePktLength:\r
-            Reg_data    =PktLengthReg;\r
-        StatePktNumber:\r
-            Reg_data    =1;\r
-        StatePktType:\r
-            Reg_data =1;\r
-        StatePktRange:\r
-            Reg_data =1;\r
-        default:\r
-            Reg_data =0;\r
-    endcase\r
-    \r
-//Reg_drop_apply\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Reg_drop_apply  <=0;\r
-    else if (CurrentState!=StateIdle&&Apply_rmon_pulse)\r
-        Reg_drop_apply  <=1;\r
-    else\r
-        Reg_drop_apply  <=0;\r
-                \r
-\r
-endmodule               \r
-            \r
diff --git a/usrp2/fpga/eth/rtl/verilog/RMON/RMON_ctrl.v b/usrp2/fpga/eth/rtl/verilog/RMON/RMON_ctrl.v
deleted file mode 100644 (file)
index 4fc038d..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  RMON_ctrl.v                                                 ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: RMON_ctrl.v,v $\r
-// Revision 1.4  2006/06/25 04:58:57  maverickist\r
-// no message\r
-//\r
-// Revision 1.3  2006/01/19 14:07:55  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:19  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//  \r
-module RMON_ctrl (\r
-Clk             ,      \r
-Reset           ,      \r
-//RMON_ctrl        \r
-Reg_apply_0     ,      \r
-Reg_addr_0      ,      \r
-Reg_data_0      ,      \r
-Reg_next_0      ,      \r
-Reg_apply_1     ,      \r
-Reg_addr_1      ,      \r
-Reg_data_1      ,      \r
-Reg_next_1      ,      \r
-//dual-port ram\r
-Addra               ,  \r
-Dina                ,  \r
-Douta               ,  \r
-Wea                 ,  \r
-//CPU                  \r
-CPU_rd_addr     ,  \r
-CPU_rd_apply        ,  \r
-CPU_rd_grant        ,\r
-CPU_rd_dout\r
-\r
-);\r
-input           Clk             ;\r
-input           Reset           ;\r
-                //RMON_ctrl\r
-input           Reg_apply_0     ;\r
-input   [4:0]   Reg_addr_0      ;\r
-input   [15:0]  Reg_data_0      ;\r
-output          Reg_next_0      ;\r
-input           Reg_apply_1     ;\r
-input   [4:0]   Reg_addr_1      ;\r
-input   [15:0]  Reg_data_1      ;\r
-output          Reg_next_1      ;\r
-                //dual-port ram \r
-                //port-a for Rmon  \r
-output  [5:0]   Addra               ;\r
-output  [31:0]  Dina                ;\r
-input   [31:0]  Douta               ;\r
-output          Wea                 ;\r
-                //CPU\r
-input   [5:0]   CPU_rd_addr         ;\r
-input           CPU_rd_apply        ;\r
-output          CPU_rd_grant        ;\r
-output  [31:0]  CPU_rd_dout         ;\r
-\r
-\r
-\r
-\r
-//******************************************************************************\r
-//internal signals                                                              \r
-//******************************************************************************\r
-\r
-parameter       StateCPU        =4'd00;\r
-parameter       StateMAC0       =4'd01;\r
-parameter       StateMAC1       =4'd02;\r
-\r
-\r
-reg [3:0]       CurrentState /* synthesys syn_keep=1 */;\r
-reg [3:0]       NextState;\r
-reg [3:0]       CurrentState_reg;\r
-\r
-reg [4:0]       StepCounter;\r
-reg [5:0]       Addra               ;\r
-reg [31:0]      Dina;\r
-reg             Reg_next_0      ;\r
-reg             Reg_next_1      ;\r
-reg             Write;\r
-reg             Read;\r
-reg             Pipeline;\r
-reg [31:0]      CPU_rd_dout         ;\r
-reg             CPU_rd_apply_reg    ;\r
-//******************************************************************************\r
-//State Machine                                                            \r
-//******************************************************************************\r
-\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        CurrentState    <=StateMAC0;\r
-    else\r
-        CurrentState    <=NextState;\r
-        \r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)  \r
-        CurrentState_reg    <=StateMAC0;\r
-    else if(CurrentState!=StateCPU)\r
-        CurrentState_reg    <=CurrentState;\r
-                \r
-always @(CurrentState or CPU_rd_apply_reg or Reg_apply_0 or CurrentState_reg\r
-                                       or Reg_apply_1   \r
-                                       or StepCounter\r
-                                       )\r
-    case(CurrentState)\r
-        StateMAC0:\r
-            if(!Reg_apply_0&&CPU_rd_apply_reg)\r
-                NextState   =StateCPU;\r
-            else if(!Reg_apply_0)\r
-                NextState   =StateMAC1;\r
-            else\r
-                NextState   =CurrentState;\r
-        StateMAC1:\r
-            if(!Reg_apply_1&&CPU_rd_apply_reg)\r
-                NextState   =StateCPU;\r
-            else if(!Reg_apply_1)\r
-                NextState   =StateMAC0;\r
-            else\r
-                NextState   =CurrentState;\r
-        StateCPU:\r
-            if (StepCounter==3)\r
-                case (CurrentState_reg)\r
-                    StateMAC0   :NextState  =StateMAC0 ;\r
-                    StateMAC1   :NextState  =StateMAC1 ;\r
-                    default     :NextState  =StateMAC0;\r
-                endcase\r
-            else\r
-                NextState   =CurrentState;\r
-            \r
-        default:\r
-                NextState   =StateMAC0;\r
-    endcase\r
-                \r
-\r
-\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        StepCounter     <=0;\r
-    else if(NextState!=CurrentState)\r
-        StepCounter     <=0;\r
-    else if (StepCounter!=4'hf)\r
-        StepCounter     <=StepCounter + 1;\r
-\r
-//******************************************************************************\r
-//temp signals                                                            \r
-//******************************************************************************\r
-always @(StepCounter)\r
-    if( StepCounter==1||StepCounter==4||\r
-        StepCounter==7||StepCounter==10)\r
-        Read    =1;\r
-    else\r
-        Read    =0;\r
-\r
-always @(StepCounter or CurrentState)\r
-    if( StepCounter==2||StepCounter==5||\r
-        StepCounter==8||StepCounter==11)\r
-        Pipeline    =1;\r
-    else\r
-        Pipeline    =0;\r
-                \r
-always @(StepCounter or CurrentState)\r
-    if( StepCounter==3||StepCounter==6||\r
-        StepCounter==9||StepCounter==12)\r
-        Write   =1;\r
-    else\r
-        Write   =0;\r
-        \r
-        \r
-//******************************************************************************\r
-//gen output signals                                                        \r
-//******************************************************************************    \r
-//Addra \r
-always @(*)\r
-    case(CurrentState)\r
-        StateMAC0 :     Addra={1'd0 ,Reg_addr_0 };\r
-        StateMAC1 :     Addra={1'd1 ,Reg_addr_1 };\r
-        StateCPU:       Addra=CPU_rd_addr;\r
-        default:        Addra=0;\r
-        endcase\r
-    \r
-//Dina\r
-always @(posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        Dina    <=0;\r
-    else \r
-        case(CurrentState)\r
-            StateMAC0 :     Dina<=Douta+Reg_data_0 ;\r
-            StateMAC1 :     Dina<=Douta+Reg_data_1 ;\r
-            StateCPU:       Dina<=0;\r
-            default:        Dina<=0;\r
-        endcase\r
-    \r
-assign  Wea     =Write;\r
-//Reg_next\r
-always @(CurrentState or Pipeline)\r
-    if(CurrentState==StateMAC0)\r
-        Reg_next_0  =Pipeline;\r
-    else\r
-        Reg_next_0  =0;\r
-    \r
-always @(CurrentState or Pipeline)\r
-    if(CurrentState==StateMAC1)\r
-        Reg_next_1  =Pipeline;\r
-    else\r
-        Reg_next_1  =0;     \r
-\r
-\r
-//CPU_rd_grant   \r
-reg     CPU_rd_apply_dl1;\r
-reg     CPU_rd_apply_dl2;\r
-//rising edge\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        begin\r
-        CPU_rd_apply_dl1        <=0;\r
-        CPU_rd_apply_dl2        <=0;\r
-        end\r
-    else\r
-        begin\r
-        CPU_rd_apply_dl1        <=CPU_rd_apply;\r
-        CPU_rd_apply_dl2        <=CPU_rd_apply_dl1;\r
-        end     \r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        CPU_rd_apply_reg    <=0;\r
-    else if (CPU_rd_apply_dl1&!CPU_rd_apply_dl2)\r
-        CPU_rd_apply_reg    <=1;\r
-    else if (CurrentState==StateCPU&&Write)\r
-        CPU_rd_apply_reg    <=0;\r
-\r
-assign CPU_rd_grant = CPU_rd_apply & CPU_rd_apply_dl1 & CPU_rd_apply_dl2 & !CPU_rd_apply_reg;\r
-\r
-always @ (posedge Clk or posedge Reset)\r
-    if (Reset)\r
-        CPU_rd_dout     <=0;\r
-    else if (Pipeline&&CurrentState==StateCPU)\r
-        CPU_rd_dout     <=Douta;        \r
-\r
-endmodule           \r
diff --git a/usrp2/fpga/eth/rtl/verilog/Reg_int.v b/usrp2/fpga/eth/rtl/verilog/Reg_int.v
deleted file mode 100644 (file)
index bdf73d8..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-module Reg_int (\r
-  // Wishbone compliant core host interface\r
-  input             CLK_I, // Wishbone interface clock (nominally 50 MHz)\r
-  input             RST_I, // Active high (async) reset of the Wishbone interface\r
-  input             STB_I, // Active high module-select\r
-  input             CYC_I, // Active high cycle-enable\r
-  input  [6:0]      ADR_I, // Module register address\r
-  input             WE_I,  // Active high for writes, low for reads\r
-  input  [31:0]     DAT_I, // Write data\r
-  output reg [31:0] DAT_O, // Read data\r
-  output reg        ACK_O, // Acknowledge output \96 single high pulse\r
-\r
-  // Tx host interface \r
-  output [4:0]      Tx_Hwmark,\r
-  output [4:0]      Tx_Lwmark,   \r
-  output            MAC_tx_add_en,\r
-  output            FullDuplex,\r
-  output [3:0]      MaxRetry,\r
-  output [5:0]      IFGset,\r
-  output [7:0]      MAC_tx_add_prom_data,\r
-  output [2:0]      MAC_tx_add_prom_add,\r
-  output            MAC_tx_add_prom_wr,\r
-\r
-  // Rx host interface     \r
-  output            MAC_rx_add_chk_en,\r
-  output [7:0]      MAC_rx_add_prom_data,\r
-  output [2:0]      MAC_rx_add_prom_add,\r
-  output            MAC_rx_add_prom_wr,\r
-  output            broadcast_filter_en,\r
-  output [15:0]     broadcast_bucket_depth,\r
-  output [15:0]     broadcast_bucket_interval,\r
-  output            RX_APPEND_CRC,\r
-  output [4:0]      Rx_Hwmark,\r
-  output [4:0]      Rx_Lwmark,\r
-  output            CRC_chk_en,\r
-  output [5:0]      RX_IFG_SET,\r
-  output [15:0]     RX_MAX_LENGTH, // Default 1518\r
-  output [6:0]      RX_MIN_LENGTH, // Default 64\r
-\r
-  // Flow control settings\r
-  output            pause_frame_send_en,\r
-  output [15:0]     pause_quanta_set,\r
-  output            tx_pause_en,\r
-  output [15:0]     fc_hwmark,\r
-  output [15:0]     fc_lwmark,\r
-  output [15:0]     fc_padtime,\r
-               \r
-  // RMON host interface\r
-  output [5:0]      CPU_rd_addr,\r
-  output            CPU_rd_apply,\r
-  input             CPU_rd_grant,\r
-  input [31:0]      CPU_rd_dout,\r
-\r
-  //Phy int host interface     \r
-  output            Line_loop_en,\r
-  output [2:0]      Speed,\r
-\r
-  //MII to CPU \r
-  output [7:0]      Divider,            // Divider for the host clock\r
-  output [15:0]     CtrlData,           // Control Data (to be written to the PHY reg.)\r
-  output [4:0]      Rgad,               // Register Address (within the PHY)\r
-  output [4:0]      Fiad,               // PHY Address\r
-  output            NoPre,              // No Preamble (no 32-bit preamble)\r
-  output            WCtrlData,          // Write Control Data operation\r
-  output            RStat,              // Read Status operation\r
-  output            ScanStat,           // Scan Status operation\r
-  input             Busy,               // Busy Signal\r
-  input             LinkFail,           // Link Integrity Signal\r
-  input             Nvalid,             // Invalid Status (qualifier for the valid scan result)\r
-  input [15:0]      Prsd,               // Read Status Data (data read from the PHY)\r
-  input             WCtrlDataStart,     // This signals resets the WCTRLDATA bit in the MIIM Command register\r
-  input             RStatStart,         // This signal resets the RSTAT BIT in the MIIM Command register\r
-  input             UpdateMIIRX_DATAReg // Updates MII RX_DATA register with read data\r
-);\r
-\r
-  // New registers for controlling the MII interface\r
-  wire [8:0]  MIIMODER;\r
-  reg  [2:0]  MIICOMMAND;\r
-  wire [12:0] MIIADDRESS;\r
-  wire [15:0] MIITX_DATA;\r
-  reg  [15:0] MIIRX_DATA;\r
-  wire [2:0]  MIISTATUS;\r
-\r
-  // New registers for controlling the MII interface\r
-\r
-  // MIIMODER\r
-  assign NoPre   = MIIMODER[8];\r
-  assign Divider = MIIMODER[7:0];\r
-  // MIICOMMAND\r
-  assign WCtrlData = MIICOMMAND[2];\r
-  assign RStat     = MIICOMMAND[1];\r
-  assign ScanStat  = MIICOMMAND[0];\r
-  // MIIADDRESS\r
-  assign Rgad = MIIADDRESS[12:8];\r
-  assign Fiad = MIIADDRESS[4:0];\r
-  // MIITX_DATA\r
-  assign CtrlData = MIITX_DATA[15:0];\r
-  // MIISTATUS\r
-  assign MIISTATUS[2:0] = { 13'b0, Nvalid, Busy, LinkFail };\r
-\r
-  wire Wr;\r
-  \r
-  RegCPUData #( 5  ) U_0_000( Tx_Hwmark                    , 7'd000, 5'h09,    RST_I, CLK_I, Wr, ADR_I, DAT_I[4:0]  );\r
-  RegCPUData #( 5  ) U_0_001( Tx_Lwmark                    , 7'd001, 5'h08,    RST_I, CLK_I, Wr, ADR_I, DAT_I[4:0]  );\r
-  RegCPUData #( 1  ) U_0_002( pause_frame_send_en          , 7'd002, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 16 ) U_0_003( pause_quanta_set             , 7'd003, 16'h01af,    RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-  RegCPUData #( 6  ) U_0_004( IFGset                       , 7'd004, 6'h0c,    RST_I, CLK_I, Wr, ADR_I, DAT_I[5:0]  );\r
-  RegCPUData #( 1  ) U_0_005( FullDuplex                   , 7'd005, 1'h1,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 4  ) U_0_006( MaxRetry                     , 7'd006, 4'h2,     RST_I, CLK_I, Wr, ADR_I, DAT_I[3:0]  );\r
-  RegCPUData #( 1  ) U_0_007( MAC_tx_add_en                , 7'd007, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 8  ) U_0_008( MAC_tx_add_prom_data         , 7'd008, 8'h00,    RST_I, CLK_I, Wr, ADR_I, DAT_I[7:0]  );\r
-  RegCPUData #( 3  ) U_0_009( MAC_tx_add_prom_add          , 7'd009, 3'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[2:0]  );\r
-  RegCPUData #( 1  ) U_0_010( MAC_tx_add_prom_wr           , 7'd010, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 1  ) U_0_011( tx_pause_en                  , 7'd011, 1'h1,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 16 ) U_0_012( fc_hwmark                    , 7'd012, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-  RegCPUData #( 16 ) U_0_013( fc_lwmark                    , 7'd013, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-  RegCPUData #( 1  ) U_0_014( MAC_rx_add_chk_en            , 7'd014, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 8  ) U_0_015( MAC_rx_add_prom_data         , 7'd015, 8'h00,    RST_I, CLK_I, Wr, ADR_I, DAT_I[7:0]  );\r
-  RegCPUData #( 3  ) U_0_016( MAC_rx_add_prom_add          , 7'd016, 3'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[2:0]  );\r
-  RegCPUData #( 1  ) U_0_017( MAC_rx_add_prom_wr           , 7'd017, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 1  ) U_0_018( broadcast_filter_en          , 7'd018, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 16 ) U_0_019( broadcast_bucket_depth       , 7'd019, 16'h0000, RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-  RegCPUData #( 16 ) U_0_020( broadcast_bucket_interval    , 7'd020, 16'h0000, RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-  RegCPUData #( 1  ) U_0_021( RX_APPEND_CRC                , 7'd021, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 5  ) U_0_022( Rx_Hwmark                    , 7'd022, 5'h1a,    RST_I, CLK_I, Wr, ADR_I, DAT_I[4:0]  );\r
-  RegCPUData #( 5  ) U_0_023( Rx_Lwmark                    , 7'd023, 5'h10,    RST_I, CLK_I, Wr, ADR_I, DAT_I[4:0]  );\r
-  RegCPUData #( 1  ) U_0_024( CRC_chk_en                   , 7'd024, 1'h1,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 6  ) U_0_025( RX_IFG_SET                   , 7'd025, 6'h0c,    RST_I, CLK_I, Wr, ADR_I, DAT_I[5:0]  );\r
-  RegCPUData #( 16 ) U_0_026( RX_MAX_LENGTH                , 7'd026, 16'h2710, RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-  RegCPUData #( 7  ) U_0_027( RX_MIN_LENGTH                , 7'd027, 7'h40,    RST_I, CLK_I, Wr, ADR_I, DAT_I[6:0]  );\r
-  RegCPUData #( 6  ) U_0_028( CPU_rd_addr                  , 7'd028, 6'h00,    RST_I, CLK_I, Wr, ADR_I, DAT_I[5:0]  );\r
-  RegCPUData #( 1  ) U_0_029( CPU_rd_apply                 , 7'd029, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-//RegCPUData #( 1  ) U_0_030( CPU_rd_grant                 , 7'd030, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-//RegCPUData #( 16 ) U_0_031( CPU_rd_dout_l                , 7'd031, 16'h0000, RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-//RegCPUData #( 16 ) U_0_032( CPU_rd_dout_h                , 7'd032, 16'h0000, RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-  RegCPUData #( 1  ) U_0_033( Line_loop_en                 , 7'd033, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[0:0]  );\r
-  RegCPUData #( 3  ) U_0_034( Speed                        , 7'd034, 3'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[2:0]  );\r
-\r
-  // New registers for controlling the MDIO interface\r
-  RegCPUData #( 9  ) U_0_035( MIIMODER                     , 7'd035, 9'h064,   RST_I, CLK_I, Wr, ADR_I, DAT_I[8:0]  );\r
-  // Reg #36 is MIICOMMAND - implemented separately below\r
-  RegCPUData #( 13 ) U_0_037( MIIADDRESS                   , 7'd037, 13'h0000, RST_I, CLK_I, Wr, ADR_I, DAT_I[12:0] );\r
-  RegCPUData #( 16 ) U_0_038( MIITX_DATA                   , 7'd038, 16'h0000, RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-\r
-   // New FC register\r
-  RegCPUData #( 16 ) U_0_041( fc_padtime                   , 7'd041, 1'h0,     RST_I, CLK_I, Wr, ADR_I, DAT_I[15:0] );\r
-\r
-  // Asserted in first clock of 2-cycle access, negated otherwise\r
-  wire Access = ~ACK_O & STB_I & CYC_I;\r
-\r
-  // Asserted in first clock of 2-cycle write access, negated otherwise\r
-  assign Wr = Access & WE_I;\r
-\r
-  // MIICOMMAND register - needs special treatment because of auto-resetting bits\r
-  always @ ( posedge RST_I or posedge CLK_I )\r
-    if ( RST_I )\r
-      MIICOMMAND <= 0;\r
-    else\r
-      begin\r
-        if ( Wr & ( ADR_I == 7'd036 ) )\r
-          // Write access\r
-          MIICOMMAND <= DAT_I;\r
-        else\r
-          begin\r
-            if ( WCtrlDataStart )\r
-              MIICOMMAND[2] <= 0;\r
-            if ( RStatStart )\r
-              MIICOMMAND[1] <= 0;\r
-          end\r
-      end\r
-\r
-  // MIIRX_DATA register\r
-  always @ ( posedge RST_I or posedge CLK_I )\r
-    if ( RST_I )\r
-      MIIRX_DATA <= 0;\r
-    else\r
-      if ( UpdateMIIRX_DATAReg )\r
-        MIIRX_DATA <= Prsd;\r
-\r
-  // ACK_O is asserted in second clock of 2-cycle access, negated otherwise\r
-  always @ ( posedge RST_I or posedge CLK_I )\r
-    if ( RST_I )\r
-      ACK_O <= 0;\r
-    else\r
-      ACK_O <= Access;\r
-\r
-  always @ ( posedge RST_I or posedge CLK_I )\r
-    if(RST_I)\r
-      DAT_O <= 0;\r
-    else\r
-      begin\r
-        DAT_O <=0;\r
-        if ( Access & ~WE_I )\r
-          casez ( ADR_I )\r
-            7'd00: DAT_O <= Tx_Hwmark;\r
-            7'd01: DAT_O <= Tx_Lwmark;\r
-            7'd02: DAT_O <= pause_frame_send_en;\r
-            7'd03: DAT_O <= pause_quanta_set;\r
-            7'd04: DAT_O <= IFGset;\r
-            7'd05: DAT_O <= FullDuplex;\r
-            7'd06: DAT_O <= MaxRetry;\r
-            7'd07: DAT_O <= MAC_tx_add_en;\r
-            7'd08: DAT_O <= MAC_tx_add_prom_data;\r
-            7'd09: DAT_O <= MAC_tx_add_prom_add;\r
-            7'd10: DAT_O <= MAC_tx_add_prom_wr;\r
-            7'd11: DAT_O <= tx_pause_en;\r
-           7'd12: DAT_O <= fc_hwmark;\r
-           7'd13: DAT_O <= fc_lwmark;\r
-            7'd14: DAT_O <= MAC_rx_add_chk_en;\r
-            7'd15: DAT_O <= MAC_rx_add_prom_data;\r
-            7'd16: DAT_O <= MAC_rx_add_prom_add;\r
-            7'd17: DAT_O <= MAC_rx_add_prom_wr;\r
-            7'd18: DAT_O <= broadcast_filter_en;\r
-            7'd19: DAT_O <= broadcast_bucket_depth;\r
-            7'd20: DAT_O <= broadcast_bucket_interval;\r
-            7'd21: DAT_O <= RX_APPEND_CRC;\r
-            7'd22: DAT_O <= Rx_Hwmark;\r
-            7'd23: DAT_O <= Rx_Lwmark;\r
-            7'd24: DAT_O <= CRC_chk_en;\r
-            7'd25: DAT_O <= RX_IFG_SET;\r
-            7'd26: DAT_O <= RX_MAX_LENGTH;\r
-            7'd27: DAT_O <= RX_MIN_LENGTH;\r
-            7'd28: DAT_O <= CPU_rd_addr;\r
-            7'd29: DAT_O <= CPU_rd_apply;\r
-            7'd30: DAT_O <= CPU_rd_grant;\r
-            7'd31: DAT_O <= CPU_rd_dout;\r
-            //7'd32: DAT_O <= CPU_rd_dout[31:16];\r
-            7'd33: DAT_O <= Line_loop_en;\r
-            7'd34: DAT_O <= Speed;\r
-\r
-            // New registers for controlling MII interface\r
-            7'd35: DAT_O <= MIIMODER;\r
-            7'd36: DAT_O <= MIICOMMAND;\r
-            7'd37: DAT_O <= MIIADDRESS;\r
-            7'd38: DAT_O <= MIITX_DATA;\r
-            7'd39: DAT_O <= MIIRX_DATA;\r
-            7'd40: DAT_O <= MIISTATUS;\r
-            7'd41: DAT_O <= fc_padtime;\r
-          endcase\r
-      end\r
-\r
-endmodule   \r
-\r
-module RegCPUData(\r
-  RegOut,\r
-  RegAddr,\r
-  RegInit,\r
-\r
-  Reset,\r
-  Clk,\r
-  Wr,\r
-  Addr,\r
-  WrData\r
-);\r
-\r
-  parameter WIDTH = 16;\r
-\r
-  output reg [WIDTH-1:0] RegOut;\r
-  input [6:0]            RegAddr;\r
-  input [WIDTH-1:0]      RegInit;\r
-\r
-  input                  Reset;\r
-  input                  Clk;\r
-  input                  Wr;\r
-  input [6:0]            Addr;\r
-  input [WIDTH-1:0]      WrData;\r
-\r
-  always @( posedge Reset or posedge Clk )\r
-    if ( Reset )\r
-      RegOut <= RegInit;\r
-    else\r
-      if ( Wr && ( Addr == RegAddr ) )\r
-        RegOut <= WrData;\r
-\r
-endmodule           \r
diff --git a/usrp2/fpga/eth/rtl/verilog/TECH/eth_clk_div2.v b/usrp2/fpga/eth/rtl/verilog/TECH/eth_clk_div2.v
deleted file mode 100644 (file)
index 994907d..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  eth_clk_div2.v                                              ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: CLK_DIV2.v,v $\r
-// Revision 1.3  2006/01/19 14:07:56  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:20  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-// \r
-\r
-\r
-//////////////////////////////////////////////////////////////////////\r
-// This file can only used for simulation .\r
-// You need to replace it with your own element according to technology\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-module eth_clk_div2 (\r
-  input       Reset,\r
-  input       IN,\r
-  output  reg OUT\r
-);\r
-\r
-always @ (posedge IN or posedge Reset)\r
-  if (Reset)\r
-    OUT <= 0;\r
-  else\r
-    OUT <= ~OUT;\r
-    \r
-endmodule\r
diff --git a/usrp2/fpga/eth/rtl/verilog/TECH/eth_clk_switch.v b/usrp2/fpga/eth/rtl/verilog/TECH/eth_clk_switch.v
deleted file mode 100644 (file)
index c537574..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  eth_clk_switch.v                                            ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects.cgi/web/ethernet_tri_mode/////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Jon Gao (gaojon@yahoo.com)                            ////\r
-////                                                              ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//                                                                    \r
-// CVS Revision History                                               \r
-//                                                                    \r
-// $Log: CLK_SWITCH.v,v $\r
-// Revision 1.3  2006/01/19 14:07:56  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.2  2005/12/16 06:44:20  Administrator\r
-// replaced tab with space.\r
-// passed 9.6k length frame test.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-// \r
-\r
-`include "header.vh"\r
-\r
-//////////////////////////////////////////////////////////////////////\r
-// This file can only used for simulation .\r
-// You need to replace it with your own element according to technology\r
-//////////////////////////////////////////////////////////////////////\r
-module eth_clk_switch (\r
-  input       IN_0,\r
-  input       IN_1,\r
-  input       SW,\r
-  output      OUT \r
-);\r
-\r
-`ifdef MAC_TARGET_XILINX\r
-\r
-  BUFGMUX U_BUFGMUX (\r
-    .O ( OUT  ),\r
-    .I0( IN_0 ),\r
-    .I1( IN_1 ),\r
-    .S ( SW   )\r
-  );\r
-\r
-`else\r
-\r
-  assign OUT = SW ? IN_1 : IN_0;\r
-\r
-`endif\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/rtl/verilog/TECH/xilinx/BUFGMUX.v b/usrp2/fpga/eth/rtl/verilog/TECH/xilinx/BUFGMUX.v
deleted file mode 100644 (file)
index f5bb4a7..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/unisims/BUFGMUX.v,v 1.9.34.2 2005/10/21 20:45:30 wloo Exp $
-///////////////////////////////////////////////////////////////////////////////
-// Copyright (c) 1995/2004 Xilinx, Inc.
-// All Right Reserved.
-///////////////////////////////////////////////////////////////////////////////
-//   ____  ____
-//  /   /\/   /
-// /___/  \  /    Vendor : Xilinx
-// \   \   \/     Version : 7.1i (H.19)
-//  \   \         Description : Xilinx Functional Simulation Library Component
-//  /   /                  Global Clock Mux Buffer with Output State 0
-// /___/   /\     Filename : BUFGMUX.v
-// \   \  /  \    Timestamp : Thu Mar 25 16:42:14 PST 2004
-//  \___\/\___\
-//
-// Revision:
-//    03/23/04 - Initial version.
-
-`timescale  100 ps / 10 ps
-
-module BUFGMUX (O, I0, I1, S);
-
-    output O;
-
-    input  I0, I1, S;
-
-    reg q0, q1;
-    reg q0_enable, q1_enable;
-
-    tri0 GSR = glbl.GSR;
-
-    bufif1 B0 (O, I0, q0);
-    bufif1 B1 (O, I1, q1);
-    pulldown P1 (O);
-
-       always @(GSR or I0 or S or q0_enable)
-           if (GSR)
-               q0 <= 1;
-           else if (!I0)
-               q0 <= !S && q0_enable;
-
-       always @(GSR or I1 or S or q1_enable)
-           if (GSR)
-               q1 <= 0;
-           else if (!I1)
-               q1 <= S && q1_enable;
-
-       always @(GSR or q1 or I0)
-           if (GSR)
-               q0_enable <= 1;
-           else if (q1)
-               q0_enable <= 0;
-           else if (I0)
-               q0_enable <= !q1;
-
-       always @(GSR or q0 or I1)
-           if (GSR)
-               q1_enable <= 0;
-           else if (q0)
-               q1_enable <= 0;
-           else if (I1)
-               q1_enable <= !q0;
-
-endmodule
diff --git a/usrp2/fpga/eth/rtl/verilog/TECH/xilinx/RAMB16_S36_S36.v b/usrp2/fpga/eth/rtl/verilog/TECH/xilinx/RAMB16_S36_S36.v
deleted file mode 100644 (file)
index 80545a9..0000000
+++ /dev/null
@@ -1,2204 +0,0 @@
-// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/unisims/RAMB16_S36_S36.v,v 1.9 2005/03/14 22:54:41 wloo Exp $
-///////////////////////////////////////////////////////////////////////////////
-// Copyright (c) 1995/2005 Xilinx, Inc.
-// All Right Reserved.
-///////////////////////////////////////////////////////////////////////////////
-//   ____  ____
-//  /   /\/   /
-// /___/  \  /    Vendor : Xilinx
-// \   \   \/     Version : 8.1i (I.13)
-//  \   \         Description : Xilinx Functional Simulation Library Component
-//  /   /                  16K-Bit Data and 2K-Bit Parity Dual Port Block RAM
-// /___/   /\     Filename : RAMB16_S36_S36.v
-// \   \  /  \    Timestamp : Thu Mar 10 16:43:36 PST 2005
-//  \___\/\___\
-//
-// Revision:
-//    03/23/04 - Initial version.
-// End Revision
-
-`ifdef legacy_model
-
-`timescale  1 ps / 1 ps
-
-module RAMB16_S36_S36 (DOA, DOB, DOPA, DOPB, ADDRA, ADDRB, CLKA, CLKB, DIA, DIB, DIPA, DIPB, ENA, ENB, SSRA, SSRB, WEA, WEB);
-
-    parameter INIT_A = 36'h0;
-    parameter INIT_B = 36'h0;
-    parameter SRVAL_A = 36'h0;
-    parameter SRVAL_B = 36'h0;
-    parameter WRITE_MODE_A = "WRITE_FIRST";
-    parameter WRITE_MODE_B = "WRITE_FIRST";
-    parameter SIM_COLLISION_CHECK = "ALL";
-    localparam SETUP_ALL = 1000;
-    localparam SETUP_READ_FIRST = 3000;
-
-    parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-
-    output [31:0] DOA;
-    output [3:0] DOPA;
-    reg [31:0] doa_out;
-    reg [3:0] dopa_out;
-    wire doa_out0, doa_out1, doa_out2, doa_out3, doa_out4, doa_out5, doa_out6, doa_out7, doa_out8, doa_out9, doa_out10, doa_out11, doa_out12, doa_out13, doa_out14, doa_out15, doa_out16, doa_out17, doa_out18, doa_out19, doa_out20, doa_out21, doa_out22, doa_out23, doa_out24, doa_out25, doa_out26, doa_out27, doa_out28, doa_out29, doa_out30, doa_out31;
-    wire dopa0_out, dopa1_out, dopa2_out, dopa3_out;
-
-    input [8:0] ADDRA;
-    input [31:0] DIA;
-    input [3:0] DIPA;
-    input ENA, CLKA, WEA, SSRA;
-
-    output [31:0] DOB;
-    output [3:0] DOPB;
-    reg [31:0] dob_out;
-    reg [3:0] dopb_out;
-    wire dob_out0, dob_out1, dob_out2, dob_out3, dob_out4, dob_out5, dob_out6, dob_out7, dob_out8, dob_out9, dob_out10, dob_out11, dob_out12, dob_out13, dob_out14, dob_out15, dob_out16, dob_out17, dob_out18, dob_out19, dob_out20, dob_out21, dob_out22, dob_out23, dob_out24, dob_out25, dob_out26, dob_out27, dob_out28, dob_out29, dob_out30, dob_out31;
-    wire dopb0_out, dopb1_out, dopb2_out, dopb3_out;
-
-    input [8:0] ADDRB;
-    input [31:0] DIB;
-    input [3:0] DIPB;
-    input ENB, CLKB, WEB, SSRB;
-
-    reg [18431:0] mem;
-    reg [8:0] count;
-    reg [1:0] wr_mode_a, wr_mode_b;
-
-    reg [5:0] dmi, dbi;
-    reg [5:0] pmi, pbi;
-
-    wire [8:0] addra_int;
-    reg [8:0] addra_reg;
-    wire [31:0] dia_int;
-    wire [3:0] dipa_int;
-    wire ena_int, clka_int, wea_int, ssra_int;
-    reg ena_reg, wea_reg, ssra_reg;
-    wire [8:0] addrb_int;
-    reg [8:0] addrb_reg;
-    wire [31:0] dib_int;
-    wire [3:0] dipb_int;
-    wire enb_int, clkb_int, web_int, ssrb_int;
-    reg display_flag;
-    reg enb_reg, web_reg, ssrb_reg;
-
-    time time_clka, time_clkb;
-    time time_clka_clkb;
-    time time_clkb_clka;
-
-    reg setup_all_a_b;
-    reg setup_all_b_a;
-    reg setup_zero;
-    reg setup_rf_a_b;
-    reg setup_rf_b_a;
-    reg [1:0] data_collision, data_collision_a_b, data_collision_b_a;
-    reg memory_collision, memory_collision_a_b, memory_collision_b_a;
-    reg address_collision, address_collision_a_b, address_collision_b_a;
-    reg change_clka;
-    reg change_clkb;
-
-    wire [14:0] data_addra_int;
-    wire [14:0] data_addra_reg;
-    wire [14:0] data_addrb_int;
-    wire [14:0] data_addrb_reg;
-    wire [15:0] parity_addra_int;
-    wire [15:0] parity_addra_reg;
-    wire [15:0] parity_addrb_int;
-    wire [15:0] parity_addrb_reg;
-
-    tri0 GSR = glbl.GSR;
-
-    always @(GSR)
-       if (GSR) begin
-           assign doa_out = INIT_A[31:0];
-           assign dopa_out = INIT_A[35:32];
-           assign dob_out = INIT_B[31:0];
-           assign dopb_out = INIT_B[35:32];
-       end
-       else begin
-           deassign doa_out;
-           deassign dopa_out;
-           deassign dob_out;
-           deassign dopb_out;
-       end
-
-    buf b_doa_out0 (doa_out0, doa_out[0]);
-    buf b_doa_out1 (doa_out1, doa_out[1]);
-    buf b_doa_out2 (doa_out2, doa_out[2]);
-    buf b_doa_out3 (doa_out3, doa_out[3]);
-    buf b_doa_out4 (doa_out4, doa_out[4]);
-    buf b_doa_out5 (doa_out5, doa_out[5]);
-    buf b_doa_out6 (doa_out6, doa_out[6]);
-    buf b_doa_out7 (doa_out7, doa_out[7]);
-    buf b_doa_out8 (doa_out8, doa_out[8]);
-    buf b_doa_out9 (doa_out9, doa_out[9]);
-    buf b_doa_out10 (doa_out10, doa_out[10]);
-    buf b_doa_out11 (doa_out11, doa_out[11]);
-    buf b_doa_out12 (doa_out12, doa_out[12]);
-    buf b_doa_out13 (doa_out13, doa_out[13]);
-    buf b_doa_out14 (doa_out14, doa_out[14]);
-    buf b_doa_out15 (doa_out15, doa_out[15]);
-    buf b_doa_out16 (doa_out16, doa_out[16]);
-    buf b_doa_out17 (doa_out17, doa_out[17]);
-    buf b_doa_out18 (doa_out18, doa_out[18]);
-    buf b_doa_out19 (doa_out19, doa_out[19]);
-    buf b_doa_out20 (doa_out20, doa_out[20]);
-    buf b_doa_out21 (doa_out21, doa_out[21]);
-    buf b_doa_out22 (doa_out22, doa_out[22]);
-    buf b_doa_out23 (doa_out23, doa_out[23]);
-    buf b_doa_out24 (doa_out24, doa_out[24]);
-    buf b_doa_out25 (doa_out25, doa_out[25]);
-    buf b_doa_out26 (doa_out26, doa_out[26]);
-    buf b_doa_out27 (doa_out27, doa_out[27]);
-    buf b_doa_out28 (doa_out28, doa_out[28]);
-    buf b_doa_out29 (doa_out29, doa_out[29]);
-    buf b_doa_out30 (doa_out30, doa_out[30]);
-    buf b_doa_out31 (doa_out31, doa_out[31]);
-    buf b_dopa_out0 (dopa_out0, dopa_out[0]);
-    buf b_dopa_out1 (dopa_out1, dopa_out[1]);
-    buf b_dopa_out2 (dopa_out2, dopa_out[2]);
-    buf b_dopa_out3 (dopa_out3, dopa_out[3]);
-    buf b_dob_out0 (dob_out0, dob_out[0]);
-    buf b_dob_out1 (dob_out1, dob_out[1]);
-    buf b_dob_out2 (dob_out2, dob_out[2]);
-    buf b_dob_out3 (dob_out3, dob_out[3]);
-    buf b_dob_out4 (dob_out4, dob_out[4]);
-    buf b_dob_out5 (dob_out5, dob_out[5]);
-    buf b_dob_out6 (dob_out6, dob_out[6]);
-    buf b_dob_out7 (dob_out7, dob_out[7]);
-    buf b_dob_out8 (dob_out8, dob_out[8]);
-    buf b_dob_out9 (dob_out9, dob_out[9]);
-    buf b_dob_out10 (dob_out10, dob_out[10]);
-    buf b_dob_out11 (dob_out11, dob_out[11]);
-    buf b_dob_out12 (dob_out12, dob_out[12]);
-    buf b_dob_out13 (dob_out13, dob_out[13]);
-    buf b_dob_out14 (dob_out14, dob_out[14]);
-    buf b_dob_out15 (dob_out15, dob_out[15]);
-    buf b_dob_out16 (dob_out16, dob_out[16]);
-    buf b_dob_out17 (dob_out17, dob_out[17]);
-    buf b_dob_out18 (dob_out18, dob_out[18]);
-    buf b_dob_out19 (dob_out19, dob_out[19]);
-    buf b_dob_out20 (dob_out20, dob_out[20]);
-    buf b_dob_out21 (dob_out21, dob_out[21]);
-    buf b_dob_out22 (dob_out22, dob_out[22]);
-    buf b_dob_out23 (dob_out23, dob_out[23]);
-    buf b_dob_out24 (dob_out24, dob_out[24]);
-    buf b_dob_out25 (dob_out25, dob_out[25]);
-    buf b_dob_out26 (dob_out26, dob_out[26]);
-    buf b_dob_out27 (dob_out27, dob_out[27]);
-    buf b_dob_out28 (dob_out28, dob_out[28]);
-    buf b_dob_out29 (dob_out29, dob_out[29]);
-    buf b_dob_out30 (dob_out30, dob_out[30]);
-    buf b_dob_out31 (dob_out31, dob_out[31]);
-    buf b_dopb_out0 (dopb_out0, dopb_out[0]);
-    buf b_dopb_out1 (dopb_out1, dopb_out[1]);
-    buf b_dopb_out2 (dopb_out2, dopb_out[2]);
-    buf b_dopb_out3 (dopb_out3, dopb_out[3]);
-
-    buf b_doa0 (DOA[0], doa_out0);
-    buf b_doa1 (DOA[1], doa_out1);
-    buf b_doa2 (DOA[2], doa_out2);
-    buf b_doa3 (DOA[3], doa_out3);
-    buf b_doa4 (DOA[4], doa_out4);
-    buf b_doa5 (DOA[5], doa_out5);
-    buf b_doa6 (DOA[6], doa_out6);
-    buf b_doa7 (DOA[7], doa_out7);
-    buf b_doa8 (DOA[8], doa_out8);
-    buf b_doa9 (DOA[9], doa_out9);
-    buf b_doa10 (DOA[10], doa_out10);
-    buf b_doa11 (DOA[11], doa_out11);
-    buf b_doa12 (DOA[12], doa_out12);
-    buf b_doa13 (DOA[13], doa_out13);
-    buf b_doa14 (DOA[14], doa_out14);
-    buf b_doa15 (DOA[15], doa_out15);
-    buf b_doa16 (DOA[16], doa_out16);
-    buf b_doa17 (DOA[17], doa_out17);
-    buf b_doa18 (DOA[18], doa_out18);
-    buf b_doa19 (DOA[19], doa_out19);
-    buf b_doa20 (DOA[20], doa_out20);
-    buf b_doa21 (DOA[21], doa_out21);
-    buf b_doa22 (DOA[22], doa_out22);
-    buf b_doa23 (DOA[23], doa_out23);
-    buf b_doa24 (DOA[24], doa_out24);
-    buf b_doa25 (DOA[25], doa_out25);
-    buf b_doa26 (DOA[26], doa_out26);
-    buf b_doa27 (DOA[27], doa_out27);
-    buf b_doa28 (DOA[28], doa_out28);
-    buf b_doa29 (DOA[29], doa_out29);
-    buf b_doa30 (DOA[30], doa_out30);
-    buf b_doa31 (DOA[31], doa_out31);
-    buf b_dopa0 (DOPA[0], dopa_out0);
-    buf b_dopa1 (DOPA[1], dopa_out1);
-    buf b_dopa2 (DOPA[2], dopa_out2);
-    buf b_dopa3 (DOPA[3], dopa_out3);
-    buf b_dob0 (DOB[0], dob_out0);
-    buf b_dob1 (DOB[1], dob_out1);
-    buf b_dob2 (DOB[2], dob_out2);
-    buf b_dob3 (DOB[3], dob_out3);
-    buf b_dob4 (DOB[4], dob_out4);
-    buf b_dob5 (DOB[5], dob_out5);
-    buf b_dob6 (DOB[6], dob_out6);
-    buf b_dob7 (DOB[7], dob_out7);
-    buf b_dob8 (DOB[8], dob_out8);
-    buf b_dob9 (DOB[9], dob_out9);
-    buf b_dob10 (DOB[10], dob_out10);
-    buf b_dob11 (DOB[11], dob_out11);
-    buf b_dob12 (DOB[12], dob_out12);
-    buf b_dob13 (DOB[13], dob_out13);
-    buf b_dob14 (DOB[14], dob_out14);
-    buf b_dob15 (DOB[15], dob_out15);
-    buf b_dob16 (DOB[16], dob_out16);
-    buf b_dob17 (DOB[17], dob_out17);
-    buf b_dob18 (DOB[18], dob_out18);
-    buf b_dob19 (DOB[19], dob_out19);
-    buf b_dob20 (DOB[20], dob_out20);
-    buf b_dob21 (DOB[21], dob_out21);
-    buf b_dob22 (DOB[22], dob_out22);
-    buf b_dob23 (DOB[23], dob_out23);
-    buf b_dob24 (DOB[24], dob_out24);
-    buf b_dob25 (DOB[25], dob_out25);
-    buf b_dob26 (DOB[26], dob_out26);
-    buf b_dob27 (DOB[27], dob_out27);
-    buf b_dob28 (DOB[28], dob_out28);
-    buf b_dob29 (DOB[29], dob_out29);
-    buf b_dob30 (DOB[30], dob_out30);
-    buf b_dob31 (DOB[31], dob_out31);
-    buf b_dopb0 (DOPB[0], dopb_out0);
-    buf b_dopb1 (DOPB[1], dopb_out1);
-    buf b_dopb2 (DOPB[2], dopb_out2);
-    buf b_dopb3 (DOPB[3], dopb_out3);
-
-    buf b_addra_0 (addra_int[0], ADDRA[0]);
-    buf b_addra_1 (addra_int[1], ADDRA[1]);
-    buf b_addra_2 (addra_int[2], ADDRA[2]);
-    buf b_addra_3 (addra_int[3], ADDRA[3]);
-    buf b_addra_4 (addra_int[4], ADDRA[4]);
-    buf b_addra_5 (addra_int[5], ADDRA[5]);
-    buf b_addra_6 (addra_int[6], ADDRA[6]);
-    buf b_addra_7 (addra_int[7], ADDRA[7]);
-    buf b_addra_8 (addra_int[8], ADDRA[8]);
-    buf b_dia_0 (dia_int[0], DIA[0]);
-    buf b_dia_1 (dia_int[1], DIA[1]);
-    buf b_dia_2 (dia_int[2], DIA[2]);
-    buf b_dia_3 (dia_int[3], DIA[3]);
-    buf b_dia_4 (dia_int[4], DIA[4]);
-    buf b_dia_5 (dia_int[5], DIA[5]);
-    buf b_dia_6 (dia_int[6], DIA[6]);
-    buf b_dia_7 (dia_int[7], DIA[7]);
-    buf b_dia_8 (dia_int[8], DIA[8]);
-    buf b_dia_9 (dia_int[9], DIA[9]);
-    buf b_dia_10 (dia_int[10], DIA[10]);
-    buf b_dia_11 (dia_int[11], DIA[11]);
-    buf b_dia_12 (dia_int[12], DIA[12]);
-    buf b_dia_13 (dia_int[13], DIA[13]);
-    buf b_dia_14 (dia_int[14], DIA[14]);
-    buf b_dia_15 (dia_int[15], DIA[15]);
-    buf b_dia_16 (dia_int[16], DIA[16]);
-    buf b_dia_17 (dia_int[17], DIA[17]);
-    buf b_dia_18 (dia_int[18], DIA[18]);
-    buf b_dia_19 (dia_int[19], DIA[19]);
-    buf b_dia_20 (dia_int[20], DIA[20]);
-    buf b_dia_21 (dia_int[21], DIA[21]);
-    buf b_dia_22 (dia_int[22], DIA[22]);
-    buf b_dia_23 (dia_int[23], DIA[23]);
-    buf b_dia_24 (dia_int[24], DIA[24]);
-    buf b_dia_25 (dia_int[25], DIA[25]);
-    buf b_dia_26 (dia_int[26], DIA[26]);
-    buf b_dia_27 (dia_int[27], DIA[27]);
-    buf b_dia_28 (dia_int[28], DIA[28]);
-    buf b_dia_29 (dia_int[29], DIA[29]);
-    buf b_dia_30 (dia_int[30], DIA[30]);
-    buf b_dia_31 (dia_int[31], DIA[31]);
-    buf b_dipa_0 (dipa_int[0], DIPA[0]);
-    buf b_dipa_1 (dipa_int[1], DIPA[1]);
-    buf b_dipa_2 (dipa_int[2], DIPA[2]);
-    buf b_dipa_3 (dipa_int[3], DIPA[3]);
-    buf b_ena (ena_int, ENA);
-    buf b_clka (clka_int, CLKA);
-    buf b_ssra (ssra_int, SSRA);
-    buf b_wea (wea_int, WEA);
-    buf b_addrb_0 (addrb_int[0], ADDRB[0]);
-    buf b_addrb_1 (addrb_int[1], ADDRB[1]);
-    buf b_addrb_2 (addrb_int[2], ADDRB[2]);
-    buf b_addrb_3 (addrb_int[3], ADDRB[3]);
-    buf b_addrb_4 (addrb_int[4], ADDRB[4]);
-    buf b_addrb_5 (addrb_int[5], ADDRB[5]);
-    buf b_addrb_6 (addrb_int[6], ADDRB[6]);
-    buf b_addrb_7 (addrb_int[7], ADDRB[7]);
-    buf b_addrb_8 (addrb_int[8], ADDRB[8]);
-    buf b_dib_0 (dib_int[0], DIB[0]);
-    buf b_dib_1 (dib_int[1], DIB[1]);
-    buf b_dib_2 (dib_int[2], DIB[2]);
-    buf b_dib_3 (dib_int[3], DIB[3]);
-    buf b_dib_4 (dib_int[4], DIB[4]);
-    buf b_dib_5 (dib_int[5], DIB[5]);
-    buf b_dib_6 (dib_int[6], DIB[6]);
-    buf b_dib_7 (dib_int[7], DIB[7]);
-    buf b_dib_8 (dib_int[8], DIB[8]);
-    buf b_dib_9 (dib_int[9], DIB[9]);
-    buf b_dib_10 (dib_int[10], DIB[10]);
-    buf b_dib_11 (dib_int[11], DIB[11]);
-    buf b_dib_12 (dib_int[12], DIB[12]);
-    buf b_dib_13 (dib_int[13], DIB[13]);
-    buf b_dib_14 (dib_int[14], DIB[14]);
-    buf b_dib_15 (dib_int[15], DIB[15]);
-    buf b_dib_16 (dib_int[16], DIB[16]);
-    buf b_dib_17 (dib_int[17], DIB[17]);
-    buf b_dib_18 (dib_int[18], DIB[18]);
-    buf b_dib_19 (dib_int[19], DIB[19]);
-    buf b_dib_20 (dib_int[20], DIB[20]);
-    buf b_dib_21 (dib_int[21], DIB[21]);
-    buf b_dib_22 (dib_int[22], DIB[22]);
-    buf b_dib_23 (dib_int[23], DIB[23]);
-    buf b_dib_24 (dib_int[24], DIB[24]);
-    buf b_dib_25 (dib_int[25], DIB[25]);
-    buf b_dib_26 (dib_int[26], DIB[26]);
-    buf b_dib_27 (dib_int[27], DIB[27]);
-    buf b_dib_28 (dib_int[28], DIB[28]);
-    buf b_dib_29 (dib_int[29], DIB[29]);
-    buf b_dib_30 (dib_int[30], DIB[30]);
-    buf b_dib_31 (dib_int[31], DIB[31]);
-    buf b_dipb_0 (dipb_int[0], DIPB[0]);
-    buf b_dipb_1 (dipb_int[1], DIPB[1]);
-    buf b_dipb_2 (dipb_int[2], DIPB[2]);
-    buf b_dipb_3 (dipb_int[3], DIPB[3]);
-    buf b_enb (enb_int, ENB);
-    buf b_clkb (clkb_int, CLKB);
-    buf b_ssrb (ssrb_int, SSRB);
-    buf b_web (web_int, WEB);
-
-    initial begin
-       for (count = 0; count < 256; count = count + 1) begin
-           mem[count]            <= INIT_00[count];
-           mem[256 * 1 + count]  <= INIT_01[count];
-           mem[256 * 2 + count]  <= INIT_02[count];
-           mem[256 * 3 + count]  <= INIT_03[count];
-           mem[256 * 4 + count]  <= INIT_04[count];
-           mem[256 * 5 + count]  <= INIT_05[count];
-           mem[256 * 6 + count]  <= INIT_06[count];
-           mem[256 * 7 + count]  <= INIT_07[count];
-           mem[256 * 8 + count]  <= INIT_08[count];
-           mem[256 * 9 + count]  <= INIT_09[count];
-           mem[256 * 10 + count] <= INIT_0A[count];
-           mem[256 * 11 + count] <= INIT_0B[count];
-           mem[256 * 12 + count] <= INIT_0C[count];
-           mem[256 * 13 + count] <= INIT_0D[count];
-           mem[256 * 14 + count] <= INIT_0E[count];
-           mem[256 * 15 + count] <= INIT_0F[count];
-           mem[256 * 16 + count] <= INIT_10[count];
-           mem[256 * 17 + count] <= INIT_11[count];
-           mem[256 * 18 + count] <= INIT_12[count];
-           mem[256 * 19 + count] <= INIT_13[count];
-           mem[256 * 20 + count] <= INIT_14[count];
-           mem[256 * 21 + count] <= INIT_15[count];
-           mem[256 * 22 + count] <= INIT_16[count];
-           mem[256 * 23 + count] <= INIT_17[count];
-           mem[256 * 24 + count] <= INIT_18[count];
-           mem[256 * 25 + count] <= INIT_19[count];
-           mem[256 * 26 + count] <= INIT_1A[count];
-           mem[256 * 27 + count] <= INIT_1B[count];
-           mem[256 * 28 + count] <= INIT_1C[count];
-           mem[256 * 29 + count] <= INIT_1D[count];
-           mem[256 * 30 + count] <= INIT_1E[count];
-           mem[256 * 31 + count] <= INIT_1F[count];
-           mem[256 * 32 + count] <= INIT_20[count];
-           mem[256 * 33 + count] <= INIT_21[count];
-           mem[256 * 34 + count] <= INIT_22[count];
-           mem[256 * 35 + count] <= INIT_23[count];
-           mem[256 * 36 + count] <= INIT_24[count];
-           mem[256 * 37 + count] <= INIT_25[count];
-           mem[256 * 38 + count] <= INIT_26[count];
-           mem[256 * 39 + count] <= INIT_27[count];
-           mem[256 * 40 + count] <= INIT_28[count];
-           mem[256 * 41 + count] <= INIT_29[count];
-           mem[256 * 42 + count] <= INIT_2A[count];
-           mem[256 * 43 + count] <= INIT_2B[count];
-           mem[256 * 44 + count] <= INIT_2C[count];
-           mem[256 * 45 + count] <= INIT_2D[count];
-           mem[256 * 46 + count] <= INIT_2E[count];
-           mem[256 * 47 + count] <= INIT_2F[count];
-           mem[256 * 48 + count] <= INIT_30[count];
-           mem[256 * 49 + count] <= INIT_31[count];
-           mem[256 * 50 + count] <= INIT_32[count];
-           mem[256 * 51 + count] <= INIT_33[count];
-           mem[256 * 52 + count] <= INIT_34[count];
-           mem[256 * 53 + count] <= INIT_35[count];
-           mem[256 * 54 + count] <= INIT_36[count];
-           mem[256 * 55 + count] <= INIT_37[count];
-           mem[256 * 56 + count] <= INIT_38[count];
-           mem[256 * 57 + count] <= INIT_39[count];
-           mem[256 * 58 + count] <= INIT_3A[count];
-           mem[256 * 59 + count] <= INIT_3B[count];
-           mem[256 * 60 + count] <= INIT_3C[count];
-           mem[256 * 61 + count] <= INIT_3D[count];
-           mem[256 * 62 + count] <= INIT_3E[count];
-           mem[256 * 63 + count] <= INIT_3F[count];
-           mem[256 * 64 + count] <= INITP_00[count];
-           mem[256 * 65 + count] <= INITP_01[count];
-           mem[256 * 66 + count] <= INITP_02[count];
-           mem[256 * 67 + count] <= INITP_03[count];
-           mem[256 * 68 + count] <= INITP_04[count];
-           mem[256 * 69 + count] <= INITP_05[count];
-           mem[256 * 70 + count] <= INITP_06[count];
-           mem[256 * 71 + count] <= INITP_07[count];
-       end
-       address_collision <= 0;
-       address_collision_a_b <= 0;
-       address_collision_b_a <= 0;
-       change_clka <= 0;
-       change_clkb <= 0;
-       data_collision <= 0;
-       data_collision_a_b <= 0;
-       data_collision_b_a <= 0;
-       memory_collision <= 0;
-       memory_collision_a_b <= 0;
-       memory_collision_b_a <= 0;
-       setup_all_a_b <= 0;
-       setup_all_b_a <= 0;
-       setup_zero <= 0;
-       setup_rf_a_b <= 0;
-       setup_rf_b_a <= 0;
-    end
-
-    assign data_addra_int = addra_int * 32;
-    assign data_addra_reg = addra_reg * 32;
-    assign data_addrb_int = addrb_int * 32;
-    assign data_addrb_reg = addrb_reg * 32;
-    assign parity_addra_int = 16384 + addra_int * 4;
-    assign parity_addra_reg = 16384 + addra_reg * 4;
-    assign parity_addrb_int = 16384 + addrb_int * 4;
-    assign parity_addrb_reg = 16384 + addrb_reg * 4;
-
-
-    initial begin
-
-       display_flag = 1;
-
-       case (SIM_COLLISION_CHECK)
-
-           "NONE" : begin
-                        assign setup_all_a_b = 1'b0;
-                        assign setup_all_b_a = 1'b0;
-                        assign setup_zero = 1'b0;
-                        assign setup_rf_a_b = 1'b0;
-                        assign setup_rf_b_a = 1'b0;
-                        assign display_flag = 0;
-                    end
-           "WARNING_ONLY" : begin
-                                assign data_collision = 2'b00;
-                                assign data_collision_a_b = 2'b00;
-                                assign data_collision_b_a = 2'b00;
-                                assign memory_collision = 1'b0;
-                                assign memory_collision_a_b = 1'b0;
-                                assign memory_collision_b_a = 1'b0;
-                            end
-           "GENERATE_X_ONLY" : begin
-                                   assign display_flag = 0;
-                               end
-           "ALL" : ;
-           default : begin
-                         $display("Attribute Syntax Error : The Attribute SIM_COLLISION_CHECK on RAMB16_S36_S36 instance %m is set to %s.  Legal values for this attribute are ALL, NONE, WARNING_ONLY or GENERATE_X_ONLY.", SIM_COLLISION_CHECK);
-                         $finish;
-                     end
-
-       endcase // case(SIM_COLLISION_CHECK)
-
-    end // initial begin
-
-
-    always @(posedge clka_int) begin
-       time_clka = $time;
-       #0 time_clkb_clka = time_clka - time_clkb;
-       change_clka = ~change_clka;
-    end
-
-    always @(posedge clkb_int) begin
-       time_clkb = $time;
-       #0 time_clka_clkb = time_clkb - time_clka;
-       change_clkb = ~change_clkb;
-    end
-
-    always @(change_clkb) begin
-       if ((0 < time_clka_clkb) && (time_clka_clkb < SETUP_ALL))
-           setup_all_a_b = 1;
-       if ((0 < time_clka_clkb) && (time_clka_clkb < SETUP_READ_FIRST))
-           setup_rf_a_b = 1;
-    end
-
-    always @(change_clka) begin
-       if ((0 < time_clkb_clka) && (time_clkb_clka < SETUP_ALL))
-           setup_all_b_a = 1;
-       if ((0 < time_clkb_clka) && (time_clkb_clka < SETUP_READ_FIRST))
-           setup_rf_b_a = 1;
-    end
-
-    always @(change_clkb or change_clka) begin
-       if ((time_clkb_clka == 0) && (time_clka_clkb == 0))
-           setup_zero = 1;
-    end
-
-    always @(posedge setup_zero) begin
-       if ((ena_int == 1) && (wea_int == 1) &&
-           (enb_int == 1) && (web_int == 1) &&
-           (data_addra_int[14:5] == data_addrb_int[14:5]))
-           memory_collision <= 1;
-    end
-
-    always @(posedge setup_all_a_b or posedge setup_rf_a_b) begin
-       if ((ena_reg == 1) && (wea_reg == 1) &&
-           (enb_int == 1) && (web_int == 1) &&
-           (data_addra_reg[14:5] == data_addrb_int[14:5]))
-           memory_collision_a_b <= 1;
-    end
-
-    always @(posedge setup_all_b_a or posedge setup_rf_b_a) begin
-       if ((ena_int == 1) && (wea_int == 1) &&
-           (enb_reg == 1) && (web_reg == 1) &&
-           (data_addra_int[14:5] == data_addrb_reg[14:5]))
-           memory_collision_b_a <= 1;
-    end
-
-    always @(posedge setup_all_a_b) begin
-       if (data_addra_reg[14:5] == data_addrb_int[14:5]) begin
-       if ((ena_reg == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_reg, web_int})
-               6'b000011 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b000111 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b001011 : begin data_collision_a_b <= 2'b10; display_wa_wb; end
-//             6'b010011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b010111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b011011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-               6'b100011 : begin data_collision_a_b <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision_a_b <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b000101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b001001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b010101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b011001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b100101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b101001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_all_a_b <= 0;
-    end
-
-
-    always @(posedge setup_all_b_a) begin
-       if (data_addra_int[14:5] == data_addrb_reg[14:5]) begin
-       if ((ena_int == 1) && (enb_reg == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_reg})
-               6'b000011 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b000111 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b001011 : begin data_collision_b_a <= 2'b10; display_wa_wb; end
-               6'b010011 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b010111 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b011011 : begin data_collision_b_a <= 2'b10; display_wa_wb; end
-               6'b100011 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b000101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b001001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b010101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b011001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b100101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b101001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_all_b_a <= 0;
-    end
-
-
-    always @(posedge setup_zero) begin
-       if (data_addra_int[14:5] == data_addrb_int[14:5]) begin
-       if ((ena_int == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_int})
-               6'b000011 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b000111 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b001011 : begin data_collision <= 2'b10; display_wa_wb; end
-               6'b010011 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b010111 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b011011 : begin data_collision <= 2'b10; display_wa_wb; end
-               6'b100011 : begin data_collision <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b000101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b001001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b010101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b011001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b100101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b101001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_zero <= 0;
-    end
-
-    task display_ra_wb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S36_S36:%m at simulation time %.3f ns\nA read was performed on address %h (hex) of Port A while a write was requested to the same address on Port B. The write will be successful however the read value on Port A is unknown until the next CLKA cycle.", $time/1000.0, addra_int);
-    end
-    endtask
-
-    task display_wa_rb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S36_S36:%m at simulation time %.3f ns\nA read was performed on address %h (hex) of Port B while a write was requested to the same address on Port A. The write will be successful however the read value on Port B is unknown until the next CLKB cycle.", $time/1000.0, addrb_int);
-    end
-    endtask
-
-    task display_wa_wb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S36_S36:%m at simulation time %.3f ns\nA write was requested to the same address simultaneously at both Port A and Port B of the RAM. The contents written to the RAM at address location %h (hex) of Port A and address location %h (hex) of Port B are unknown.", $time/1000.0, addra_int, addrb_int);
-    end
-    endtask
-
-
-    always @(posedge setup_rf_a_b) begin
-       if (data_addra_reg[14:5] == data_addrb_int[14:5]) begin
-       if ((ena_reg == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_reg, web_int})
-//             6'b000011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b000111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b001011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-               6'b010011 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b010111 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b011011 : begin data_collision_a_b <= 2'b10; display_wa_wb; end
-//             6'b100011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b100111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b101011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b000001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b000101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b001001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b010001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b010101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b011001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b100001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b100101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b101001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b000010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b000110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b001010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-               6'b010010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b010110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b011010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-//             6'b100010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b100110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b101010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_rf_a_b <= 0;
-    end
-
-
-    always @(posedge setup_rf_b_a) begin
-       if (data_addra_int[14:5] == data_addrb_reg[14:5]) begin
-       if ((ena_int == 1) && (enb_reg == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_reg})
-//             6'b000011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b000111 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b001011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b010011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b010111 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b011011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b100011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b100111 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-//             6'b101011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b000001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b000101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b001001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b010001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b010101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b011001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b100001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b100101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b101001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b000010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b000110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b001010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b100010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b100110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b101010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_rf_b_a <= 0;
-    end
-
-
-    always @(posedge clka_int) begin
-       addra_reg <= addra_int;
-       ena_reg <= ena_int;
-       ssra_reg <= ssra_int;
-       wea_reg <= wea_int;
-    end
-
-    always @(posedge clkb_int) begin
-       addrb_reg <= addrb_int;
-       enb_reg <= enb_int;
-       ssrb_reg <= ssrb_int;
-       web_reg <= web_int;
-    end
-
-    // Data
-    always @(posedge memory_collision) begin
-       for (dmi = 0; dmi < 32; dmi = dmi + 1) begin
-           mem[data_addra_int + dmi] <= 1'bX;
-       end
-       memory_collision <= 0;
-    end
-
-    always @(posedge memory_collision_a_b) begin
-       for (dmi = 0; dmi < 32; dmi = dmi + 1) begin
-           mem[data_addra_reg + dmi] <= 1'bX;
-       end
-       memory_collision_a_b <= 0;
-    end
-
-    always @(posedge memory_collision_b_a) begin
-       for (dmi = 0; dmi < 32; dmi = dmi + 1) begin
-           mem[data_addra_int + dmi] <= 1'bX;
-       end
-       memory_collision_b_a <= 0;
-    end
-
-    always @(posedge data_collision[1]) begin
-       if (ssra_int == 0) begin
-           doa_out <= 32'bX;
-       end
-       data_collision[1] <= 0;
-    end
-
-    always @(posedge data_collision[0]) begin
-       if (ssrb_int == 0) begin
-           dob_out <= 32'bX;
-       end
-       data_collision[0] <= 0;
-    end
-
-    always @(posedge data_collision_a_b[1]) begin
-       if (ssra_reg == 0) begin
-           doa_out <= 32'bX;
-       end
-       data_collision_a_b[1] <= 0;
-    end
-
-    always @(posedge data_collision_a_b[0]) begin
-       if (ssrb_int == 0) begin
-           dob_out <= 32'bX;
-       end
-       data_collision_a_b[0] <= 0;
-    end
-
-    always @(posedge data_collision_b_a[1]) begin
-       if (ssra_int == 0) begin
-           doa_out <= 32'bX;
-       end
-       data_collision_b_a[1] <= 0;
-    end
-
-    always @(posedge data_collision_b_a[0]) begin
-       if (ssrb_reg == 0) begin
-       dob_out <= 32'bX;
-       end
-       data_collision_b_a[0] <= 0;
-    end
-
-
-    // Parity
-    always @(posedge memory_collision) begin
-       for (pmi = 0; pmi < 4; pmi = pmi + 1) begin
-           mem[parity_addra_int + pmi] <= 1'bX;
-       end
-    end
-
-    always @(posedge memory_collision_a_b) begin
-       for (pmi = 0; pmi < 4; pmi = pmi + 1) begin
-           mem[parity_addra_reg + pmi] <= 1'bX;
-       end
-    end
-
-    always @(posedge memory_collision_b_a) begin
-       for (pmi = 0; pmi < 4; pmi = pmi + 1) begin
-           mem[parity_addra_int + pmi] <= 1'bX;
-       end
-    end
-
-    always @(posedge data_collision[1]) begin
-       if (ssra_int == 0) begin
-           dopa_out <= 4'bX;
-       end
-    end
-
-    always @(posedge data_collision[0]) begin
-       if (ssrb_int == 0) begin
-           dopb_out <= 4'bX;
-       end
-    end
-
-    always @(posedge data_collision_a_b[1]) begin
-       if (ssra_reg == 0) begin
-           dopa_out <= 4'bX;
-       end
-    end
-
-    always @(posedge data_collision_a_b[0]) begin
-       if (ssrb_int == 0) begin
-       dopb_out <= 4'bX;
-       end
-    end
-
-    always @(posedge data_collision_b_a[1]) begin
-       if (ssra_int == 0) begin
-           dopa_out <= 4'bX;
-       end
-    end
-
-    always @(posedge data_collision_b_a[0]) begin
-       if (ssrb_reg == 0) begin
-           dopb_out <= 4'bX;
-       end
-    end
-
-
-    initial begin
-       case (WRITE_MODE_A)
-           "WRITE_FIRST" : wr_mode_a <= 2'b00;
-           "READ_FIRST"  : wr_mode_a <= 2'b01;
-           "NO_CHANGE"   : wr_mode_a <= 2'b10;
-           default       : begin
-                               $display("Attribute Syntax Error : The Attribute WRITE_MODE_A on RAMB16_S36_S36 instance %m is set to %s.  Legal values for this attribute are WRITE_FIRST, READ_FIRST or NO_CHANGE.", WRITE_MODE_A);
-                               $finish;
-                           end
-       endcase
-    end
-
-    initial begin
-       case (WRITE_MODE_B)
-           "WRITE_FIRST" : wr_mode_b <= 2'b00;
-           "READ_FIRST"  : wr_mode_b <= 2'b01;
-           "NO_CHANGE"   : wr_mode_b <= 2'b10;
-           default       : begin
-                               $display("Attribute Syntax Error : The Attribute WRITE_MODE_B on RAMB16_S36_S36 instance %m is set to %s.  Legal values for this attribute are WRITE_FIRST, READ_FIRST or NO_CHANGE.", WRITE_MODE_B);
-                               $finish;
-                           end
-       endcase
-    end
-
-    // Port A
-    always @(posedge clka_int) begin
-       if (ena_int == 1'b1) begin
-           if (ssra_int == 1'b1) begin
-               doa_out[0] <= SRVAL_A[0];
-               doa_out[1] <= SRVAL_A[1];
-               doa_out[2] <= SRVAL_A[2];
-               doa_out[3] <= SRVAL_A[3];
-               doa_out[4] <= SRVAL_A[4];
-               doa_out[5] <= SRVAL_A[5];
-               doa_out[6] <= SRVAL_A[6];
-               doa_out[7] <= SRVAL_A[7];
-               doa_out[8] <= SRVAL_A[8];
-               doa_out[9] <= SRVAL_A[9];
-               doa_out[10] <= SRVAL_A[10];
-               doa_out[11] <= SRVAL_A[11];
-               doa_out[12] <= SRVAL_A[12];
-               doa_out[13] <= SRVAL_A[13];
-               doa_out[14] <= SRVAL_A[14];
-               doa_out[15] <= SRVAL_A[15];
-               doa_out[16] <= SRVAL_A[16];
-               doa_out[17] <= SRVAL_A[17];
-               doa_out[18] <= SRVAL_A[18];
-               doa_out[19] <= SRVAL_A[19];
-               doa_out[20] <= SRVAL_A[20];
-               doa_out[21] <= SRVAL_A[21];
-               doa_out[22] <= SRVAL_A[22];
-               doa_out[23] <= SRVAL_A[23];
-               doa_out[24] <= SRVAL_A[24];
-               doa_out[25] <= SRVAL_A[25];
-               doa_out[26] <= SRVAL_A[26];
-               doa_out[27] <= SRVAL_A[27];
-               doa_out[28] <= SRVAL_A[28];
-               doa_out[29] <= SRVAL_A[29];
-               doa_out[30] <= SRVAL_A[30];
-               doa_out[31] <= SRVAL_A[31];
-               dopa_out[0] <= SRVAL_A[32];
-               dopa_out[1] <= SRVAL_A[33];
-               dopa_out[2] <= SRVAL_A[34];
-               dopa_out[3] <= SRVAL_A[35];
-           end
-           else begin
-               if (wea_int == 1'b1) begin
-                   if (wr_mode_a == 2'b00) begin
-                       doa_out <= dia_int;
-                       dopa_out <= dipa_int;
-                   end
-                   else if (wr_mode_a == 2'b01) begin
-                       doa_out[0] <= mem[data_addra_int + 0];
-                       doa_out[1] <= mem[data_addra_int + 1];
-                       doa_out[2] <= mem[data_addra_int + 2];
-                       doa_out[3] <= mem[data_addra_int + 3];
-                       doa_out[4] <= mem[data_addra_int + 4];
-                       doa_out[5] <= mem[data_addra_int + 5];
-                       doa_out[6] <= mem[data_addra_int + 6];
-                       doa_out[7] <= mem[data_addra_int + 7];
-                       doa_out[8] <= mem[data_addra_int + 8];
-                       doa_out[9] <= mem[data_addra_int + 9];
-                       doa_out[10] <= mem[data_addra_int + 10];
-                       doa_out[11] <= mem[data_addra_int + 11];
-                       doa_out[12] <= mem[data_addra_int + 12];
-                       doa_out[13] <= mem[data_addra_int + 13];
-                       doa_out[14] <= mem[data_addra_int + 14];
-                       doa_out[15] <= mem[data_addra_int + 15];
-                       doa_out[16] <= mem[data_addra_int + 16];
-                       doa_out[17] <= mem[data_addra_int + 17];
-                       doa_out[18] <= mem[data_addra_int + 18];
-                       doa_out[19] <= mem[data_addra_int + 19];
-                       doa_out[20] <= mem[data_addra_int + 20];
-                       doa_out[21] <= mem[data_addra_int + 21];
-                       doa_out[22] <= mem[data_addra_int + 22];
-                       doa_out[23] <= mem[data_addra_int + 23];
-                       doa_out[24] <= mem[data_addra_int + 24];
-                       doa_out[25] <= mem[data_addra_int + 25];
-                       doa_out[26] <= mem[data_addra_int + 26];
-                       doa_out[27] <= mem[data_addra_int + 27];
-                       doa_out[28] <= mem[data_addra_int + 28];
-                       doa_out[29] <= mem[data_addra_int + 29];
-                       doa_out[30] <= mem[data_addra_int + 30];
-                       doa_out[31] <= mem[data_addra_int + 31];
-                       dopa_out[0] <= mem[parity_addra_int + 0];
-                       dopa_out[1] <= mem[parity_addra_int + 1];
-                       dopa_out[2] <= mem[parity_addra_int + 2];
-                       dopa_out[3] <= mem[parity_addra_int + 3];
-                   end
-               end
-               else begin
-                   doa_out[0] <= mem[data_addra_int + 0];
-                   doa_out[1] <= mem[data_addra_int + 1];
-                   doa_out[2] <= mem[data_addra_int + 2];
-                   doa_out[3] <= mem[data_addra_int + 3];
-                   doa_out[4] <= mem[data_addra_int + 4];
-                   doa_out[5] <= mem[data_addra_int + 5];
-                   doa_out[6] <= mem[data_addra_int + 6];
-                   doa_out[7] <= mem[data_addra_int + 7];
-                   doa_out[8] <= mem[data_addra_int + 8];
-                   doa_out[9] <= mem[data_addra_int + 9];
-                   doa_out[10] <= mem[data_addra_int + 10];
-                   doa_out[11] <= mem[data_addra_int + 11];
-                   doa_out[12] <= mem[data_addra_int + 12];
-                   doa_out[13] <= mem[data_addra_int + 13];
-                   doa_out[14] <= mem[data_addra_int + 14];
-                   doa_out[15] <= mem[data_addra_int + 15];
-                   doa_out[16] <= mem[data_addra_int + 16];
-                   doa_out[17] <= mem[data_addra_int + 17];
-                   doa_out[18] <= mem[data_addra_int + 18];
-                   doa_out[19] <= mem[data_addra_int + 19];
-                   doa_out[20] <= mem[data_addra_int + 20];
-                   doa_out[21] <= mem[data_addra_int + 21];
-                   doa_out[22] <= mem[data_addra_int + 22];
-                   doa_out[23] <= mem[data_addra_int + 23];
-                   doa_out[24] <= mem[data_addra_int + 24];
-                   doa_out[25] <= mem[data_addra_int + 25];
-                   doa_out[26] <= mem[data_addra_int + 26];
-                   doa_out[27] <= mem[data_addra_int + 27];
-                   doa_out[28] <= mem[data_addra_int + 28];
-                   doa_out[29] <= mem[data_addra_int + 29];
-                   doa_out[30] <= mem[data_addra_int + 30];
-                   doa_out[31] <= mem[data_addra_int + 31];
-                   dopa_out[0] <= mem[parity_addra_int + 0];
-                   dopa_out[1] <= mem[parity_addra_int + 1];
-                   dopa_out[2] <= mem[parity_addra_int + 2];
-                   dopa_out[3] <= mem[parity_addra_int + 3];
-               end
-           end
-       end
-    end
-
-    always @(posedge clka_int) begin
-       if (ena_int == 1'b1 && wea_int == 1'b1) begin
-           mem[data_addra_int + 0] <= dia_int[0];
-           mem[data_addra_int + 1] <= dia_int[1];
-           mem[data_addra_int + 2] <= dia_int[2];
-           mem[data_addra_int + 3] <= dia_int[3];
-           mem[data_addra_int + 4] <= dia_int[4];
-           mem[data_addra_int + 5] <= dia_int[5];
-           mem[data_addra_int + 6] <= dia_int[6];
-           mem[data_addra_int + 7] <= dia_int[7];
-           mem[data_addra_int + 8] <= dia_int[8];
-           mem[data_addra_int + 9] <= dia_int[9];
-           mem[data_addra_int + 10] <= dia_int[10];
-           mem[data_addra_int + 11] <= dia_int[11];
-           mem[data_addra_int + 12] <= dia_int[12];
-           mem[data_addra_int + 13] <= dia_int[13];
-           mem[data_addra_int + 14] <= dia_int[14];
-           mem[data_addra_int + 15] <= dia_int[15];
-           mem[data_addra_int + 16] <= dia_int[16];
-           mem[data_addra_int + 17] <= dia_int[17];
-           mem[data_addra_int + 18] <= dia_int[18];
-           mem[data_addra_int + 19] <= dia_int[19];
-           mem[data_addra_int + 20] <= dia_int[20];
-           mem[data_addra_int + 21] <= dia_int[21];
-           mem[data_addra_int + 22] <= dia_int[22];
-           mem[data_addra_int + 23] <= dia_int[23];
-           mem[data_addra_int + 24] <= dia_int[24];
-           mem[data_addra_int + 25] <= dia_int[25];
-           mem[data_addra_int + 26] <= dia_int[26];
-           mem[data_addra_int + 27] <= dia_int[27];
-           mem[data_addra_int + 28] <= dia_int[28];
-           mem[data_addra_int + 29] <= dia_int[29];
-           mem[data_addra_int + 30] <= dia_int[30];
-           mem[data_addra_int + 31] <= dia_int[31];
-           mem[parity_addra_int + 0] <= dipa_int[0];
-           mem[parity_addra_int + 1] <= dipa_int[1];
-           mem[parity_addra_int + 2] <= dipa_int[2];
-           mem[parity_addra_int + 3] <= dipa_int[3];
-       end
-    end
-
-    // Port B
-    always @(posedge clkb_int) begin
-       if (enb_int == 1'b1) begin
-           if (ssrb_int == 1'b1) begin
-               dob_out[0] <= SRVAL_B[0];
-               dob_out[1] <= SRVAL_B[1];
-               dob_out[2] <= SRVAL_B[2];
-               dob_out[3] <= SRVAL_B[3];
-               dob_out[4] <= SRVAL_B[4];
-               dob_out[5] <= SRVAL_B[5];
-               dob_out[6] <= SRVAL_B[6];
-               dob_out[7] <= SRVAL_B[7];
-               dob_out[8] <= SRVAL_B[8];
-               dob_out[9] <= SRVAL_B[9];
-               dob_out[10] <= SRVAL_B[10];
-               dob_out[11] <= SRVAL_B[11];
-               dob_out[12] <= SRVAL_B[12];
-               dob_out[13] <= SRVAL_B[13];
-               dob_out[14] <= SRVAL_B[14];
-               dob_out[15] <= SRVAL_B[15];
-               dob_out[16] <= SRVAL_B[16];
-               dob_out[17] <= SRVAL_B[17];
-               dob_out[18] <= SRVAL_B[18];
-               dob_out[19] <= SRVAL_B[19];
-               dob_out[20] <= SRVAL_B[20];
-               dob_out[21] <= SRVAL_B[21];
-               dob_out[22] <= SRVAL_B[22];
-               dob_out[23] <= SRVAL_B[23];
-               dob_out[24] <= SRVAL_B[24];
-               dob_out[25] <= SRVAL_B[25];
-               dob_out[26] <= SRVAL_B[26];
-               dob_out[27] <= SRVAL_B[27];
-               dob_out[28] <= SRVAL_B[28];
-               dob_out[29] <= SRVAL_B[29];
-               dob_out[30] <= SRVAL_B[30];
-               dob_out[31] <= SRVAL_B[31];
-               dopb_out[0] <= SRVAL_B[32];
-               dopb_out[1] <= SRVAL_B[33];
-               dopb_out[2] <= SRVAL_B[34];
-               dopb_out[3] <= SRVAL_B[35];
-           end
-           else begin
-               if (web_int == 1'b1) begin
-                   if (wr_mode_b == 2'b00) begin
-                       dob_out <= dib_int;
-                       dopb_out <= dipb_int;
-                   end
-                   else if (wr_mode_b == 2'b01) begin
-                       dob_out[0] <= mem[data_addrb_int + 0];
-                       dob_out[1] <= mem[data_addrb_int + 1];
-                       dob_out[2] <= mem[data_addrb_int + 2];
-                       dob_out[3] <= mem[data_addrb_int + 3];
-                       dob_out[4] <= mem[data_addrb_int + 4];
-                       dob_out[5] <= mem[data_addrb_int + 5];
-                       dob_out[6] <= mem[data_addrb_int + 6];
-                       dob_out[7] <= mem[data_addrb_int + 7];
-                       dob_out[8] <= mem[data_addrb_int + 8];
-                       dob_out[9] <= mem[data_addrb_int + 9];
-                       dob_out[10] <= mem[data_addrb_int + 10];
-                       dob_out[11] <= mem[data_addrb_int + 11];
-                       dob_out[12] <= mem[data_addrb_int + 12];
-                       dob_out[13] <= mem[data_addrb_int + 13];
-                       dob_out[14] <= mem[data_addrb_int + 14];
-                       dob_out[15] <= mem[data_addrb_int + 15];
-                       dob_out[16] <= mem[data_addrb_int + 16];
-                       dob_out[17] <= mem[data_addrb_int + 17];
-                       dob_out[18] <= mem[data_addrb_int + 18];
-                       dob_out[19] <= mem[data_addrb_int + 19];
-                       dob_out[20] <= mem[data_addrb_int + 20];
-                       dob_out[21] <= mem[data_addrb_int + 21];
-                       dob_out[22] <= mem[data_addrb_int + 22];
-                       dob_out[23] <= mem[data_addrb_int + 23];
-                       dob_out[24] <= mem[data_addrb_int + 24];
-                       dob_out[25] <= mem[data_addrb_int + 25];
-                       dob_out[26] <= mem[data_addrb_int + 26];
-                       dob_out[27] <= mem[data_addrb_int + 27];
-                       dob_out[28] <= mem[data_addrb_int + 28];
-                       dob_out[29] <= mem[data_addrb_int + 29];
-                       dob_out[30] <= mem[data_addrb_int + 30];
-                       dob_out[31] <= mem[data_addrb_int + 31];
-                       dopb_out[0] <= mem[parity_addrb_int + 0];
-                       dopb_out[1] <= mem[parity_addrb_int + 1];
-                       dopb_out[2] <= mem[parity_addrb_int + 2];
-                       dopb_out[3] <= mem[parity_addrb_int + 3];
-                   end
-               end
-               else begin
-                   dob_out[0] <= mem[data_addrb_int + 0];
-                   dob_out[1] <= mem[data_addrb_int + 1];
-                   dob_out[2] <= mem[data_addrb_int + 2];
-                   dob_out[3] <= mem[data_addrb_int + 3];
-                   dob_out[4] <= mem[data_addrb_int + 4];
-                   dob_out[5] <= mem[data_addrb_int + 5];
-                   dob_out[6] <= mem[data_addrb_int + 6];
-                   dob_out[7] <= mem[data_addrb_int + 7];
-                   dob_out[8] <= mem[data_addrb_int + 8];
-                   dob_out[9] <= mem[data_addrb_int + 9];
-                   dob_out[10] <= mem[data_addrb_int + 10];
-                   dob_out[11] <= mem[data_addrb_int + 11];
-                   dob_out[12] <= mem[data_addrb_int + 12];
-                   dob_out[13] <= mem[data_addrb_int + 13];
-                   dob_out[14] <= mem[data_addrb_int + 14];
-                   dob_out[15] <= mem[data_addrb_int + 15];
-                   dob_out[16] <= mem[data_addrb_int + 16];
-                   dob_out[17] <= mem[data_addrb_int + 17];
-                   dob_out[18] <= mem[data_addrb_int + 18];
-                   dob_out[19] <= mem[data_addrb_int + 19];
-                   dob_out[20] <= mem[data_addrb_int + 20];
-                   dob_out[21] <= mem[data_addrb_int + 21];
-                   dob_out[22] <= mem[data_addrb_int + 22];
-                   dob_out[23] <= mem[data_addrb_int + 23];
-                   dob_out[24] <= mem[data_addrb_int + 24];
-                   dob_out[25] <= mem[data_addrb_int + 25];
-                   dob_out[26] <= mem[data_addrb_int + 26];
-                   dob_out[27] <= mem[data_addrb_int + 27];
-                   dob_out[28] <= mem[data_addrb_int + 28];
-                   dob_out[29] <= mem[data_addrb_int + 29];
-                   dob_out[30] <= mem[data_addrb_int + 30];
-                   dob_out[31] <= mem[data_addrb_int + 31];
-                   dopb_out[0] <= mem[parity_addrb_int + 0];
-                   dopb_out[1] <= mem[parity_addrb_int + 1];
-                   dopb_out[2] <= mem[parity_addrb_int + 2];
-                   dopb_out[3] <= mem[parity_addrb_int + 3];
-               end
-           end
-       end
-    end
-
-    always @(posedge clkb_int) begin
-       if (enb_int == 1'b1 && web_int == 1'b1) begin
-           mem[data_addrb_int + 0] <= dib_int[0];
-           mem[data_addrb_int + 1] <= dib_int[1];
-           mem[data_addrb_int + 2] <= dib_int[2];
-           mem[data_addrb_int + 3] <= dib_int[3];
-           mem[data_addrb_int + 4] <= dib_int[4];
-           mem[data_addrb_int + 5] <= dib_int[5];
-           mem[data_addrb_int + 6] <= dib_int[6];
-           mem[data_addrb_int + 7] <= dib_int[7];
-           mem[data_addrb_int + 8] <= dib_int[8];
-           mem[data_addrb_int + 9] <= dib_int[9];
-           mem[data_addrb_int + 10] <= dib_int[10];
-           mem[data_addrb_int + 11] <= dib_int[11];
-           mem[data_addrb_int + 12] <= dib_int[12];
-           mem[data_addrb_int + 13] <= dib_int[13];
-           mem[data_addrb_int + 14] <= dib_int[14];
-           mem[data_addrb_int + 15] <= dib_int[15];
-           mem[data_addrb_int + 16] <= dib_int[16];
-           mem[data_addrb_int + 17] <= dib_int[17];
-           mem[data_addrb_int + 18] <= dib_int[18];
-           mem[data_addrb_int + 19] <= dib_int[19];
-           mem[data_addrb_int + 20] <= dib_int[20];
-           mem[data_addrb_int + 21] <= dib_int[21];
-           mem[data_addrb_int + 22] <= dib_int[22];
-           mem[data_addrb_int + 23] <= dib_int[23];
-           mem[data_addrb_int + 24] <= dib_int[24];
-           mem[data_addrb_int + 25] <= dib_int[25];
-           mem[data_addrb_int + 26] <= dib_int[26];
-           mem[data_addrb_int + 27] <= dib_int[27];
-           mem[data_addrb_int + 28] <= dib_int[28];
-           mem[data_addrb_int + 29] <= dib_int[29];
-           mem[data_addrb_int + 30] <= dib_int[30];
-           mem[data_addrb_int + 31] <= dib_int[31];
-           mem[parity_addrb_int + 0] <= dipb_int[0];
-           mem[parity_addrb_int + 1] <= dipb_int[1];
-           mem[parity_addrb_int + 2] <= dipb_int[2];
-           mem[parity_addrb_int + 3] <= dipb_int[3];
-       end
-    end
-
-    specify
-       (CLKA *> DOA) = (100, 100);
-       (CLKA *> DOPA) = (100, 100);
-       (CLKB *> DOB) = (100, 100);
-       (CLKB *> DOPB) = (100, 100);
-    endspecify
-
-endmodule
-
-`else
-
-// $Header: /devl/xcs/repo/env/Databases/CAEInterfaces/verunilibs/data/unisims/RAMB16_S36_S36.v,v 1.9 2005/03/14 22:54:41 wloo Exp $
-///////////////////////////////////////////////////////////////////////////////
-// Copyright (c) 1995/2005 Xilinx, Inc.
-// All Right Reserved.
-///////////////////////////////////////////////////////////////////////////////
-//   ____  ____
-//  /   /\/   /
-// /___/  \  /    Vendor : Xilinx
-// \   \   \/     Version : 8.1i (I.13)
-//  \   \         Description : Xilinx Timing Simulation Library Component
-//  /   /                  16K-Bit Data and 2K-Bit Parity Dual Port Block RAM
-// /___/   /\     Filename : RAMB16_S36_S36.v
-// \   \  /  \    Timestamp : Thu Mar 10 16:44:01 PST 2005
-//  \___\/\___\
-//
-// Revision:
-//    03/23/04 - Initial version.
-//    03/10/05 - Initialized outputs.
-// End Revision
-
-`timescale 1 ps/1 ps
-
-module RAMB16_S36_S36 (DOA, DOB, DOPA, DOPB, ADDRA, ADDRB, CLKA, CLKB, DIA, DIB, DIPA, DIPB, ENA, ENB, SSRA, SSRB, WEA, WEB);
-
-    parameter INIT_A = 36'h0;
-    parameter INIT_B = 36'h0;
-    parameter SRVAL_A = 36'h0;
-    parameter SRVAL_B = 36'h0;
-    parameter WRITE_MODE_A = "WRITE_FIRST";
-    parameter WRITE_MODE_B = "WRITE_FIRST";
-    parameter SIM_COLLISION_CHECK = "ALL";
-    localparam SETUP_ALL = 1000;
-    localparam SETUP_READ_FIRST = 3000;
-
-    parameter INIT_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_08 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_09 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_0F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_10 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_11 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_12 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_13 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_14 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_15 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_16 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_17 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_18 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_19 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_1F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_20 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_21 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_22 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_23 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_24 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_25 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_26 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_27 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_28 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_29 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_2F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_30 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_31 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_32 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_33 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_34 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_35 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_36 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_37 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_38 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_00 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_01 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_02 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_03 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_04 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_05 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_06 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-    parameter INITP_07 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
-
-    output [31:0] DOA;
-    output [3:0] DOPA;
-    output [31:0] DOB;
-    output [3:0] DOPB;
-
-    input [8:0] ADDRA;
-    input [31:0] DIA;
-    input [3:0] DIPA;
-    input ENA, CLKA, WEA, SSRA;
-    input [8:0] ADDRB;
-    input [31:0] DIB;
-    input [3:0] DIPB;
-    input ENB, CLKB, WEB, SSRB;
-
-    reg [31:0] doa_out = INIT_A[31:0];
-    reg [3:0] dopa_out = INIT_A[35:32];
-    reg [31:0] dob_out = INIT_B[31:0];
-    reg [3:0] dopb_out = INIT_B[35:32];
-    
-    reg [31:0] mem [511:0];
-    reg [3:0] memp [511:0];
-    
-    reg [8:0] count, countp;
-    reg [1:0] wr_mode_a, wr_mode_b;
-
-    reg [5:0] dmi, dbi;
-    reg [5:0] pmi, pbi;
-
-    wire [8:0] addra_int;
-    reg [8:0] addra_reg;
-    wire [31:0] dia_int;
-    wire [3:0] dipa_int;
-    wire ena_int, clka_int, wea_int, ssra_int;
-    reg ena_reg, wea_reg, ssra_reg;
-    wire [8:0] addrb_int;
-    reg [8:0] addrb_reg;
-    wire [31:0] dib_int;
-    wire [3:0] dipb_int;
-    wire enb_int, clkb_int, web_int, ssrb_int;
-    reg display_flag, output_flag;
-    reg enb_reg, web_reg, ssrb_reg;
-
-    time time_clka, time_clkb;
-    time time_clka_clkb;
-    time time_clkb_clka;
-
-    reg setup_all_a_b;
-    reg setup_all_b_a;
-    reg setup_zero;
-    reg setup_rf_a_b;
-    reg setup_rf_b_a;
-    reg [1:0] data_collision, data_collision_a_b, data_collision_b_a;
-    reg memory_collision, memory_collision_a_b, memory_collision_b_a;
-    reg change_clka;
-    reg change_clkb;
-
-    wire [14:0] data_addra_int;
-    wire [14:0] data_addra_reg;
-    wire [14:0] data_addrb_int;
-    wire [14:0] data_addrb_reg;
-
-    wire dia_enable = ena_int && wea_int;
-    wire dib_enable = enb_int && web_int;
-
-    tri0 GSR = glbl.GSR;
-    wire gsr_int;
-
-    buf b_gsr (gsr_int, GSR);
-
-    buf b_doa [31:0] (DOA, doa_out);
-    buf b_dopa [3:0] (DOPA, dopa_out);
-    buf b_addra [8:0] (addra_int, ADDRA);
-    buf b_dia [31:0] (dia_int, DIA);
-    buf b_dipa [3:0] (dipa_int, DIPA);
-    buf b_ena (ena_int, ENA);
-    buf b_clka (clka_int, CLKA);
-    buf b_ssra (ssra_int, SSRA);
-    buf b_wea (wea_int, WEA);
-
-    buf b_dob [31:0] (DOB, dob_out);
-    buf b_dopb [3:0] (DOPB, dopb_out);
-    buf b_addrb [8:0] (addrb_int, ADDRB);
-    buf b_dib [31:0] (dib_int, DIB);
-    buf b_dipb [3:0] (dipb_int, DIPB);
-    buf b_enb (enb_int, ENB);
-    buf b_clkb (clkb_int, CLKB);
-    buf b_ssrb (ssrb_int, SSRB);
-    buf b_web (web_int, WEB);
-
-    
-    always @(gsr_int)
-       if (gsr_int) begin
-           assign {dopa_out, doa_out} = INIT_A;
-           assign {dopb_out, dob_out} = INIT_B;
-       end
-       else begin
-           deassign doa_out;
-           deassign dopa_out;
-           deassign dob_out;
-           deassign dopb_out;
-       end
-
-    initial begin : initialize_mems
-
-`ifdef UNDEFINED
-       for (count = 0; count < 8; count = count + 1) begin
-           mem[count]          = INIT_00[(count * 32) +: 32];
-           mem[8 * 1 + count]  = INIT_01[(count * 32) +: 32];
-           mem[8 * 2 + count]  = INIT_02[(count * 32) +: 32];
-           mem[8 * 3 + count]  = INIT_03[(count * 32) +: 32];
-           mem[8 * 4 + count]  = INIT_04[(count * 32) +: 32];
-           mem[8 * 5 + count]  = INIT_05[(count * 32) +: 32];
-           mem[8 * 6 + count]  = INIT_06[(count * 32) +: 32];
-           mem[8 * 7 + count]  = INIT_07[(count * 32) +: 32];
-           mem[8 * 8 + count]  = INIT_08[(count * 32) +: 32];
-           mem[8 * 9 + count]  = INIT_09[(count * 32) +: 32];
-           mem[8 * 10 + count] = INIT_0A[(count * 32) +: 32];
-           mem[8 * 11 + count] = INIT_0B[(count * 32) +: 32];
-           mem[8 * 12 + count] = INIT_0C[(count * 32) +: 32];
-           mem[8 * 13 + count] = INIT_0D[(count * 32) +: 32];
-           mem[8 * 14 + count] = INIT_0E[(count * 32) +: 32];
-           mem[8 * 15 + count] = INIT_0F[(count * 32) +: 32];
-           mem[8 * 16 + count] = INIT_10[(count * 32) +: 32];
-           mem[8 * 17 + count] = INIT_11[(count * 32) +: 32];
-           mem[8 * 18 + count] = INIT_12[(count * 32) +: 32];
-           mem[8 * 19 + count] = INIT_13[(count * 32) +: 32];
-           mem[8 * 20 + count] = INIT_14[(count * 32) +: 32];
-           mem[8 * 21 + count] = INIT_15[(count * 32) +: 32];
-           mem[8 * 22 + count] = INIT_16[(count * 32) +: 32];
-           mem[8 * 23 + count] = INIT_17[(count * 32) +: 32];
-           mem[8 * 24 + count] = INIT_18[(count * 32) +: 32];
-           mem[8 * 25 + count] = INIT_19[(count * 32) +: 32];
-           mem[8 * 26 + count] = INIT_1A[(count * 32) +: 32];
-           mem[8 * 27 + count] = INIT_1B[(count * 32) +: 32];
-           mem[8 * 28 + count] = INIT_1C[(count * 32) +: 32];
-           mem[8 * 29 + count] = INIT_1D[(count * 32) +: 32];
-           mem[8 * 30 + count] = INIT_1E[(count * 32) +: 32];
-           mem[8 * 31 + count] = INIT_1F[(count * 32) +: 32];
-           mem[8 * 32 + count] = INIT_20[(count * 32) +: 32];
-           mem[8 * 33 + count] = INIT_21[(count * 32) +: 32];
-           mem[8 * 34 + count] = INIT_22[(count * 32) +: 32];
-           mem[8 * 35 + count] = INIT_23[(count * 32) +: 32];
-           mem[8 * 36 + count] = INIT_24[(count * 32) +: 32];
-           mem[8 * 37 + count] = INIT_25[(count * 32) +: 32];
-           mem[8 * 38 + count] = INIT_26[(count * 32) +: 32];
-           mem[8 * 39 + count] = INIT_27[(count * 32) +: 32];
-           mem[8 * 40 + count] = INIT_28[(count * 32) +: 32];
-           mem[8 * 41 + count] = INIT_29[(count * 32) +: 32];
-           mem[8 * 42 + count] = INIT_2A[(count * 32) +: 32];
-           mem[8 * 43 + count] = INIT_2B[(count * 32) +: 32];
-           mem[8 * 44 + count] = INIT_2C[(count * 32) +: 32];
-           mem[8 * 45 + count] = INIT_2D[(count * 32) +: 32];
-           mem[8 * 46 + count] = INIT_2E[(count * 32) +: 32];
-           mem[8 * 47 + count] = INIT_2F[(count * 32) +: 32];
-           mem[8 * 48 + count] = INIT_30[(count * 32) +: 32];
-           mem[8 * 49 + count] = INIT_31[(count * 32) +: 32];
-           mem[8 * 50 + count] = INIT_32[(count * 32) +: 32];
-           mem[8 * 51 + count] = INIT_33[(count * 32) +: 32];
-           mem[8 * 52 + count] = INIT_34[(count * 32) +: 32];
-           mem[8 * 53 + count] = INIT_35[(count * 32) +: 32];
-           mem[8 * 54 + count] = INIT_36[(count * 32) +: 32];
-           mem[8 * 55 + count] = INIT_37[(count * 32) +: 32];
-           mem[8 * 56 + count] = INIT_38[(count * 32) +: 32];
-           mem[8 * 57 + count] = INIT_39[(count * 32) +: 32];
-           mem[8 * 58 + count] = INIT_3A[(count * 32) +: 32];
-           mem[8 * 59 + count] = INIT_3B[(count * 32) +: 32];
-           mem[8 * 60 + count] = INIT_3C[(count * 32) +: 32];
-           mem[8 * 61 + count] = INIT_3D[(count * 32) +: 32];
-           mem[8 * 62 + count] = INIT_3E[(count * 32) +: 32];
-           mem[8 * 63 + count] = INIT_3F[(count * 32) +: 32];
-       end
-`else
-      integer i;
-      for (i = 0; i < 512; i = i + 1)
-        begin
-          mem[i] = 0;
-          memp[i] = 0;
-        end
-
-`endif
-
-// initiate parity start
-`ifdef UNDEFINED
-       for (countp = 0; countp < 64; countp = countp + 1) begin
-           memp[countp]          = INITP_00[(countp * 4) +: 4];
-           memp[64 * 1 + countp] = INITP_01[(countp * 4) +: 4];
-           memp[64 * 2 + countp] = INITP_02[(countp * 4) +: 4];
-           memp[64 * 3 + countp] = INITP_03[(countp * 4) +: 4];
-           memp[64 * 4 + countp] = INITP_04[(countp * 4) +: 4];
-           memp[64 * 5 + countp] = INITP_05[(countp * 4) +: 4];
-           memp[64 * 6 + countp] = INITP_06[(countp * 4) +: 4];
-           memp[64 * 7 + countp] = INITP_07[(countp * 4) +: 4];
-       end
-`endif
-// initiate parity end
-       
-       change_clka <= 0;
-       change_clkb <= 0;
-       data_collision <= 0;
-       data_collision_a_b <= 0;
-       data_collision_b_a <= 0;
-       memory_collision <= 0;
-       memory_collision_a_b <= 0;
-       memory_collision_b_a <= 0;
-       setup_all_a_b <= 0;
-       setup_all_b_a <= 0;
-       setup_zero <= 0;
-       setup_rf_a_b <= 0;
-       setup_rf_b_a <= 0;
-    end
-
-    assign data_addra_int = addra_int * 32;
-    assign data_addra_reg = addra_reg * 32;
-    assign data_addrb_int = addrb_int * 32;
-    assign data_addrb_reg = addrb_reg * 32;
-
-
-    initial begin
-
-       display_flag = 1;
-       output_flag = 1;
-       
-       case (SIM_COLLISION_CHECK)
-
-           "NONE" : begin
-                        output_flag = 0;
-                        display_flag = 0;
-                    end
-           "WARNING_ONLY" : output_flag = 0;
-           "GENERATE_ONLY" : display_flag = 0;
-           "ALL" : ;
-
-           default : begin
-                         $display("Attribute Syntax Error : The Attribute SIM_COLLISION_CHECK on RAMB16_S36_S36 instance %m is set to %s.  Legal values for this attribute are ALL, NONE, WARNING_ONLY or GENERATE_ONLY.", SIM_COLLISION_CHECK);
-                         $finish;
-                     end
-
-       endcase // case(SIM_COLLISION_CHECK)
-
-    end // initial begin
-
-    
-    always @(posedge clka_int) begin
-       if ((output_flag || display_flag)) begin
-           time_clka = $time;
-           #0 time_clkb_clka = time_clka - time_clkb;
-           change_clka = ~change_clka;
-       end
-    end
-    
-    always @(posedge clkb_int) begin
-       if ((output_flag || display_flag)) begin
-           time_clkb = $time;
-           #0 time_clka_clkb = time_clkb - time_clka;
-           change_clkb = ~change_clkb;
-       end
-    end
-    
-    always @(change_clkb) begin
-       if ((0 < time_clka_clkb) && (time_clka_clkb < SETUP_ALL))
-           setup_all_a_b = 1;
-       if ((0 < time_clka_clkb) && (time_clka_clkb < SETUP_READ_FIRST))
-           setup_rf_a_b = 1;
-    end
-
-    always @(change_clka) begin
-       if ((0 < time_clkb_clka) && (time_clkb_clka < SETUP_ALL))
-           setup_all_b_a = 1;
-       if ((0 < time_clkb_clka) && (time_clkb_clka < SETUP_READ_FIRST))
-           setup_rf_b_a = 1;
-    end
-
-    always @(change_clkb or change_clka) begin
-       if ((time_clkb_clka == 0) && (time_clka_clkb == 0))
-           setup_zero = 1;
-    end
-
-    always @(posedge setup_zero) begin
-       if ((ena_int == 1) && (wea_int == 1) &&
-           (enb_int == 1) && (web_int == 1) &&
-           (data_addra_int[14:5] == data_addrb_int[14:5]))
-           memory_collision <= 1;
-    end
-
-    always @(posedge setup_all_a_b or posedge setup_rf_a_b) begin
-       if ((ena_reg == 1) && (wea_reg == 1) &&
-           (enb_int == 1) && (web_int == 1) &&
-           (data_addra_reg[14:5] == data_addrb_int[14:5]))
-           memory_collision_a_b <= 1;
-    end
-
-    always @(posedge setup_all_b_a or posedge setup_rf_b_a) begin
-       if ((ena_int == 1) && (wea_int == 1) &&
-           (enb_reg == 1) && (web_reg == 1) &&
-           (data_addra_int[14:5] == data_addrb_reg[14:5]))
-           memory_collision_b_a <= 1;
-    end
-
-    always @(posedge setup_all_a_b) begin
-       if (data_addra_reg[14:5] == data_addrb_int[14:5]) begin
-       if ((ena_reg == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_reg, web_int})
-               6'b000011 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b000111 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b001011 : begin data_collision_a_b <= 2'b10; display_wa_wb; end
-//             6'b010011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b010111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b011011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-               6'b100011 : begin data_collision_a_b <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision_a_b <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b000101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b001001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b010101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b011001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-//             6'b100101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-               6'b101001 : begin data_collision_a_b <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_all_a_b <= 0;
-    end
-
-
-    always @(posedge setup_all_b_a) begin
-       if (data_addra_int[14:5] == data_addrb_reg[14:5]) begin
-       if ((ena_int == 1) && (enb_reg == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_reg})
-               6'b000011 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b000111 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b001011 : begin data_collision_b_a <= 2'b10; display_wa_wb; end
-               6'b010011 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b010111 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b011011 : begin data_collision_b_a <= 2'b10; display_wa_wb; end
-               6'b100011 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b000101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b001001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b010101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b011001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b100101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b101001 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision_b_a <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_all_b_a <= 0;
-    end
-
-
-    always @(posedge setup_zero) begin
-       if (data_addra_int[14:5] == data_addrb_int[14:5]) begin
-       if ((ena_int == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_int})
-               6'b000011 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b000111 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b001011 : begin data_collision <= 2'b10; display_wa_wb; end
-               6'b010011 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b010111 : begin data_collision <= 2'b11; display_wa_wb; end
-               6'b011011 : begin data_collision <= 2'b10; display_wa_wb; end
-               6'b100011 : begin data_collision <= 2'b01; display_wa_wb; end
-               6'b100111 : begin data_collision <= 2'b01; display_wa_wb; end
-               6'b101011 : begin display_wa_wb; end
-               6'b000001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b000101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b001001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b010001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b010101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b011001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b100001 : begin data_collision <= 2'b10; display_ra_wb; end
-//             6'b100101 : begin data_collision <= 2'b00; display_ra_wb; end
-               6'b101001 : begin data_collision <= 2'b10; display_ra_wb; end
-               6'b000010 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b000110 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b001010 : begin data_collision <= 2'b01; display_wa_rb; end
-//             6'b010010 : begin data_collision <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision <= 2'b00; display_wa_rb; end
-               6'b100010 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b100110 : begin data_collision <= 2'b01; display_wa_rb; end
-               6'b101010 : begin data_collision <= 2'b01; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_zero <= 0;
-    end
-
-    task display_ra_wb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S36_S36:%m at simulation time %.3f ns\nA read was performed on address %h (hex) of Port A while a write was requested to the same address on Port B. The write will be successful however the read value on Port A is unknown until the next CLKA cycle.", $time/1000.0, addra_int);
-    end
-    endtask
-
-    task display_wa_rb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S36_S36:%m at simulation time %.3f ns\nA read was performed on address %h (hex) of Port B while a write was requested to the same address on Port A. The write will be successful however the read value on Port B is unknown until the next CLKB cycle.", $time/1000.0, addrb_int);
-    end
-    endtask
-
-    task display_wa_wb;
-    begin
-       if (display_flag)
-        $display("Memory Collision Error on RAMB16_S36_S36:%m at simulation time %.3f ns\nA write was requested to the same address simultaneously at both Port A and Port B of the RAM. The contents written to the RAM at address location %h (hex) of Port A and address location %h (hex) of Port B are unknown.", $time/1000.0, addra_int, addrb_int);
-    end
-    endtask
-
-
-    always @(posedge setup_rf_a_b) begin
-       if (data_addra_reg[14:5] == data_addrb_int[14:5]) begin
-       if ((ena_reg == 1) && (enb_int == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_reg, web_int})
-//             6'b000011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b000111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b001011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-               6'b010011 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b010111 : begin data_collision_a_b <= 2'b11; display_wa_wb; end
-               6'b011011 : begin data_collision_a_b <= 2'b10; display_wa_wb; end
-//             6'b100011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b100111 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b101011 : begin data_collision_a_b <= 2'b00; display_wa_wb; end
-//             6'b000001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b000101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b001001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b010001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b010101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b011001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b100001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b100101 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b101001 : begin data_collision_a_b <= 2'b00; display_ra_wb; end
-//             6'b000010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b000110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b001010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-               6'b010010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b010110 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-               6'b011010 : begin data_collision_a_b <= 2'b01; display_wa_rb; end
-//             6'b100010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b100110 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-//             6'b101010 : begin data_collision_a_b <= 2'b00; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_rf_a_b <= 0;
-    end
-
-
-    always @(posedge setup_rf_b_a) begin
-       if (data_addra_int[14:5] == data_addrb_reg[14:5]) begin
-       if ((ena_int == 1) && (enb_reg == 1)) begin
-           case ({wr_mode_a, wr_mode_b, wea_int, web_reg})
-//             6'b000011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b000111 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b001011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b010011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b010111 : begin data_collision_b_a <= 2'b11; display_wa_wb; end
-//             6'b011011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b100011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-               6'b100111 : begin data_collision_b_a <= 2'b01; display_wa_wb; end
-//             6'b101011 : begin data_collision_b_a <= 2'b00; display_wa_wb; end
-//             6'b000001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b000101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b001001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b010001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b010101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b011001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b100001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-               6'b100101 : begin data_collision_b_a <= 2'b10; display_ra_wb; end
-//             6'b101001 : begin data_collision_b_a <= 2'b00; display_ra_wb; end
-//             6'b000010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b000110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b001010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b010110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b011010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b100010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b100110 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-//             6'b101010 : begin data_collision_b_a <= 2'b00; display_wa_rb; end
-           endcase
-       end
-       end
-       setup_rf_b_a <= 0;
-    end
-
-
-    always @(posedge clka_int) begin
-       if ((output_flag || display_flag)) begin
-           addra_reg <= addra_int;
-           ena_reg <= ena_int;
-           ssra_reg <= ssra_int;
-           wea_reg <= wea_int;
-       end
-    end
-    
-    always @(posedge clkb_int) begin
-       if ((output_flag || display_flag)) begin
-           addrb_reg <= addrb_int;
-           enb_reg <= enb_int;
-           ssrb_reg <= ssrb_int;
-           web_reg <= web_int;
-       end
-    end
-    
-           
-    // Data
-    always @(posedge memory_collision) begin
-       if ((output_flag || display_flag)) begin
-           mem[addra_int] <= 32'bx;
-           memory_collision <= 0;
-       end
-       
-    end
-
-    always @(posedge memory_collision_a_b) begin
-       if ((output_flag || display_flag)) begin
-           mem[addra_reg] <= 32'bx;
-           memory_collision_a_b <= 0;
-       end
-    end
-    
-    always @(posedge memory_collision_b_a) begin
-       if ((output_flag || display_flag)) begin
-           mem[addra_int] <= 32'bx;
-           memory_collision_b_a <= 0;
-       end
-    end
-    
-    always @(posedge data_collision[1]) begin
-       if (ssra_int == 0 && output_flag) begin
-           doa_out <= #100 32'bX;
-       end
-       data_collision[1] <= 0;
-    end
-
-    always @(posedge data_collision[0]) begin
-       if (ssrb_int == 0 && output_flag) begin
-           dob_out <= #100 32'bX;
-       end
-       data_collision[0] <= 0;
-    end
-
-    always @(posedge data_collision_a_b[1]) begin
-       if (ssra_reg == 0 && output_flag) begin
-           doa_out <= #100 32'bX;
-       end
-       data_collision_a_b[1] <= 0;
-    end
-
-    always @(posedge data_collision_a_b[0]) begin
-       if (ssrb_int == 0 && output_flag) begin
-           dob_out <= #100 32'bX;
-       end
-       data_collision_a_b[0] <= 0;
-    end
-
-    always @(posedge data_collision_b_a[1]) begin
-       if (ssra_int == 0 && output_flag) begin
-           doa_out <= #100 32'bX;
-       end
-       data_collision_b_a[1] <= 0;
-    end
-
-    always @(posedge data_collision_b_a[0]) begin
-       if (ssrb_reg == 0 && output_flag) begin
-           dob_out <= #100 32'bX;
-       end
-       data_collision_b_a[0] <= 0;
-    end
-
-// x parity start
-    always @(posedge memory_collision) begin
-       if ((output_flag || display_flag))
-           memp[addra_int] <= 4'bx;
-    end
-
-    always @(posedge memory_collision_a_b) begin
-       if ((output_flag || display_flag))
-           memp[addra_reg] <= 4'bx;
-    end
-
-    always @(posedge memory_collision_b_a) begin
-       if ((output_flag || display_flag))
-           memp[addra_int] <= 4'bx;
-    end
-    
-    always @(posedge data_collision[1]) begin
-       if (ssra_int == 0 && output_flag) begin
-           dopa_out <= #100 4'bX;
-       end
-    end
-
-    always @(posedge data_collision_a_b[1]) begin
-       if (ssra_reg == 0 && output_flag) begin
-           dopa_out <= #100 4'bX;
-       end
-    end
-
-    
-    always @(posedge data_collision_b_a[1]) begin
-       if (ssra_int == 0 && output_flag) begin
-           dopa_out <= #100 4'bX;
-       end
-    end
-
-    always @(posedge data_collision[0]) begin
-       if (ssrb_int == 0 && output_flag) begin
-           dopb_out <= #100 4'bx;
-       end
-    end
-
-    always @(posedge data_collision_a_b[0]) begin
-       if (ssrb_int == 0 && output_flag) begin
-           dopb_out <= #100 4'bx;
-       end
-    end
-
-    always @(posedge data_collision_b_a[0]) begin
-       if (ssrb_reg == 0 && output_flag) begin
-           dopb_out <= #100 4'bx;
-       end
-    end
-// x parity end
-
-    initial begin
-       case (WRITE_MODE_A)
-           "WRITE_FIRST" : wr_mode_a <= 2'b00;
-           "READ_FIRST"  : wr_mode_a <= 2'b01;
-           "NO_CHANGE"   : wr_mode_a <= 2'b10;
-           default       : begin
-                               $display("Attribute Syntax Error : The Attribute WRITE_MODE_A on RAMB16_S36_S36 instance %m is set to %s.  Legal values for this attribute are WRITE_FIRST, READ_FIRST or NO_CHANGE.", WRITE_MODE_A);
-                               $finish;
-                           end
-       endcase
-    end
-
-    initial begin
-       case (WRITE_MODE_B)
-           "WRITE_FIRST" : wr_mode_b <= 2'b00;
-           "READ_FIRST"  : wr_mode_b <= 2'b01;
-           "NO_CHANGE"   : wr_mode_b <= 2'b10;
-           default       : begin
-                               $display("Attribute Syntax Error : The Attribute WRITE_MODE_B on RAMB16_S36_S36 instance %m is set to %s.  Legal values for this attribute are WRITE_FIRST, READ_FIRST or NO_CHANGE.", WRITE_MODE_B);
-                               $finish;
-                           end
-       endcase
-    end
-
-
-    // Port A
-    always @(posedge clka_int) begin
-
-       if (ena_int == 1'b1) begin
-
-           if (ssra_int == 1'b1) begin
-               {dopa_out, doa_out} <= #100 SRVAL_A;
-           end
-           else begin
-               if (wea_int == 1'b1) begin
-                   if (wr_mode_a == 2'b00) begin
-                       doa_out <= #100 dia_int;
-                       dopa_out <= #100 dipa_int;
-                   end
-                   else if (wr_mode_a == 2'b01) begin
-
-                       doa_out <= #100 mem[addra_int];
-                       dopa_out <= #100 memp[addra_int];
-
-                   end
-               end
-               else begin
-
-                   doa_out <= #100 mem[addra_int];
-                   dopa_out <= #100 memp[addra_int];
-                   
-               end
-           end
-
-           // memory
-           if (wea_int == 1'b1) begin
-               mem[addra_int] <= dia_int;
-               memp[addra_int] <= dipa_int;
-           end
-           
-       end
-    end
-
-
-    // Port B
-    always @(posedge clkb_int) begin
-
-       if (enb_int == 1'b1) begin
-
-           if (ssrb_int == 1'b1) begin
-               {dopb_out, dob_out} <= #100 SRVAL_B;
-           end
-           else begin
-               if (web_int == 1'b1) begin
-                   if (wr_mode_b == 2'b00) begin
-                       dob_out <= #100 dib_int;
-                       dopb_out <= #100 dipb_int;
-                   end
-                   else if (wr_mode_b == 2'b01) begin
-                       dob_out <= #100 mem[addrb_int];
-                       dopb_out <= #100 memp[addrb_int];
-                   end
-               end
-               else begin
-                   dob_out <= #100 mem[addrb_int];
-                   dopb_out <= #100 memp[addrb_int];
-               end
-           end
-
-           // memory
-           if (web_int == 1'b1) begin
-               mem[addrb_int] <= dib_int;
-               memp[addrb_int] <= dipb_int;
-           end
-
-       end
-    end
-
-
-endmodule
-
-`endif
diff --git a/usrp2/fpga/eth/rtl/verilog/elastic_buffer.v b/usrp2/fpga/eth/rtl/verilog/elastic_buffer.v
deleted file mode 100644 (file)
index 56c821b..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-module elastic_buffer
-  ( input rx_clk,
-    input tx_clk,
-    input rst,
-    
-    input [7:0] rxd,
-    input      rx_dv,
-    input      rx_er,
-    input      crs,
-    input      col,
-    
-    output [7:0] rxd_ret,
-    output      rx_dv_ret,
-    output      rx_er_ret,
-    output      crs_ret,
-    output      col_ret );
-
-   reg [3:0]    addr_wr,addr_wr_gray,awg_d1,awg_d2,addr_wr_gray_ret,awgr_d1,addr_wr_ungray,addr_rd;
-   
-   reg [11:0]   buffer [0:15];
-   integer      i;
-   initial
-     for(i=0;i<16;i=i+1)
-       buffer[i] <= 0;
-   
-   reg [7:0]    rxd_d1, rxd_d2;
-   reg                  rx_dv_d1,rx_er_d1,crs_d1,col_d1, rx_dv_d2,rx_er_d2,crs_d2,col_d2;               
-   wire         rx_dv_ret_adv;
-   reg                  rx_dv_ontime;
-
-   always @(posedge rx_clk)
-     {col_d1,crs_d1,rx_er_d1,rx_dv_d1,rxd_d1} <= {col,crs,rx_er,rx_dv,rxd};
-
-   always @(posedge rx_clk)
-     {col_d2,crs_d2,rx_er_d2,rx_dv_d2,rxd_d2} <= {col_d1,crs_d1,rx_er_d1,rx_dv_d1,rxd_d1};
-   
-   always @(posedge rx_clk)
-     buffer[addr_wr] <= {col_d2,crs_d2,rx_er_d2,rx_dv_d1,rxd_d2};
-   
-   always @(posedge rx_clk or posedge rst)
-     if(rst) addr_wr <= 0;
-     else addr_wr <= addr_wr + 1;
-   
-   always @(posedge rx_clk)
-     begin
-       addr_wr_gray <= {addr_wr[3],^addr_wr[3:2],^addr_wr[2:1],^addr_wr[1:0]};
-       awg_d1 <= addr_wr_gray;
-       awg_d2 <= awg_d1;
-     end
-   
-   always @(posedge tx_clk)
-     begin
-       addr_wr_gray_ret <= awg_d2;
-       awgr_d1 <= addr_wr_gray_ret;
-       addr_wr_ungray <= {awgr_d1[3],^awgr_d1[3:2],^awgr_d1[3:1],^awgr_d1[3:0]};
-     end
-
-   wire [3:0] addr_delta = addr_rd-addr_wr_ungray;
-   reg         [1:0] direction;
-   localparam retard = 2'd0;
-   localparam good = 2'd1;
-   localparam advance = 2'd2;
-   localparam wayoff = 2'd3;
-   
-   always @*
-     case(addr_delta)
-       4'd1, 4'd2, 4'd3, 4'd4, 4'd5 : direction <= retard;
-       4'd15, 4'd14, 4'd13, 4'd12, 4'd11 : direction <= advance;
-       4'd0 : direction <= good;
-       default : direction <= wayoff;
-     endcase // case(addr_delta)
-       
-   always @(posedge tx_clk or posedge rst)
-     if(rst)
-       addr_rd <= 0;
-     else if(rx_dv_ret_adv | rx_dv_ontime)
-       addr_rd <= addr_rd + 1;
-     else
-       case(direction)
-        retard : addr_rd <= addr_rd;
-        advance : addr_rd <= addr_rd + 2;
-        good : addr_rd <= addr_rd + 1;
-        wayoff : addr_rd <= addr_wr_ungray;
-       endcase // case(direction)
-   
-   assign     {col_ret,crs_ret,rx_er_ret,rx_dv_ret_adv,rxd_ret} = buffer[addr_rd];
-   always @(posedge tx_clk)
-     rx_dv_ontime <= rx_dv_ret_adv;
-
-   assign       rx_dv_ret = rx_dv_ontime;
-endmodule // elastic_buffer
diff --git a/usrp2/fpga/eth/rtl/verilog/elastic_buffer_tb.v b/usrp2/fpga/eth/rtl/verilog/elastic_buffer_tb.v
deleted file mode 100644 (file)
index 757049e..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-
-module elastic_buffer_tb;
-
-   reg               rx_clk = 0, tx_clk = 0, rst = 1;
-
-   reg [7:0]  rxd;
-   wire [7:0] rxd_ret;
-   reg               rx_dv, rx_er, crs, col;
-   wire       rx_dv_ret, rx_er_ret, crs_ret, col_ret;
-   
-   elastic_buffer elastic_buffer
-     (.rx_clk(rx_clk),.tx_clk(tx_clk),.rst(rst),
-      .rxd(rxd),.rx_dv(rx_dv),.rx_er(rx_er),.crs(crs),.col(col),
-      .rxd_ret(rxd_ret),.rx_dv_ret(rx_dv_ret),.rx_er_ret(rx_er_ret),
-      .crs_ret(crs_ret),.col_ret(col_ret) );
-
-   always #100 rx_clk = ~rx_clk;
-   always #101 tx_clk = ~tx_clk;
-   initial #950 rst = 0;
-
-   initial    
-     begin
-       {col,crs,rx_er,rx_dv,rxd} <= 0;
-       @(negedge rst);
-       @(posedge rx_clk);
-
-       repeat (13)
-         begin
-            repeat (284)
-              @(posedge rx_clk);
-            SendPKT;
-         end
-       repeat (100)
-         @(posedge rx_clk);
-       $finish;
-     end // initial begin
-
-   reg [7:0] rxd_ret_d1;
-   always @(posedge tx_clk)
-     rxd_ret_d1 <= rxd_ret;
-   
-   wire [7:0] diff = rxd_ret_d1 - rxd_ret;
-
-   wire       error = rx_dv_ret && (diff != 8'hFF);
-   
-   task SendPKT;
-      begin
-        {col,crs,rx_er,rx_dv,rxd} <= 0;
-        @(posedge rx_clk);
-        {col,crs,rx_er,rx_dv,rxd} <= {4'hF,8'd1};
-        @(posedge rx_clk);
-        repeat (250)
-          begin
-             rxd <= rxd + 1;
-             @(posedge rx_clk);
-          end
-        {col,crs,rx_er,rx_dv,rxd} <= 0;
-        @(posedge rx_clk);
-      end
-   endtask // SendPKT
-          
-   initial begin
-      $dumpfile("elastic_buffer_tb.vcd");
-      $dumpvars(0,elastic_buffer_tb);
-   end
-endmodule // elastic_buffer_tb
diff --git a/usrp2/fpga/eth/rtl/verilog/eth_miim.v b/usrp2/fpga/eth/rtl/verilog/eth_miim.v
deleted file mode 100644 (file)
index a15c942..0000000
+++ /dev/null
@@ -1,470 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  eth_miim.v                                                  ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects/ethmac/                   ////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Igor Mohor (igorM@opencores.org)                      ////\r
-////                                                              ////\r
-////  All additional information is avaliable in the Readme.txt   ////\r
-////  file.                                                       ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//\r
-// CVS Revision History\r
-//\r
-// $Log: eth_miim.v,v $\r
-// Revision 1.3  2006/01/19 14:07:53  maverickist\r
-// verification is complete.\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:44  Administrator\r
-// no message\r
-//\r
-// Revision 1.4  2005/08/16 12:07:57  Administrator\r
-// no message\r
-//\r
-// Revision 1.3  2005/05/19 07:04:29  Administrator\r
-// no message\r
-//\r
-// Revision 1.2  2005/04/27 15:58:46  Administrator\r
-// no message\r
-//\r
-// Revision 1.1.1.1  2004/12/15 06:38:54  Administrator\r
-// no message\r
-//\r
-// Revision 1.5  2003/05/16 10:08:27  mohor\r
-// Busy was set 2 cycles too late. Reported by Dennis Scott.\r
-//\r
-// Revision 1.4  2002/08/14 18:32:10  mohor\r
-// - Busy signal was not set on time when scan status operation was performed\r
-// and clock was divided with more than 2.\r
-// - Nvalid remains valid two more clocks (was previously cleared too soon).\r
-//\r
-// Revision 1.3  2002/01/23 10:28:16  mohor\r
-// Link in the header changed.\r
-//\r
-// Revision 1.2  2001/10/19 08:43:51  mohor\r
-// eth_timescale.v changed to timescale.v This is done because of the\r
-// simulation of the few cores in a one joined project.\r
-//\r
-// Revision 1.1  2001/08/06 14:44:29  mohor\r
-// A define FPGA added to select between Artisan RAM (for ASIC) and Block Ram (For Virtex).\r
-// Include files fixed to contain no path.\r
-// File names and module names changed ta have a eth_ prologue in the name.\r
-// File eth_timescale.v is used to define timescale\r
-// All pin names on the top module are changed to contain _I, _O or _OE at the end.\r
-// Bidirectional signal MDIO is changed to three signals (Mdc_O, Mdi_I, Mdo_O\r
-// and Mdo_OE. The bidirectional signal must be created on the top level. This\r
-// is done due to the ASIC tools.\r
-//\r
-// Revision 1.2  2001/08/02 09:25:31  mohor\r
-// Unconnected signals are now connected.\r
-//\r
-// Revision 1.1  2001/07/30 21:23:42  mohor\r
-// Directory structure changed. Files checked and joind together.\r
-//\r
-// Revision 1.3  2001/06/01 22:28:56  mohor\r
-// This files (MIIM) are fully working. They were thoroughly tested. The testbench is not updated.\r
-//\r
-//\r
-\r
-module eth_miim\r
-(\r
-  Clk,\r
-  Reset,\r
-  Divider,\r
-  NoPre,\r
-  CtrlData,\r
-  Rgad,\r
-  Fiad,\r
-  WCtrlData,\r
-  RStat,\r
-  ScanStat,\r
-  Mdio,\r
-  Mdc,\r
-  Busy,\r
-  Prsd,\r
-  LinkFail,\r
-  Nvalid,\r
-  WCtrlDataStart,\r
-  RStatStart,\r
-  UpdateMIIRX_DATAReg\r
-);\r
-\r
-input         Clk;                // Host Clock\r
-input         Reset;              // General Reset\r
-input   [7:0] Divider;            // Divider for the host clock\r
-input  [15:0] CtrlData;           // Control Data (to be written to the PHY reg.)\r
-input   [4:0] Rgad;               // Register Address (within the PHY)\r
-input   [4:0] Fiad;               // PHY Address\r
-input         NoPre;              // No Preamble (no 32-bit preamble)\r
-input         WCtrlData;          // Write Control Data operation\r
-input         RStat;              // Read Status operation\r
-input         ScanStat;           // Scan Status operation\r
-inout         Mdio;                // MII Management Data In\r
-\r
-output        Mdc;                // MII Management Data Clock\r
-\r
-output        Busy;               // Busy Signal\r
-output        LinkFail;           // Link Integrity Signal\r
-output        Nvalid;             // Invalid Status (qualifier for the valid scan result)\r
-\r
-output [15:0] Prsd;               // Read Status Data (data read from the PHY)\r
-\r
-output        WCtrlDataStart;     // This signals resets the WCTRLDATA bit in the MIIM Command register\r
-output        RStatStart;         // This signal resets the RSTAT BIT in the MIIM Command register\r
-output        UpdateMIIRX_DATAReg;// Updates MII RX_DATA register with read data\r
-\r
-//parameter Tp = 1;\r
-\r
-\r
-reg           Nvalid;\r
-reg           EndBusy_d;          // Pre-end Busy signal\r
-reg           EndBusy;            // End Busy signal (stops the operation in progress)\r
-\r
-reg           WCtrlData_q1;       // Write Control Data operation delayed 1 Clk cycle\r
-reg           WCtrlData_q2;       // Write Control Data operation delayed 2 Clk cycles\r
-reg           WCtrlData_q3;       // Write Control Data operation delayed 3 Clk cycles\r
-reg           WCtrlDataStart;     // Start Write Control Data Command (positive edge detected)\r
-reg           WCtrlDataStart_q;\r
-reg           WCtrlDataStart_q1;  // Start Write Control Data Command delayed 1 Mdc cycle\r
-reg           WCtrlDataStart_q2;  // Start Write Control Data Command delayed 2 Mdc cycles\r
-\r
-reg           RStat_q1;           // Read Status operation delayed 1 Clk cycle\r
-reg           RStat_q2;           // Read Status operation delayed 2 Clk cycles\r
-reg           RStat_q3;           // Read Status operation delayed 3 Clk cycles\r
-reg           RStatStart;         // Start Read Status Command (positive edge detected)\r
-reg           RStatStart_q1;      // Start Read Status Command delayed 1 Mdc cycle\r
-reg           RStatStart_q2;      // Start Read Status Command delayed 2 Mdc cycles\r
-\r
-reg           ScanStat_q1;        // Scan Status operation delayed 1 cycle\r
-reg           ScanStat_q2;        // Scan Status operation delayed 2 cycles\r
-reg           SyncStatMdcEn;      // Scan Status operation delayed at least cycles and synchronized to MdcEn\r
-\r
-wire          WriteDataOp;        // Write Data Operation (positive edge detected)\r
-wire          ReadStatusOp;       // Read Status Operation (positive edge detected)\r
-wire          ScanStatusOp;       // Scan Status Operation (positive edge detected)\r
-wire          StartOp;            // Start Operation (start of any of the preceding operations)\r
-wire          EndOp;              // End of Operation\r
-\r
-reg           InProgress;         // Operation in progress\r
-reg           InProgress_q1;      // Operation in progress delayed 1 Mdc cycle\r
-reg           InProgress_q2;      // Operation in progress delayed 2 Mdc cycles\r
-reg           InProgress_q3;      // Operation in progress delayed 3 Mdc cycles\r
-\r
-reg           WriteOp;            // Write Operation Latch (When asserted, write operation is in progress)\r
-reg     [6:0] BitCounter;         // Bit Counter\r
-\r
-\r
-wire    [3:0] ByteSelect;         // Byte Select defines which byte (preamble, data, operation, etc.) is loaded and shifted through the shift register.\r
-wire          MdcEn;              // MII Management Data Clock Enable signal is asserted for one Clk period before Mdc rises.\r
-wire          ShiftedBit;         // This bit is output of the shift register and is connected to the Mdo signal\r
-\r
-\r
-wire          LatchByte1_d2;\r
-wire          LatchByte0_d2;\r
-reg           LatchByte1_d;\r
-reg           LatchByte0_d;\r
-reg     [1:0] LatchByte;          // Latch Byte selects which part of Read Status Data is updated from the shift register\r
-\r
-reg           UpdateMIIRX_DATAReg;// Updates MII RX_DATA register with read data\r
-\r
-wire        Mdo;                // MII Management Data Output\r
-wire        MdoEn;              // MII Management Data Output Enable\r
-wire           Mdi;\r
-\r
-assign  Mdi=Mdio;\r
-assign  Mdio=MdoEn?Mdo:1'bz;\r
-\r
-\r
-\r
-// Generation of the EndBusy signal. It is used for ending the MII Management operation.\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    begin\r
-      EndBusy_d <= 1'b0;\r
-      EndBusy <= 1'b0;\r
-    end\r
-  else\r
-    begin\r
-      EndBusy_d <= ~InProgress_q2 & InProgress_q3;\r
-      EndBusy   <= EndBusy_d;\r
-    end\r
-end\r
-\r
-\r
-// Update MII RX_DATA register\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    UpdateMIIRX_DATAReg <= 0;\r
-  else\r
-  if(EndBusy & ~WCtrlDataStart_q)\r
-    UpdateMIIRX_DATAReg <= 1;\r
-  else\r
-    UpdateMIIRX_DATAReg <= 0;    \r
-end\r
-\r
-\r
-\r
-// Generation of the delayed signals used for positive edge triggering.\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    begin\r
-      WCtrlData_q1 <= 1'b0;\r
-      WCtrlData_q2 <= 1'b0;\r
-      WCtrlData_q3 <= 1'b0;\r
-      \r
-      RStat_q1 <= 1'b0;\r
-      RStat_q2 <= 1'b0;\r
-      RStat_q3 <= 1'b0;\r
-\r
-      ScanStat_q1  <= 1'b0;\r
-      ScanStat_q2  <= 1'b0;\r
-      SyncStatMdcEn <= 1'b0;\r
-    end\r
-  else\r
-    begin\r
-      WCtrlData_q1 <= WCtrlData;\r
-      WCtrlData_q2 <= WCtrlData_q1;\r
-      WCtrlData_q3 <= WCtrlData_q2;\r
-\r
-      RStat_q1 <= RStat;\r
-      RStat_q2 <= RStat_q1;\r
-      RStat_q3 <= RStat_q2;\r
-\r
-      ScanStat_q1  <= ScanStat;\r
-      ScanStat_q2  <= ScanStat_q1;\r
-      if(MdcEn)\r
-        SyncStatMdcEn  <= ScanStat_q2;\r
-    end\r
-end\r
-\r
-\r
-// Generation of the Start Commands (Write Control Data or Read Status)\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    begin\r
-      WCtrlDataStart <= 1'b0;\r
-      WCtrlDataStart_q <= 1'b0;\r
-      RStatStart <= 1'b0;\r
-    end\r
-  else\r
-    begin\r
-      if(EndBusy)\r
-        begin\r
-          WCtrlDataStart <= 1'b0;\r
-          RStatStart <= 1'b0;\r
-        end\r
-      else\r
-        begin\r
-          if(WCtrlData_q2 & ~WCtrlData_q3)\r
-            WCtrlDataStart <= 1'b1;\r
-          if(RStat_q2 & ~RStat_q3)\r
-            RStatStart <= 1'b1;\r
-          WCtrlDataStart_q <= WCtrlDataStart;\r
-        end\r
-    end\r
-end \r
-\r
-\r
-// Generation of the Nvalid signal (indicates when the status is invalid)\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    Nvalid <= 1'b0;\r
-  else\r
-    begin\r
-      if(~InProgress_q2 & InProgress_q3)\r
-        begin\r
-          Nvalid <= 1'b0;\r
-        end\r
-      else\r
-        begin\r
-          if(ScanStat_q2  & ~SyncStatMdcEn)\r
-            Nvalid <= 1'b1;\r
-        end\r
-    end\r
-end \r
-\r
-// Signals used for the generation of the Operation signals (positive edge)\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    begin\r
-      WCtrlDataStart_q1 <= 1'b0;\r
-      WCtrlDataStart_q2 <= 1'b0;\r
-\r
-      RStatStart_q1 <= 1'b0;\r
-      RStatStart_q2 <= 1'b0;\r
-\r
-      InProgress_q1 <= 1'b0;\r
-      InProgress_q2 <= 1'b0;\r
-      InProgress_q3 <= 1'b0;\r
-\r
-         LatchByte0_d <= 1'b0;\r
-         LatchByte1_d <= 1'b0;\r
-\r
-         LatchByte <= 2'b00;\r
-    end\r
-  else\r
-    begin\r
-      if(MdcEn)\r
-        begin\r
-          WCtrlDataStart_q1 <= WCtrlDataStart;\r
-          WCtrlDataStart_q2 <= WCtrlDataStart_q1;\r
-\r
-          RStatStart_q1 <= RStatStart;\r
-          RStatStart_q2 <= RStatStart_q1;\r
-\r
-          LatchByte[0] <= LatchByte0_d;\r
-          LatchByte[1] <= LatchByte1_d;\r
-\r
-          LatchByte0_d <= LatchByte0_d2;\r
-          LatchByte1_d <= LatchByte1_d2;\r
-\r
-          InProgress_q1 <= InProgress;\r
-          InProgress_q2 <= InProgress_q1;\r
-          InProgress_q3 <= InProgress_q2;\r
-        end\r
-    end\r
-end \r
-\r
-\r
-// Generation of the Operation signals\r
-assign WriteDataOp  = WCtrlDataStart_q1 & ~WCtrlDataStart_q2;    \r
-assign ReadStatusOp = RStatStart_q1     & ~RStatStart_q2;\r
-assign ScanStatusOp = SyncStatMdcEn     & ~InProgress & ~InProgress_q1 & ~InProgress_q2;\r
-assign StartOp      = WriteDataOp | ReadStatusOp | ScanStatusOp;\r
-\r
-// Busy\r
-reg            Busy;\r
-always @ (posedge Clk or posedge Reset)\r
-       if (Reset)\r
-               Busy    <=0;\r
-       else if(WCtrlData | WCtrlDataStart | RStat | RStatStart | SyncStatMdcEn | EndBusy | InProgress | InProgress_q3 | Nvalid)\r
-               Busy    <=1;\r
-       else\r
-               Busy    <=0;\r
-               \r
-//assign Busy = WCtrlData | WCtrlDataStart | RStat | RStatStart | SyncStatMdcEn | EndBusy | InProgress | InProgress_q3 | Nvalid;\r
-\r
-\r
-// Generation of the InProgress signal (indicates when an operation is in progress)\r
-// Generation of the WriteOp signal (indicates when a write is in progress)\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    begin\r
-      InProgress <= 1'b0;\r
-      WriteOp <= 1'b0;\r
-    end\r
-  else\r
-    begin\r
-      if(MdcEn)\r
-        begin\r
-          if(StartOp)\r
-            begin\r
-              if(~InProgress)\r
-                WriteOp <= WriteDataOp;\r
-              InProgress <= 1'b1;\r
-            end\r
-          else\r
-            begin\r
-              if(EndOp)\r
-                begin\r
-                  InProgress <= 1'b0;\r
-                  WriteOp <= 1'b0;\r
-                end\r
-            end\r
-        end\r
-    end\r
-end\r
-\r
-\r
-\r
-// Bit Counter counts from 0 to 63 (from 32 to 63 when NoPre is asserted)\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    BitCounter[6:0] <= 7'h0;\r
-  else\r
-    begin\r
-      if(MdcEn)\r
-        begin\r
-          if(InProgress)\r
-            begin\r
-              if(NoPre & ( BitCounter == 7'h0 ))\r
-                BitCounter[6:0] <= 7'h21;\r
-              else\r
-                BitCounter[6:0] <= BitCounter[6:0] + 1'b1;\r
-            end\r
-          else\r
-            BitCounter[6:0] <= 7'h0;\r
-        end\r
-    end\r
-end\r
-\r
-\r
-// Operation ends when the Bit Counter reaches 63\r
-assign EndOp = BitCounter==63;\r
-\r
-assign ByteSelect[0] = InProgress & ((NoPre & (BitCounter == 7'h0)) | (~NoPre & (BitCounter == 7'h20)));\r
-assign ByteSelect[1] = InProgress & (BitCounter == 7'h28);\r
-assign ByteSelect[2] = InProgress & WriteOp & (BitCounter == 7'h30);\r
-assign ByteSelect[3] = InProgress & WriteOp & (BitCounter == 7'h38);\r
-\r
-\r
-// Latch Byte selects which part of Read Status Data is updated from the shift register\r
-assign LatchByte1_d2 = InProgress & ~WriteOp & BitCounter == 7'h37;\r
-assign LatchByte0_d2 = InProgress & ~WriteOp & BitCounter == 7'h3F;\r
-\r
-wire MdcEn_n;\r
-\r
-// Connecting the Clock Generator Module\r
-eth_clockgen clkgen(.Clk(Clk), .Reset(Reset), .Divider(Divider[7:0]), .MdcEn(MdcEn), .MdcEn_n(MdcEn_n), .Mdc(Mdc) \r
-                   );\r
-\r
-// Connecting the Shift Register Module\r
-eth_shiftreg shftrg(.Clk(Clk), .Reset(Reset), .MdcEn_n(MdcEn_n), .Mdi(Mdi), .Fiad(Fiad), .Rgad(Rgad), \r
-                    .CtrlData(CtrlData), .WriteOp(WriteOp), .ByteSelect(ByteSelect), .LatchByte(LatchByte), \r
-                    .ShiftedBit(ShiftedBit), .Prsd(Prsd), .LinkFail(LinkFail)\r
-                   );\r
-\r
-// Connecting the Output Control Module\r
-eth_outputcontrol outctrl(.Clk(Clk), .Reset(Reset), .MdcEn_n(MdcEn_n), .InProgress(InProgress), \r
-                          .ShiftedBit(ShiftedBit), .BitCounter(BitCounter), .WriteOp(WriteOp), .NoPre(NoPre), \r
-                          .Mdo(Mdo), .MdoEn(MdoEn)\r
-                         );\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/rtl/verilog/flow_ctrl_rx.v b/usrp2/fpga/eth/rtl/verilog/flow_ctrl_rx.v
deleted file mode 100644 (file)
index 6654c62..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-\r
-// RX side of flow control -- when we are running out of RX space, send a PAUSE\r
-\r
-module flow_ctrl_rx\r
-  (input        rst,\r
-   //host processor\r
-   input        pause_frame_send_en,\r
-   input [15:0] pause_quanta_set,\r
-   input [15:0] fc_hwmark,\r
-   input [15:0] fc_lwmark,\r
-   input [15:0] fc_padtime,\r
-   // From MAC_rx_ctrl\r
-   input        rx_clk,\r
-   input [15:0] rx_fifo_space,\r
-   // MAC_tx_ctrl\r
-   input        tx_clk,\r
-   output reg   xoff_gen,\r
-   output reg   xon_gen,\r
-   input        xoff_gen_complete,\r
-   input        xon_gen_complete\r
-   );\r
-   \r
-   // ******************************************************************************        \r
-   // Force our TX to send a PAUSE frame because our RX is nearly full\r
-   // ******************************************************************************\r
-\r
-   reg xon_int, xoff_int;\r
-   reg [21:0] countdown;\r
\r
-   always @(posedge rx_clk or posedge rst)\r
-     if(rst)\r
-       begin\r
-         xon_int <= 0;\r
-         xoff_int <= 0;\r
-       end\r
-     else \r
-       begin\r
-         xon_int <= 0;\r
-         xoff_int <= 0;\r
-         if(pause_frame_send_en)\r
-           if(countdown == 0)\r
-             if(rx_fifo_space < fc_lwmark)\r
-               xoff_int <= 1;\r
-             else\r
-               ;\r
-           else\r
-             if(rx_fifo_space > fc_hwmark)\r
-               xon_int <= 1;\r
-       end // else: !if(rst)\r
-   \r
-   reg xoff_int_d1, xon_int_d1;\r
-\r
-   always @(posedge rx_clk)\r
-     xon_int_d1 <= xon_int;\r
-   always @(posedge rx_clk)\r
-     xoff_int_d1 <= xoff_int;\r
-   \r
-   always @ (posedge tx_clk or posedge rst)\r
-     if (rst)\r
-       xoff_gen        <=0;\r
-     else if (xoff_gen_complete)\r
-       xoff_gen        <=0;\r
-     else if (xoff_int | xoff_int_d1)\r
-       xoff_gen        <=1;\r
-   \r
-   always @ (posedge tx_clk or posedge rst)\r
-     if (rst)\r
-       xon_gen     <=0;\r
-     else if (xon_gen_complete)\r
-       xon_gen     <=0;\r
-     else if (xon_int | xon_int_d1)\r
-       xon_gen     <=1;                     \r
-\r
-   wire [21:0] pq_reduced = {pause_quanta_set,6'd0} - {6'd0,fc_padtime};\r
-   \r
-   always @(posedge tx_clk or posedge rst)\r
-     if(rst)\r
-       countdown <= 0;\r
-     else if(xoff_gen)\r
-       countdown <= pq_reduced;\r
-     else if(xon_gen)\r
-       countdown <= 0;\r
-     else if(countdown != 0)\r
-       countdown <= countdown - 1;\r
-   \r
-endmodule // flow_ctrl\r
diff --git a/usrp2/fpga/eth/rtl/verilog/flow_ctrl_tx.v b/usrp2/fpga/eth/rtl/verilog/flow_ctrl_tx.v
deleted file mode 100644 (file)
index 9f7556d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-\r
-// TX side of flow control -- when other side sends PAUSE, we wait\r
-\r
-module flow_ctrl_tx\r
-  (input        rst,\r
-   input        tx_clk,\r
-   //host processor\r
-   input        tx_pause_en,\r
-   // From MAC_rx_ctrl\r
-   input [15:0] pause_quanta,\r
-   input        pause_quanta_val,\r
-   // MAC_tx_ctrl\r
-   output       pause_apply,\r
-   input        pause_quanta_sub);\r
-     \r
-   // ******************************************************************************        \r
-   // Inhibit our TX from transmitting because they sent us a PAUSE frame\r
-   // ******************************************************************************\r
-\r
-   reg [15:0]  pause_quanta_counter;\r
-   reg                 pqval_d1, pqval_d2;             \r
-\r
-   always @(posedge tx_clk) pqval_d1 <= pause_quanta_val;\r
-   always @(posedge tx_clk) pqval_d2 <= pqval_d1;\r
-\r
-   always @ (posedge tx_clk or posedge rst)\r
-     if (rst)\r
-       pause_quanta_counter <= 0;\r
-     else if (pqval_d1 & ~pqval_d2)\r
-       pause_quanta_counter <= pause_quanta; \r
-     else if((pause_quanta_counter!=0) & pause_quanta_sub)\r
-       pause_quanta_counter <= pause_quanta_counter - 1;\r
-\r
-   assign      pause_apply = tx_pause_en & (pause_quanta_counter != 0);\r
-   \r
-endmodule // flow_ctrl\r
diff --git a/usrp2/fpga/eth/rtl/verilog/header.vh b/usrp2/fpga/eth/rtl/verilog/header.vh
deleted file mode 100644 (file)
index ca0b580..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-`define MAC_SOURCE_REPLACE_EN 1\r
-`define MAC_TARGET_CHECK_EN 1\r
-`define MAC_BROADCAST_FILTER_EN 1\r
-`define MAC_TX_FF_DEPTH 9\r
-`define MAC_RX_FF_DEPTH 9\r
-`define MAC_TARGET_XILINX 1\r
-// `define MAC_TARGET_ALTERA 1\r
diff --git a/usrp2/fpga/eth/rtl/verilog/miim/eth_clockgen.v b/usrp2/fpga/eth/rtl/verilog/miim/eth_clockgen.v
deleted file mode 100644 (file)
index 9da732f..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  eth_clockgen.v                                              ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects/ethmac/                   ////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Igor Mohor (igorM@opencores.org)                      ////\r
-////                                                              ////\r
-////  All additional information is avaliable in the Readme.txt   ////\r
-////  file.                                                       ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//\r
-// CVS Revision History\r
-//\r
-// $Log: eth_clockgen.v,v $\r
-// Revision 1.2  2005/12/13 12:54:49  maverickist\r
-// first simulation passed\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//\r
-// Revision 1.2  2005/04/27 15:58:45  Administrator\r
-// no message\r
-//\r
-// Revision 1.1.1.1  2004/12/15 06:38:54  Administrator\r
-// no message\r
-//\r
-// Revision 1.3  2002/01/23 10:28:16  mohor\r
-// Link in the header changed.\r
-//\r
-// Revision 1.2  2001/10/19 08:43:51  mohor\r
-// eth_timescale.v changed to timescale.v This is done because of the\r
-// simulation of the few cores in a one joined project.\r
-//\r
-// Revision 1.1  2001/08/06 14:44:29  mohor\r
-// A define FPGA added to select between Artisan RAM (for ASIC) and Block Ram (For Virtex).\r
-// Include files fixed to contain no path.\r
-// File names and module names changed ta have a eth_ prologue in the name.\r
-// File eth_timescale.v is used to define timescale\r
-// All pin names on the top module are changed to contain _I, _O or _OE at the end.\r
-// Bidirectional signal MDIO is changed to three signals (Mdc_O, Mdi_I, Mdo_O\r
-// and Mdo_OE. The bidirectional signal must be created on the top level. This\r
-// is done due to the ASIC tools.\r
-//\r
-// Revision 1.1  2001/07/30 21:23:42  mohor\r
-// Directory structure changed. Files checked and joind together.\r
-//\r
-// Revision 1.3  2001/06/01 22:28:55  mohor\r
-// This files (MIIM) are fully working. They were thoroughly tested. The testbench is not updated.\r
-//\r
-//\r
-\r
-module eth_clockgen(Clk, Reset, Divider, MdcEn, MdcEn_n, Mdc);\r
-\r
-//parameter Tp=1;\r
-\r
-input       Clk;              // Input clock (Host clock)\r
-input       Reset;            // Reset signal\r
-input [7:0] Divider;          // Divider (input clock will be divided by the Divider[7:0])\r
-\r
-output      Mdc;              // Output clock\r
-output      MdcEn;            // Enable signal is asserted for one Clk period before Mdc rises.\r
-output      MdcEn_n;          // Enable signal is asserted for one Clk period before Mdc falls.\r
-\r
-reg         Mdc;\r
-reg   [7:0] Counter;\r
-\r
-wire        CountEq0;\r
-wire  [7:0] CounterPreset;\r
-wire  [7:0] TempDivider;\r
-\r
-\r
-assign TempDivider[7:0]   = (Divider[7:0]<2)? 8'h02 : Divider[7:0]; // If smaller than 2\r
-assign CounterPreset[7:0] = (TempDivider[7:0]>>1) -1;               // We are counting half of period\r
-\r
-\r
-// Counter counts half period\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    Counter[7:0] <= 8'h1;\r
-  else\r
-    begin\r
-      if(CountEq0)\r
-        begin\r
-          Counter[7:0] <= CounterPreset[7:0];\r
-        end\r
-      else\r
-        Counter[7:0] <= Counter - 8'h1;\r
-    end\r
-end\r
-\r
-\r
-// Mdc is asserted every other half period\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    Mdc <= 1'b0;\r
-  else\r
-    begin\r
-      if(CountEq0)\r
-        Mdc <= ~Mdc;\r
-    end\r
-end\r
-\r
-\r
-assign CountEq0 = Counter == 8'h0;\r
-assign MdcEn = CountEq0 & ~Mdc;\r
-assign MdcEn_n = CountEq0 & Mdc;\r
-\r
-endmodule\r
-\r
-\r
diff --git a/usrp2/fpga/eth/rtl/verilog/miim/eth_outputcontrol.v b/usrp2/fpga/eth/rtl/verilog/miim/eth_outputcontrol.v
deleted file mode 100644 (file)
index 3df6c56..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  eth_outputcontrol.v                                         ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects/ethmac/                   ////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Igor Mohor (igorM@opencores.org)                      ////\r
-////                                                              ////\r
-////  All additional information is avaliable in the Readme.txt   ////\r
-////  file.                                                       ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//\r
-// CVS Revision History\r
-//\r
-// $Log: eth_outputcontrol.v,v $\r
-// Revision 1.2  2005/12/13 12:54:49  maverickist\r
-// first simulation passed\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//\r
-// Revision 1.2  2005/04/27 15:58:46  Administrator\r
-// no message\r
-//\r
-// Revision 1.1.1.1  2004/12/15 06:38:54  Administrator\r
-// no message\r
-//\r
-// Revision 1.4  2002/07/09 20:11:59  mohor\r
-// Comment removed.\r
-//\r
-// Revision 1.3  2002/01/23 10:28:16  mohor\r
-// Link in the header changed.\r
-//\r
-// Revision 1.2  2001/10/19 08:43:51  mohor\r
-// eth_timescale.v changed to timescale.v This is done because of the\r
-// simulation of the few cores in a one joined project.\r
-//\r
-// Revision 1.1  2001/08/06 14:44:29  mohor\r
-// A define FPGA added to select between Artisan RAM (for ASIC) and Block Ram (For Virtex).\r
-// Include files fixed to contain no path.\r
-// File names and module names changed ta have a eth_ prologue in the name.\r
-// File eth_timescale.v is used to define timescale\r
-// All pin names on the top module are changed to contain _I, _O or _OE at the end.\r
-// Bidirectional signal MDIO is changed to three signals (Mdc_O, Mdi_I, Mdo_O\r
-// and Mdo_OE. The bidirectional signal must be created on the top level. This\r
-// is done due to the ASIC tools.\r
-//\r
-// Revision 1.1  2001/07/30 21:23:42  mohor\r
-// Directory structure changed. Files checked and joind together.\r
-//\r
-// Revision 1.3  2001/06/01 22:28:56  mohor\r
-// This files (MIIM) are fully working. They were thoroughly tested. The testbench is not updated.\r
-//\r
-//\r
-\r
-module eth_outputcontrol(Clk, Reset, InProgress, ShiftedBit, BitCounter, WriteOp, NoPre, MdcEn_n, Mdo, MdoEn);\r
-\r
-input         Clk;                // Host Clock\r
-input         Reset;              // General Reset\r
-input         WriteOp;            // Write Operation Latch (When asserted, write operation is in progress)\r
-input         NoPre;              // No Preamble (no 32-bit preamble)\r
-input         InProgress;         // Operation in progress\r
-input         ShiftedBit;         // This bit is output of the shift register and is connected to the Mdo signal\r
-input   [6:0] BitCounter;         // Bit Counter\r
-input         MdcEn_n;            // MII Management Data Clock Enable signal is asserted for one Clk period before Mdc falls.\r
-\r
-output        Mdo;                // MII Management Data Output\r
-output        MdoEn;              // MII Management Data Output Enable\r
-\r
-wire          SerialEn;\r
-\r
-reg           MdoEn_2d;\r
-reg           MdoEn_d;\r
-reg           MdoEn;\r
-\r
-reg           Mdo_2d;\r
-reg           Mdo_d;\r
-reg           Mdo;                // MII Management Data Output\r
-\r
-\r
-\r
-// Generation of the Serial Enable signal (enables the serialization of the data)\r
-assign SerialEn =  WriteOp & InProgress & ( BitCounter>31 | ( ( BitCounter == 0 ) & NoPre ) )\r
-                | ~WriteOp & InProgress & (( BitCounter>31 & BitCounter<46 ) | ( ( BitCounter == 0 ) & NoPre ));\r
-\r
-\r
-// Generation of the MdoEn signal\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    begin\r
-      MdoEn_2d <= 1'b0;\r
-      MdoEn_d <= 1'b0;\r
-      MdoEn <= 1'b0;\r
-    end\r
-  else\r
-    begin\r
-      if(MdcEn_n)\r
-        begin\r
-          MdoEn_2d <= SerialEn | InProgress & BitCounter<32;\r
-          MdoEn_d <= MdoEn_2d;\r
-          MdoEn <= MdoEn_d;\r
-        end\r
-    end\r
-end\r
-\r
-\r
-// Generation of the Mdo signal.\r
-always @ (posedge Clk or posedge Reset)\r
-begin\r
-  if(Reset)\r
-    begin\r
-      Mdo_2d <= 1'b0;\r
-      Mdo_d <= 1'b0;\r
-      Mdo <= 1'b0;\r
-    end\r
-  else\r
-    begin\r
-      if(MdcEn_n)\r
-        begin\r
-          Mdo_2d <= ~SerialEn & BitCounter<32;\r
-          Mdo_d <= ShiftedBit | Mdo_2d;\r
-          Mdo <= Mdo_d;\r
-        end\r
-    end\r
-end\r
-\r
-\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/rtl/verilog/miim/eth_shiftreg.v b/usrp2/fpga/eth/rtl/verilog/miim/eth_shiftreg.v
deleted file mode 100644 (file)
index 0b97bb7..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-////  eth_shiftreg.v                                              ////\r
-////                                                              ////\r
-////  This file is part of the Ethernet IP core project           ////\r
-////  http://www.opencores.org/projects/ethmac/                   ////\r
-////                                                              ////\r
-////  Author(s):                                                  ////\r
-////      - Igor Mohor (igorM@opencores.org)                      ////\r
-////                                                              ////\r
-////  All additional information is avaliable in the Readme.txt   ////\r
-////  file.                                                       ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-////                                                              ////\r
-//// Copyright (C) 2001 Authors                                   ////\r
-////                                                              ////\r
-//// This source file may be used and distributed without         ////\r
-//// restriction provided that this copyright statement is not    ////\r
-//// removed from the file and that any derivative work contains  ////\r
-//// the original copyright notice and the associated disclaimer. ////\r
-////                                                              ////\r
-//// This source file is free software; you can redistribute it   ////\r
-//// and/or modify it under the terms of the GNU Lesser General   ////\r
-//// Public License as published by the Free Software Foundation; ////\r
-//// either version 2.1 of the License, or (at your option) any   ////\r
-//// later version.                                               ////\r
-////                                                              ////\r
-//// This source is distributed in the hope that it will be       ////\r
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////\r
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////\r
-//// PURPOSE.  See the GNU Lesser General Public License for more ////\r
-//// details.                                                     ////\r
-////                                                              ////\r
-//// You should have received a copy of the GNU Lesser General    ////\r
-//// Public License along with this source; if not, download it   ////\r
-//// from http://www.opencores.org/lgpl.shtml                     ////\r
-////                                                              ////\r
-//////////////////////////////////////////////////////////////////////\r
-//\r
-// CVS Revision History\r
-//\r
-// $Log: eth_shiftreg.v,v $\r
-// Revision 1.2  2005/12/13 12:54:49  maverickist\r
-// first simulation passed\r
-//\r
-// Revision 1.1.1.1  2005/12/13 01:51:45  Administrator\r
-// no message\r
-//\r
-// Revision 1.2  2005/04/27 15:58:47  Administrator\r
-// no message\r
-//\r
-// Revision 1.1.1.1  2004/12/15 06:38:54  Administrator\r
-// no message\r
-//\r
-// Revision 1.5  2002/08/14 18:16:59  mohor\r
-// LinkFail signal was not latching appropriate bit.\r
-//\r
-// Revision 1.4  2002/03/02 21:06:01  mohor\r
-// LinkFail signal was not latching appropriate bit.\r
-//\r
-// Revision 1.3  2002/01/23 10:28:16  mohor\r
-// Link in the header changed.\r
-//\r
-// Revision 1.2  2001/10/19 08:43:51  mohor\r
-// eth_timescale.v changed to timescale.v This is done because of the\r
-// simulation of the few cores in a one joined project.\r
-//\r
-// Revision 1.1  2001/08/06 14:44:29  mohor\r
-// A define FPGA added to select between Artisan RAM (for ASIC) and Block Ram (For Virtex).\r
-// Include files fixed to contain no path.\r
-// File names and module names changed ta have a eth_ prologue in the name.\r
-// File eth_timescale.v is used to define timescale\r
-// All pin names on the top module are changed to contain _I, _O or _OE at the end.\r
-// Bidirectional signal MDIO is changed to three signals (Mdc_O, Mdi_I, Mdo_O\r
-// and Mdo_OE. The bidirectional signal must be created on the top level. This\r
-// is done due to the ASIC tools.\r
-//\r
-// Revision 1.1  2001/07/30 21:23:42  mohor\r
-// Directory structure changed. Files checked and joind together.\r
-//\r
-// Revision 1.3  2001/06/01 22:28:56  mohor\r
-// This files (MIIM) are fully working. They were thoroughly tested. The testbench is not updated.\r
-//\r
-//\r
-\r
-module eth_shiftreg(Clk, Reset, MdcEn_n, Mdi, Fiad, Rgad, CtrlData, WriteOp, ByteSelect, \r
-                    LatchByte, ShiftedBit, Prsd, LinkFail);\r
-\r
-\r
-input       Clk;              // Input clock (Host clock)\r
-input       Reset;            // Reset signal\r
-input       MdcEn_n;          // Enable signal is asserted for one Clk period before Mdc falls.\r
-input       Mdi;              // MII input data\r
-input [4:0] Fiad;             // PHY address\r
-input [4:0] Rgad;             // Register address (within the selected PHY)\r
-input [15:0]CtrlData;         // Control data (data to be written to the PHY)\r
-input       WriteOp;          // The current operation is a PHY register write operation\r
-input [3:0] ByteSelect;       // Byte select\r
-input [1:0] LatchByte;        // Byte select for latching (read operation)\r
-\r
-output      ShiftedBit;       // Bit shifted out of the shift register\r
-output[15:0]Prsd;             // Read Status Data (data read from the PHY)\r
-output      LinkFail;         // Link Integrity Signal\r
-\r
-reg   [7:0] ShiftReg;         // Shift register for shifting the data in and out\r
-reg   [15:0]Prsd;\r
-reg         LinkFail;\r
-\r
-\r
-\r
-\r
-// ShiftReg[7:0] :: Shift Register Data\r
-always @ (posedge Clk or posedge Reset) \r
-begin\r
-  if(Reset)\r
-    begin\r
-      ShiftReg[7:0] <= 8'h0;\r
-      Prsd[15:0] <= 16'h0;\r
-      LinkFail <= 1'b0;\r
-    end\r
-  else\r
-    begin\r
-      if(MdcEn_n)\r
-        begin \r
-          if(|ByteSelect)\r
-            begin\r
-              case (ByteSelect[3:0])\r
-                4'h1 :    ShiftReg[7:0] <= {2'b01, ~WriteOp, WriteOp, Fiad[4:1]};\r
-                4'h2 :    ShiftReg[7:0] <= {Fiad[0], Rgad[4:0], 2'b10};\r
-                4'h4 :    ShiftReg[7:0] <= CtrlData[15:8];\r
-                4'h8 :    ShiftReg[7:0] <= CtrlData[7:0];\r
-                default : ShiftReg[7:0] <= 8'h0;\r
-              endcase\r
-            end \r
-          else\r
-            begin\r
-              ShiftReg[7:0] <= {ShiftReg[6:0], Mdi};\r
-              if(LatchByte[0])\r
-                begin\r
-                  Prsd[7:0] <= {ShiftReg[6:0], Mdi};\r
-                  if(Rgad == 5'h01)\r
-                    LinkFail <= ~ShiftReg[1];  // this is bit [2], because it is not shifted yet\r
-                end\r
-              else\r
-                begin\r
-                  if(LatchByte[1])\r
-                    Prsd[15:8] <= {ShiftReg[6:0], Mdi};\r
-                end\r
-            end\r
-        end\r
-    end\r
-end\r
-\r
-\r
-assign ShiftedBit = ShiftReg[7];\r
-\r
-\r
-endmodule\r
diff --git a/usrp2/fpga/eth/rx_prot_engine.v b/usrp2/fpga/eth/rx_prot_engine.v
deleted file mode 100644 (file)
index d34f168..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-
-module rx_prot_engine
-  #(parameter FIFO_SIZE=11)
-    (input clk, input rst,
-     
-     input Rx_mac_ra,
-     output Rx_mac_rd,
-     input [31:0] Rx_mac_data,
-     input [1:0] Rx_mac_BE,
-     input Rx_mac_pa,
-     input Rx_mac_sop,
-     input Rx_mac_eop,
-     input Rx_mac_err,
-     
-     output [31:0] wr_dat_o,
-     output wr_write_o,
-     output wr_done_o,
-     output wr_error_o,
-     input wr_ready_i,
-     input wr_full_i,
-     output wr_flag_o,
-
-     input set_stb,
-     input [7:0] set_addr,
-     input [31:0] set_data,
-     
-     output [15:0] rx_fifo_status,
-     output reg [7:0] rx_seqnum,
-     output reg [7:0] rx_channel,
-     output [7:0] rx_flags
-     );
-
-   wire          read, write, full, empty;
-   wire          eop_i, err_i, eop_o, err_o, flag_i, sop_i, flag_o, sop_o;
-   wire [31:0]           dat_i, dat_o;
-   reg                   xfer_active;
-
-   wire [3:0]    hdr_adr;
-   wire [31:0]           hdr_dat;
-   
-   header_ram #(.REGNUM(48),.WIDTH(32)) rx_header_ram
-     (.clk(clk),.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
-      .addr(hdr_adr),.q(hdr_dat));
-
-   // Buffer interface side
-   always @(posedge clk)
-     if(rst)
-       xfer_active <= 0;
-     else if(wr_ready_i & ~empty)
-       xfer_active <= 1;
-     else if(eop_o | err_o | wr_full_i)
-       xfer_active <= 0;
-
-   assign wr_done_o = eop_o & wr_write_o;
-   assign wr_error_o = err_o & wr_write_o;
-   assign wr_dat_o = dat_o;
-   assign wr_write_o = xfer_active & ~empty;
-   assign read = wr_write_o;
-
-   // FIFO in the middle
-   cascadefifo2 #(.WIDTH(36),.SIZE(11)) rx_prot_fifo
-     (.clk(clk),.rst(rst),
-      .datain({flag_i,sop_i,eop_i,err_i,dat_i}),.write(write),.full(full),
-      .dataout({flag_o,sop_o,eop_o,err_o,dat_o}),.read(read),.empty(empty),
-      .clear(0),.fifo_space(rx_fifo_status));
-
-   // MAC side
-   localparam ETH_TYPE = 16'hBEEF;
-   
-   reg [2:0] prot_state;
-   localparam PROT_IDLE = 0;
-   localparam PROT_HDR1 = 1;
-   localparam PROT_HDR2 = 2;
-   localparam PROT_HDR3 = 3;
-   localparam PROT_HDR4 = 4;
-   localparam PROT_HDR5 = 5;
-   localparam PROT_PKT = 6;
-
-   // Things to control: flag_i, sop_i, eop_i, err_i, dat_i, write, Rx_mac_rd
-   // Inputs to SM: Rx_mac_sop, Rx_mac_eop, Rx_mac_ra, Rx_mac_pa, 
-   //                Rx_mac_BE, Rx_mac_err, full
-
-   reg               flag;
-   assign     dat_i = Rx_mac_data;
-   assign     sop_i = Rx_mac_sop;
-   assign     eop_i = Rx_mac_eop;
-   assign     err_i = Rx_mac_err;
-   assign     flag_i = flag;
-   assign     wr_flag_o = flag_o;
-   assign     Rx_mac_rd = (prot_state != PROT_IDLE) && (~full|~Rx_mac_pa);
-   assign     write = (prot_state != PROT_IDLE) && ~full && Rx_mac_pa;       
-
-   assign     hdr_adr = {1'b0,prot_state[2:0]};
-
-   wire [7:0] rx_seqnum_p1 = rx_seqnum + 1;
-   
-   always @(posedge clk)
-     if(rst)
-       begin
-         prot_state <= PROT_IDLE;
-         flag <= 0;
-       end
-     else if(prot_state == PROT_IDLE)
-       begin
-         flag <= 0;
-         if(Rx_mac_ra)
-           prot_state <= PROT_HDR1;
-       end
-     else if(write)
-       case(prot_state)
-        PROT_HDR1 : 
-          begin
-             prot_state <= PROT_HDR2;
-             if(hdr_dat != Rx_mac_data)
-               flag <= 1;
-          end
-        PROT_HDR2 :
-          begin
-             prot_state <= PROT_HDR3;
-             if(hdr_dat != Rx_mac_data)
-               flag <= 1;
-          end
-        PROT_HDR3 :
-          begin
-             prot_state <= PROT_HDR4;
-             if(hdr_dat != Rx_mac_data)
-               flag <= 1;
-          end
-        PROT_HDR4 : 
-          begin
-             prot_state <= PROT_HDR5;
-             if(hdr_dat[31:16] != Rx_mac_data[31:16])
-               flag <= 1;
-             rx_channel <= hdr_dat[15:8];
-          end
-        PROT_HDR5 :
-          begin
-             prot_state <= PROT_PKT;
-             if((rx_seqnum_p1) != Rx_mac_data[15:8])
-               flag <= 1;
-          end
-        PROT_PKT : 
-          if(Rx_mac_eop | Rx_mac_err)
-            prot_state <= PROT_IDLE;
-       endcase // case(prot_state)
-   
-   always @(posedge clk)
-     if(rst)
-       rx_seqnum <= 8'hFF;
-     else if(set_stb & (set_addr == 54))
-       rx_seqnum <= set_data[7:0];
-     else if(write & (prot_state == PROT_HDR5) & ((rx_seqnum_p1) == Rx_mac_data[15:8]) & ~flag)
-       rx_seqnum <= rx_seqnum + 1;
-   
-   // Error cases -- Rx_mac_error, BE != 0
-endmodule // rx_prot_engine
diff --git a/usrp2/fpga/eth/tx_prot_engine.v b/usrp2/fpga/eth/tx_prot_engine.v
deleted file mode 100644 (file)
index 894d74a..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-
-module tx_prot_engine
-  (input clk, input rst,
-   
-   // To MAC
-   input Tx_mac_wa,
-   output Tx_mac_wr,
-   output [31:0] Tx_mac_data,
-   output [1:0] Tx_mac_BE,
-   output Tx_mac_sop,
-   output Tx_mac_eop,
-
-   // To buffer interface
-   input [31:0] rd_dat_i,
-   output rd_read_o,
-   output rd_done_o,
-   output rd_error_o,
-   input rd_sop_i,
-   input rd_eop_i,
-
-   // To control
-   input set_stb,
-   input [7:0] set_addr,
-   input [31:0] set_data,
-
-   // Protocol Stuff
-   input [15:0] rx_fifo_status,
-   input [7:0] rx_seqnum
-   //input [7:0] tx_channel,
-   //input [7:0] tx_flags
-   );
-
-   wire [3:0]  hdr_adr;
-   wire [31:0]         hdr_dat;
-   wire [7:0]  tx_channel;
-   
-   header_ram #(.REGNUM(32),.WIDTH(32)) tx_header_ram
-     (.clk(clk),.set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
-      .addr(hdr_adr),.q(hdr_dat));
-
-   setting_reg #(.my_addr(32)) sr_channel
-     (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),.in(set_data),
-      .out(tx_channel),.changed());
-   
-   // Might as well use a shortfifo here since they are basically free
-   wire  empty, full, sfifo_write, sfifo_read;
-   wire [33:0] sfifo_in, sfifo_out;
-   
-   shortfifo #(.WIDTH(34)) txmac_sfifo
-     (.clk(clk),.rst(rst),.clear(0),
-      .datain(sfifo_in),.write(sfifo_write),.full(full),
-      .dataout(sfifo_out),.read(sfifo_read),.empty(empty));
-
-   // MAC side signals
-   // Inputs -- Tx_mac_wa, sfifo_out, empty
-   // outputs -- sfifo_read, Tx_mac_data, Tx_mac_wr, Tx_mac_BE, Tx_mac_sop, Tx_mac_eop
-   
-   //  We are allowed to do one more write after we are told the FIFO is full
-   //  This allows us to register the _wa signal and speed up timing.
-   reg                tx_mac_wa_d1;
-   always @(posedge clk)
-     tx_mac_wa_d1 <= Tx_mac_wa;
-
-   reg [2:0]   prot_state;
-   localparam  PROT_IDLE = 0;
-   localparam  PROT_HDR1 = 1;
-   localparam  PROT_HDR2 = 2;
-   localparam  PROT_HDR3 = 3;
-   localparam  PROT_HDR4 = 4;
-   localparam  PROT_HDR5 = 5;
-   localparam  PROT_PKT  = 6;
-
-   reg [7:0]   tx_seqnum;
-   reg                all_match;
-   always @(posedge clk)
-     if(rst) 
-       tx_seqnum <= 0;
-     else if(set_stb & (set_addr == 36))
-       tx_seqnum <= set_data[7:0];
-     else if(tx_mac_wa_d1 & all_match & (prot_state == PROT_HDR5))
-       tx_seqnum <= tx_seqnum + 1;
-   
-   always @(posedge clk)
-     if(rst)
-       prot_state <= PROT_IDLE;
-     else
-       if(tx_mac_wa_d1 & ~empty)
-        case(prot_state)
-          PROT_IDLE :
-            prot_state <= PROT_HDR1;
-          PROT_HDR1 :
-            prot_state <= PROT_HDR2;
-          PROT_HDR2 :
-            prot_state <= PROT_HDR3;
-          PROT_HDR3 :
-            prot_state <= PROT_HDR4;
-          PROT_HDR4 :
-            prot_state <= PROT_HDR5;
-          PROT_HDR5 :
-            prot_state <= PROT_PKT;
-          PROT_PKT :
-            if(sfifo_out[32] & ~empty)
-              prot_state <= PROT_IDLE;
-          default :
-            prot_state <= PROT_IDLE;
-        endcase // case(prot_state)
-
-   assign      hdr_adr = {1'b0,prot_state};
-   wire        match = (hdr_dat == sfifo_out[31:0]);   
-   always @(posedge clk)
-     if(prot_state == PROT_IDLE)
-       all_match <= 1;
-     else if(tx_mac_wa_d1 & ~empty &
-            ((prot_state==PROT_HDR1)|(prot_state==PROT_HDR2)|(prot_state==PROT_HDR3)))
-       all_match <= all_match & match;
-   
-   localparam  ETH_TYPE = 16'hBEEF;
-   assign      Tx_mac_data = 
-              ((prot_state == PROT_HDR5) & all_match) ? {rx_fifo_status,tx_seqnum,rx_seqnum} :
-              sfifo_out[31:0];
-   assign      sfifo_read = (prot_state != PROT_IDLE) & ~empty & tx_mac_wa_d1;
-   assign      Tx_mac_wr = sfifo_read;
-   assign      Tx_mac_BE = 0;  // Since we only deal with packets that are multiples of 32 bits long
-   assign      Tx_mac_sop = sfifo_out[33];
-   assign      Tx_mac_eop = sfifo_out[32];
-
-   // BUFFER side signals
-   reg                xfer_active;
-   always @(posedge clk)
-     if(rst)
-       xfer_active <= 0;
-     else if(rd_eop_i & ~full)
-       xfer_active <= 0;
-     else if(rd_sop_i)
-       xfer_active <= 1;
-   
-   assign      sfifo_in = {rd_sop_i, rd_eop_i, rd_dat_i};
-   assign      sfifo_write = xfer_active & ~full;
-
-   assign      rd_read_o = sfifo_write;
-   assign      rd_done_o = 0;  // Always send everything we're given?
-   assign      rd_error_o = 0;  // No possible error situations?
-   
-endmodule // tx_prot_engine
index 247472c35d867a0722d8f60d594accca799e04dc..e5a3ee0d861d73969f49e3e525219f950189c43a 100644 (file)
@@ -22,10 +22,9 @@ module adc_model
    assign     adc_ovf_b = adc_oe_b ? 1'b0 : 1'bz;
    
    real       phase = 0;
-   real       sample_rate = 100000000;
-   real       freq = 330000/sample_rate;     // 330 kHz
+   real       freq = 330000/100000000;
 
-   real       scale = math.pow(2,13)-2;
+   real       scale = 8190; // math.pow(2,13)-2;
    always @(posedge clk)
      if(rst)
        begin
index d41a28bcf424ff177f8c0704c351e540a4e67c73..0adeb0794ed1c7d79768b69ab76712a5c4f1296c 100644 (file)
@@ -9,15 +9,12 @@ module rx_control
      input [31:0] master_time,
      output overrun,
      
-     // To Buffer interface
+     // To FIFO interface of Buffer Pool
      output [31:0] wr_dat_o,
-     output wr_write_o,
-     output wr_done_o,
-     output wr_error_o,
-
+     output [3:0] wr_flags_o,
      input wr_ready_i,
-     input wr_full_i,
-     
+     output wr_ready_o,
+
      // From DSP Core
      input [31:0] sample,
      output run,
@@ -66,47 +63,17 @@ module rx_control
       .read(read_ctrl), .empty(empty_ctrl) );
 
    // Buffer interface to internal FIFO
-   wire    write, full, read, empty;
-   wire    sop_o, eop_o;
-
-   reg            xfer_state;
-   localparam XFER_IDLE = 1'b0;
-   localparam XFER_GO = 1'b1;
-
-   always @(posedge clk)
-     if(rst)
-       xfer_state <= XFER_IDLE;
-     else
-       if(clear_overrun)
-        xfer_state <= XFER_IDLE;
-       else
-        case(xfer_state)
-          XFER_IDLE :
-            if(wr_ready_i)
-              xfer_state <= XFER_GO;
-          XFER_GO :
-            if((eop_o | wr_full_i) & wr_write_o)
-              xfer_state <= XFER_IDLE;
-          default :
-            xfer_state <= XFER_IDLE;
-        endcase // case(xfer_state)
-   
-   assign     wr_write_o = (xfer_state == XFER_GO) & ~empty;
-   assign     wr_done_o = (eop_o & wr_write_o);
-   assign     wr_error_o = 0;   // FIXME add check here for eop if we have wr_full_i once we have IBS
-
-   assign     read = wr_write_o | (~empty & ~sop_o);   // FIXME  what if there is junk between packets?
-
-   wire [33:0] fifo_line;
+   wire        have_space, write;
+   wire [35:0] fifo_line;
    
    // Internal FIFO, size 9 is 2K, size 10 is 4K
-   cascadefifo2 #(.WIDTH(34),.SIZE(FIFOSIZE)) rxfifo
-     (.clk(clk),.rst(rst),.clear(clear_overrun),
-      .datain(fifo_line), .write(write), .full(full),
-      .dataout({sop_o,eop_o,wr_dat_o}), .read(read), .empty(empty),
+   fifo_cascade #(.WIDTH(36),.SIZE(FIFOSIZE)) rxfifo
+     (.clk(clk),.reset(rst),.clear(clear_overrun),
+      .datain(fifo_line), .src_rdy_i(write), .dst_rdy_o(have_space),
+      .dataout({wr_flags_o,wr_dat_o}), .src_rdy_o(wr_ready_o), .dst_rdy_i(wr_ready_i),
       .space(),.occupied(fifo_occupied) );
-   assign      fifo_full = full;
-   assign      fifo_empty = empty;
+   assign      fifo_full = ~have_space;
+   assign      fifo_empty = ~wr_ready_o;
 
    // Internal FIFO to DSP interface
    reg [22:0] lines_left;
@@ -161,13 +128,13 @@ module rx_control
             else if(too_late)
               ibs_state <= IBS_OVERRUN;
           IBS_FIRSTLINE :
-            if(full | strobe)
+            if(~have_space | strobe)
               ibs_state <= IBS_OVERRUN;
             else
               ibs_state <= IBS_RUNNING;
           IBS_RUNNING :
             if(strobe)
-              if(full)
+              if(~have_space)
                 ibs_state <= IBS_OVERRUN;
               else
                 begin
@@ -193,21 +160,21 @@ module rx_control
                      end
                    else
                      lines_left_frame <= lines_left_frame - 1;
-                end // else: !if(full)
+                end // else: !if(~have_space)
         endcase // case(ibs_state)
    
-   assign fifo_line = (ibs_state == IBS_FIRSTLINE) ? {1'b1,1'b0,master_time} :
-                     {1'b0,((lines_left==1)|(lines_left_frame==1)),sample};
+   assign fifo_line = (ibs_state == IBS_FIRSTLINE) ? {2'b0,1'b0,1'b1,master_time} :
+                     {2'b0,((lines_left==1)|(lines_left_frame==1)),1'b0,sample};
    
-   assign write = ((ibs_state == IBS_FIRSTLINE) | strobe) & ~full;  // & (ibs_state == IBS_RUNNING) should strobe only when running
+   assign write = ((ibs_state == IBS_FIRSTLINE) | strobe) & have_space;  // & (ibs_state == IBS_RUNNING) should strobe only when running
    assign overrun = (ibs_state == IBS_OVERRUN);
    assign run = (ibs_state == IBS_RUNNING) | (ibs_state == IBS_FIRSTLINE);
    assign read_ctrl = ( (ibs_state == IBS_IDLE) | 
-                       ((ibs_state == IBS_RUNNING) & strobe & ~full & (lines_left==1) & chain) )
+                       ((ibs_state == IBS_RUNNING) & strobe & have_space & (lines_left==1) & chain) )
          & ~empty_ctrl;
    
-   assign debug_rx = { 6'd0,send_imm,chain,
-                      wr_write_o, wr_done_o, wr_ready_i, wr_full_i,xfer_state,eop_o, sop_o, run,
-                      write,full,read,empty,write_ctrl,full_ctrl,read_ctrl,empty_ctrl,
+   assign debug_rx = { 8'd0,
+                      1'd0, send_imm, chain, wr_ready_i,wr_ready_o, 2'b0, run,
+                      write,have_space,wr_flags_o[1:0],write_ctrl,full_ctrl,read_ctrl,empty_ctrl,
                       sc_pre1, clear_overrun, go_now, too_late, overrun, ibs_state[2:0] };
 endmodule // rx_control
index 0c4ab1a524a2f0b08cf40c81794410f224325f52..e5fed0b933a9194523178063105c58b2eb25f835 100644 (file)
@@ -9,13 +9,11 @@ module tx_control
      input [31:0] master_time, 
      output underrun,
      
-     // To Buffer interface
+     // To FIFO interface from Buffer Pool
      input [31:0] rd_dat_i,
-     input rd_sop_i,
-     input rd_eop_i,
-     output rd_read_o,
-     output rd_done_o,
-     output rd_error_o,
+     input [3:0] rd_flags_i,
+     input rd_ready_i,
+     output rd_ready_o,
      
      // To DSP Core
      output [31:0] sample,
@@ -31,6 +29,10 @@ module tx_control
      output [31:0] debug
      );
 
+   wire           rd_sop_i  = rd_flags_i[0];  // Unused
+   wire           rd_eop_i  = rd_flags_i[1];
+   wire           rd_occ_i = rd_flags_i[3:2]; // Unused, should always be 0
+
    // Buffer interface to internal FIFO
    wire     write_data, write_ctrl, full_data, full_ctrl;
    wire     read_data, read_ctrl, empty_data, empty_ctrl;
@@ -39,57 +41,63 @@ module tx_control
    reg [2:0] held_flags;
    
    localparam XFER_IDLE = 0;
-   localparam XFER_1 = 1;
-   localparam XFER_2 = 2;
-   localparam XFER_DATA = 3;
+   localparam XFER_CTRL = 1;
+   localparam XFER_PKT = 2;
+   // Add underrun state?
    
    always @(posedge clk)
      if(rst)
        xfer_state <= XFER_IDLE;
+     else if(clear_state)
+       xfer_state <= XFER_IDLE;
      else
-       if(clear_state)
-        xfer_state <= XFER_IDLE;
-       else
+       if(rd_ready_i & rd_ready_o)
         case(xfer_state)
           XFER_IDLE :
-            if(rd_sop_i)
-              xfer_state <= XFER_1;
-          XFER_1 :
             begin
-               xfer_state <= XFER_2;
+               xfer_state <= XFER_CTRL;
                held_flags <= rd_dat_i[2:0];
             end
-          XFER_2 :
-            if(~full_ctrl)
-              xfer_state <= XFER_DATA;
-          XFER_DATA :
-            if(rd_eop_i & ~full_data)
+          XFER_CTRL :
+            xfer_state <= XFER_PKT;
+          XFER_PKT :
+            if(rd_eop_i)
               xfer_state <= XFER_IDLE;
         endcase // case(xfer_state)
+
+   wire have_data_space;
+   assign full_data   = ~have_data_space;
    
-   assign write_data = (xfer_state == XFER_DATA) & ~full_data;
-   assign write_ctrl = (xfer_state == XFER_2) & ~full_ctrl;
+   assign write_data  = (xfer_state == XFER_PKT) & rd_ready_i & rd_ready_o;
+   assign write_ctrl  = (xfer_state == XFER_CTRL) & rd_ready_i & rd_ready_o;
 
-   assign rd_read_o = (xfer_state == XFER_1) | write_data | write_ctrl;
-   assign rd_done_o = 0;  // Always take everything we're given
-   assign rd_error_o = 0;  // Should we indicate overruns here?
+   assign rd_ready_o  = ~full_data & ~full_ctrl;
    
    wire [31:0] data_o;
-   wire        sop_o, eop_o, eob, sob, send_imm;
+   wire        eop_o, eob, sob, send_imm;
    wire [31:0] sendtime;
    wire [4:0]  occ_ctrl;
-   
-   cascadefifo2 #(.WIDTH(34),.SIZE(FIFOSIZE)) txctrlfifo
+/*   
+   cascadefifo2 #(.WIDTH(33),.SIZE(FIFOSIZE)) txctrlfifo
      (.clk(clk),.rst(rst),.clear(clear_state),
-      .datain({rd_sop_i,rd_eop_i,rd_dat_i}), .write(write_data), .full(full_data),
-      .dataout({sop_o,eop_o,data_o}), .read(read_data), .empty(empty_data),
+      .datain({rd_eop_i,rd_dat_i[31:0]}), .write(write_data), .full(full_data),
+      .dataout({eop_o,data_o}), .read(read_data), .empty(empty_data),
+      .space(), .occupied(fifo_occupied) );
+*/
+   wire        have_data;
+   assign empty_data  = ~have_data;
+   
+   fifo_cascade #(.WIDTH(33),.SIZE(FIFOSIZE)) txctrlfifo
+     (.clk(clk),.reset(rst),.clear(clear_state),
+      .datain({rd_eop_i,rd_dat_i[31:0]}), .src_rdy_i(write_data), .dst_rdy_o(have_data_space),
+      .dataout({eop_o,data_o}), .src_rdy_o(have_data), .dst_rdy_i(read_data),
       .space(), .occupied(fifo_occupied) );
    assign      fifo_full = full_data;
    assign      fifo_empty = empty_data;
 
    shortfifo #(.WIDTH(35)) ctrlfifo
      (.clk(clk),.rst(rst),.clear(clear_state),
-      .datain({held_flags[2:0],rd_dat_i}), .write(write_ctrl), .full(full_ctrl),
+      .datain({held_flags[2:0],rd_dat_i[31:0]}), .write(write_ctrl), .full(full_ctrl),
       .dataout({send_imm,sob,eob,sendtime}), .read(read_ctrl), .empty(empty_ctrl),
       .space(), .occupied(occ_ctrl) );
 
index 8429b8fd921a5d9b21b8b256e2ae8751ea5c097b..17049bfe69d87befe426108cc0d3ea8907e08f73 100644 (file)
@@ -7,12 +7,10 @@ module serdes
     (input clk, input rst,
      // TX side
      output ser_tx_clk, output [15:0] ser_t, output ser_tklsb, output ser_tkmsb,
-     input [31:0] rd_dat_i, output rd_read_o, output rd_done_o, output rd_error_o,
-     input rd_sop_i, input rd_eop_i,
+     input [31:0] rd_dat_i, input [3:0] rd_flags_i, output rd_ready_o, input rd_ready_i,
      // RX side
      input ser_rx_clk, input [15:0] ser_r, input ser_rklsb, input ser_rkmsb,
-     output [31:0] wr_dat_o, output wr_write_o, output wr_done_o, output wr_error_o,
-     input wr_ready_i, input wr_full_i,
+     output [31:0] wr_dat_o, output [3:0] wr_flags_o, output wr_ready_o, input wr_ready_i,
 
      output [15:0] tx_occupied, output tx_full, output tx_empty,
      output [15:0] rx_occupied, output rx_full, output rx_empty,
@@ -29,8 +27,7 @@ module serdes
    serdes_tx #(.FIFOSIZE(TXFIFOSIZE)) serdes_tx
      (.clk(clk),.rst(rst),
       .ser_tx_clk(ser_tx_clk),.ser_t(ser_t),.ser_tklsb(ser_tklsb),.ser_tkmsb(ser_tkmsb),
-      .rd_dat_i(rd_dat_i),.rd_read_o(rd_read_o),.rd_done_o(rd_done_o),.rd_error_o(rd_error_o),
-      .rd_sop_i(rd_sop_i),.rd_eop_i(rd_eop_i),
+      .rd_dat_i(rd_dat_i),.rd_flags_i(rd_flags_i),.rd_ready_o(rd_ready_o),.rd_ready_i(rd_ready_i),
       .inhibit_tx(inhibit_tx), .send_xon(send_xon), .send_xoff(send_xoff), .sent(sent),
       .fifo_occupied(tx_occupied),.fifo_full(tx_full),.fifo_empty(tx_empty),
       .debug(debug_tx) );
@@ -38,8 +35,7 @@ module serdes
    serdes_rx #(.FIFOSIZE(RXFIFOSIZE)) serdes_rx
      (.clk(clk),.rst(rst),
       .ser_rx_clk(ser_rx_clk),.ser_r(ser_r),.ser_rklsb(ser_rklsb),.ser_rkmsb(ser_rkmsb),
-      .wr_dat_o(wr_dat_o),.wr_write_o(wr_write_o),.wr_done_o(wr_done_o),.wr_error_o(wr_error_o),
-      .wr_ready_i(wr_ready_i),.wr_full_i(wr_full_i),
+      .wr_dat_o(wr_dat_o),.wr_flags_o(wr_flags_o),.wr_ready_o(wr_ready_o),.wr_ready_i(wr_ready_i),
       .fifo_space(fifo_space), .xon_rcvd(xon_rcvd), .xoff_rcvd(xoff_rcvd),
       .fifo_occupied(rx_occupied),.fifo_full(rx_full),.fifo_empty(rx_empty),
       .serdes_link_up(serdes_link_up), .debug(debug_rx) );
@@ -55,13 +51,13 @@ module serdes
    //assign      debug = { fifo_space, send_xon, send_xoff, debug_rx[13:0] };
    //assign      debug = debug_rx;
 
-   assign      debug0 = { { debug_tx[3:0] /* xfer_active,state[2:0] */, rd_read_o, rd_done_o, rd_sop_i, rd_eop_i },
+   assign      debug0 = { { 2'b00, rd_ready_o, rd_ready_i, rd_flags_i[3:0]},
                          { debug_tx[5:4] /* full,empty */ , inhibit_tx, send_xon, send_xoff, sent, ser_tkmsb, ser_tklsb},
                          { ser_t[15:8] },
                          { ser_t[7:0] } };
    
    assign      debug1 = { { debug_rx[7:0] }, /*  odd,xfer_active,sop_i,eop_i,error_i,state[2:0] */
-                         { wr_write_o, wr_error_o, wr_ready_i, wr_done_o,  xon_rcvd, xoff_rcvd, ser_rkmsb, ser_rklsb },
+                         { wr_flags_o[1:0], wr_ready_i, wr_ready_o,  xon_rcvd, xoff_rcvd, ser_rkmsb, ser_rklsb },
                          { ser_r[15:8] },
                          { ser_r[7:0] } };
 endmodule // serdes
index 8c488d7d78761f776665870cf1d516861aca5d33..afefccaa15bc44bb3d78ba70c8e9b343616b47c9 100644 (file)
@@ -32,12 +32,10 @@ module serdes_rx
      input ser_rkmsb,
      
      output [31:0] wr_dat_o,
-     output wr_write_o,
-     output wr_done_o,
-     output wr_error_o,
+     output [3:0] wr_flags_o,
      input wr_ready_i,
-     input wr_full_i,
-
+     output wr_ready_o,
+     
      output [15:0] fifo_space,
      output xon_rcvd, output xoff_rcvd,
 
@@ -72,7 +70,7 @@ module serdes_rx
    
    reg [31:0]  line_i;
    reg                sop_i, eop_i, error_i;
-   wire        error_o, sop_o, eop_o, write, read, empty, full;
+   wire        error_o, sop_o, eop_o, write;
    reg [15:0]  halfline;
    reg [8:0]   holder;
    wire [31:0] line_o;
@@ -83,14 +81,11 @@ module serdes_rx
    wire [15:0] nextCRC;
    reg                write_d;
 
+   wire        rst_rxclk;
+   wire        have_space;
+
    oneshot_2clk rst_1s(.clk_in(clk),.in(rst),.clk_out(ser_rx_clk),.out(rst_rxclk));
 
-   /*
-   ss_rcvr #(.WIDTH(18)) ss_rcvr
-     (.rxclk(ser_rx_clk),.sysclk(clk),.rst(rst),
-      .data_in({ser_rkmsb,ser_rklsb,ser_r}),.data_out(even_data),
-      .clock_present());
-   */
    assign      even_data = {ser_rkmsb,ser_rklsb,ser_r};
    
    always @(posedge ser_rx_clk)
@@ -172,7 +167,7 @@ module serdes_rx
           if(chosen_data[17:16] == 0)
             begin
                line_i <= {chosen_data[15:0],halfline};
-               if(full)  // No space to write to!  Should have been avoided by flow control
+               if(~have_space)  // No space to write to!  Should have been avoided by flow control
                  state <= ERROR;
                else
                  begin
@@ -205,7 +200,7 @@ module serdes_rx
           if(chosen_data[17:16] == 0)
             begin
                line_i <= {1'b0,1'b0,1'b0,chosen_data[15:0],halfline};
-               if(full)  // No space to write to!
+               if(~have_space)  // No space to write to!
                  state <= ERROR;
                else
                  begin
@@ -221,7 +216,7 @@ module serdes_rx
         CRC_CHECK :
           if(chosen_data[17:0] == {2'b00,CRC})
             begin
-               if(full)
+               if(~have_space)
                  state <= ERROR;
                else
                  begin
@@ -237,7 +232,7 @@ module serdes_rx
         ERROR :
           begin
              error_i <= 1;
-             if(~full)
+             if(have_space)
                state <= IDLE;
           end
         DONE :
@@ -264,81 +259,25 @@ module serdes_rx
      else write_d <= write_pre;
 
    // Internal FIFO, size 9 is 2K, size 10 is 4K Bytes
-   assign write = eop_i | (error_i & ~full) | (write_d & (state != CRC_CHECK));
-
+   assign write = eop_i | (error_i & have_space) | (write_d & (state != CRC_CHECK));
 
-//`define CASC 1
-`define MYFIFO 1   
-//`define XILFIFO 1
-
-`ifdef CASC   
-   cascadefifo2 #(.WIDTH(35),.SIZE(FIFOSIZE)) serdes_rx_fifo
-     (.clk(clk),.rst(rst),.clear(0),
-      .datain({error_i,sop_i,eop_i,line_i}), .write(write), .full(full),
-      .dataout({error_o,sop_o,eop_o,line_o}), .read(read), .empty(empty),
-      .space(fifo_space),.occupied(fifo_occupied) );
-   assign fifo_full = full;
-   assign fifo_empty = empty;
-`endif
-
-`ifdef MYFIFO
-   wire [FIFOSIZE-1:0] level;
-    fifo_2clock_casc #(.DWIDTH(35),.AWIDTH(FIFOSIZE)) serdes_rx_fifo
+   fifo_2clock_cascade #(.WIDTH(35),.SIZE(FIFOSIZE)) serdes_rx_fifo
      (.arst(rst),
-      .wclk(ser_rx_clk),.datain({error_i,sop_i,eop_i,line_i}), .write(write), .full(full),
-      .rclk(clk),.dataout({error_o,sop_o,eop_o,line_o}), .read(read), .empty(empty),
-      .level_rclk(level) );
-   assign             fifo_space = {{(16-FIFOSIZE){1'b0}},{FIFOSIZE{1'b1}}} - 
-                      {{(16-FIFOSIZE){1'b0}},level};
-   assign             fifo_occupied = { {(16-FIFOSIZE){1'b0}} ,level};
-   assign             fifo_full = full;   // Note -- fifo_full is in the wrong clock domain
-   assign             fifo_empty = empty;
-`endif
+      .wclk(ser_rx_clk),.datain({error_i,sop_i,eop_i,line_i}), 
+      .src_rdy_i(write), .dst_rdy_o(have_space), .space(fifo_space), 
+      .rclk(clk),.dataout({error_o,sop_o,eop_o,line_o}), 
+      .src_rdy_o(wr_ready_o), .dst_rdy_i(wr_ready_i), .occupied(fifo_occupied) );
 
-`ifdef XILFIFO
-   wire [FIFOSIZE-1:0] level;
-   fifo_generator_v4_1 ser_rx_fifo
-     (.din({error_i,sop_i,eop_i,line_i}),
-      .rd_clk(clk),
-      .rd_en(read),
-      .rst(rst),
-      .wr_clk(ser_rx_clk),
-      .wr_en(write),
-      .dout({error_o,sop_o,eop_o,line_o}),
-      .empty(empty),
-      .full(full),
-      .rd_data_count(level),
-      .wr_data_count() );
-   assign             fifo_space = {{(16-FIFOSIZE){1'b0}},{FIFOSIZE{1'b1}}} - 
-                      {{(16-FIFOSIZE){1'b0}},level};
-   assign             fifo_occupied = { {(16-FIFOSIZE){1'b0}}, level };
-   assign             fifo_full = full;   // Note -- fifo_full is in the wrong clock domain
-   assign             fifo_empty = empty;
-`endif //  `ifdef XILFIFO
-   
+   assign             fifo_full = ~have_space;   // Note -- in the wrong clock domain
+   assign             fifo_empty = ~wr_ready_o;
    
    // Internal FIFO to Buffer interface
-   reg                xfer_active;
-
-   always @(posedge clk)
-     if(rst)
-       xfer_active <= 0;
-     else if(xfer_active & ~empty & (eop_o | wr_full_i | error_o))
-       xfer_active <= 0;
-     else if(wr_ready_i & sop_o)
-       xfer_active <= 1;
-
-   assign      read = (xfer_active | ~sop_o) & ~empty;
-
-   assign      wr_write_o = xfer_active & ~empty;
-   assign      wr_done_o = eop_o & ~empty & xfer_active;
-   //assign      wr_error_o = xfer_active & ((wr_full_i & ~eop_o & ~empty)|error_o);
-   assign      wr_error_o = xfer_active & ~empty & error_o;
-
-   assign      wr_dat_o = line_o;
-
-   wire        slu = ~(({2'b11,K_ERROR,K_ERROR}=={ser_rkmsb,ser_rklsb,ser_r}) ||
+   assign wr_dat_o                   = line_o;
+   assign wr_flags_o = { 2'b00, eop_o | error_o, sop_o | error_o };
+   
+   wire slu = ~(({2'b11,K_ERROR,K_ERROR}=={ser_rkmsb,ser_rklsb,ser_r}) ||
                       ({2'b11,K_LOS,K_LOS}=={ser_rkmsb,ser_rklsb,ser_r}));
+   
    reg [3:0]   slu_reg;
    
    always @(posedge clk)
@@ -348,6 +287,6 @@ module serdes_rx
    always @(posedge clk)
      serdes_link_up <= &slu_reg[3:1];
    
-   assign      debug = { full, empty, odd, xfer_active, sop_i, eop_i, error_i, state[2:0] };
+   assign      debug = { have_space, wr_ready_o, odd, sop_i, eop_i, error_i, state[2:0] };
    
 endmodule // serdes_rx
index fa4abe5dfe9ec108f1bba3764766d99840346fca..c74414e925cb5f27a88fbd84dcf34375a20e1ec7 100644 (file)
@@ -33,11 +33,9 @@ module serdes_tx
      
      // TX Stream Interface
      input [31:0] rd_dat_i,
-     output rd_read_o,
-     output rd_done_o,
-     output rd_error_o,
-     input rd_sop_i,
-     input rd_eop_i,
+     input [3:0] rd_flags_i,
+     output rd_ready_o,
+     input rd_ready_i,
 
      // Flow control interface
      input inhibit_tx,
@@ -79,36 +77,25 @@ module serdes_tx
    reg [3:0]   wait_count;
    
    // Internal FIFO, size 9 is 2K, size 10 is 4K bytes
-   wire        sop_o, eop_o, write, full, read, empty;
+   wire        sop_o, eop_o;
    wire [31:0] data_o;
-   reg                xfer_active;
-   
-   cascadefifo2 #(.WIDTH(34),.SIZE(FIFOSIZE)) serdes_tx_fifo
-     (.clk(clk),.rst(rst),.clear(0),
-      .datain({rd_sop_i,rd_eop_i,rd_dat_i}), .write(write), .full(full),
-      .dataout({sop_o,eop_o,data_o}), .read(read), .empty(empty),
+
+   wire        rd_sop_i  = rd_flags_i[0];
+   wire        rd_eop_i  = rd_flags_i[1];
+   wire [1:0]  rd_occ_i = rd_flags_i[3:2];  // Unused
+
+   wire        have_data, empty;
+   fifo_cascade #(.WIDTH(34),.SIZE(FIFOSIZE)) serdes_tx_fifo
+     (.clk(clk),.reset(rst),.clear(0),
+      .datain({rd_sop_i,rd_eop_i,rd_dat_i}), .src_rdy_i(rd_ready_i), .dst_rdy_o(rd_ready_o),
+      .dataout({sop_o,eop_o,data_o}), .dst_rdy_i(read), .src_rdy_o(have_data),
       .space(), .occupied(fifo_occupied) );
-   assign      fifo_full = full;
-   assign      fifo_empty = empty;
-   
-   // Buffer interface to internal FIFO
-   always @(posedge clk)
-     if(rst)
-       xfer_active <= 0;
-     else if(rd_eop_i & ~full)  // In case we can't store last line right away
-       xfer_active <= 0;
-     else if(rd_sop_i)
-       xfer_active <= 1;
-   
-   assign      write = xfer_active & ~full;
-   
-   assign      rd_read_o = write;
-   assign      rd_done_o = 0;        // Always take everything we're given
-   assign      rd_error_o = 0;       // No chance for errors anticipated
-   
    
-   // FIXME Implement flow control
+   assign fifo_full   = ~rd_ready_o;
+   assign empty       = ~have_data;
+   assign fifo_empty  = empty;
    
+   // FIXME Implement flow control   
    reg [15:0]  second_word;
    reg [33:0]  pipeline;
    
@@ -193,7 +180,7 @@ module serdes_tx
    
    CRC16_D16 crc_blk( (state==RUN1) ? data_o[15:0] : data_o[31:16], CRC, nextCRC);
 
-   assign debug = { 26'd0, full, empty, xfer_active, state[2:0] };
+   assign debug = { 28'd0, state[2:0] };
    
 endmodule // serdes_tx
 
index 61e120cffaf3db65093ad16b88c8bc8d62448fed..17f35e962c96b111c711f17ab88479e43dc88009 100644 (file)
@@ -1,3 +1,4 @@
 /a.out
-/*~
 /*.vcd
+simple_gemac_wrapper_tb
+
index 3d76c4928e64d66d5fce494ff203648b87d96b5d..d371bb9c559b029effa5800e949e987000a05f10 100644 (file)
@@ -7,7 +7,7 @@ module delay_line
     input [WIDTH-1:0] din,
     output [WIDTH-1:0] dout);
     
-   integer i;
+   genvar             i;
    generate
       for (i=0;i<WIDTH;i=i+1)
        begin : gen_delay
diff --git a/usrp2/fpga/simple_gemac/eth_tasks_f36.v b/usrp2/fpga/simple_gemac/eth_tasks_f36.v
new file mode 100644 (file)
index 0000000..efd7277
--- /dev/null
@@ -0,0 +1,92 @@
+
+
+task SendFlowCtrl;
+   input [15:0] fc_len;
+   begin
+      $display("Sending Flow Control, quanta = %d, time = %d", fc_len,$time);
+      pause_time <= fc_len;
+      @(posedge eth_clk);
+      pause_req <= 1;
+      @(posedge eth_clk);
+      pause_req <= 0;
+      $display("Sent Flow Control");
+   end
+endtask // SendFlowCtrl
+
+task SendPacket_to_fifo36;
+   input [31:0] data_start;
+   input [15:0] data_len;
+   reg [15:0]  count;
+   begin
+      $display("Sending Packet Len=%d, %d", data_len, $time);
+      count   <= 2;
+      tx_f36_data <= {2'b0, 1'b0, 1'b1, data_start};
+      tx_f36_src_rdy  <= 1;
+      #1;
+      while(count < data_len)
+       begin
+          while(~tx_f36_dst_rdy)
+            @(posedge sys_clk);
+          @(posedge sys_clk);
+          tx_f36_data[31:0] = tx_f36_data[31:0] + 32'h0101_0101;
+          count           = count + 4;
+          tx_f36_data[32] <= 0;
+       end
+      tx_f36_data[33]    <= 1;
+      while(~tx_f36_dst_rdy)
+       @(posedge sys_clk);
+      @(posedge sys_clk);
+      tx_f36_src_rdy <= 0;
+   end
+endtask // SendPacket_to_fifo36
+
+/*
+task Waiter;
+   input [31:0] wait_length;
+   begin
+      tx_ll_src_rdy2 <= 0;
+      repeat(wait_length)
+       @(posedge clk);
+      tx_ll_src_rdy2 <= 1;
+   end
+endtask // Waiter
+*/
+
+/*
+task SendPacketFromFile_f36;
+   input [31:0] data_len;
+   input [31:0] wait_length;
+   input [31:0] wait_time;
+   
+   integer count;
+   begin
+      $display("Sending Packet From File to LL8 Len=%d, %d",data_len,$time);
+      $readmemh("test_packet.mem",pkt_rom );     
+
+      while(~tx_f36_dst_rdy)
+       @(posedge clk);
+      tx_f36_data <= pkt_rom[0];
+      tx_f36_src_rdy <= 1;
+      tx_f36_eof     <= 0;
+      @(posedge clk);
+      
+      for(i=1;i<data_len-1;i=i+1)
+       begin
+          while(~tx_ll_dst_rdy2)
+            @(posedge clk);
+          tx_ll_data2 <= pkt_rom[i];
+          tx_ll_sof2  <= 0;
+          @(posedge clk);
+//        if(i==wait_time)
+//          Waiter(wait_length);
+       end
+      
+      while(~tx_ll_dst_rdy2)
+       @(posedge clk);
+      tx_ll_eof2 <= 1;
+      tx_ll_data2 <= pkt_rom[data_len-1];
+      @(posedge clk);
+      tx_ll_src_rdy2 <= 0;
+   end
+endtask
+*/
index 7ded9e08b2c52ac82e9a6ffb9093ab103d8b7d7b..b13334d0ec389583a5214d5c2f23ccd5fce01dac 100644 (file)
@@ -2,84 +2,59 @@
 // RX side of flow control -- when we are running out of RX space, send a PAUSE\r
 \r
 module flow_ctrl_rx\r
-  (input        rst,\r
-   //host processor\r
-   input        pause_frame_send_en,\r
-   input [15:0] pause_quanta_set,\r
-   input [15:0] fc_hwmark,\r
-   input [15:0] fc_lwmark,\r
-   // From MAC_rx_ctrl\r
-   input        rx_clk,\r
-   input [15:0] rx_fifo_space,\r
-   // MAC_tx_ctrl\r
-   input        tx_clk,\r
-   output reg   xoff_gen,\r
-   output reg   xon_gen,\r
-   input        xoff_gen_complete,\r
-   input        xon_gen_complete\r
+  (input pause_request_en, input [15:0] pause_time, input [15:0] pause_thresh,\r
+   input rx_clk, input rx_reset, input [15:0] rx_fifo_space,\r
+   input tx_clk, input tx_reset, output reg pause_req, output reg [15:0] pause_time_req\r
    );\r
    \r
    // ******************************************************************************        \r
    // Force our TX to send a PAUSE frame because our RX is nearly full\r
    // ******************************************************************************\r
 \r
-   reg xon_int, xoff_int;\r
+   // RX Clock Domain\r
+   reg xon, xoff;\r
    reg [21:0] countdown;\r
\r
-   always @(posedge rx_clk or posedge rst)\r
-     if(rst)\r
-       begin\r
-         xon_int <= 0;\r
-         xoff_int <= 0;\r
-       end\r
-     else \r
-       begin\r
-         xon_int <= 0;\r
-         xoff_int <= 0;\r
-         if(pause_frame_send_en)\r
-           if(countdown == 0)\r
-             if(rx_fifo_space < fc_lwmark)\r
-               xoff_int <= 1;\r
-             else\r
-               ;\r
-           else\r
-             if(rx_fifo_space > fc_hwmark)\r
-               xon_int <= 1;\r
-       end // else: !if(rst)\r
-   \r
-   reg xoff_int_d1, xon_int_d1;\r
 \r
-   always @(posedge rx_clk)\r
-     xon_int_d1 <= xon_int;\r
-   always @(posedge rx_clk)\r
-     xoff_int_d1 <= xoff_int;\r
+   wire [15:0] pause_low_thresh = pause_thresh;\r
+   wire [15:0] pause_hi_thresh = 16'hFFFF;\r
+   wire [21:0] pq_reduced = {pause_time,6'd0} - 1700;\r
    \r
-   always @ (posedge tx_clk or posedge rst)\r
-     if (rst)\r
-       xoff_gen        <=0;\r
-     else if (xoff_gen_complete)\r
-       xoff_gen        <=0;\r
-     else if (xoff_int | xoff_int_d1)\r
-       xoff_gen        <=1;\r
+   always @(posedge rx_clk)\r
+     if(rx_reset)\r
+       xoff <= 0;\r
+     else\r
+       xoff <= (pause_request_en & (countdown==0) & (rx_fifo_space < pause_low_thresh));\r
    \r
-   always @ (posedge tx_clk or posedge rst)\r
-     if (rst)\r
-       xon_gen     <=0;\r
-     else if (xon_gen_complete)\r
-       xon_gen     <=0;\r
-     else if (xon_int | xon_int_d1)\r
-       xon_gen     <=1;                     \r
-\r
-   wire [15:0] pq_reduced = pause_quanta_set - 2;\r
+   always @(posedge rx_clk)\r
+     if(rx_reset)\r
+       xon  <= 0;\r
+     else\r
+       xon  <= ((countdown!=0) & (rx_fifo_space > pause_hi_thresh));\r
    \r
-   always @(posedge tx_clk or posedge rst)\r
-     if(rst)\r
+   always @(posedge rx_clk)\r
+     if(rx_reset)\r
        countdown <= 0;\r
-     else if(xoff_gen)\r
-       countdown <= {pq_reduced,6'd0};\r
-     else if(xon_gen)\r
+     else if(xoff)\r
+       countdown <= pq_reduced;\r
+     else if(xon)\r
        countdown <= 0;\r
      else if(countdown != 0)\r
        countdown <= countdown - 1;\r
+\r
+   // Cross clock domains\r
+   oneshot_2clk send_xon (.clk_in(rx_clk), .in(xon), .clk_out(tx_clk), .out(xon_tx));\r
+   oneshot_2clk send_xoff (.clk_in(rx_clk), .in(xoff), .clk_out(tx_clk), .out(xoff_tx));\r
+   \r
+   always @(posedge tx_clk)\r
+     if(xoff_tx)\r
+       pause_time_req <= pause_time;\r
+     else if(xon_tx)\r
+       pause_time_req <= 0;\r
+\r
+   always @(posedge tx_clk)\r
+     if(tx_reset)\r
+       pause_req      <= 0;\r
+     else \r
+       pause_req      <= xon_tx | xoff_tx;\r
    \r
-endmodule // flow_ctrl\r
+endmodule // flow_ctrl_rx\r
index 39ada9a4fe1e14ba7608f8225c73cd8334333f23..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,13 +0,0 @@
-
-
-module ll8_shortfifo
-  (input clk, input reset, input clear,
-   input [7:0] datain, input sof_i, input eof_i, input error_i, input src_rdy_i, output dst_rdy_o,
-   output [7:0] dataout, output sof_o, output eof_o, output error_o, output src_rdy_o, input dst_rdy_i);
-
-   fifo_short #(.WIDTH(11)) fifo_short
-     (.clk(clk), .reset(reset), .clear(clear),
-      .datain({error_i,eof_i,sof_i,datain}), .src_rdy_i(src_rdy_i), .dst_rdy_o(dst_rdy_o),
-      .dataout({error_o,eof_o,sof_o,dataout}), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i));
-
-endmodule // ll8_shortfifo
index d4015716e80c7d561d20f45a08cf378577d62635..5ec233d957195b1c51fd1eb5b58edf437b63b85b 100644 (file)
@@ -6,6 +6,13 @@ module rxmac_to_ll8
 
    reg [2:0] xfer_state;
 
+   localparam XFER_IDLE     = 0;
+   localparam XFER_ACTIVE   = 1;
+   localparam XFER_ERROR    = 2;
+   localparam XFER_ERROR2   = 3;
+   localparam XFER_OVERRUN  = 4;
+   localparam XFER_OVERRUN2 = 5;
+      
    assign ll_data          = rx_data;
    assign ll_src_rdy       = ((rx_valid & (xfer_state != XFER_OVERRUN2) )
                               | (xfer_state == XFER_ERROR) 
@@ -14,13 +21,6 @@ module rxmac_to_ll8
    assign ll_eof           = (rx_ack | (xfer_state==XFER_ERROR) | (xfer_state==XFER_OVERRUN));
    assign ll_error         = (xfer_state == XFER_ERROR)|(xfer_state==XFER_OVERRUN);
    
-   localparam XFER_IDLE     = 0;
-   localparam XFER_ACTIVE   = 1;
-   localparam XFER_ERROR    = 2;
-   localparam XFER_ERROR2   = 3;
-   localparam XFER_OVERRUN  = 4;
-   localparam XFER_OVERRUN2 = 5;
-      
    always @(posedge clk)
      if(reset | clear)
        xfer_state         <= XFER_IDLE;
index 5ec2fa2bac90db0692a019ca346a25547b87384a..868a668199a43daa411c7f637e5c170f5b1c4019 100644 (file)
@@ -6,7 +6,7 @@ module simple_gemac
    input GMII_RX_CLK, input GMII_RX_DV, input GMII_RX_ER, input [7:0] GMII_RXD,
 
    // Flow Control Interface
-   input pause_req, input [15:0] pause_time, input pause_en,
+   input pause_req, input [15:0] pause_time_req, input pause_respect_en,
 
    // Settings
    input [47:0] ucast_addr, input [47:0] mcast_addr,
@@ -33,7 +33,7 @@ module simple_gemac
       .GMII_TX_ER(GMII_TX_ER), .GMII_TXD(GMII_TXD),
       .tx_clk(tx_clk), .tx_data(tx_data), .tx_valid(tx_valid), .tx_error(tx_error), .tx_ack(tx_ack),
       .ifg(SGE_IFG), .mac_addr(ucast_addr),
-      .pause_req(pause_req), .pause_time(pause_time),  // We request flow control
+      .pause_req(pause_req), .pause_time(pause_time_req),  // We request flow control
       .pause_apply(pause_apply), .paused(paused)  // We respect flow control
       );
 
@@ -50,7 +50,7 @@ module simple_gemac
 
    flow_ctrl_tx flow_ctrl_tx
      (.rst(rst_txclk), .tx_clk(tx_clk),
-      .tx_pause_en(pause_en),
+      .tx_pause_en(pause_respect_en),
       .pause_quanta(pause_quanta_rcvd), // 16 bit value
       .pause_quanta_val(pause_rcvd),
       .pause_apply(pause_apply),
index 7daa9adad2d60daa1eaafbd4a4303f02429f5114..bad43a60704d339f6d35f050710fef21ffff4ba4 100644 (file)
@@ -1,14 +1,31 @@
 
 
 module simple_gemac_rx
-  (input clk125, input reset,
+  (input reset,
    input GMII_RX_CLK, input GMII_RX_DV, input GMII_RX_ER, input [7:0] GMII_RXD,
    output rx_clk, output [7:0] rx_data, output reg rx_valid, output rx_error, output reg rx_ack,
    input [47:0] ucast_addr, input [47:0] mcast_addr, 
    input pass_ucast, input pass_mcast, input pass_bcast, input pass_pause, input pass_all,
    output reg [15:0] pause_quanta_rcvd, output pause_rcvd );
 
-   reg [7:0] rxd_d1;
+   localparam RX_IDLE            = 0;
+   localparam RX_PREAMBLE        = 1;
+   localparam RX_FRAME                   = 2;
+   localparam RX_GOODFRAME       = 3;
+   localparam RX_DO_PAUSE        = 4;
+   localparam RX_ERROR                   = 5;
+   localparam RX_DROP            = 6;
+
+   localparam RX_PAUSE                   = 16;
+   localparam RX_PAUSE_CHK88     = RX_PAUSE + 5;
+   localparam RX_PAUSE_CHK08     = RX_PAUSE_CHK88 + 1;
+   localparam RX_PAUSE_CHK00     = RX_PAUSE_CHK08 + 1;
+   localparam RX_PAUSE_CHK01     = RX_PAUSE_CHK00 + 1;
+   localparam RX_PAUSE_STORE_MSB  = RX_PAUSE_CHK01 + 1;
+   localparam RX_PAUSE_STORE_LSB  = RX_PAUSE_STORE_MSB + 1;
+   localparam RX_PAUSE_WAIT_CRC   = RX_PAUSE_STORE_LSB + 1;
+   
+   reg [7:0]        rxd_d1;
    reg rx_dv_d1, rx_er_d1;
    assign rx_clk     = GMII_RX_CLK;
    
@@ -19,10 +36,15 @@ module simple_gemac_rx
        rxd_d1      <= GMII_RXD;
      end
 
+   reg [7:0] rx_state;
    wire [7:0] rxd_del;
    wire rx_dv_del, rx_er_del;
    reg go_filt;
    
+   wire match_crc;
+   wire clear_crc       = rx_state == RX_IDLE;
+   wire calc_crc        = (rx_state == RX_FRAME) | rx_state[7:4]==4'h1;
+
    localparam DELAY  = 6;
    delay_line #(.WIDTH(10)) rx_delay
      (.clk(rx_clk), .delay(DELAY), .din({rx_dv_d1,rx_er_d1,rxd_d1}),.dout({rx_dv_del,rx_er_dl,rxd_del}));
@@ -37,7 +59,6 @@ module simple_gemac_rx
    wire keep_packet  = (pass_ucast & is_ucast) | (pass_mcast & is_mcast) | 
        (pass_bcast & is_bcast) | (pass_pause & is_pause) | pass_all;
    
-   reg [7:0] rx_state;
    assign rx_data   = rxd_del;
    assign rx_error  = (rx_state == RX_ERROR);
 
@@ -58,24 +79,6 @@ module simple_gemac_rx
    address_filter af_pause (.clk(rx_clk), .reset(reset), .go(go_filt), .data(rxd_d1),
                            .address(48'h0180_c200_0001), .match(is_pause), .done());
 
-   localparam RX_IDLE            = 0;
-   localparam RX_PREAMBLE        = 1;
-   localparam RX_FRAME                   = 2;
-   localparam RX_GOODFRAME       = 3;
-   localparam RX_DO_PAUSE        = 4;
-   localparam RX_ERROR                   = 5;
-   localparam RX_DROP            = 6;
-
-   localparam RX_PAUSE                   = 16;
-   localparam RX_PAUSE_CHK88     = RX_PAUSE + 5;
-   localparam RX_PAUSE_CHK08     = RX_PAUSE_CHK88 + 1;
-   localparam RX_PAUSE_CHK00     = RX_PAUSE_CHK08 + 1;
-   localparam RX_PAUSE_CHK01     = RX_PAUSE_CHK00 + 1;
-   localparam RX_PAUSE_STORE_MSB  = RX_PAUSE_CHK01 + 1;
-   localparam RX_PAUSE_STORE_LSB  = RX_PAUSE_STORE_MSB + 1;
-   localparam RX_PAUSE_WAIT_CRC   = RX_PAUSE_STORE_LSB + 1;
-   
-   
    always @(posedge rx_clk)
      go_filt                    <= (rx_state==RX_PREAMBLE) & (rxd_d1 == 8'hD5);
 
@@ -155,9 +158,6 @@ module simple_gemac_rx
         endcase // case (rx_state)
 
    assign pause_rcvd = (rx_state == RX_DO_PAUSE);
-   wire match_crc;
-   wire clear_crc       = rx_state == RX_IDLE;
-   wire calc_crc        = (rx_state == RX_FRAME) | rx_state[7:4]==4'h1;
    crc crc_check(.clk(rx_clk),.reset(reset),.clear(clear_crc),
                 .data(rxd_d1),.calc(calc_crc),.crc_out(),.match(match_crc));
 
index 690fd5c374482c858dbeb6e49bab9a6fbdee66b6..dd870d04d3952da9793144841df0742a47cb2354 100644 (file)
@@ -23,14 +23,6 @@ module simple_gemac_tx
 
    wire [31:0] crc_out;
    
-   localparam MIN_FRAME_LEN  = 64 + 8 - 4; // Min frame length includes preamble but not CRC
-   localparam MAX_FRAME_LEN  = 8192;       // How big are the jumbo frames we want to handle?
-   always @(posedge tx_clk)
-     if(reset |(tx_state == TX_IDLE))
-       frame_len_ctr       <= 0;
-     else
-       frame_len_ctr       <= frame_len_ctr + 1;
-   
    localparam TX_IDLE       = 0;
    localparam TX_PREAMBLE    = 1;
    localparam TX_SOF_DEL     = TX_PREAMBLE + 7;
@@ -48,6 +40,14 @@ module simple_gemac_tx
    localparam TX_PAUSE_FIRST = TX_PAUSE_SOF + 1;
    localparam TX_PAUSE_END   = TX_PAUSE_SOF + 18;
 
+   localparam MIN_FRAME_LEN  = 64 + 8 - 4; // Min frame length includes preamble but not CRC
+   localparam MAX_FRAME_LEN  = 8192;       // How big are the jumbo frames we want to handle?
+   always @(posedge tx_clk)
+     if(reset |(tx_state == TX_IDLE))
+       frame_len_ctr       <= 0;
+     else
+       frame_len_ctr       <= frame_len_ctr + 1;
+   
    reg send_pause;
    reg [15:0] pause_time_held;
 
index ca7d4a3fc847cba0456d21ea631c1a28a2d9086b..6df277e3ee627ae574b51f6521051e9dc43a2d2f 100644 (file)
@@ -24,7 +24,9 @@ module simple_gemac_wb
    inout mdio, output mdc,
    output [47:0] ucast_addr, output [47:0] mcast_addr,
    output pass_ucast, output pass_mcast, output pass_bcast,
-   output pass_pause, output pass_all, output pause_en  );
+   output pass_pause, output pass_all, 
+   output pause_respect_en, output pause_request_en, 
+   output [15:0] pause_time, output [15:0] pause_thresh  );
 
    wire   acc    = wb_cyc & wb_stb;
    wire   wr_acc  = wb_cyc & wb_stb & wb_we;
@@ -36,10 +38,10 @@ module simple_gemac_wb
      else
        wb_ack   <= acc & ~wb_ack;
        
-   wire [5:0] misc_settings;
-   assign {pass_ucast, pass_mcast, pass_bcast, pass_pause, pass_all, pause_en}         = misc_settings;
+   wire [6:0] misc_settings;
+   assign {pause_request_en, pass_ucast, pass_mcast, pass_bcast, pass_pause, pass_all, pause_respect_en} = misc_settings;
 
-   wb_reg #(.ADDR(0),.DEFAULT(6'b111001))
+   wb_reg #(.ADDR(0),.DEFAULT(7'b0111001))
    wb_reg_settings (.clk(wb_clk), .rst(wb_rst), .adr(wb_adr[7:2]), .wr_acc(wr_acc),
                    .dat_i(wb_dat_i), .dat_o(misc_settings) );
    wb_reg #(.ADDR(1),.DEFAULT(0))
@@ -79,20 +81,23 @@ module simple_gemac_wb
    wire [2:0]  MIISTATUS;
 
    wb_reg #(.ADDR(5),.DEFAULT(0))
-   wb_reg_miimoder (.clk(wb_clk), .rst(wb_rst), .adr(wb_adr[7:2]), .dat_i(wb_dat_i), .dat_o({NoPre,Divider}) );
+   wb_reg_miimoder (.clk(wb_clk), .rst(wb_rst), .adr(wb_adr[7:2]), .wr_acc(wr_acc),
+                   .dat_i(wb_dat_i), .dat_o({NoPre,Divider}) );
    
    wb_reg #(.ADDR(6),.DEFAULT(0))
-   wb_reg_miiaddr (.clk(wb_clk), .rst(wb_rst), .adr(wb_adr[7:2]), .dat_i(wb_dat_i), .dat_o(MIIADDRESS) );
+   wb_reg_miiaddr (.clk(wb_clk), .rst(wb_rst), .adr(wb_adr[7:2]), .wr_acc(wr_acc),
+                  .dat_i(wb_dat_i), .dat_o(MIIADDRESS) );
    
    wb_reg #(.ADDR(7),.DEFAULT(0))
-   wb_reg_miidata (.clk(wb_clk), .rst(wb_rst), .adr(wb_adr[7:2]), .dat_i(wb_dat_i), .dat_o(CtrlData) );
+   wb_reg_miidata (.clk(wb_clk), .rst(wb_rst), .adr(wb_adr[7:2]), .wr_acc(wr_acc),
+                  .dat_i(wb_dat_i), .dat_o(CtrlData) );
    
    // MIICOMMAND register - needs special treatment because of auto-resetting bits
    always @ (posedge wb_clk)
      if (wb_rst)
        MIICOMMAND <= 0;
      else
-       if (wr_acc & (wb_adr == 8'd8))
+       if (wr_acc & (wb_adr[7:2] == 6'd8))
          MIICOMMAND <= wb_dat_i;
        else
          begin
@@ -128,8 +133,16 @@ module simple_gemac_wb
       .WCtrlDataStart(WCtrlDataStart), .RStatStart(RStatStart), 
       .UpdateMIIRX_DATAReg(UpdateMIIRX_DATAReg) );
 
+   wb_reg #(.ADDR(11),.DEFAULT(0))
+   wb_reg_pausetime (.clk(wb_clk), .rst(wb_rst), .adr(wb_adr[7:2]), .wr_acc(wr_acc),
+                    .dat_i(wb_dat_i), .dat_o(pause_time) );
+   
+   wb_reg #(.ADDR(12),.DEFAULT(0))
+   wb_reg_pausethresh (.clk(wb_clk), .rst(wb_rst), .adr(wb_adr[7:2]), .wr_acc(wr_acc),
+                      .dat_i(wb_dat_i), .dat_o(pause_thresh) );
+   
    always @(posedge wb_clk)
-     case(wb_adr)
+     case(wb_adr[7:2])
        0 : wb_dat_o <= misc_settings;
        1 : wb_dat_o <= ucast_addr[47:32];
        2 : wb_dat_o <= ucast_addr[31:0];
@@ -141,6 +154,8 @@ module simple_gemac_wb
        8 : wb_dat_o <= MIICOMMAND;
        9 : wb_dat_o <= MIISTATUS;
        10: wb_dat_o <= MIIRX_DATA;
-     endcase // case (wb_adr)
+       11: wb_dat_o <= pause_time;
+       12: wb_dat_o <= pause_thresh;
+     endcase // case (wb_adr[7:2])
    
 endmodule // simple_gemac_wb
diff --git a/usrp2/fpga/simple_gemac/simple_gemac_wrapper.build b/usrp2/fpga/simple_gemac/simple_gemac_wrapper.build
new file mode 100755 (executable)
index 0000000..30f65ab
--- /dev/null
@@ -0,0 +1 @@
+iverilog -Wimplict -Wportbind -y ../control_lib/newfifo/ -y ../models/ -y . -y miim -y ../coregen/ -y ../control_lib/ -o simple_gemac_wrapper_tb simple_gemac_wrapper_tb.v
index cd586ae5d07c3c06755861d2f9626a685ee13e36..71ad0cf0f7bb7e0e42c2b1f018af48c990ffc49e 100644 (file)
@@ -1,46 +1,46 @@
 
 module simple_gemac_wrapper
-  (input clk125, input reset,
-   // GMII
-   output GMII_GTX_CLK, output GMII_TX_EN, output GMII_TX_ER, output [7:0] GMII_TXD,
-   input GMII_RX_CLK, input GMII_RX_DV, input GMII_RX_ER, input [7:0] GMII_RXD,
+  #(parameter RXFIFOSIZE=9,
+    parameter TXFIFOSIZE=6)
+   (input clk125, input reset,
+    // GMII
+    output GMII_GTX_CLK, output GMII_TX_EN, output GMII_TX_ER, output [7:0] GMII_TXD,
+    input GMII_RX_CLK, input GMII_RX_DV, input GMII_RX_ER, input [7:0] GMII_RXD,
+    
+    // Client FIFO Interfaces
+    input sys_clk,
+    output [35:0] rx_f36_data, output rx_f36_src_rdy, input rx_f36_dst_rdy,
+    input [35:0] tx_f36_data, input tx_f36_src_rdy, output tx_f36_dst_rdy,
+    
+    // Wishbone Interface
+    input wb_clk, input wb_rst, input wb_stb, input wb_cyc, output wb_ack, input wb_we,
+    input [7:0] wb_adr, input [31:0] wb_dat_i, output [31:0] wb_dat_o,
+    
+    // MIIM
+    inout mdio, output mdc,
+    output [31:0] debug);
    
-   // Flow Control Interface
-   input pause_req, input [15:0] pause_time,
+   wire [7:0]    rx_data, tx_data;
+   wire          tx_clk, tx_valid, tx_error, tx_ack;
+   wire          rx_clk, rx_valid, rx_error, rx_ack;
    
-   // RX Client Interface
-   output rx_clk, output [7:0] rx_ll_data, output rx_ll_sof, output rx_ll_eof,
-   output rx_ll_error, output rx_ll_src_rdy, input rx_ll_dst_rdy,
+   wire [47:0]           ucast_addr, mcast_addr;
+   wire          pass_ucast, pass_mcast, pass_bcast, pass_pause, pass_all;
+   wire          pause_request_en, pause_respect_en;
+   wire [15:0]           pause_time, pause_thresh, pause_time_req, rx_fifo_space;
    
-   // TX Client Interface
-   output tx_clk, input [7:0] tx_ll_data, input tx_ll_sof, input tx_ll_eof,
-   input tx_ll_src_rdy, output tx_ll_dst_rdy,
-   
-   // Wishbone Interface
-   input wb_clk, input wb_rst, input wb_stb, input wb_cyc, output wb_ack, input wb_we,
-   input [7:0] wb_adr, input [31:0] wb_dat_i, output [31:0] wb_dat_o,
-   
-   // MIIM
-   inout mdio, output mdc );
-   
-   wire [7:0] rx_data, tx_data;
-   wire       tx_clk, tx_valid, tx_error, tx_ack;
-   wire       rx_clk, rx_valid, rx_error, rx_ack;
-
-   wire [47:0] ucast_addr, mcast_addr;
-   wire pass_ucast, pass_mcast, pass_bcast, pass_pause, pass_all, pause_en;
-
-   wire rst_rxclk, rst_txclk;
+   wire          tx_reset, rx_reset;
    reset_sync reset_sync_tx (.clk(tx_clk),.reset_in(reset),.reset_out(tx_reset));
    reset_sync reset_sync_rx (.clk(rx_clk),.reset_in(reset),.reset_out(rx_reset));
-
+   
    simple_gemac simple_gemac
      (.clk125(clk125),  .reset(reset),
       .GMII_GTX_CLK(GMII_GTX_CLK), .GMII_TX_EN(GMII_TX_EN),  
       .GMII_TX_ER(GMII_TX_ER), .GMII_TXD(GMII_TXD),
       .GMII_RX_CLK(GMII_RX_CLK), .GMII_RX_DV(GMII_RX_DV),  
       .GMII_RX_ER(GMII_RX_ER), .GMII_RXD(GMII_RXD),
-      .pause_req(pause_req), .pause_time(pause_time), .pause_en(1),
+      .pause_req(pause_req), .pause_time_req(pause_time_req), 
+      .pause_respect_en(pause_respect_en),
       .ucast_addr(ucast_addr), .mcast_addr(mcast_addr),
       .pass_ucast(pass_ucast), .pass_mcast(pass_mcast), .pass_bcast(pass_bcast), 
       .pass_pause(pass_pause), .pass_all(pass_all),
@@ -57,18 +57,107 @@ module simple_gemac_wrapper
       .mdio(mdio), .mdc(mdc),
       .ucast_addr(ucast_addr), .mcast_addr(mcast_addr),
       .pass_ucast(pass_ucast), .pass_mcast(pass_mcast), .pass_bcast(pass_bcast), 
-      .pass_pause(pass_pause), .pass_all(pass_all), .pause_en(pause_en) );
+      .pass_pause(pass_pause), .pass_all(pass_all), 
+      .pause_respect_en(pause_respect_en), .pause_request_en(pause_request_en),
+      .pause_time(pause_time), .pause_thresh(pause_thresh) );
 
+   // RX FIFO Chain
+   wire          rx_ll_sof, rx_ll_eof, rx_ll_src_rdy, rx_ll_dst_rdy;
+   
+   wire          rx_ll_sof2, rx_ll_eof2, rx_ll_src_rdy2, rx_ll_dst_rdy2;
+   wire          rx_ll_sof2_n, rx_ll_eof2_n, rx_ll_src_rdy2_n, rx_ll_dst_rdy2_n;
+   
+   wire [7:0]    rx_ll_data, rx_ll_data2;
+   
+   wire [35:0]           rx_f36_data_int1;
+   wire          rx_f36_src_rdy_int1, rx_f36_dst_rdy_int1;
+   
    rxmac_to_ll8 rx_adapt
      (.clk(rx_clk), .reset(rx_reset), .clear(0),
       .rx_data(rx_data), .rx_valid(rx_valid), .rx_error(rx_error), .rx_ack(rx_ack),
       .ll_data(rx_ll_data), .ll_sof(rx_ll_sof), .ll_eof(rx_ll_eof), .ll_error(rx_ll_error),
       .ll_src_rdy(rx_ll_src_rdy), .ll_dst_rdy(rx_ll_dst_rdy));
+
+   ll8_shortfifo rx_sfifo
+     (.clk(rx_clk), .reset(rx_reset), .clear(0),
+      .datain(rx_ll_data), .sof_i(rx_ll_sof), .eof_i(rx_ll_eof),
+      .error_i(rx_ll_error), .src_rdy_i(rx_ll_src_rdy), .dst_rdy_o(rx_ll_dst_rdy),
+      .dataout(rx_ll_data2), .sof_o(rx_ll_sof2), .eof_o(rx_ll_eof2),
+      .error_o(rx_ll_error2), .src_rdy_o(rx_ll_src_rdy2), .dst_rdy_i(rx_ll_dst_rdy2));
+
+   assign rx_ll_dst_rdy2  = ~rx_ll_dst_rdy2_n;
+   assign rx_ll_src_rdy2_n = ~rx_ll_src_rdy2;
+   assign rx_ll_sof2_n           = ~rx_ll_sof2;
+   assign rx_ll_eof2_n           = ~rx_ll_eof2;
+   
+   ll8_to_fifo36 ll8_to_fifo36
+     (.clk(rx_clk), .reset(rx_reset), .clear(0),
+      .ll_data(rx_ll_data2), .ll_sof_n(rx_ll_sof2_n), .ll_eof_n(rx_ll_eof2_n),
+      .ll_src_rdy_n(rx_ll_src_rdy2_n), .ll_dst_rdy_n(rx_ll_dst_rdy2_n),
+      .f36_data(rx_f36_data_int1), .f36_src_rdy_o(rx_f36_src_rdy_int1), .f36_dst_rdy_i(rx_f36_dst_rdy_int1));
+
+   fifo_2clock_cascade #(.WIDTH(36), .SIZE(RXFIFOSIZE)) rx_2clk_fifo
+     (.wclk(rx_clk), .datain(rx_f36_data_int1), 
+      .src_rdy_i(rx_f36_src_rdy_int1), .dst_rdy_o(rx_f36_dst_rdy_int1), .space(rx_fifo_space),
+      .rclk(sys_clk), .dataout(rx_f36_data), 
+      .src_rdy_o(rx_f36_src_rdy), .dst_rdy_i(rx_f36_dst_rdy), .occupied(), .arst(reset));
+   
+   // TX FIFO Chain
+   wire          tx_ll_sof, tx_ll_eof, tx_ll_src_rdy, tx_ll_dst_rdy;
+   wire          tx_ll_sof2, tx_ll_eof2, tx_ll_src_rdy2, tx_ll_dst_rdy2;
+   wire          tx_ll_sof2_n, tx_ll_eof2_n, tx_ll_src_rdy2_n, tx_ll_dst_rdy2_n;
+   wire [7:0]    tx_ll_data, tx_ll_data2;
+   wire [35:0]           tx_f36_data_int1;
+   wire          tx_f36_src_rdy_int1, tx_f36_dst_rdy_int1;
+   
+   fifo_2clock_cascade #(.WIDTH(36), .SIZE(TXFIFOSIZE)) tx_2clk_fifo
+     (.wclk(sys_clk), .datain(tx_f36_data), 
+      .src_rdy_i(tx_f36_src_rdy), .dst_rdy_o(tx_f36_dst_rdy), .space(),
+      .rclk(tx_clk), .dataout(tx_f36_data_int1), 
+      .src_rdy_o(tx_f36_src_rdy_int1), .dst_rdy_i(tx_f36_dst_rdy_int1), .occupied(), .arst(reset));
+   
+   fifo36_to_ll8 fifo36_to_ll8
+     (.clk(tx_clk), .reset(tx_reset), .clear(clear),
+      .f36_data(tx_f36_data_int1), .f36_src_rdy_i(tx_f36_src_rdy_int1), .f36_dst_rdy_o(tx_f36_dst_rdy_int1),
+      .ll_data(tx_ll_data2), .ll_sof_n(tx_ll_sof2_n), .ll_eof_n(tx_ll_eof2_n),
+      .ll_src_rdy_n(tx_ll_src_rdy2_n), .ll_dst_rdy_n(tx_ll_dst_rdy2_n));
+
+   assign tx_ll_sof2       = ~tx_ll_sof2_n;
+   assign tx_ll_eof2       = ~tx_ll_eof2_n;
+   assign tx_ll_src_rdy2    = ~tx_ll_src_rdy2_n;
+   assign tx_ll_dst_rdy2_n  = ~tx_ll_dst_rdy2;
+   
+   ll8_shortfifo tx_sfifo
+     (.clk(tx_clk), .reset(tx_reset), .clear(clear),
+      .datain(tx_ll_data2), .sof_i(tx_ll_sof2), .eof_i(tx_ll_eof2),
+      .error_i(0), .src_rdy_i(tx_ll_src_rdy2), .dst_rdy_o(tx_ll_dst_rdy2),
+      .dataout(tx_ll_data), .sof_o(tx_ll_sof), .eof_o(tx_ll_eof),
+      .error_o(), .src_rdy_o(tx_ll_src_rdy), .dst_rdy_i(tx_ll_dst_rdy));
    
    ll8_to_txmac ll8_to_txmac
-     (.clk(tx_clk), .reset(tx_reset), .clear(0),
+     (.clk(tx_clk), .reset(tx_reset), .clear(clear),
       .ll_data(tx_ll_data), .ll_sof(tx_ll_sof), .ll_eof(tx_ll_eof),
       .ll_src_rdy(tx_ll_src_rdy), .ll_dst_rdy(tx_ll_dst_rdy),
       .tx_data(tx_data), .tx_valid(tx_valid), .tx_error(tx_error), .tx_ack(tx_ack));
 
+   flow_ctrl_rx flow_ctrl_rx
+     (.pause_request_en(pause_request_en), .pause_time(pause_time), .pause_thresh(pause_thresh),
+      .rx_clk(rx_clk), .rx_reset(rx_reset), .rx_fifo_space(rx_fifo_space),
+      .tx_clk(tx_clk), .tx_reset(tx_reset), .pause_req(pause_req), .pause_time_req(pause_time_req));
+   
+   wire [31:0]           debug_tx, debug_rx;
+   
+   assign debug_tx  = { { tx_ll_data },
+                       { tx_ll_sof, tx_ll_eof, tx_ll_src_rdy, tx_ll_dst_rdy, 
+                         tx_ll_sof2, tx_ll_eof2, tx_ll_src_rdy2, tx_ll_dst_rdy2 },
+                       { tx_valid, tx_error, tx_ack, tx_f36_src_rdy_int1, tx_f36_dst_rdy_int1, tx_f36_data_int1[34:32]},
+                       { tx_data} };
+   assign debug_rx  = { { rx_ll_data },
+                       { rx_ll_sof, rx_ll_eof, rx_ll_src_rdy, rx_ll_dst_rdy, 
+                         rx_ll_sof2, rx_ll_eof2, rx_ll_src_rdy2, rx_ll_dst_rdy2 },
+                       { rx_valid, rx_error, rx_ack, rx_f36_src_rdy_int1, rx_f36_dst_rdy_int1, rx_f36_data_int1[34:32]},
+                       { rx_data} };
+
+   assign debug  = debug_rx;
+   
 endmodule // simple_gemac_wrapper
diff --git a/usrp2/fpga/simple_gemac/simple_gemac_wrapper_f36_tb.v b/usrp2/fpga/simple_gemac/simple_gemac_wrapper_f36_tb.v
new file mode 100644 (file)
index 0000000..804fa87
--- /dev/null
@@ -0,0 +1,243 @@
+
+
+module simple_gemac_wrapper_f36_tb;
+`include "eth_tasks_f36.v"
+     
+   reg clk     = 0;
+   reg reset   = 1;
+
+   initial #1000 reset = 0;
+   always #50 clk = ~clk;
+
+   reg wb_clk  = 0;
+   wire wb_rst         = reset;
+   always #173 wb_clk = ~wb_clk;
+       
+   wire GMII_RX_DV, GMII_RX_ER, GMII_TX_EN, GMII_TX_ER, GMII_GTX_CLK;
+   wire [7:0] GMII_RXD, GMII_TXD;
+
+   wire rx_valid, rx_error, rx_ack;
+   wire tx_ack, tx_valid, tx_error;
+   
+   wire [7:0] rx_data, tx_data;
+   
+   reg [15:0] pause_time;
+   reg pause_req      = 0;
+
+   wire GMII_RX_CLK   = GMII_GTX_CLK;
+
+   reg [7:0] FORCE_DAT_ERR = 0;
+   reg FORCE_ERR = 0;
+   
+   // Loopback
+   assign GMII_RX_DV  = GMII_TX_EN;
+   assign GMII_RX_ER  = GMII_TX_ER | FORCE_ERR;
+   assign GMII_RXD    = GMII_TXD ^ FORCE_DAT_ERR;
+
+
+   wire rx_ll_sof, rx_ll_eof, rx_ll_src_rdy, rx_ll_dst_rdy;
+   wire rx_ll_sof2, rx_ll_eof2, rx_ll_src_rdy2;
+   wire        rx_ll_dst_rdy2;
+   wire [7:0] rx_ll_data, rx_ll_data2;
+   wire rx_ll_error, rx_ll_error2;
+
+   wire [31:0] wb_dat_o;
+   reg [31:0]  wb_dat_i;
+   reg [7:0]   wb_adr;
+   reg                wb_stb=0, wb_cyc=0, wb_we=0;
+   wire        wb_ack;
+
+   reg [35:0]  tx_f36_dat;
+   reg                tx_f36_src_rdy;
+   wire        tx_f36_dst_rdy;
+
+   wire [35:0] rx_f36_dat;
+   wire        rx_f36_src_rdy;
+   reg                rx_f36_dst_rdy  = 1;
+   
+   simple_gemac_wrapper simple_gemac_wrapper
+     (.clk125(clk),  .reset(reset),
+      .GMII_GTX_CLK(GMII_GTX_CLK), .GMII_TX_EN(GMII_TX_EN),  
+      .GMII_TX_ER(GMII_TX_ER), .GMII_TXD(GMII_TXD),
+      .GMII_RX_CLK(GMII_RX_CLK), .GMII_RX_DV(GMII_RX_DV),  
+      .GMII_RX_ER(GMII_RX_ER), .GMII_RXD(GMII_RXD),
+      .pause_req(pause_req), .pause_time(pause_time),
+      .rx_clk(rx_clk), .rx_ll_data(rx_ll_data), .rx_ll_sof(rx_ll_sof),
+      .rx_ll_eof(rx_ll_eof), .rx_ll_src_rdy(rx_ll_src_rdy), .rx_ll_dst_rdy(rx_ll_dst_rdy),
+      .tx_clk(tx_clk), .tx_ll_data(tx_ll_data), .tx_ll_sof(tx_ll_sof),
+      .tx_ll_eof(tx_ll_eof), .tx_ll_src_rdy(tx_ll_src_rdy), .tx_ll_dst_rdy(tx_ll_dst_rdy),
+      .wb_clk(wb_clk), .wb_rst(wb_rst), .wb_stb(wb_stb), .wb_cyc(wb_cyc), .wb_ack(wb_ack),
+      .wb_we(wb_we), .wb_adr(wb_adr), .wb_dat_i(wb_dat_i), .wb_dat_o(wb_dat_o),
+      .mdio(mdio), .mdc(mdc) );
+
+   wire        rx_ll_dst_rdy2_n;
+   assign        rx_ll_dst_rdy2  = ~rx_ll_dst_rdy2_n;
+      
+   ll8_shortfifo rx_sfifo
+     (.clk(clk), .reset(reset), .clear(0),
+      .datain(rx_ll_data), .sof_i(rx_ll_sof), .eof_i(rx_ll_eof),
+      .error_i(rx_ll_error), .src_rdy_i(rx_ll_src_rdy), .dst_rdy_o(rx_ll_dst_rdy),
+      .dataout(rx_ll_data2), .sof_o(rx_ll_sof2), .eof_o(rx_ll_eof2),
+      .error_o(rx_ll_error2), .src_rdy_o(rx_ll_src_rdy2), .dst_rdy_i(rx_ll_dst_rdy2));
+
+   ll8_to_fifo36 ll8_to_fifo36
+     (.clk(clk), .reset(reset), .clear(0),
+      .ll_data(rx_ll_data2), .ll_sof_n(~rx_ll_sof2), .ll_eof_n(~rx_ll_eof2),
+      .ll_src_rdy_n(~rx_ll_src_rdy2), .ll_dst_rdy_n(rx_ll_dst_rdy2_n),
+      .f36_data(rx_f36_dat), .f36_src_rdy_o(rx_f36_src_rdy), .f36_dst_rdy_i(rx_f36_dst_rdy));
+   
+   wire tx_ll_sof, tx_ll_eof, tx_ll_src_rdy, tx_ll_dst_rdy;
+   wire tx_ll_sof2_n, tx_ll_eof2_n;
+   wire tx_ll_src_rdy2_n, tx_ll_dst_rdy2;
+   wire [7:0] tx_ll_data, tx_ll_data2;
+   wire tx_ll_error;
+   wire tx_ll_error2 = 0;
+
+   fifo36_to_ll8 fifo36_to_ll8
+     (.clk(clk), .reset(reset), .clear(clear),
+      .f36_data(tx_f36_dat), .f36_src_rdy_i(tx_f36_src_rdy), .f36_dst_rdy_o(tx_f36_dst_rdy),
+      .ll_data(tx_ll_data2), .ll_sof_n(tx_ll_sof2_n), .ll_eof_n(tx_ll_eof2_n),
+      .ll_src_rdy_n(tx_ll_src_rdy2_n), .ll_dst_rdy_n(~tx_ll_dst_rdy2));
+   
+   ll8_shortfifo tx_sfifo
+     (.clk(clk), .reset(reset), .clear(clear),
+      .datain(tx_ll_data2), .sof_i(~tx_ll_sof2_n), .eof_i(~tx_ll_eof2_n),
+      .error_i(tx_ll_error2), .src_rdy_i(~tx_ll_src_rdy2_n), .dst_rdy_o(tx_ll_dst_rdy2),
+      .dataout(tx_ll_data), .sof_o(tx_ll_sof), .eof_o(tx_ll_eof),
+      .error_o(tx_ll_error), .src_rdy_o(tx_ll_src_rdy), .dst_rdy_i(tx_ll_dst_rdy));
+   
+   initial $dumpfile("simple_gemac_wrapper_f36_tb.vcd");
+   initial $dumpvars(0,simple_gemac_wrapper_f36_tb);
+
+   integer i; 
+   reg [7:0] pkt_rom[0:65535];
+   reg [1023:0] ROMFile;
+   
+   initial
+     for (i=0;i<65536;i=i+1)
+       pkt_rom[i] <= 8'h0;
+
+   initial
+     begin
+       @(negedge reset);
+       repeat (10)
+         @(posedge clk);
+       WishboneWR(0,6'b111001);
+       WishboneWR(4,16'hF1F2);
+       WishboneWR(8,32'hF3F4_F5F6);
+       WishboneWR(12,16'h0000);
+       WishboneWR(16,32'h0000_0000);
+       
+       @(posedge clk);
+       SendFlowCtrl(16'h0007);  // Send flow control
+       @(posedge clk);
+       #30000;
+       @(posedge clk);
+       SendFlowCtrl(16'h0009);  // Increase flow control before it expires
+       #10000;
+       @(posedge clk);
+       SendFlowCtrl(16'h0000);  // Cancel flow control before it expires
+       @(posedge clk); 
+
+       SendPacket_to_fifo36(8'hAA,10);    // This packet gets dropped by the filters
+       repeat (10)
+         @(posedge clk);
+
+       SendPacketFromFile_fifo36(60,0,0);  // The rest are valid packets
+       repeat (10)
+         @(posedge clk);
+
+       SendPacketFromFile_fifo36(61,0,0);
+       repeat (10)
+         @(posedge clk);
+       SendPacketFromFile_fifo36(62,0,0);
+       repeat (10)
+         @(posedge clk);
+       SendPacketFromFile_fifo36(63,0,0);
+       repeat (1)
+         @(posedge clk);
+       SendPacketFromFile_fifo36(64,0,0);
+       repeat (10)
+         @(posedge clk);
+       SendPacketFromFile_fifo36(59,0,0);
+       repeat (1)
+         @(posedge clk);
+       SendPacketFromFile_fifo36(58,0,0);
+       repeat (1)
+         @(posedge clk);
+       SendPacketFromFile_fifo36(100,0,0);
+       repeat (1)
+         @(posedge clk);
+       SendPacketFromFile_fifo36(200,150,30);  // waiting 14 empties the fifo, 15 underruns
+       repeat (1)
+         @(posedge clk);
+       SendPacketFromFile_fifo36(100,0,30);
+       #10000 $finish;
+     end
+/*
+   // Force a CRC error
+    initial
+     begin
+       #90000;
+       @(posedge clk);
+       FORCE_DAT_ERR <= 8'h10;
+       @(posedge clk);
+       FORCE_DAT_ERR <= 8'h00;
+     end
+
+   // Force an RX_ER error (i.e. link loss)
+   initial
+     begin
+       #116000;
+       @(posedge clk);
+       FORCE_ERR <= 1;
+       @(posedge clk);
+       FORCE_ERR <= 0;
+     end
+
+   // Cause receive fifo to fill, causing an RX overrun
+   initial
+     begin
+       #126000;
+       @(posedge clk);
+       rx_f36_dst_rdy <= 0;
+       repeat (30)          // Repeat of 14 fills the shortfifo, but works.  15 overflows
+         @(posedge clk);
+       rx_f36_dst_rdy <= 1;
+     end
+  */ 
+   // Tests: Send and recv flow control, send and receive good packets, RX CRC err, RX_ER, RX overrun, TX underrun
+   // Still need to test: CRC errors on Pause Frames, MDIO, wishbone
+
+   task WishboneWR;
+      input [7:0] adr;
+      input [31:0] value;
+      begin
+        wb_adr   <= adr;
+        wb_dat_i <= value;
+        wb_stb   <= 1;
+        wb_cyc   <= 1;
+        wb_we    <= 1;
+        while (~wb_ack)
+          @(posedge wb_clk);
+        @(posedge wb_clk);
+        wb_stb <= 0;
+        wb_cyc <= 0;
+        wb_we  <= 0;
+      end
+   endtask // WishboneWR
+   
+   always @(posedge clk)
+     if(rx_f36_src_rdy & rx_f36_dst_rdy)
+       begin
+         if(rx_f36_dat[32] & ~rx_f36_dat[33])
+           $display("RX-PKT-START %d",$time);
+         $display("RX-PKT SOF %d EOF %d ERR %d OCC %d DAT %x",rx_f36_dat[32],rx_f36_dat[33],
+                  &rx_f36_dat[33:32],rx_f36_dat[35:34],rx_f36_dat[31:0]);
+         if(rx_f36_dat[33] & ~rx_f36_dat[32])
+           $display("RX-PKT-END %d",$time);
+         if(rx_f36_dat[33] & rx_f36_dat[32])
+           $display("RX-PKT-ERROR %d",$time);
+       end
+   
+endmodule // simple_gemac_wrapper_tb
index b51afa5bb84c12ba4e758ff943bf8be7b08a83bc..26a471a493eb72a67463b4892271e35fcab72729 100644 (file)
@@ -1,18 +1,21 @@
 
 
 module simple_gemac_wrapper_tb;
-`include "eth_tasks.v"
+`include "eth_tasks_f36.v"
      
-   reg clk     = 0;
    reg reset   = 1;
-
    initial #1000 reset = 0;
-   always #50 clk = ~clk;
+   wire wb_rst         = reset;
+
+   reg eth_clk     = 0;
+   always #50 eth_clk = ~eth_clk;
 
    reg wb_clk  = 0;
-   wire wb_rst         = reset;
    always #173 wb_clk = ~wb_clk;
-       
+
+   reg sys_clk         = 0;
+   always #77 sys_clk = ~ sys_clk;
+   
    wire GMII_RX_DV, GMII_RX_ER, GMII_TX_EN, GMII_TX_ER, GMII_GTX_CLK;
    wire [7:0] GMII_RXD, GMII_TXD;
 
@@ -35,55 +38,35 @@ module simple_gemac_wrapper_tb;
    assign GMII_RXD    = GMII_TXD ^ FORCE_DAT_ERR;
 
 
-   wire rx_ll_sof, rx_ll_eof, rx_ll_src_rdy, rx_ll_dst_rdy;
-   wire rx_ll_sof2, rx_ll_eof2, rx_ll_src_rdy2;
-   reg rx_ll_dst_rdy2 = 1;
-   wire [7:0] rx_ll_data, rx_ll_data2;
-   wire rx_ll_error, rx_ll_error2;
-
    wire [31:0] wb_dat_o;
    reg [31:0]  wb_dat_i;
    reg [7:0]   wb_adr;
    reg                wb_stb=0, wb_cyc=0, wb_we=0;
    wire        wb_ack;
+
+   reg [35:0]  tx_f36_data=0;
+   reg                tx_f36_src_rdy = 0;
+   wire        tx_f36_dst_rdy;
+   wire        rx_f36_data;
+   wire        rx_f36_src_rdy;
+   wire        rx_f36_dst_rdy = 1;
    
    simple_gemac_wrapper simple_gemac_wrapper
-     (.clk125(clk),  .reset(reset),
+     (.clk125(eth_clk),  .reset(reset),
       .GMII_GTX_CLK(GMII_GTX_CLK), .GMII_TX_EN(GMII_TX_EN),  
       .GMII_TX_ER(GMII_TX_ER), .GMII_TXD(GMII_TXD),
       .GMII_RX_CLK(GMII_RX_CLK), .GMII_RX_DV(GMII_RX_DV),  
       .GMII_RX_ER(GMII_RX_ER), .GMII_RXD(GMII_RXD),
       .pause_req(pause_req), .pause_time(pause_time),
-      .rx_clk(rx_clk), .rx_ll_data(rx_ll_data), .rx_ll_sof(rx_ll_sof),
-      .rx_ll_eof(rx_ll_eof), .rx_ll_src_rdy(rx_ll_src_rdy), .rx_ll_dst_rdy(rx_ll_dst_rdy),
-      .tx_clk(tx_clk), .tx_ll_data(tx_ll_data), .tx_ll_sof(tx_ll_sof),
-      .tx_ll_eof(tx_ll_eof), .tx_ll_src_rdy(tx_ll_src_rdy), .tx_ll_dst_rdy(tx_ll_dst_rdy),
-      .wb_clk(wb_clk), .wb_rst(wb_rst), .wb_stb(wb_stb), .wb_cyc(wb_cyc), .wb_ack(wb_ack),
-      .wb_we(wb_we), .wb_adr(wb_adr), .wb_dat_i(wb_dat_i), .wb_dat_o(wb_dat_o),
-      .mdio(mdio), .mdc(mdc) );
-
-   ll8_shortfifo rx_sfifo
-     (.clk(clk), .reset(reset), .clear(0),
-      .datain(rx_ll_data), .sof_i(rx_ll_sof), .eof_i(rx_ll_eof),
-      .error_i(rx_ll_error), .src_rdy_i(rx_ll_src_rdy), .dst_rdy_o(rx_ll_dst_rdy),
-      .dataout(rx_ll_data2), .sof_o(rx_ll_sof2), .eof_o(rx_ll_eof2),
-      .error_o(rx_ll_error2), .src_rdy_o(rx_ll_src_rdy2), .dst_rdy_i(rx_ll_dst_rdy2));
-
-   wire tx_ll_sof, tx_ll_eof, tx_ll_src_rdy, tx_ll_dst_rdy;
-   reg tx_ll_sof2=0, tx_ll_eof2=0;
-   reg tx_ll_src_rdy2 = 0;
-   wire tx_ll_dst_rdy2;
-   wire [7:0] tx_ll_data;
-   reg [7:0] tx_ll_data2 = 0;
-   wire tx_ll_error;
-   wire tx_ll_error2 = 0;
-
-   ll8_shortfifo tx_sfifo
-     (.clk(clk), .reset(reset), .clear(clear),
-      .datain(tx_ll_data2), .sof_i(tx_ll_sof2), .eof_i(tx_ll_eof2),
-      .error_i(tx_ll_error2), .src_rdy_i(tx_ll_src_rdy2), .dst_rdy_o(tx_ll_dst_rdy2),
-      .dataout(tx_ll_data), .sof_o(tx_ll_sof), .eof_o(tx_ll_eof),
-      .error_o(tx_ll_error), .src_rdy_o(tx_ll_src_rdy), .dst_rdy_i(tx_ll_dst_rdy));
+
+      .sys_clk(sys_clk), .rx_f36_data(rx_f36_data), .rx_f36_src_rdy(rx_f36_src_rdy), .rx_f36_dst_rdy(rx_f36_dst_rdy),
+      .tx_f36_data(tx_f36_data), .tx_f36_src_rdy(tx_f36_src_rdy), .tx_f36_dst_rdy(tx_f36_dst_rdy),
+
+      .wb_clk(wb_clk), .wb_rst(wb_rst), .wb_stb(wb_stb), .wb_cyc(wb_cyc), .wb_ack(wb_ack), .wb_we(wb_we),
+      .wb_adr(wb_adr), .wb_dat_i(wb_dat_i), .wb_dat_o(wb_dat_o),
+
+      .mdio(), .mdc(),
+      .debug() );
    
    initial $dumpfile("simple_gemac_wrapper_tb.vcd");
    initial $dumpvars(0,simple_gemac_wrapper_tb);
@@ -100,67 +83,74 @@ module simple_gemac_wrapper_tb;
      begin
        @(negedge reset);
        repeat (10)
-         @(posedge clk);
-       WishboneWR(0,6'b111001);
-       WishboneWR(4,16'hF1F2);
-       WishboneWR(8,32'hF3F4_F5F6);
+         @(posedge wb_clk);
+       WishboneWR(0,6'b111101); 
+       WishboneWR(4,16'hA0B0);
+       WishboneWR(8,32'hC0D0_A1B1);
        WishboneWR(12,16'h0000);
        WishboneWR(16,32'h0000_0000);
        
-       @(posedge clk);
+       @(posedge eth_clk);
        SendFlowCtrl(16'h0007);  // Send flow control
-       @(posedge clk);
+       @(posedge eth_clk);
        #30000;
-       @(posedge clk);
-       SendFlowCtrl(16'h0009);  // Increas flow control before it expires
+       @(posedge eth_clk);
+       SendFlowCtrl(16'h0009);  // Increase flow control before it expires
        #10000;
-       @(posedge clk);
+       @(posedge eth_clk);
        SendFlowCtrl(16'h0000);  // Cancel flow control before it expires
-       @(posedge clk); 
+       @(posedge eth_clk); 
 
-       SendPacket_to_ll8(8'hAA,10);    // This packet gets dropped by the filters
-       repeat (10)
-         @(posedge clk);
+       repeat (1000)
+         @(posedge sys_clk);
+       SendPacket_to_fifo36(32'hA0B0C0D0,10);    // This packet gets dropped by the filters
+       repeat (1000)
+         @(posedge sys_clk);
 
-       SendPacketFromFile_ll8(60,0,0);  // The rest are valid packets
+       SendPacket_to_fifo36(32'hAABBCCDD,100);    // This packet gets dropped by the filters
+       repeat (10)
+         @(posedge sys_clk);
+/*
+       SendPacketFromFile_f36(60,0,0);  // The rest are valid packets
        repeat (10)
          @(posedge clk);
 
-       SendPacketFromFile_ll8(61,0,0);
+       SendPacketFromFile_f36(61,0,0);
        repeat (10)
          @(posedge clk);
-       SendPacketFromFile_ll8(62,0,0);
+       SendPacketFromFile_f36(62,0,0);
        repeat (10)
          @(posedge clk);
-       SendPacketFromFile_ll8(63,0,0);
+       SendPacketFromFile_f36(63,0,0);
        repeat (1)
          @(posedge clk);
-       SendPacketFromFile_ll8(64,0,0);
+       SendPacketFromFile_f36(64,0,0);
        repeat (10)
          @(posedge clk);
-       SendPacketFromFile_ll8(59,0,0);
+       SendPacketFromFile_f36(59,0,0);
        repeat (1)
          @(posedge clk);
-       SendPacketFromFile_ll8(58,0,0);
+       SendPacketFromFile_f36(58,0,0);
        repeat (1)
          @(posedge clk);
-       SendPacketFromFile_ll8(100,0,0);
+       SendPacketFromFile_f36(100,0,0);
        repeat (1)
          @(posedge clk);
-       SendPacketFromFile_ll8(200,150,30);  // waiting 14 empties the fifo, 15 underruns
+       SendPacketFromFile_f36(200,150,30);  // waiting 14 empties the fifo, 15 underruns
        repeat (1)
          @(posedge clk);
-       SendPacketFromFile_ll8(100,0,30);
-       #10000 $finish;
+       SendPacketFromFile_f36(100,0,30);
+ */
+       #100000 $finish;
      end
 
    // Force a CRC error
     initial
      begin
        #90000;
-       @(posedge clk);
+       @(posedge eth_clk);
        FORCE_DAT_ERR <= 8'h10;
-       @(posedge clk);
+       @(posedge eth_clk);
        FORCE_DAT_ERR <= 8'h00;
      end
 
@@ -168,12 +158,12 @@ module simple_gemac_wrapper_tb;
    initial
      begin
        #116000;
-       @(posedge clk);
+       @(posedge eth_clk);
        FORCE_ERR <= 1;
-       @(posedge clk);
+       @(posedge eth_clk);
        FORCE_ERR <= 0;
      end
-
+/*
    // Cause receive fifo to fill, causing an RX overrun
    initial
      begin
@@ -184,7 +174,7 @@ module simple_gemac_wrapper_tb;
          @(posedge clk);
        rx_ll_dst_rdy2 <= 1;
      end
-   
+  */
    // Tests: Send and recv flow control, send and receive good packets, RX CRC err, RX_ER, RX overrun, TX underrun
    // Still need to test: CRC errors on Pause Frames, MDIO, wishbone
 
@@ -205,7 +195,7 @@ module simple_gemac_wrapper_tb;
         wb_we  <= 0;
       end
    endtask // WishboneWR
-   
+   /*
    always @(posedge clk)
      if(rx_ll_src_rdy2 & rx_ll_dst_rdy2)
        begin
@@ -215,5 +205,5 @@ module simple_gemac_wrapper_tb;
          if(rx_ll_eof2 & ~rx_ll_sof2)
            $display("RX-PKT-END %d",$time);
        end
-   
+   */
 endmodule // simple_gemac_wrapper_tb
index 1063f428ef446da6a82af4a31f355cf8d07a927e..ed251665cf3cae2646eec3cabff16e8ec8980a9c 100644 (file)
@@ -3,6 +3,7 @@
 -y .
 -y ../top/u2_core
 -y ../control_lib
+-y ../control_lib/newfifo
 -y ../serdes
 -y ../sdr_lib
 -y ../timing
index b30397081ed58b6e7ff3ff8dd6e087f53d937934..9728395c1929ab950be8dce7785e64a2e63bcc27 100644 (file)
@@ -1,3 +1,4 @@
+*~
 /xst
 /_ngo
 /_xmsgs
index f12b5af4d1c57924d8ef49507a70b3330850aa92..4568005214a363a407b36afed80452e240551902 100755 (executable)
@@ -149,7 +149,7 @@ module u2_core
    wire [31:0]         debug_gpio_0, debug_gpio_1;
    wire [31:0]         atr_lines;
 
-   wire [31:0]         debug_rx, debug_mac0, debug_mac1, debug_tx_dsp, debug_txc, 
+   wire [31:0]         debug_rx, debug_mac, debug_mac0, debug_mac1, debug_tx_dsp, debug_txc, 
                debug_serdes0, debug_serdes1, debug_serdes2, debug_rx_dsp;
 
    wire [15:0]         ser_rx_occ, ser_tx_occ, dsp_rx_occ, dsp_tx_occ, eth_rx_occ, eth_tx_occ, eth_rx_occ2;
@@ -307,19 +307,21 @@ module u2_core
                                         .in(set_data),.out(),.changed(flush_icache));
 
    // Buffer Pool, slave #1
-   wire         rd0_read, rd0_sop, rd0_error, rd0_done, rd0_eop;
-   wire         rd1_read, rd1_sop, rd1_error, rd1_done, rd1_eop;
-   wire         rd2_read, rd2_sop, rd2_error, rd2_done, rd2_eop;
-   wire         rd3_read, rd3_sop, rd3_error, rd3_done, rd3_eop;
+   wire         rd0_ready_i, rd0_ready_o;
+   wire         rd1_ready_i, rd1_ready_o;
+   wire         rd2_ready_i, rd2_ready_o;
+   wire         rd3_ready_i, rd3_ready_o;
+   wire [3:0]   rd0_flags, rd1_flags, rd2_flags, rd3_flags;
    wire [31:0]          rd0_dat, rd1_dat, rd2_dat, rd3_dat;
 
-   wire         wr0_write, wr0_done, wr0_error, wr0_ready, wr0_full;
-   wire         wr1_write, wr1_done, wr1_error, wr1_ready, wr1_full;
-   wire         wr2_write, wr2_done, wr2_error, wr2_ready, wr2_full;
-   wire         wr3_write, wr3_done, wr3_error, wr3_ready, wr3_full;
+   wire         wr0_ready_i, wr0_ready_o;
+   wire         wr1_ready_i, wr1_ready_o;
+   wire         wr2_ready_i, wr2_ready_o;
+   wire         wr3_ready_i, wr3_ready_o;
+   wire [3:0]   wr0_flags, wr1_flags, wr2_flags, wr3_flags;
    wire [31:0]          wr0_dat, wr1_dat, wr2_dat, wr3_dat;
    
-   buffer_pool buffer_pool
+   buffer_pool #(.BUF_SIZE(9), .SET_ADDR(64)) buffer_pool
      (.wb_clk_i(wb_clk),.wb_rst_i(wb_rst),
       .wb_we_i(s1_we),.wb_stb_i(s1_stb),.wb_adr_i(s1_adr),.wb_dat_i(s1_dat_o),   
       .wb_dat_o(s1_dat_i),.wb_ack_o(s1_ack),.wb_err_o(s1_err),.wb_rty_o(s1_rty),
@@ -330,25 +332,17 @@ module u2_core
 
       .s0(status_b0),.s1(status_b1),.s2(status_b2),.s3(status_b3),
       .s4(status_b4),.s5(status_b5),.s6(status_b6),.s7(status_b7),
-      
+
       // Write Interfaces
-      .wr0_dat_i(wr0_dat), .wr0_write_i(wr0_write), .wr0_done_i(wr0_done),
-      .wr0_error_i(wr0_error), .wr0_ready_o(wr0_ready), .wr0_full_o(wr0_full),
-      .wr1_dat_i(wr1_dat), .wr1_write_i(wr1_write), .wr1_done_i(wr1_done),
-      .wr1_error_i(wr1_error), .wr1_ready_o(wr1_ready), .wr1_full_o(wr1_full),
-      .wr2_dat_i(wr2_dat), .wr2_write_i(wr2_write), .wr2_done_i(wr2_done),
-      .wr2_error_i(wr2_error), .wr2_ready_o(wr2_ready), .wr2_full_o(wr2_full),
-      .wr3_dat_i(wr3_dat), .wr3_write_i(wr3_write), .wr3_done_i(wr3_done),
-      .wr3_error_i(wr3_error), .wr3_ready_o(wr3_ready), .wr3_full_o(wr3_full),
+      .wr0_data_i(wr0_dat), .wr0_flags_i(wr0_flags), .wr0_ready_i(wr0_ready_i), .wr0_ready_o(wr0_ready_o),
+      .wr1_data_i(wr1_dat), .wr1_flags_i(wr1_flags), .wr1_ready_i(wr1_ready_i), .wr1_ready_o(wr1_ready_o),
+      .wr2_data_i(wr2_dat), .wr2_flags_i(wr2_flags), .wr2_ready_i(wr2_ready_i), .wr2_ready_o(wr2_ready_o),
+      .wr3_data_i(wr3_dat), .wr3_flags_i(wr3_flags), .wr3_ready_i(wr3_ready_i), .wr3_ready_o(wr3_ready_o),
       // Read Interfaces
-      .rd0_dat_o(rd0_dat), .rd0_read_i(rd0_read), .rd0_done_i(rd0_done),
-      .rd0_error_i(rd0_error), .rd0_sop_o(rd0_sop), .rd0_eop_o(rd0_eop),
-      .rd1_dat_o(rd1_dat), .rd1_read_i(rd1_read), .rd1_done_i(rd1_done),
-      .rd1_error_i(rd1_error), .rd1_sop_o(rd1_sop), .rd1_eop_o(rd1_eop),
-      .rd2_dat_o(rd2_dat), .rd2_read_i(rd2_read), .rd2_done_i(rd2_done),
-      .rd2_error_i(rd2_error), .rd2_sop_o(rd2_sop), .rd2_eop_o(rd2_eop),
-      .rd3_dat_o(rd3_dat), .rd3_read_i(rd3_read), .rd3_done_i(rd3_done),
-      .rd3_error_i(rd3_error), .rd3_sop_o(rd3_sop), .rd3_eop_o(rd3_eop)
+      .rd0_data_o(rd0_dat), .rd0_flags_o(rd0_flags), .rd0_ready_i(rd0_ready_i), .rd0_ready_o(rd0_ready_o),
+      .rd1_data_o(rd1_dat), .rd1_flags_o(rd1_flags), .rd1_ready_i(rd1_ready_i), .rd1_ready_o(rd1_ready_o),
+      .rd2_data_o(rd2_dat), .rd2_flags_o(rd2_flags), .rd2_ready_i(rd2_ready_i), .rd2_ready_o(rd2_ready_o),
+      .rd3_data_o(rd3_dat), .rd3_flags_o(rd3_flags), .rd3_ready_i(rd3_ready_i), .rd3_ready_o(rd3_ready_o)
       );
 
    // SPI -- Slave #2
@@ -398,11 +392,30 @@ module u2_core
       .word11(32'b0),.word12(32'b0),.word13(32'b0),.word14(32'b0),.word15(32'b0)
       );
 
-   assign       s5_err = 1'b0;
-   assign       s5_rty = 1'b0;
+   assign       s5_err  = 1'b0;
+   assign       s5_rty  = 1'b0;
+
+   // /////////////////////////////////////////////////////////////////////////
+   // Ethernet MAC  Slave #6
 
-   // Slave, #6 Ethernet MAC, see below
+   simple_gemac_wrapper #(.RXFIFOSIZE(11), .TXFIFOSIZE(6)) simple_gemac_wrapper
+     (.clk125(clk_to_mac),  .reset(wb_rst),
+      .GMII_GTX_CLK(GMII_GTX_CLK), .GMII_TX_EN(GMII_TX_EN),  
+      .GMII_TX_ER(GMII_TX_ER), .GMII_TXD(GMII_TXD),
+      .GMII_RX_CLK(GMII_RX_CLK), .GMII_RX_DV(GMII_RX_DV),  
+      .GMII_RX_ER(GMII_RX_ER), .GMII_RXD(GMII_RXD),
+      .sys_clk(dsp_clk),
+      .rx_f36_data({wr2_flags,wr2_dat}), .rx_f36_src_rdy(wr2_ready_i), .rx_f36_dst_rdy(wr2_ready_o),
+      .tx_f36_data({rd2_flags,rd2_dat}), .tx_f36_src_rdy(rd2_ready_o), .tx_f36_dst_rdy(rd2_ready_i),
+      .wb_clk(wb_clk), .wb_rst(wb_rst), .wb_stb(s6_stb), .wb_cyc(s6_cyc), .wb_ack(s6_ack),
+      .wb_we(s6_we), .wb_adr(s6_adr), .wb_dat_i(s6_dat_o), .wb_dat_o(s6_dat_i),
+      .mdio(MDIO), .mdc(MDC),
+      .debug(debug_mac));
+   
+   assign       s6_err  = 1'b0;
+   assign       s6_rty  = 1'b0;
    
+   // /////////////////////////////////////////////////////////////////////////
    // Settings Bus -- Slave #7
    settings_bus settings_bus
      (.wb_clk(wb_clk),.wb_rst(wb_rst),.wb_adr_i(s7_adr),.wb_dat_i(s7_dat_o),
@@ -447,55 +460,6 @@ module u2_core
 
    assign       leds = (led_src & led_hw) | (~led_src & led_sw);
    
-   // /////////////////////////////////////////////////////////////////////////
-   // Ethernet MAC  Slave #6
-   
-   wire         Tx_mac_wa, Tx_mac_wr, Tx_mac_sop, Tx_mac_eop;
-   wire         Rx_mac_empty, Rx_mac_rd, Rx_mac_sop, Rx_mac_eop, Rx_mac_err;
-   wire [31:0]          Tx_mac_data, Rx_mac_data;
-   wire [1:0]   Tx_mac_BE, Rx_mac_BE;
-   wire         rst_mac;
-  
-   oneshot_2clk mac_rst_1shot (.clk_in(wb_clk),.in(wb_rst),.clk_out(clk_to_mac),.out(rst_mac));
-   
-   MAC_top #(.TX_FF_DEPTH(9), .RX_FF_DEPTH(11))
-     MAC_top
-       (.Clk_125M(clk_to_mac),.Clk_user(dsp_clk),
-       .rst_mac(rst_mac),.rst_user(dsp_rst),
-       .RST_I(wb_rst),.CLK_I(wb_clk),.STB_I(s6_stb),.CYC_I(s6_cyc),.ADR_I(s6_adr[8:2]),
-       .WE_I(s6_we),.DAT_I(s6_dat_o),.DAT_O(s6_dat_i),.ACK_O(s6_ack),
-       .Rx_mac_empty(Rx_mac_empty),.Rx_mac_rd(Rx_mac_rd),.Rx_mac_data(Rx_mac_data),.Rx_mac_BE(Rx_mac_BE),
-       .Rx_mac_sop(Rx_mac_sop),.Rx_mac_eop(Rx_mac_eop),.Rx_mac_err(Rx_mac_err),
-       .Tx_mac_wa(Tx_mac_wa),.Tx_mac_wr(Tx_mac_wr),.Tx_mac_data(Tx_mac_data),
-       .Tx_mac_BE(Tx_mac_BE),.Tx_mac_sop(Tx_mac_sop),.Tx_mac_eop(Tx_mac_eop),
-       .Gtx_clk(GMII_GTX_CLK),.Tx_clk(GMII_TX_CLK),.Tx_er(GMII_TX_ER),.Tx_en(GMII_TX_EN),.Txd(GMII_TXD),
-       .Rx_clk(GMII_RX_CLK),.Rx_er(GMII_RX_ER),.Rx_dv(GMII_RX_DV),.Rxd(GMII_RXD),
-       .Crs(GMII_CRS),.Col(GMII_COL),
-       .Mdio(MDIO),.Mdc(MDC),
-       .rx_fifo_occupied(eth_rx_occ2),.rx_fifo_full(eth_rx_full2),.rx_fifo_empty(eth_rx_empty2),
-       .tx_fifo_occupied(),.tx_fifo_full(),.tx_fifo_empty(),
-       .debug0(debug_mac0),.debug1(debug_mac1) );
-
-   assign       s6_err = 1'b0;
-   assign       s6_rty = 1'b0;
-
-   mac_rxfifo_int mac_rxfifo_int
-     (.clk(dsp_clk),.rst(dsp_rst),
-      .Rx_mac_empty(Rx_mac_empty),.Rx_mac_rd(Rx_mac_rd),.Rx_mac_data(Rx_mac_data),
-      .Rx_mac_BE(Rx_mac_BE),.Rx_mac_sop(Rx_mac_sop),
-      .Rx_mac_eop(Rx_mac_eop),.Rx_mac_err(Rx_mac_err),
-      .wr_dat_o(wr2_dat),.wr_write_o(wr2_write),.wr_done_o(wr2_done),
-      .wr_error_o(wr2_error),.wr_ready_i(wr2_ready),.wr_full_i(wr2_full),
-      .fifo_occupied(eth_rx_occ),.fifo_full(eth_rx_full),.fifo_empty(eth_rx_empty) );
-
-   mac_txfifo_int mac_txfifo_int
-     (.clk(dsp_clk),.rst(dsp_rst),.mac_clk(clk_to_mac),
-      .Tx_mac_wa(Tx_mac_wa),.Tx_mac_wr(Tx_mac_wr),.Tx_mac_data(Tx_mac_data),
-      .Tx_mac_BE(Tx_mac_BE),.Tx_mac_sop(Tx_mac_sop),.Tx_mac_eop(Tx_mac_eop),
-      .rd_dat_i(rd2_dat),.rd_read_o(rd2_read),.rd_done_o(rd2_done),
-      .rd_error_o(rd2_error),.rd_sop_i(rd2_sop),.rd_eop_i(rd2_eop),
-      .fifo_occupied(eth_tx_occ),.fifo_full(eth_tx_full),.fifo_empty(eth_tx_empty) );
-   
    // /////////////////////////////////////////////////////////////////////////
    // Interrupt Controller, Slave #8
 
@@ -546,7 +510,7 @@ module u2_core
      (.clk_i(wb_clk),.rst_i(wb_rst),
       .adr_i(s11_adr[5:0]),.sel_i(s11_sel),.dat_i(s11_dat_o),.dat_o(s11_dat_i),
       .we_i(s11_we),.stb_i(s11_stb),.cyc_i(s11_cyc),.ack_o(s11_ack),
-      .run_rx(run_rx_d1),.run_tx(run_tx),.ctrl_lines(atr_lines) );
+      .run_rx(run_rx_d1),.run_tx(run_tx),.master_time(), .ctrl_lines(atr_lines) );
    assign       s11_err = 0;
    assign       s11_rty = 0;
    
@@ -591,8 +555,7 @@ module u2_core
      (.clk(dsp_clk), .rst(dsp_rst),
       .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
       .master_time(master_time),.overrun(overrun),
-      .wr_dat_o(wr1_dat), .wr_write_o(wr1_write), .wr_done_o(wr1_done), .wr_error_o(wr1_error),
-      .wr_ready_i(wr1_ready), .wr_full_i(wr1_full),
+      .wr_dat_o(wr1_dat), .wr_flags_o(wr1_flags), .wr_ready_o(wr1_ready_i), .wr_ready_i(wr1_ready_o),
       .sample(sample_rx), .run(run_rx), .strobe(strobe_rx),
       .fifo_occupied(dsp_rx_occ),.fifo_full(dsp_rx_full),.fifo_empty(dsp_rx_empty),
       .debug_rx(debug_rx) );
@@ -602,15 +565,14 @@ module u2_core
      (.clk(dsp_clk),.rst(dsp_rst),
       .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
       .adc_a(adc_a),.adc_ovf_a(adc_ovf_a),.adc_b(adc_b),.adc_ovf_b(adc_ovf_b),
-      .io_rx(io_rx),.sample(sample_rx), .run(run_rx_d1), .strobe(strobe_rx),
+      .sample(sample_rx), .run(run_rx_d1), .strobe(strobe_rx),
       .debug(debug_rx_dsp) );
 
    tx_control #(.FIFOSIZE(10)) tx_control
      (.clk(dsp_clk), .rst(dsp_rst),
       .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data),
       .master_time(master_time),.underrun(underrun),
-      .rd_dat_i(rd1_dat), .rd_sop_i(rd1_sop), .rd_eop_i(rd1_eop),
-      .rd_read_o(rd1_read), .rd_done_o(rd1_done), .rd_error_o(rd1_error),
+      .rd_dat_i(rd1_dat), .rd_flags_i(rd1_flags), .rd_ready_i(rd1_ready_o), .rd_ready_o(rd1_ready_i),
       .sample(sample_tx), .run(run_tx), .strobe(strobe_tx),
       .fifo_occupied(dsp_tx_occ),.fifo_full(dsp_tx_full),.fifo_empty(dsp_tx_empty),
       .debug(debug_txc) );
@@ -629,11 +591,9 @@ module u2_core
    serdes #(.TXFIFOSIZE(9),.RXFIFOSIZE(9)) serdes
      (.clk(dsp_clk),.rst(dsp_rst),
       .ser_tx_clk(ser_tx_clk),.ser_t(ser_t),.ser_tklsb(ser_tklsb),.ser_tkmsb(ser_tkmsb),
-      .rd_dat_i(rd0_dat),.rd_read_o(rd0_read),.rd_done_o(rd0_done),.rd_error_o(rd0_error),
-      .rd_sop_i(rd0_sop),.rd_eop_i(rd0_eop),
+      .rd_dat_i(rd0_dat),.rd_flags_i(rd0_flags),.rd_ready_o(rd0_ready_i),.rd_ready_i(rd0_ready_o),
       .ser_rx_clk(ser_rx_clk),.ser_r(ser_r),.ser_rklsb(ser_rklsb),.ser_rkmsb(ser_rkmsb),
-      .wr_dat_o(wr0_dat),.wr_write_o(wr0_write),.wr_done_o(wr0_done),.wr_error_o(wr0_error),
-      .wr_ready_i(wr0_ready),.wr_full_i(wr0_full),
+      .wr_dat_o(wr0_dat),.wr_flags_o(wr0_flags),.wr_ready_o(wr0_ready_i),.wr_ready_i(wr0_ready_o),
       .tx_occupied(ser_tx_occ),.tx_full(ser_tx_full),.tx_empty(ser_tx_empty),
       .rx_occupied(ser_rx_occ),.rx_full(ser_rx_full),.rx_empty(ser_rx_empty),
       .serdes_link_up(serdes_link_up),.debug0(debug_serdes0), .debug1(debug_serdes1) );
@@ -698,12 +658,29 @@ module u2_core
      eth_mac_debug <= { { 6'd0, GMII_TX_EN, GMII_RX_DV, debug_mac0[7:0]},
                        {eth_rx_full2, eth_rx_empty2, eth_rx_occ2[13:0]} };
    
-   assign      debug_clk[0] = 0;
-   assign      debug_clk[1] = dsp_clk; 
-   
-   assign     debug = host_to_dsp_fifo; // debug_mux ? host_to_dsp_fifo : dsp_to_host_fifo;
-   assign      debug_gpio_0 = eth_mac_debug;
-   assign      debug_gpio_1 = 0;
+   assign  debug_clk[0]  = 0; // wb_clk;
+   assign  debug_clk[1]  = clk_to_mac; 
+/*
+   wire        mdio_cpy  = MDIO;
+   assign  debug        = { { 1'b0, s6_stb, s6_ack, s6_we, s6_sel[3:0] },
+                            { s6_adr[15:8] },
+                            { s6_adr[7:0] },
+                            { 6'd0, mdio_cpy, MDC } };
+*/
+/*
+   assign debug         = { { GMII_TXD },
+                            { 5'd0, GMII_TX_EN, GMII_TX_ER, GMII_GTX_CLK },
+                            { wr2_flags, rd2_flags },
+                            { 4'd0, wr2_ready_i, wr2_ready_o, rd2_ready_i, rd2_ready_o } };
+ */        
+   assign debug         = { { GMII_RXD },
+                            { 5'd0, GMII_RX_DV, GMII_RX_ER, GMII_RX_CLK },
+                            { wr2_flags, rd2_flags },
+                            { GMII_TX_EN,3'd0, wr2_ready_i, wr2_ready_o, rd2_ready_i, rd2_ready_o } };
+          
+   assign  debug_gpio_0 = debug_mac; //eth_mac_debug;
+   assign  debug_gpio_1 = 0;
    
 endmodule // u2_core
 
index c41ce7f77218c775dc1a809c6c87c1deb5f051f6..94681f6cd028f08ded39b2e974d29b035d1b8d67 100644 (file)
@@ -56,18 +56,12 @@ export SOURCES := \
 control_lib/CRC16_D16.v \
 control_lib/atr_controller.v \
 control_lib/bin2gray.v \
-control_lib/buffer_int.v \
-control_lib/buffer_pool.v \
-control_lib/cascadefifo2.v \
 control_lib/dcache.v \
 control_lib/decoder_3_8.v \
 control_lib/dpram32.v \
-control_lib/fifo_2clock.v \
-control_lib/fifo_2clock_casc.v \
 control_lib/gray2bin.v \
 control_lib/gray_send.v \
 control_lib/icache.v \
-control_lib/longfifo.v \
 control_lib/mux4.v \
 control_lib/mux8.v \
 control_lib/nsgpio.v \
@@ -76,8 +70,6 @@ control_lib/ram_harv_cache.v \
 control_lib/ram_loader.v \
 control_lib/setting_reg.v \
 control_lib/settings_bus.v \
-control_lib/shortfifo.v \
-control_lib/medfifo.v \
 control_lib/srl.v \
 control_lib/system_control.v \
 control_lib/wb_1master.v \
@@ -89,37 +81,42 @@ control_lib/oneshot_2clk.v \
 control_lib/sd_spi.v \
 control_lib/sd_spi_wb.v \
 control_lib/wb_bridge_16_32.v \
+control_lib/reset_sync.v \
+simple_gemac/simple_gemac_wrapper.v \
+simple_gemac/simple_gemac.v \
+simple_gemac/simple_gemac_wb.v \
+simple_gemac/simple_gemac_tx.v \
+simple_gemac/simple_gemac_rx.v \
+simple_gemac/crc.v \
+simple_gemac/delay_line.v \
+simple_gemac/flow_ctrl_tx.v \
+simple_gemac/flow_ctrl_rx.v \
+simple_gemac/address_filter.v \
+simple_gemac/ll8_to_txmac.v \
+simple_gemac/rxmac_to_ll8.v \
+simple_gemac/miim/eth_miim.v \
+simple_gemac/miim/eth_clockgen.v \
+simple_gemac/miim/eth_outputcontrol.v \
+simple_gemac/miim/eth_shiftreg.v \
+control_lib/newfifo/buffer_int.v \
+control_lib/newfifo/buffer_pool.v \
+control_lib/newfifo/fifo_2clock.v \
+control_lib/newfifo/fifo_2clock_cascade.v \
+control_lib/newfifo/ll8_shortfifo.v \
+control_lib/newfifo/ll8_to_fifo36.v \
+control_lib/newfifo/fifo_short.v \
+control_lib/newfifo/fifo_long.v \
+control_lib/newfifo/fifo_cascade.v \
+control_lib/newfifo/fifo36_to_ll8.v \
+control_lib/longfifo.v \
+control_lib/shortfifo.v \
+control_lib/medfifo.v \
 coregen/fifo_xlnx_2Kx36_2clk.v \
 coregen/fifo_xlnx_2Kx36_2clk.xco \
 coregen/fifo_xlnx_512x36_2clk.v \
 coregen/fifo_xlnx_512x36_2clk.xco \
-eth/mac_rxfifo_int.v \
-eth/mac_txfifo_int.v \
-eth/rtl/verilog/Clk_ctrl.v \
-eth/rtl/verilog/MAC_rx.v \
-eth/rtl/verilog/MAC_rx/Broadcast_filter.v \
-eth/rtl/verilog/MAC_rx/CRC_chk.v \
-eth/rtl/verilog/MAC_rx/MAC_rx_FF.v \
-eth/rtl/verilog/MAC_rx/MAC_rx_add_chk.v \
-eth/rtl/verilog/MAC_rx/MAC_rx_ctrl.v \
-eth/rtl/verilog/MAC_top.v \
-eth/rtl/verilog/MAC_tx.v \
-eth/rtl/verilog/MAC_tx/CRC_gen.v \
-eth/rtl/verilog/MAC_tx/MAC_tx_FF.v \
-eth/rtl/verilog/MAC_tx/MAC_tx_addr_add.v \
-eth/rtl/verilog/MAC_tx/MAC_tx_ctrl.v \
-eth/rtl/verilog/MAC_tx/Random_gen.v \
-eth/rtl/verilog/Phy_int.v \
-eth/rtl/verilog/RMON.v \
-eth/rtl/verilog/RMON/RMON_addr_gen.v \
-eth/rtl/verilog/RMON/RMON_ctrl.v \
-eth/rtl/verilog/Reg_int.v \
-eth/rtl/verilog/eth_miim.v \
-eth/rtl/verilog/flow_ctrl_rx.v \
-eth/rtl/verilog/flow_ctrl_tx.v \
-eth/rtl/verilog/miim/eth_clockgen.v \
-eth/rtl/verilog/miim/eth_outputcontrol.v \
-eth/rtl/verilog/miim/eth_shiftreg.v \
+coregen/fifo_xlnx_64x36_2clk.v \
+coregen/fifo_xlnx_64x36_2clk.xco \
 extram/wb_zbt16_b.v \
 opencores/8b10b/decode_8b10b.v \
 opencores/8b10b/encode_8b10b.v \