// =============================================================================
// Generated by efx_ipmgr
// Version: 2025.2.288.2.10
// IP Version: 7.1
// =============================================================================

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.              
//
// This   document  contains  proprietary information  which   is        
// protected by  copyright. All rights  are reserved.  This notice       
// refers to original work by Efinix, Inc. which may be derivitive       
// of other work distributed under license of the authors.  In the       
// case of derivative work, nothing in this notice overrides the         
// original author's license agreement.  Where applicable, the           
// original license agreement is included in it's original               
// unmodified form immediately below this header.                        
//                                                                       
// WARRANTY DISCLAIMER.                                                  
//     THE  DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND        
//     EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH               
//     RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,  
//     INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF          
//     MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR    
//     PURPOSE.  SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED       
//     WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.           
//                                                                       
// LIMITATION OF LIABILITY.                                              
//     NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY       
//     INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT    
//     MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY   
//     OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,      
//     SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY    
//     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF      
//     GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR   
//     MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN    
//     THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER    
//     (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE 
//     BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.  SOME STATES DO 
//     NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR            
//     CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT   
//     APPLY TO LICENSEE.                                                
//
////////////////////////////////////////////////////////////////////////////////

`define IP_UUID _4c19f37180ff465ca20760e199a0613f
`define IP_NAME_CONCAT(a,b) a``b
`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
module gTSE
(
    input mac_reset,
    input proto_reset,
    output rx_mac_aclk,
    input tx_mac_aclk,
    output [2:0] eth_speed,
    input rx_axis_clk,
    output rx_axis_mac_tuser,
    output rx_axis_mac_tlast,
    output rx_axis_mac_tvalid,
    input rx_axis_mac_tready,
    input tx_axis_clk,
    input tx_axis_mac_tvalid,
    input tx_axis_mac_tlast,
    input tx_axis_mac_tuser,
    output tx_axis_mac_tready,
    output [3:0] rgmii_txd_HI,
    output [3:0] rgmii_txd_LO,
    output rgmii_tx_ctl_HI,
    output rgmii_tx_ctl_LO,
    output rgmii_txc_HI,
    output rgmii_txc_LO,
    input [3:0] rgmii_rxd_HI,
    input [3:0] rgmii_rxd_LO,
    input rgmii_rx_ctl_HI,
    input rgmii_rx_ctl_LO,
    input rgmii_rxc,
    input s_axi_aclk,
    output [7:0] rx_axis_mac_tdata,
    input [7:0] tx_axis_mac_tdata,
    input [0:0] tx_axis_mac_tstrb,
    output [0:0] rx_axis_mac_tstrb,
    output MdoEn,
    output Mdo,
    input Mdi,
    output Mdc,
    input [9:0] s_axi_araddr,
    output s_axi_arready,
    input s_axi_arvalid,
    input [9:0] s_axi_awaddr,
    output s_axi_awready,
    input s_axi_awvalid,
    input s_axi_bready,
    output [1:0] s_axi_bresp,
    output s_axi_bvalid,
    output [31:0] s_axi_rdata,
    input s_axi_rready,
    output [1:0] s_axi_rresp,
    output s_axi_rvalid,
    input [31:0] s_axi_wdata,
    output s_axi_wready,
    input s_axi_wvalid
);
`IP_MODULE_NAME(efx_mac1gbe)
#(
    .VERSION (16),
    .TXFIFO_EN (1'b1),
    .RXFIFO_EN (1'b1),
    .TXFIFO_DTH (4096),
    .RXFIFO_DTH (4096),
    .PHY_INTF_MODE (0),
    .AXIS_DW (8),
    .RGMII_RXC_EDGE (1'b1),
    .RGMII_TXC_DLY (1'b1),
    .INTER_PACKET_GAP (6'd12),
    .MTU_FRAME_LENGTH (16'd1518),
    .MAC_SOURCE_ADDRESS (48'd0),
    .ENABLE_BROADCAST_FILTERING (1'b1),
    .LOOPBACK_EN (1'b1),
    .APBIF (1'b0),
    .FAMILY ("TITANIUM")
)
u_efx_mac1gbe
(
    .mac_reset ( mac_reset ),
    .proto_reset ( proto_reset ),
    .rx_mac_aclk ( rx_mac_aclk ),
    .tx_mac_aclk ( tx_mac_aclk ),
    .eth_speed ( eth_speed ),
    .rx_axis_clk ( rx_axis_clk ),
    .rx_axis_mac_tuser ( rx_axis_mac_tuser ),
    .rx_axis_mac_tlast ( rx_axis_mac_tlast ),
    .rx_axis_mac_tvalid ( rx_axis_mac_tvalid ),
    .rx_axis_mac_tready ( rx_axis_mac_tready ),
    .tx_axis_clk ( tx_axis_clk ),
    .tx_axis_mac_tvalid ( tx_axis_mac_tvalid ),
    .tx_axis_mac_tlast ( tx_axis_mac_tlast ),
    .tx_axis_mac_tuser ( tx_axis_mac_tuser ),
    .tx_axis_mac_tready ( tx_axis_mac_tready ),
    .rgmii_txd_HI ( rgmii_txd_HI ),
    .rgmii_txd_LO ( rgmii_txd_LO ),
    .rgmii_tx_ctl_HI ( rgmii_tx_ctl_HI ),
    .rgmii_tx_ctl_LO ( rgmii_tx_ctl_LO ),
    .rgmii_txc_HI ( rgmii_txc_HI ),
    .rgmii_txc_LO ( rgmii_txc_LO ),
    .rgmii_rxd_HI ( rgmii_rxd_HI ),
    .rgmii_rxd_LO ( rgmii_rxd_LO ),
    .rgmii_rx_ctl_HI ( rgmii_rx_ctl_HI ),
    .rgmii_rx_ctl_LO ( rgmii_rx_ctl_LO ),
    .rgmii_rxc ( rgmii_rxc ),
    .s_axi_aclk ( s_axi_aclk ),
    .rx_axis_mac_tdata ( rx_axis_mac_tdata ),
    .tx_axis_mac_tdata ( tx_axis_mac_tdata ),
    .tx_axis_mac_tstrb ( tx_axis_mac_tstrb ),
    .rx_axis_mac_tstrb ( rx_axis_mac_tstrb ),
    .MdoEn ( MdoEn ),
    .Mdo ( Mdo ),
    .Mdi ( Mdi ),
    .Mdc ( Mdc ),
    .s_axi_araddr ( s_axi_araddr ),
    .s_axi_arready ( s_axi_arready ),
    .s_axi_arvalid ( s_axi_arvalid ),
    .s_axi_awaddr ( s_axi_awaddr ),
    .s_axi_awready ( s_axi_awready ),
    .s_axi_awvalid ( s_axi_awvalid ),
    .s_axi_bready ( s_axi_bready ),
    .s_axi_bresp ( s_axi_bresp ),
    .s_axi_bvalid ( s_axi_bvalid ),
    .s_axi_rdata ( s_axi_rdata ),
    .s_axi_rready ( s_axi_rready ),
    .s_axi_rresp ( s_axi_rresp ),
    .s_axi_rvalid ( s_axi_rvalid ),
    .s_axi_wdata ( s_axi_wdata ),
    .s_axi_wready ( s_axi_wready ),
    .s_axi_wvalid ( s_axi_wvalid )
);
endmodule

//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
sLQfPbFHT4IbfnXBn9Hkox8G8bRjHwFQFIGDOrTJoSHCqYYXdoRk24dJuACAksHM
J57C0s8CHY2Y2A9VkbHGWYfap0I/O38JeB29IGcr0rRyL6g6KwXeaCu4tP1LM0xW
jRqj1frmj0piajirb5BwEBFDR8FYPTbJiAURMPMhRcQ=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 8512 )
`pragma protect data_block
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
l7QkCXjsoacpt7cRPMt2daDjv/3apJIuOPsK1421aiBzwaUsDoaxj3ZmhovyY0yV
kivONwWqV7qc2LM88Wm3mVBCGCgb1XjJvHcU+7jzy1nObH0/EeFXLWZH+zT0JVn/
5hTUgf8DDFg/gFt3V/yasG0/1SXUk5BVfr+HxlerL922Fsgk39lJP74ykiQ+xNpg
nL+6IQhcqzJSwIveB+xjEXquKJXjHZnuNthOfSvWbAVAGrj4q488G37zaFpz837R
5kVz285kmpXbl1V5HsqFthhvVxtJk2/FgeYZQPvKyO8TN7M7upSAD4hGPH9BmAP+
ZNZNL5zEqITEbsptVcbEqzQYeD8eZ5L8oiLzaoJ2HjM3lZtI9u/3w9pfX1oeq6/C
Wq5eB+3nnFfXLDSERSj6ksuyCyCH4mPU6jEQap4Akq7fZndJMDUX4YdFPfsXxGe6
3/gj1rU4vfYLyUKipRON4MwLK/71jTyjk7fuHjcOifqz74vTb7OBIS+eLhR8h6s1
F5F2PHlaCTeI56t2765PZJ4hYjV2ldR8qPzOIfj3gpPQuVB8ISRh9JvTPtPTlKDb
3LVSzlmFXhGHM3nQjfJ0CWClnXqdNrs5N8H5jDDZvoQVYQGEsqU7sb5LETNqFpSD
mKiJwlJ++n9M1DGS7WUh4JZdck8g4Kn9LsItQCe0Ky0i6MpylydUIvvcMauHILC/
0/EuUFQcC2QVIz29mW3ppB3l20fyS8DdCHUf7UCo+TvNav6DjL+HRgQddN3SfWEL
HCXmCvF3uEpCHcGIb3aayy233sn9apk3uMyauqAjYlKNoU9PIF8gqsOXnAgu/tY7
CnTBkEBpm0/iX7bhbycj/CJZdHF8jU4wGusZFqNvDp2LHLilqMlj9XtW6Hc5U3y7
+Jwq2RWWGmJD5pSS6x9yz72lWN6li6hnrCG5FqQInWivuIsxradGWSQeFnzy39bI
A8FrgOyQeNRDCgifCcE6z/+uwKPqZiNQ0hO0qIRYc93YwKBa5AgAJB6ISVrkRfvm
kBg84u5dQ+zWsDpGOUgjf+DPNBXdHaYizaSOP+1C6q2jO4by481TseWpHEBVu8Zw
+9A4HJtFcVh2aHKotZBPjo2X4Hk5NFS7/Ef9DdzHEZRPMt1OqLY4fb69cZTVnBUc
lshfdL1VsEyK1VN5r+BVUq7YqSqQtB50LXnRw8nrS+ILFS70wukRnJjwE3RYKRzf
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
VQ+DF+P3OnGBV6yoAijU+w==
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
L9bRAjOl+HUoyv55kXx77WhPg4FPOi9EpLW0iHc1x3oUQJcRH9s1WP5WiMsCkWzy
vQdpB7ALDfVOXtf0aXMkM4dnwafPVyu17c2A5piBvwLriI4UlCXHwqVRIt/DETxB
cHsuVb6IgzCe1raSsw+p5GJOIp2BZzOPBnQmK3plX4g=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 432 )
`pragma protect data_block
GR75OiizxwuqBYm8W2OCvDt7Gp/JLUCng3XIOwuoCquz9N1CsumV9nBJAcV3de45
id8UkaoJlIXWusJtLMNomImDgf0l2altdxaPVcXQQp3Y1oSTC8L9jqy/a8A4k8We
8uNmK8cVcLwoyFVckpMz8E55Kpp6xDpu+cUrCJ4s5PBzAZj0X614zftp7cZ5pYBB
Ku6Ag68q5N9RAQ56mvKAeXvRfI73xYHaw+YBHvqP0cg3F7uIkRkdkg+IkbiIM1Sp
nVvXsTA3iHu6f4J/41jQK4qJ9xMtxSMIFeRJF9m5RpHNWcmPb/0NVbbF99MTZkPu
oCMR2jR2wN/gFu0do5llaSxzxk5Qhj0uE+9hGWquDsgT8uDD4yo9WX68kwvyGH69
oDbPB0wN6KMadAx7E8azdYXF0qumbs6bZv31jbz3fdvMirRklH6j0qMppe9Aeg4e
MbHWMKMWmxwhoBLxgRayVPHOJw+YmMDrsqun5cp/RwcUq0LIk4vzc/MwJ9MAuCX+
X/nqs0IuMQtGlc7zfQBKTU/IZP/j+n+/tKy08a6jf7I7rW5BLQFERzF4lpX+hsYK
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
j3OYiaKnvM0NoUu4VCtliANf7pOIu/oKq5oHz8ytDRTuGg+fgZuZJ8MSZY07VFOr
IEBxW/zEZpTXwWNwPNYJLWgLohbDAZnlt+ZOZDzlYB698+P/yYmh1AG4Xivr9gEt
Od3PnfyWbasFQXBERii6jJEWjsCSs9ewKfaCCz4zc8k=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 6192 )
`pragma protect data_block
dYnfcj9zQX9qggYahNSva/NgRd8KvxmbQg8eZSF0nl5/l68zT6CXeOOtIagB4dPB
Nnyw2aAh6UeU+47qq/TLXLgvpSeyuULhpQag977kndtXGhbgh7jzaArvt6qdCJ2d
r9DbTzxnBA0afviA1xClR0OMJRMrubuQ//pSKy/hHeraSN7nQTbNYSQc1YUMPBMG
HMfheau7gWe/EVNl6DXc17uKJLSomBQGjCLKB5OpApbqoH6pbw+QDlmVoGXc3cDu
XmIQjQPgMzXfAlkDk3vGLozGdPmMKHpE2s24AZthaX5/hrfVpnKHZoNbaNfIPddU
MgD+8ITWiwNIjgpTMVn1+aKFXnAVxXX54PJGqCrGdlMpv7XpP3/Ig8mkh2EH0J9N
M5ftQlfMDWLlBm/IvTmQbSbaHjbnTEuODZUlzi1howtxrDmigDInC4sUzIPmekpF
oaLQy7GWU5KH1EwfGn5JJnPrDVuZuE7qf2Kd5MWo0bq7YjWKKPs5wtbZt9o2J7cf
5ScGIfxKUe015UgWMkT9uoaqTM5M1To4mHNQoEKA0/iAaWcnwTVThBdHgtgD7YQI
aEX3Hk84O43Kf+t504E+4pGp2NtjNBQ4+ylSCAkU9TA+ZrW7jQNt24lYRcZ3D09d
NBlv+IlcHScaJi7biILCJ5InHxG1GfcIGs18bMI5XdhNzoTKdGPVkMwPnMNevn1l
QUUvyGZZalz4VvBR6tRRrmqqx9QE+rT4EwvTYp9LTF11/ay9c2Vv4kC8AtFf1Ff1
gjLQRbQHp09r8LqQmGLet0ebj+pEbnWTs3ZemYIGCTmuUF8CtD9qpOqCHgg2g/iv
ZKhN1gAKemCGULEctmygM67JA9bhzls9HR5GMu5pgaQc+EwOBXmGDLrk9NFxG1jc
C0YeGQADAQzYMJVlVcJVT8OvVuibOcKzyhbE7C05/iM4U5WQW0A7s4Iv30gcKqDI
HC2vpWHZ4OkzOiLkJwA/KgxJc+ll7nHV7JEeR3f2eNpDjkZDrLnXdhhd2BgAom4o
dv6egRxG2SUC9UNh8bc/ft79pt5j3CoXHaXDBh8jjHVeVO0Gp68y6CmqNxq3kxm8
48fnQQvSaeQMCYiHhWZMjGmn4foSLda0iBhWsd/PGUE4bz0pfyEI967xSwaZeZ4E
GAWMIzK5QQC/urikUHV9NMZF3KGmC16fy3DywZZqsKV8f3OzbPNtkAYz8t9nuSJH
Z3vJCK//CV7qnulACXi6tJeeWvFZehZ4Q5QHEKqrwH0pm8cK5teKJd5Q1VjmCKdu
TJpmpwgBRfToxmAGsa9aiSr56dlJqKhMc6GOZeTFtFuCzt+rpqYk6sQI3RcyiQTl
bYSsDz9RswQWIglgTp8qLUACe2mQTo4GqArOufEj6X+1o8V+cLA7kEIeU7j94Gt5
qhs74e9epOaSQ4l+PeTO9PWqWYolZBXrQAVoCJrsROUdij8AU7AezDI78z2+fMdX
ygWkxYi4nGhDPwjiYn/LSZJ6l/L70jwrRC5pccF5h49uWTiBguTLsr8SEWRbTBOb
Yph/+/Aor/qXN6oqgCt1Aa/6sXkMCw9bl1PBXseSo6gGG3f8woOfejAgIURNQnaU
SZrPiZXde84PO4qI3bwaONywh2Yo+nETyuc8b/QBpANl+SCXtQkst51T3vmqxHjv
dGCkTIjBjLCrH/aWPnJBoLsbXJlcpCNbLuUQ22cMEMVeYmV5fLgkNH03x2+frDvj
mWUcURtvgEwQZ6/YmlunbQPhzhhjL99ilSmhvtNZ22VZqmboct6sWQ7csafJabS6
iIhL16M89uzXK4Xn/E6EQJhZgGex4EoDrDNUBSI96wUstw6CDWYVfRe7uMaRxzNT
CUhC2aeTnvfMK+k5fS9JSE4bHEZ/MVdrI4R+ANURPc29LF/pNraoGSt9GCV/8Omk
UGVQrLRKsc73V6t1gGAcIH3YeyefnqDj5axulcl23jYap+HOXrgLIe5Mccq3ZtlP
7mxs+AZvTlMI0Ae2E3jf4LMbUJ+GIrmd1sYFF2FJoofbMBBwdb6G1j6gz5C0PJzc
GZWYlEhNuYdhChO0w3CRk5F1MzHMiFLHoRdnLCdBe97r82wibWNPmWCBSouoBtrv
+CKfvSp2ipf8/w7YPSxSHzTzW9JpYCkxYbG6rVI8sFgHXQqHJ4a55qn+IObvwEPa
OhqAsSZ0MgSzOdXDa/fnvmiRoICxBD28lCpBOSgkxo+mec8DG+VKc8QbGbIXbBAJ
+8vi3wQQVvH0Uq6c2HpQjr4bPjA+NfcncwH+d2nr2ifN1acJusZ7s6lh4ZGLuwXP
ETC1bPWWQLfM0Z0Oi3sm7hj0YPkArPd6xSejOJ13g+G6YxVmSNpyJn5/82QoPF51
jPth9wVW3pp5uRa+Ek7++1YCLWQSLexDE9tNyHWxtYOuOXYueK+CvNLdbE+g3Pz9
Mg9gqlo4sAPBbtxLOF5LP1Vb4QLQ5Lln6IBZtdYe9iYDD89q57WhZcKR8If+5K/T
ppTQrKEjYX3ONr6A5/gnG2uLyKA4DpYmssDGBovrBl613E4TrM/zTJ+Otlk+9/ek
XquFiIyHmu1u1PbvRaKPRGs/wqBy9dX3sSTxE+ZbLGy+iGRL5YmVtSKspbXz3YNz
I0xGE2miqWsaWROfy9R1oz6KCS2WbdSTzUh95aGkvyB8FiT0K8HnT6NQQOdB1ZiV
XBmfxguzDQWeGaa4GFQF1gNJwKHgx0wUDdSMwv/8V0wIy9AEPE8WiEC92+iUvCQA
WiCC5va6rmZ01c6RcHifPECSjQwxVtfYGRR2TZk2tPcbrBfM3p9X/3F/sWM7URYJ
g9Vl5HtsC+ySiszdcrV5L2gzRkLVLS64I7/HTEfwbSl2ftYj9hQmSxUn5jIY0mhT
9cDyAZ0RVBwyJDTWum7daqd3cSgPbIBygYN167ezgq/yd+lwsTQ364+HJ+tDWSEd
4VKmskNQRcF1pakzGpGQ22FBkXp4jsQ4hZqMUhEvXztl0MEsM/Qdw42CLBJzu+LG
efIOhrJdq9zD91SjplR/aFWtbKmwwNJkcl0S6oq9/A0i7KorMf+IzvX2DKxaFrbH
t9q9mGtLaisA6xzIkULNXSz/GH1nlg0x+/at11ob2iJmJi0VpfdKfhBDrGW8rLaO
L/uyxeRQUK6BF24uPUWH9ojRsJFKUhDijJ5yIem0M4lChSziMUywuw86psOLdyEw
mM+ZicgxqO3UdY9Yhlhw6pmPU5kJCPCtDG/54sFafkXJuye3fFFqlEJdi43Fkr1D
SosgzDbalihBdP8kwuocdvOOSowg7lzsziFZRr5YFRjyxgA1u9Vs50ynRTBgvZ5B
d7PKVXdEqTpAPmPitpqtj94SPTFGAc/0N/7EACQoJqZc+sYBiEA5y6TBprKqLiL+
XDvL/HbyNevTJ77dYboouP4pHiC6eWm6H7zth85aB41ieig2hUpZFqsWIKfwIiUW
nj6uvLBlg4lRc+S0bjbKQ+JqE/Gw6iPWxuDPCGJgTRJIqUHy9NjipXI/Prm5nOl8
uYtC0TeKWjBUTO6D+J7xQM9neKW4zeJKAz8newfh5iaGeOBrHShrhM30cqlWuWRv
h3k2DpHd02vvjYTdjOnkWVyW612WbUaixgEMJpz3HXgP+cg3L1wZnh/Q3Cq8kqir
5mOU1FNt/kf56f5KZMNrTWDS4gvozcLjXck5PIoCXkO3hGM8n3p55fTsfH+pHfWW
2cXqvp2BT05lZAVL6US2Dyq+w8uXmeE5As9HSaoPIJt9VZjcYuq1DhQVNcOcdw56
k+RILMy0CbIjV3M+M6l/pF1k9W2wApW2QG1ZXN12gVHSbN2SpAb3kHAyHOFZum01
qqfJTzOMdR3Pssb+cBtXOaA5SQ/hoeQsyPAkTLZaeuyyzmmbL+5CBebolSfPR1JO
sT2gtV+kgZx+sOmt7j2R7MYxSLoWLdesoV0YMH8G/axOWvBYBu2fweTZXyZSBuHu
6cAcW++xnSSNaboIqKA3y9NemRFomc+gIAZN0Lq7u0yWxjvnHyF5lH13h+EIfx1m
SiO1ajsNvyb9bZ/vN7oGVUPzCBTe75FfnDFtmaDHuJ1deNgoKsNsvwcnkad+viEC
7f/uDV5v58Ys+oNKteoK8H98fwD2X+uBgX1kYCWbHBZvKo1mNEMBf7v07BN6e0kh
+ozROzqRynCvYrKD0nM2EMQM+c4M6Zv50dOEEAkj22zedtddAzl0qqK8Vf3vyRfD
+9a/f4DDhssdLUVLqFp3ENQwtvgkUylX7TxbnOluf+zRAQH3DkDCv4o5jYZ2SQ0N
MGnaml6mNvSisTHAnY019IofqyNcpnSXmERNrtT28HNFmED+lSd6XYTj01PRx7z0
u0CCsDTL2sbzzp07uIBo+Z6BuT8eMRti0ATxak7+ty8YtHJFlWIIJOleux7EZXKo
7gR7BKQoxk6L0cTbHyjHkJnNTvzC0RZoL/PWjMcZgtY2/gZ3n3KTIxnsUesLsGVd
b/qnVx3FhQ8yAErrgLbL134FxHlO5GRdJFy3oyV5sirbobbWJSQ8mdrFb2DXgyzs
N2Di8uj2FSoGj/wdllUhU6Gw0RZmrCI9ray4kIMxNDJLbz12BgkxoiCe6bDudGou
9nCnWpP6dZEAPrIjrtXgWpwGGjvcscDczEmXZ4+HOJB56IctrLdMoHZbchNiUH+0
x9Y9CgWnh9a7EcX1URAzxeOTigaz9oCi554UDgjkxNBVJyAHhb/40cwwyOqZT2We
9UJSi6chlxR5+sVon8foNyBXiCfuHj0734fAolHSccXDF4WF82cS9by6c853c5eg
R6EzknDba5DGBbFuSRPB70uCKTxaSwKtvcp8CEDVjoJxjeJuHVjS5sQCohNQjXDj
APtwbs8hK28iuZwXTy+4mjjWrUBT/dacbvSTpCDB6dBnt8yWKq3PCVttZY3EXX2b
Q4ds7d7LRHIbi2HM2sngboqzibJzLvhzEMQd96kBw8/tzE/BC/P7/R0USdy/EkZK
aFTFE1GTGQgjJ/sf+mq5uQXvdD+IMlTBuzzcJKpolLjT1mmF0I5R4/j6KuZBz+fb
nXnK32Z5fhRqnUDhLM6BpAZ3mofIMkxgJUNP2Tr8PkHuvAkCiH6im55UVzTtH+Aj
09pBd+WCW04ANcnoM/kC9felWRIo1QPcNdoh1k/2nm9zS9JsA/sFRl1sWWyYLhS4
9N2olxknq6M2GAcmEQ3bk5MkyfzeGQXxsvSRFoWf0s8XB0HgB1L8I+r6LBDgW4hz
640rzs4dFIrt6vWszsSnL9jA+m6NDz4s6b56H+rPZaQYxzvqYtkBv12QNP2nPcMe
TN7mV/fdlp/ekDVvMj3t3b49LXhnPfNkyG8NKNw4Wzd7J8DhofiVKaRQ9IT+ODxO
eVNVm6aJmAAh0djkINbMFguAvBJEgb1cKVoxv0LKlXiRmPjSbV+lZTKUI5ycqNYO
mm/5ov1fzKkeOeQeDUPltgNkBH0IhVpx6N1TsnkrUrdr8bhRX1KYpqdzAAWaQnM9
GD9/1AjZdSbVr8HVo7IqE6LzRPJdneIrREC76nEW0xl8kQooGnREyDxHn64RjZr1
0iK2v3UvBc4cOGCxlVefo2YSvbRYkG5Re7zRsdjeq4Rbkyry7C1PvFOVbBOxCR7e
mEEEalNHXP3I8wdniqwBIleVsH4qeANjuS81Yt8iYOw67QkuPZ1V6C+eEoVMiMJN
xPM2seSF32EkwLL0ty01cK3cDnW1vZQ6P93fHrRBnOf8oAMjQA8oOg0RK82vgBkF
e90AQd7oR79SEqSdeubLqFzjOeE9/1ePqwo8tGjZNrubTajieKac+j2eheb1ce2/
loIcCF6pUIGBvrhgv00Xm7eOE3iEHR/Sv6TwYqbQm+r8vzw/t1AmGKx+2EBuZ4X+
SZXaa5N7f2AcsjiSx8MyWPdv9FuJ51WSaCeCfOm0IowXZCWRrEJJhZOtk49r8tMh
Mh2gcBs0KZE+1/XDN4S+zgQ43hTiQwcYVfFB8sAHfI+nYQrKbI1AUBpRxnctRQQF
pkYpHjW5IVL75Gq39XnGQ9gkyiT3X4v6D/+h/zJjs6Y+vnSzZlnf9PVH3FnBWzm4
KsTMQfJ7kMMT4MXNCrfSO4iaDRJSu7eiXPruc9aeGUlWAR4bgG1DWW1ElLEq8yoz
mBduwvzenNvth29Ot/Pc5B66XV09GUb6zWMBG5Z5EmJnq6YC1ixghKLWbJ/jHHFk
BuAcm8KyP8+JtLPch6AssqAGobJeEoHWzGPJpzg0NDRCTOZn3weEKpEByrZTFqyf
YcVrDfHYYW7pLbYdTXlhQOFSclABThxTAmBtniSA5BDO56FGEBgBZaKbleSLpR/A
HNAbcUd1A3IvSdAiTMHXcJdkjXHGJa9aXwG2iTRoZHG06IruDRZPm08ZCCmXaiLH
QX8VNKj9JFZ3yFv41QhvQKmHqIgkM7mLU/MUUMyAqR+0qOlxxSV4tviSAE2pjQbV
FkqLb1EAAIh9NU+l0o6qcXB0VnysgRRizZH7gyaDn/xEarDaRaqbQ3ZeNRImqiEW
OwmxL+FwTTa2rv6YhFkHdhSHtAwzoSkPiF2R28r2F0ER2S/duvYpOTb9UR6d+mul
HMRVzyiULeVinMZA0uNO0S5KTEzKcgOlT+xVd7Fw5yg2Od+2nKx3z7P7UMk1LWKT
tX6QwTDelOblaPo+YOyp+9tR/aZZB10uGbP9SCcu5gVyj7h3ukDJP++g+Mtu+8o5
J9GgjTVfKY5LkMcZZtiJl7XdVBG384328+GSS1CDdY5Pp2cBCEBXmTjBuL7q+jWU
gU9u79mtnlwvoC2Q5zKuDIS+vjqnZSL1Pb7079dpGHDcZpBEkECYDBrz0vgQRZ4e
PuNf56ztJjiVglusXQrDm5LUgBC4q9cbbglk+1N7QL2c90Z2IXVEdP744WlXBngU
hlTIDF+/Mcj0Z5D/lr/q6a4e20XNQsXqoXqxrxKpHQ/q9dnv9emyzbND8HsLygfX
ZegdQVutgPM4Xa8fkyHY9zWS3Ggj83dHRE0YGOv4GUtqljXOMqafuPau1WNI6BqP
iI2XjkTgUw6BKpFYta83ColLUCGYWbGvM0wEG7HBiwaDwleFKap+mAOM7heiqdOH
zCR2CUQRI+V8ZRuKPC3dLkyQHWj1n91dOh9J99CHkvg2zKBsG5o5JFQfDTEAb8FC
0bQPTxAVHxEyiFe3siWfxwhNNXBX9ugCLviC3qUIdJif34N8+X9wFrcIVksRwF5V
5es9lH/1TRTX4HA6Qa1qYz1VMVlkRSGQ0dRtkSwuD9sF2FZUGVbDu8rXNSt76jw4
bfWKqYqRSYFhWQnd8nTa87ZEfSLnijeVqmqLEcA7aI5zFVUXTnQH6sA/NbrLb+1+
FLbe3Q9TfXMdebOLpxxsRM3WRzEK0Mk8u/J2ffXUVTbvGyKwn/HtIbuXHLkqX8xx
CFJMBmE4YE7uxoVbetPspvA+biWem574hGrLVq9+LWl4AgXFE5Terb8ZlXTytdH4
c2jeIOzphpS9j+SBOZVFqERw4wS6z67nxcXDfNZlUPBfoxNKLmIFdeV+xPQpXGBh
Rsjf/mQnaCprExpG6yIK5pBOIM3dG3KrN+aduIRV76zGdQsU30pZxbVHU2ekk9Ur
mxlCDSpEfp4kx9H6MS/tWff61qIZEqHhSt4j9EAgCB8S64hpEB75I9pzaPgtyoo1
vvCSptg/Z+x45jOSygmUOCfGBuhLYc/Ig1/K5C/Nu2uBRKRv678OPUA4DzdT2gjS
nURSpnfUkevTvK4bvT+NK2s1xsTE8Xi43mo49nyfh4MYOClEijw7Y/qG6OlJTiV0
S4kIf/km0Qj0Y81PRuZiFcFU1ZuBteKI1UzRsovVc4L08hjGM/2+BiTaIrU53WWP
qtfg7fGy7X90SiQwIumPhoN9MxZzdiNZUBNAeufsNRhBs8vY/oeFdL0SeSQ1/o4d
66k0B42VzBdoZEbaZczDBwxKSxygHMBq2kT3qjBwvJe+nXgtGFclfzirDRbq2uUB
akzp+TsCgr0KRs/ujU0AkYzsALCvEnCmeJvbju+WNuTNMa1syBsunPWyhRq+K99r
RXPHS/MQgBj1K2Irrrr6Le5kqw+eB4WLra+lLZCSv3v/cOaq+j8Ux/DqazJSzhgS
Yuqqh33NchOQ7kXzOxkwSfpLckFAk8Vhazj7Xp0hwMLNBR4u1IgIRpyeE1Wba/73
r8AmwBHULjBAKCQatTtpVJ9hmB/3p569FIbXTPLroGKsVr/xpZkB/6Mne45a7rYF
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
X03DOnX7gcXRTMM2MXt98PhVj888pM+Nxzjdgk+kKVbimAfdmO4QqveDaUhzZAMb
mmV/QXT7nYdJ4A9Zd0Bno/L9Wew8PnstO1OwNl6/UydPwYyDryRNO5m2NT+duD3+
INn3SJ5fz9sIZDM66fAP30DL9seqfPPqsANiQJTJNVg=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1152 )
`pragma protect data_block
7EG+NzDBqN+I6QKHeNERJ22nQ6iQ64Ehxz9Tb52PPYm91zsG7n2MAKXn0rF96cfO
9fFLcNO484o+9XvmN1gsocAtRfXQDcKfBt20FFXWSs5dRcLkWABhwIh46FqbKMaz
P3cpt+qRqlXCjr9276ykbcIeaCngJuxPGL9wwwwDDqxZzAX2DfnHXSVU2pyZNpBb
dMEWkp1ibyPRNIekdVkgG5l8cje/Yhpsi5vAEDeA0hqIK7LP14y/0o5+VcKH31Tn
iywMNq3uubwR+f09jVZ3rd5c124KoL6vKnSTLPHMEnYGph7Ja5OG0UJolpHv/4L+
nK8ysjPqtL5GBiqO9PEBU3M+wJDL8OZmDUwPlHd+pcFsA+OscJJC+GlUrPyRaIHv
y7gHfqWf9dC85z2BLMU0mDCrGbyjRqJbsjm0WyWE0SsWOXR/vCUfxmVliNS/wTF5
FZfa8jLtRDCc34vvBqQoJdG/hIRqqflLVxThdHyG7UXOjS4ZnM970dxDvPF8n4rA
CGgJuuAME+1rbJYQGl/K/+7BuGUIsRVM82bQZ4zXF5Li+5+waDaMZhkPPCmi3W+F
G7sAGD6y1/TU04w3Y0878SngbuN/ljpssdc2JTh0A3NAwDyvfvwgE4OUW1IJTrRR
Zly8+7nXHI145SK3qnFlJQyDeB7ixnADkkHSLUNu7iKKWHVK3T6DUktmAklsV3Fd
KvgOpWmA6cZwOil8CRvamR9cidqUZrJc12zF8HS8E3glXg0pDydLx2O5RbvC0Lcl
zoG0ze2OUuuHC9lUweEOK8IPuFGY3EzX2XIex0djLh9T8dW4pix4Y2Gv20ZfEtuD
xZlhqtKmgzv/T+QgkCNacMIzS6ZIcGcpXOWrVTrZsisCwZZiEG41XUe3gOHVKMiS
dNBpU0fLIjPGlcQ9x2v7l4hPEV8y3DBQRCzNpMuXFIm39ZAjlD1JFtAL3nKdjGQE
kZFhcHD6O/9AjxkYzFV/iwP1ui9GZ+f76jnNj+oJMM2pwjfrV2CqyppT0A4JHvqI
7UnRagQCrDQZr49z/CHD1536oFWWD69OvakaSpG9QZLYrTGn+qshDyy+DT7VrfiR
ml2w4LS912VlPW0QYonkNMG048wkgd9rtlKbHwqmQWsyKb1i/YITbwItVbUnElnh
ipbJDMO6PFcnIfLvwSI1l03qnf40smUGd/lRvd3w28p8LUObbxkk2KclwmGDX7QF
XPIe0r2DfSTWu+uec5mgqU4rAw98Rh954b5BeWaugAsFpkM1C0gv9wX5Gm13LHIF
DpGG8dCv1GjAQ7529ZmiHyhIiKKKCGhRL8FsHMaStGri4LKy0hcl+GGzr1z2ZNpz
Sz6PnucYK+Gtn6ES0kujZs9DCk1nMig+rZa1FOHYvTvyOcSLNTcPXE8YHxAxSCA5
2zCMqaNvq2ylLu2vQ5DSwptugaWNiRit/S+ueYcjTAg0MjHUQtS2MlkHIQix2lea
3KwGb80jHq1sBu2L2nfKpaHe7CKRVstfmTYkbBfp9URCb3cns2KHSlQm52VyjyCz
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
UuaHaXzeOiZ7NaeZweb+R8hRUkyfyfnWrji8bpXwkCuMpzgOz5w8FnJ6mAtpgFE5
TS9pWrtEmzWKd5AyvfRZCt+Boecgx8FqFt3fYC79L7T+cnRZ8Z3HxZWFjgJNOyxv
9/UD11nrc+6i8g6jxOyvNVvxC42aH+8LwYwjtMEZNcc=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 8208 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
pD0hYfITXNpcZzZ606oJ/smXe8GyLPdPoASXSxDd+zNtDaQTC5FWWpExGdZZ1rf/
qfHy8iWJHYzf/Xg0ojLa9Oz4Pg5DbdYGPxbqqz9OarPuzL8nm+rk/fetuY4m1moV
8GyBFX/b9QnwGOMHr2VsIMuNF54e/L+BrnXiia8CB9M=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1680 )
`pragma protect data_block
X9YvLvDhVMGWwUsKzDsR8Va2XSqijY5gT/MrGTfZLVT44ihwZbsaF0/TlCH/l4vI
ZcoJoIXj2yyd/wmT5G6C6QW3KJ5Y7BWCbFIrcdNJI9Q6CUzxrg7pj7WOv943j3ey
mQBwkWLx31MU6WVXJvINloKH0sdHH3h7UiQRaQpkZWXnqC4lLhoI7t/flFSttn06
OOIsCI/jT7/NMO3BoexoHWbUvBnpF0hrqwTnZvPxAX4tk3Q1pXbyLbK4/hYHxD3U
DWm75jFsbeCTsZlPS84Etz0A7hJ8ZqfEreMacAnr00vL7+VYKc2OUSw2iVUwsEEM
sdsCPuVniHNmSZpL4B2AVILBFcAfmnbCLIKkYYPmjooTBhm06/5+IFFD6G0FpTho
hrO02O8CAu6zQo724K2IgTnf7MuVP7HXZBpMOvvAgt4SuGgSM9WMvz38ZV+xJQca
osH51oAwWU1tOhwiMd+HCArk1cbvyBJvVGNCM2m7DT01oe6N0tks/qzZ9pImOLg8
hFEoSnxl+82B8ZDYLRB3rH3AJajDvjU5wo/Ljg7T5T7FV5ezMOepm8qkQs4f7tL7
vOEq89a26vqclv+OVqSamsDnajURTAV4xPlpm3dwzSVe73veVqV/B0YVxh+7Je+M
Larq4J3nzeczGWDqufczmtprXTKJ5pdhDWo37gtGO5npJ3zvJfdBg8deLDnS/1yM
Ev94C943ejtS9pxXh1FDO8JhOiG2lXHSOp2wXfv3qGVeZOSgF+IKj1xa2OQixdOn
jqk2+S8BQSst6IpthqUY1PZT0qvzKObe2jM/RYqG1tcbBVE8uyXo9SbFcAEKWi1u
LvwdiYAA5vQgEownBLF1todYnMGEDobfgLRxS37wximgQUjAfMtO00bThqr6k4Fr
YmTcPBmcpgLvoYvrHqFQ0A+fS8mcFdpMsD2Oiy+cuTAmByDfFaPl2jfeiGDEIT+9
GM8Q91tXX8o95n8kqqySyxltdXdCrfQJSnA3BlnMyBgVyghXmIdFoDoYhvTt2S9O
zB4V5N+A0DTcuu8WQlU6xIx/0DTERTYfoSNdSBnL+YHN/UMJxLalhFTgHE8XYcCM
JFJ/mjVTP4OCi5fCOWIpf8ODSD6JSYYp+IIfg68ocqrq6m1Nq+8RtYNinHgpsLgC
ofxH4izV0yjyKfP/UMLjJziAerqOSnJJPKSTOBtrQNTZ8XWGB9ZQEzxvfC3sstoO
fG7q7wA7XIC1Yi5EbM5WJN5JmCTKa0UptUEgVBH4pvgUmCNNIgjCPdBgshH7INfL
jK2yvIdnYDCv0O3rEdEGEJ68ZrVkkLh8yRpi3E+oQuPUfA45ZXxH8conJkwN1Hmg
V8r9XB2l8RHc4e2Pccs5VzRCgXaBESxN4fDtegY1GjfA/kZ31vgFRr5pAINqqsdj
yoNvGSBHirfCXVbhHJlTPCYdl1msgegbPRKvvsXsYa+FbsH1eh8+5fpTFvuto47B
I2H2usy1H627d9fCFpepklDfXG0bI0yDnBOyNmH6BWn/+X7UsmRqQ8HR7vttRTeT
hAvTEwI+LG6k2Jz3ur0O82zML7nR3RxaYhrH+PDJVG3X8a+3e9OWYtxyhilqf+W9
F78uCSgd+DkSy2r8nuSpOMye8u6UM33Cm78BcDGuXgL1fLnm9D70aqu/QX6qp4+V
Q2AH/+cI8jgjMPZ8KPzQop07IZ3AqS+ZPMAn25rbof16udMsqkpyUri5qb0FpoXv
gyUsZZoe5qCNU1gcaP3PudE9zphDPek+ScBhto+EA6lTZ0Uv30lM0xGruL5bNVzL
PrXUWoyB2U1CkaZoDg3hjIOHUq7N5Q/OnWi8o/EI+Rh58taaLiWh3UVT9KsfT87z
AVRjU3GSE1jaJ0z5Pbyoe76NLux81mUurg4HFClHJaVGzGp7f7JBbOq1IilcrGx7
B5b+OvFVE5uOpsgrHzO5KmXgrSZdcu1DINaD9j+FmXLgtEWcByDEYc7R08SPtkaU
G2g/xx6JY/P31Hn8C1kJQIiOU1z2vTBoro3VEm1/4Dyv4O81U7AyrCrYHYgQrKBc
omxzuFnBi2QCKslCPELuQdNsOWT/oudLKAAGzhzw0g7h3BglLIMv3OF0BvqW+lRo
f8p1dB1spRtx0EInaXQETcPyA1Z1Lnr26ku+SxdcbbiYW4LmF6kfOCvOS1r0Q14n
vC681UCpDEQvnwhwjwgP9VaH1DoMeRBVbJPnKjhuwLdHab02aHqwZWPwd1pvoU/S
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
QstAZhgycLSqZv4lCZBRFo/wRrK+PIx9UO5T5g8vaqTwPejmgwjXvtdnzPRbb5ML
4dVuSLsQ5HwVNb53Qh89MeA2WwlfginIn6o3c4IrNnTxcnLMW09MAD+bWWiYwTIw
8WO7BizW767Wjcsp5aR099IgUMQ8d3q77x/OhoR/RIg=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1872 )
`pragma protect data_block
hQMI+J7RFsI8sqJUmUZedWLCNrdAIG1CC+qsjGsyDqDars4QtKturY1G/AhU6Z3v
Kc19eXSE8v+NbphTJgS4i0QPd/YG/87SqE0qp4APnlbjCT6FbcLqPMkmfi19CFoX
e2bFcOL59mvQTQ/w5K7QH47TE1joO2hyx2DLRyEBNdo/nPyOvFP7EUUfUL789HFJ
VdDAX+qDlWVa68jh5H2O8o3NS+FRGUs4j74k0NkeVVxZn/a2NB4qAdeCj2Ge0yR6
bjd5XCribrQ/aQavAPoJV2v2OXTP5ckEyRJUaKczbegZAn8bIZZGlO/3IFeN2L/j
GUoo4LbCaUJAxAHbgz8IM1HIoysf6DuuebcTZH4uW4/YKesx/bLHbsxAYM7iEG/d
DcFiORRksFi7h9hmTNnWvGK+UpGzyeNi15fsgEHNNk3SqFRcraZ6/7vUJrMrIQBx
i3WexC+O48e4CxirzLHgxClF9bfo9KpmQ4RQmNc+hge5LKQVYu/qt9M+IprgB41a
d4AHLF7xjHY5ImG8zB8rpPNxDhBUbWcnElAAaGn5b/61/z/9eR+XDFuFoTeSf7ES
mVQfEuDlItVv4olnCh6F3cbSmYDX/qa6QSkrvZXAJaS7kr8hJ2MFXFeA7e9aaqKZ
Dq+2VAsQi+5ZUe6FdTNqxdwwh4iIrPILG5XaNP3e9lU0njJrX3OXZOvjnlGxvsq6
oXD7BTfUQctJ/hiZSC+N+wN3S6dfOtXG7Pb/QS+Z0cCj6wDLlbRtIySF6cCTCaDj
ynWArmD+UzC1Q4y7ovYs2Ih22/00nlXIKXynmwmdflmPTku2TChI7pYVIx4hZ4Gp
3tN6VS1uVs12KqsX8wsQ5o9+Jm92zV5+Cu7579xp/rUHQNTksnYa0uAClIC5myis
JLHFjjaITphUuQbvaas6dpOzHQCZxu1xBqucFOcFP/9OraqILA+ZFOIK1imB7Knt
NuIPXHQiQfbDFbTE+9cHUUbX3MTxlhuyoztyL6D2/+7NjlenkEVqqFMllXC7T2xI
hq7QBPkfcDgOX1m7nNa7pkTN+jTUi5Z4uPvify6bhv6RLc77rZD+GRgA2U6QNCLW
WGS97vtCV/n6A/KwHwdOw7chfRpBhPrQnFBV7/NQ7hodHp7yyU5dEqMmnc/vuJ3s
RuyDvK/mR8f9w4Lg6bUNP1L8b2DCllgt66tcNDT+XTwPmEOttjiih80Qx00xh3BN
uG1fccTVtseZ+5t0C1WFzsS76a4CDYhofCWCKKgArxbzTTAJ/EQgRyFBmmzEkrJd
IdwPWcuQmjhKEBQotiHiCoUwmWwPyXgRDKcJD98NRFzxk4G8rlzEWIAFdBNBBT3i
7wnTt9w0B1Z1+izvjj+6DRl/heOSy14v+1llgqG14ValLM68EGhZ09WeUXmtXpdo
0GEpxkHKNnAVGyZ6+uR+vFQczXwNhngwhbn74n/Mukm/7f2bjAul+ZjOGakti7NG
rsdrPA/w/63gf9d5ijHzrgYhTZhSOOaKPph/w719lohCEXj4HtXJ+5/XGhlPcuT1
cP3cflKc/nbvuFiZJFeqDkx1f8W5CvXZbKMrgQW+VDhaSRFWKGgR/DVSp119II+X
5bpbN6lP2zU6KmMBSowMy1mmYm4N1IEsRfXSCmN51Cd2mLRW0+MvXYh++6m5m7zp
AyJJ8kkGT5VsJmjXvjSBM4n7GoUCP9yGoBbclwI/kjIqqsVBVgxHaey7A55hWWzk
xGSYsFrydwj8lTIOYU52dCJZcKszsk+Nz45sddzg1/+DPpHdKHSFUCHhEHrWbDwT
7BAhWekd/6si36RjgYWX1Q7ZeR0/PEF036GXp1euBwt8JQxNahcZZqtNKjd02/bb
rlLMWYqnXTAKA8JJCG9QCeJZIswHoBRYO3l3H+1HNl04idVWyjsiHnjlPbzK64ap
bRdzHNI6UHU71ZCioo+vErWrngejTUiWt082qDSdidV/YtIvGFcrMNq7eITm8aKw
eD2JWyvFmaLyonvA3PehLhYJF5D4c8V4GQjiuY//gZaxRncDoUvjuo35L/CFoS/O
oIBa0AErbtP/ZRwRYEy4x6a57QGNpWlxnLZUGanj0k1u5G6NThk9qY7UhBzkAdFM
1fUFKb90llKmrHF859AvsLWc2KamVPg2fd4mIgDuzLQlNYIeViabKSfzQNAkWeeC
TFvOwn2Di8TgL1/N1SEhUJtRB1UTi9/3UN32HlphPx/WsPM0qEjtvBSZoDkOt1Gh
TmN4jDfQOPmHFBFlriTEGIaF2sEaAwW5gpO+Cf6TCBW1EkrFldMTXTiZyU4wYezh
AjhLzmquk55MrJnLl4xJ6pDwtN3fnoJKtkymRpe7ze5naUQci03vHRL0+ca3A6Jm
JRD5fmFwckqWX3YeFigaheoWdmylWnSNJ7Q3+ev0t3QUxPUT8Tgxw7icy7gz+Rhx
99Oqfr5aUtjbml2r5r0kAu0QIuGIRTJr3pPT/YfTS0B4kE3Ncsg7G+nYIQ4ODNDF
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
MSHitJOTxAEcMMhBpMAw3fXdGlW3/AK04uyTpgbVAcRZpOZz/RUBoURz30r3bQoI
HcBvA0GLI/fPeAPMihXwPJCKFh7bNMGS8vtrXwS3hcpddGNAs1tI6k4rEKEohW2k
X+MAwzTm7YTJdY0mz0fzD+Qjri4rdQSppF6o7DcgFC0=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 2656 )
`pragma protect data_block
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
pIrrnDFKZ6M+/mqw3wek8Q==
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
Pr0evHmMtos0YmPup5QQnFYnWvPQyeyG5RizEFMV1FN3g7TP7ZBeBi55Z/HqvFVO
9AscWtl/s/R9OoKoKwHEkarZcPNM3VjGNrUfnfuUEnmbP4M3KFSTgwxJWMV5AETs
Zm65Qe1qeTrj4i5oVwxOWvZPECxu33VDrumLADSu1L4=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 16720 )
`pragma protect data_block
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
Z8656ODr/zynVb8ku8LtUVZveZAF2F6RcGHZT8Dnd/b/u6sJnyM4VgvqTeh16UC2
nBfV+4kPsuqACq+Kc89Y0cBYwSmlUlLsrlC4juh2hN5hbHtqzTmfn+Csr5hVlCQ0
17HvPbFtWQVRX1N9kgGMKel2k0Tyw4g78oD30YTSpxnXgRbcAjxNzBM/09QNePxK
weXrzVmSM5+77nlk7D0UcX9fO2BXHK9V2GVWk+z8TU+iNI+6+MrtEg3UyhMcjfiZ
FleabonpE1H3bDuSTOvb106lQAYm/bUwszbktGT98P4QJYHtl87gus5+w6U3WIV0
tWLCRxwVidULJNQYu0TtFT+YZ1Rrhd6jZAfdmZjikoK7Uvl2K9cjnPfNeSmblr9i
RkUK91YEGLKGDHlxoyr9l9TN7Zs5Tx/ELg4pm1ghlYGBZILn0IrLwaDkcn3o/qMR
hZa0/id6Wfvzfjei1805RqjPV9sepndRbPoOTr81E/Y5oj1jn2Zv+zLLyi2BZkvJ
xRFJNmzvQPlNRq8Q5rsmLqrNezbd2goA9WNyAg2W8+wB6MZZp9S8/h2239/0WoPA
1JquyA1RwDmqO9z64BNyqzhtcpRZ9aCYqxl3o552gYhsZwcnqsfTczhCMK/AzLqz
BKaaxkvPsy1n5VtrCfi+BUwSStt0u8iGg47EVkFwiPrqD/2Y/kMumrQAaYjfl0NE
74Zv7gtxUUWLJe7g2gkF7GnX/JTEo+FAqOuFEZ94ZeS83f2PkLA8SuQ2ZnqGdTZw
0uQRHF/PBYTAOalUtvAnSLzIElcWshTlsXuC+Ukk5KU+1fJ4JaVc5LG16Q17M4lK
pbCJ1LgRJx6Jki9jB0V4DyCdi1faIPjmN59r9Ttm4oM8lL/xE8unrkSX2nOzp3Bi
gIXd44I9M371V1WlKdGpnIw5AryKktLrGmMktIOjD/zRudqM17AURfLqFSVbDEab
GdTygN8dpafvNeZ5gDMgTlk6S/K3hvj6iAgbRaZLq3OFDZ5ZTXJTryyMS+bfbHa4
zI6KSQWbZbee5Pc+6tp7HDWWX0JDq2spgz9m41OGKHrq0H4WNBgJ1pozW7FjD/ct
3C3ausV+kkC1zSCf71CGE3od8jkTQNIS4ZvFD1oYbRNHgh+DPc5lslwB/wCVS2tA
S99FMZw+QhOIgadorQTL1JHrtNl75Yo3HknA0OqAeXHDHAE+/Gyc4cO4R2BhAskG
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
p0pRvm34P8lGQ+F0nm0tRA==
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
s84D+pqqyNKL5jSJS1pRQe6+XKrqK/D7HkIcMFZB1fTUp0zXclY+we6jMje9b/Eh
fV5wTm9vGy6p1tTtcW6QGu/BY0boLo4FLMRrkF9PAbmXBs23rA5X9VpH7pE88IMx
6nHv70l4S2SNnxYIDk8WESkfkVRsy/au+ZQtVL1Q1i8=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 19056 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
Cj8tD35T05jFrRu7cb6EVNd3vJw2X408CCHW4Bh7I3cCQlVWi3myGsKyifTYqQr1
mS1bugi8L3QoSZ2jORS3+D7avdcN+1GndL1bwDGU6kmAGT/nma1PFqvOOo8Io0A0
biHdGaRoCCvP/vBvv9Rcdqg2JceXm2MM629aHsVQzAE=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 36512 )
`pragma protect data_block
xANxjr8s1TvJXXbGv7KxPeDqcY7iOVsfhPGuJKzzD6bGMo0d7pszGQDpjRRUQOfz
oxEeAVZhwZnOAatwUiOdCyBavRgWMgzkA584qWZGzdXNXq2zFRxLs8xKTdsYaQHf
UOEX9gSyB/qVgSBWxyXp5AR2cFpoNs4GALxI3O1q6KfmEs4wvBsMayfwKXudV34e
GgpspqO2PfZl9EAiyRBpUJCX7kWrsdRoi3i1H5YwdoRjLQ4o4m6t0Pfnk5q7WFKP
AHl4iUXoIbi7+MJ30aOgCycTQ82FNpIXWQ1DV2hb0viVQ5nf2TdkmfGYMZDw+gsV
xF7c02BXRgD9V7bvL1xfCrYMJ64h3OchYt3d5KdCVHTyFSPLGdzamPolsTQ4fEyu
HlM9eSIMV37FPuLmjU96EfUI8LAA6cxhp5db+hhMkVBHdrx2PDFArDZCCQSZkqRa
wHFSSZ/Ih6js8KMdydpCF4UOwWxlZYF0PNXn+Oe3KxrsOuIusECxJIaQ1mokn7YO
KHffMHY78bp/frDSrEMgP+YsyxIxmvTl6YRPkKo/+Li0fGafNXSI52DE5hITqZsh
TsMvkQFOdHB9tm50aeVa2HkQ/bv3LmjrDg+evU/SNm+DjNYnt8PQLNGYB9LfY6Ju
8OE3rU3omjmDQv9t2l9vjSt6aVZ2PoYI/YF5VuIJuw3YOTUFpSKR4t3XDm4sSKpd
nDELa6TcL7y7a8ICFIgKpOdhAxZJuzMewqi+GIiSe93qZ2D9bF4oY+dURDBuIDAk
VgS6f7YvYnbBUX4vF8N6UgRtI1U8LO4s65faXZ7lOx69hmyp5qMcImCHqm54l68u
iMHcc5/UZDZW5ik9++yc/soldP7ZKPvK6elV+dMB2yLhvWMU9pbObw243ZD1MAn+
1Ex/Xqcsy9s5RVtCJZnfos83Z1jjqCy1uNFZbeK0znX/qbQP/rYvz9mb8oUtXjs2
jpGVgc65hrUxUYWy1MgwBcdUTMEupb5nbyrewGCfYp29jEw+qgX3pAbCHi4WZCt2
ew0VwB6DjqXvb9VPd1zjyOWJH6a8f4TgtinwRMoFvxdLhkHa6JPQ3cj4rhQe819n
DNMLvqWXZhpUDfXH+vKEsUDQIxyYB8GSBYtz3EUG73oRVlwZq+ReIfTRXr6JEG8r
n4l1arFy4QpWaRC1Jpx/eT/ph9Wia6p1CrHIPDyoks7n82Db/kUMFMbCjPj538F8
SiNWNAKIVy1l9FhZP24Y3w0exNt+BRIssyqx/9fMKfZxskqkdt6aQxHXjE+ZDifS
fd6iB2aasPUyb1GDlNez2fPQcjI7EUI0vyF13AylU0zukUz7havfOxb+L1B41Hlb
OVLlamYo7BIVfm1+dLmPmrvW5Yl4V+HqSZJT8m/QgRZi6HwHEL+gpxdFxl90BfxM
M3dyMGArXflZxUg/2vlNi29P5g80wFJwqtr3851RrGQXTUoP2qBnptKve0z06M+9
1XJT5kTv+f5ElCoYtgI9IEuNjKnlHQ6H32waWOi5Gax72tXaO7sLbTNTSulnjKTu
Mu4MhyuS7FCi9lHuOthZrVfMaCf9O66NjatCkl4xNPO+o1O93q9S3fbv9Ffh3eL9
1UAn7EQF7INZvmGw8XmM60qYMi3wf0+0RP0P2+LdGAfmFEaYq5xdQPfutWKtYCD4
eqS3GHY778M9GswyOpp0zPMBB2dqMIUiWj/qH1Ny6qccEIZVyu5V21W+TdCulnqt
y9uYrZuxszMk7ryOvQ5joLrrVP0q1PTu17CHDBcmDG5X261NNUL0MigPjC7qZ8JM
jKVL9v5fBPM2km5seViAphICvGQGs0a8X7mNa7AKR1+88Pg3xJhrksuUN0/m4FPs
mFj6DS2C1vYFWhH5DQDn+0mMpWMJXZsXbf+2yE7OSdazmNOiLl4cOXQfcCn9YILy
R88p5Hu1XI3mL92cz7RdyyOxNy7JN2z9w5eksdh+L9Jg/55IKcxB2D0xezl6D07I
8+4Dty2RSFY1dAYj9grt7iiX9hgL5oIdz9j5e69TRVMUbUtySRwlz27jpPf8U3VV
mpTnRPSVtLd61KJv3K0OEQyDiKZ001szJtaJcIKMC6q9QJkx3tUn6j98IGK3hJvk
QJG1tDOneBUdi4saQupwcsA+e44knhfvT5NBu2eT8LkU5CLlPWPVVaHYkh0zrtMb
xGyM6eKK9bxTmHEazxeij6XLf4WqRfRrdH2KqBWAO+Jq/cPDoZZ0j1eLPfY5PlCM
JML3HcyNvptJyZtavcDuk2Tc8fEsabNgmIbslAUorFwOIk/C05Te+FTHluqYaemp
vmguotSo3f/fPwHyKUMoDXhrZZEC/7jedlLyGAuk2M7QU9RBFzL3GYb+WFj7/E8r
TP06eCcp16t/CPi5zjb3OOhtLP4FSYEsyn3YQvgQ9BjEGNHlK6vvMxxrlSzfg6cG
E7+yeomAKRUagn0aHNbW1kS/SN6kkwnUkXqLVdVNcXyGBkiMNOBCJVX6GTrv6U7k
Jwj/EfF/hijbXQ4fLm7ShGknNTmTUyWaP24bXtC9OhnN/xUNlkxubxunlZnrBnFl
6VQ5Ne9UqzKwA56/AHLiWcumeqMY2G3UXDRtpmYqhF2RLsY9NAgr4BncX18zbWRq
/z670vtz8MStuzz7YXYpj5FjqU+QO7tTp4/y+HWMYqqI6BTgg8CKwT8Jo9VND2YA
fzK2qCYaJfp2qH0jlF83uZ9Cv+/jqeyMskNYI2yymFJ+bMkU4hmb7a8QX5wNCg6B
f5njJU9KwgP/zbmc4BKLeLhdbjgEalzfN7KNzC1dyXJjs6IRFGHggLK9Ne0KC4KM
clZuuEoRqSfccOo1wonbQ6nv37V0yXAkxqnPu3he7z8bj2xV8yHNEWuz3QluVn01
zcufOsdZPayqrDxAeU8BGkctC7a/skiOXeEPO427kGFCtdydQeicnusRKMixcc71
tDllSLYTCXqYRUwRpNBv4Urj7AB6XZNyd292PstqqHxHwd+Eq/qZmawF/U2ALr3B
yIaDeZdRgZnK3gDR/FEhAx7GtHv5Ag6d0mJKoR6lCbu6mh0sJQ9GJ57DrAEDIsMU
8i9JUCGIV770mq8d9bITabS0J59R+atwLzuGH3A/4CAE3CtvOcYe0L1iiiOaSgw8
UB5WHDzXtfN6MXovQlPbFbUSEvPjfXjt5MH6VMb7dYBmS+WiHEq6MrzKuc+2cHBL
E9js53z7+4mk4pw3a+3JJuoZKmEQMqGx4+SRZKPPji/TA+8Z1IHb2PxHry45b1ts
PdZHmqHBzX04HIebPKACSzPwXoBOoDBTaFXMo5AQf9a1pAzX2A1ik5L8WvF4DRJd
p5nWWagfv7+kquMR4G3of7BO/j8HL/O4Fxkymoh5OZYMocdEIlMEZIG8mO3rHScc
BCZkQpozTS3CAdbRvF7va/AKwo4RnC4YwmpW8drv47zNcwIFreuimrW6vaIqu0pw
zZ0GBEEglBrCKT1ovP05AzGA0aOvjLV08pp42v+CzPBm9fZSwItyI+IqsniN5P81
w7+9xDHHnQ0CEaT9VpIjdMRhASgCfb44gQKh2XitHPGey4swcf6A+chsGznnC86M
0zGLMpJZeKokDTvyyPFuJhO0FXFLLxajomYcy1gh+qvZPk2pbBHphpyDxwY7jEWt
cvjQwh/EFFhrYePx06iH/UFoli8uO1tEvmjdbpz0YAA/ZQqAYljy6G3UCZiD3Okd
YAc2Zhehf0Uc3iEKAyIpTDZh2mgWC5+t7pY6sQkkaMUBQAkVwKlwO9cfNVfDQdt4
pugHwALnTp9+4+U8P8R3/op5SHQlA/9fV1d2PgiCkBI95Ncp37gqIhQupJ1adcta
ZvjQVUfNIwVG0KnuCfJcInngq4g7cHGzYFoToHwErR42j35I5SP4ja7Qxy6CTxC3
EESft8GWyj8wjjOiiepjM/m/6fEcLLAo7A/978yDeS1LoCbX/C/YyAx3H352aZgV
Bssbj6SVcGlSuqGzwD5yGOB0n3VwPAZ0GIFuHh8I24/Rm06q7/dYSU594Qb+4Vz7
cOhPrdHS54GZWTlHCeMpMl/bAbNLnlATQOk3Qtc4WM4Va+o6HS82A4sC5CMs4ARY
7ghei2My5EFBTpLT+Fz/PDCgcS+7anuVqWEBvFVDFJhCoHHiKpMxiV+VhoH9ZDZl
fKZXdd8KVYBHYyRz5t0Knor0Y1Q1H8MVjVzbZYoZHzh70VKyNM59yptCRSeXZcYe
aKS3D/NtLCDLzbYvdJMSIhIkdRDj/51yoe5+CKNqX1+D+DaANL029s2HNj9rcY2N
53Dm9i+bdQuBDLkcYd8a3JNY89Xk6+zJE9oB4gBTZxVDniODDcKAhTgR8aaL1hgs
uId/LcpOJjAKJy22UXGV6LqKZBUew5isihaWqf5bK4GMZnMjMZhixH0UxvAnesUm
yVIFEJX63rSsRlLmjEiw+cWWOE4c96wCgV9SUhdTB6Isb+Kzsx8+3svWvNqYvHQC
7V+smgERdshzfKhl5mFGwWlAg4oGkwx04UkcGjdS2cqLuXKIkTbI4JVtR5ZBbcgN
XPeiQUSr2/1gD5ku5OfCyt+svq/0tVl7gzmMHwEtNuwYyP1pmTGZfXz/MCa/q4QQ
2uzQEDPwOTLVwzrYRxL8dGShIFHdYlpJ1fEqKTnp9GHqAhHgrVHnFvSDjY4qJXXe
EpbURS7WwAPDjKADwPkEVYz2PouNVbaKIJTNKlHxcrnFTyFXhtQfEgimiJFsjauY
XD8Ioouxzh5BDIqfpJ2MVlYcAizIu3tVXiWP5AUs6s6IyGdI7dER/appr1uPYdIL
d0iCvBCx20Lr6pO3XmkUFlltsw2oAIHCa6qRm0gOT/kbpUVC5kknTMsdIpu+pzr2
Dt2huMmDMDtofjVol11KtilpxRoya16TKv7Oy1Ffqzz6R6X5Y9o1qEIrHs92a2Ex
NoMgNclkQHkoKvwwGON01wj2GeFYFVuk9/pTJAWSCEOIiKEB7D3SGwJ9/NzQL3si
j+fHSEtWfQzsxldoNFv6J1mfKcfywc/ozSGGcIFdswORQIroi2iXa3dXNX3mUJWm
u5mPY4nPWoOvmhTAcbC7VtosLneVr/VK4bYAJN814bjoW6YFQ7JlNb8+GJh/uwjX
JH1Svp3XEFDk+MeSxvGhxhuLjvsOPaSyOGGbnBNnfhuNbPz6Ax+cdhvFQqo7jxng
L5xH3MqTz5m99j53AHDJuRtcbGwo9S0DCjpsGL0ODMkLGiKxNapYU05AWVwzJg7m
p8YH3NNr96lBAi8jFRLH9l1vgs6T8aj4BKwbwbDMqCJ68vicTJKU9oZjPEC+KMje
uSZe3sFnowP2VeXLjEq4BRaDpFbo/qZpcfnnEuKWP5GG5py3FaXgnWIoUrctbRjY
hN208Jhlby2V1INR4vrjXieQR4bnxzYaXZI/0/O3m3hPAYZ4PeslzK1s7qOpGzYX
wugdYPkDHbZ6uV4Wal1/5Gfvjgl+8RbJWx4V1Md1RROIAcGIdoEdUB5TST4FTfxa
rq2BjPVrVW5pM4lSW183peYN0zT3hOUyBvYQ487sPvxMoAVVWqeOLz4WcNdzEnY6
Hf/+K63f3kMOosIZiYgDbrV9QWgMEohlgmuzdg+DAeXu6VMblg2ohxt+M1gvIoQD
LSr7EQgY8YIkefRwoPmgD62a5lZB/fUj8AishvLXihJEgdaOoK/3yefW/aILaPs9
s7VLGqcO0zQtDP1ZvPshm9zI/EfNoGhQvCO45fpd/3kiKjk8QAObXpWNEs5aH2kD
BvwVbnQdcilFYBTmd0WOuxjd0uPKiYgC0UaYLSviZZB8aa46mSxzBQ2lXBzBlmku
ULOCgKU9/7eO5nC5nB/DS85RnHQs/Mvle8cY+ajTq74JUTrOnD+Cm5l9YngW81ya
6kj+HU7TPZlyRWwFOpF3fe5zD4Vspmag6UlLL+RRwh0H0eQ7pAQ9T1V3Ci03Kiaq
0rP4YN7MQ/rZkaM1U7X89mBGqxeby55WgRjVWrT2z6oMo/kkbnaDveUbQqfLJYf4
Kcs0keS3aDCQ+agDXNj5YE2RJ5Xl7gGhJAlwhDHaKOYEwo/Fgtvu3NPMTESENUGm
1AWjVQceL5tmLsrx0K6Q9zHPAj6GKKHrzlQd1pno6u3TxAL8+rm8lD4aGTNt609t
W8GJF3+PCBU28aWM5VLv9XI0eqCC6GO9vHa6QEvc5zcbouv4d09PzCGK+qE186f6
ssmjogohYxtu/Go0VBhW4ygNXAFtjBnwXBQSW5jTILKStfAt68p/bSDvAPQfmR5N
fTcg4yxntetgviqnjWB+ItjjiLKUQXYrMkWf0sMi8RjW3XUyHO6onRRfU93faq4C
lDCX73q0zwqlQOoQhsvUsZecSRn9zH8rMWe7wAnU2cVL1zzbYTdFKakF3zF4w2es
9FV42mxsG8WlU6pglEl3lcktNCrpPzC5zYDYlv9ILmGOW2VgLRU4h1tACRNnV1n+
aXHa03qP6ALqZrSi0OTJ7rE1jT64NdaWrYnEyXR39DsABm55GprrQjrLMLF+d5EF
u57dS/1d8Bnf6QKUmSiyqLm8wFFbF7MEqmDcb1nyH8y/kfNhVPGj2h7pJKWVt78/
EIDKN8cNCiBR3M6Q2tcFhO6mnas9QgOu09P2pMXjBHV5FuPGRONxQdPqVxMV5DAI
Kjty+MfvbMH5M09Cih1yYs5E9VHqqrm682UybFkrPZ/8nL8qizjHlkBGqd2zsiB6
8dXJk4PTBObl9IfxjszhyzoCeGVyS0q7Vu6dRF40KRXhmZkFws1F2Ygilgpn06Rn
RP1MjFkIQdjkj5FIYw+8KO6o0MU+FsEKzGn9H9zQadAnzk9h7NdMffp0YRlqnYCF
zCoc3Lg0//Dg6BVpySOjAZ12xpy6LBqeS4yM2Rd4p4Ou5oVJaBLfUQv9qqcR+N1X
rCKuZwfiS6yvy3OzGYwSio3+GY1JxWJGSs/npvX1+OOjfZ1vyD1BG4EpBTI4ghV4
n8OG0tht44xB7ySEm0aHdjxlV6JVa02WJZSC1HON8P0ienUNx/QFagbMfCI/DA/j
HkY6Mr0C3PrFoqrDUosqFOtNjCiBuvL/WdfgRAxdWOorJntJ9as3KIw1Fqc/a9Y9
Qouqwq08xRzAzJbxuKG++aKvsDh17k4cjZsV078Nu3sFKzd4DTZ4lWXSvkCgPsRJ
YTIIydAcpbg7wWKL9MkUaT/h6EAmlHEN+/054sIYxRmW99Sd9SbuUjPRmi8L+SsV
9hevRAqLrSBcEStPGFAk5ZJmdv5M9aAq/dDKdL6haHJUHr0K20q+OrhIiqcn8xlT
VcehkJWxRT9b/1gjDIu+obPrlDemDa6JsoZKbf9BoYhJvVJvaaJXfvgua3XEGz0t
ZDpd3lIe7W9ZqFBYtq6vui/F7KS6wtSA4OqYx1yNN/QRRn2zxT0rRgaLevU7nIDH
FozDG7vPcxBe6nRXeaUzzGvrx78fYJ6Q703gKbdC60zK4PZmvuOfoMnW9+hoKzgX
3+5axFen0HmN/R42a21KR+oaHmyifM/8WdYpMyjF1CDPm+KrNi/xKOiAzEFwzON/
w2Pn5Sst70qPaDXA4AkIy3+3FwiBjJfidwCgIKEL78eZI4bCzTgEmVbCiUSVsgcf
NhEAAMyNLLR8GNiD/nEcfclHEy4vttbGfDtSIdvrWTjnUF3gTTRF0RDFbwJLUTJs
xrhLk4Yz5VPxbR0wG4a8NOJNhyIcgnMUzK7oh8QjqLte1sM+R63VZfSJx9JWiaQC
cw5sic4B04g2zMTJUJpSudn3qbUtUj5pPQbtXsrjgRXhsMlKwKTgQHYTwpIp+0vG
/TvkOPKwSQt32NAaJqR5CV5+mcciEFjsA17wEUoIv2RtZOFjmnksrKl80z0EhBJK
CEYICPAwtXTSEsA8Mmu/yHS4iHDuEAqRUfUjJ0QPlzoKW55VEy8ysN6QWgUhZe+P
vO4/ZHQmzKIJxNcQAsvHCCsd4j2vHri0pTHcRrL6KBb8fOD5QmdCB7FcxgtWnCph
bHX2WzNKyZEIorxvhIx1iHXsBaskBywxCbuc2X3agQzTwSIL16nv4KE4+btCBWTv
STfKtDWZBhELLVKmgA21RMggc7J1VTjzipu0gHcwy79PU13d+GWKQlm1V/Xy5Lvh
CSrBaHYHud/2hTt676GQjGGRJvHx4oRbQK7AxZ8QRIgFl6Avi1ylOA/M8EUnaLN6
6nVJXtDU7lztGV3THdZ/nMNkkVATssJVWvNV4XsxPhSsv94QtcpEC7wkN1d8J+uV
QIeDfGyzyURJ0JGrED3NYVH2jfGGIbuZO3VltJW4RU7akYbBqfj0eI7O/8KltsLr
mRhwf8lPX210SIDLdUy0o6Y5K1Kj8PgOYHf/os8gtdNdTYaK2TUXUTl79L1Vjry5
aJOwgJB5HlcaX1pVoXn9XoCm2K6KiRbGhU3WexQV3tXKJZLeUGkJNfIB5Y808Lym
Phmzithu31CJFz7qyUkqlBCqeJiSY/ZZaed+Ns3z92Pc4VpVGA/0QnDFVALWqPNk
ZYT8pQWOQ6KUQrqnnHc6jxW4j89wNjHQfB6AJde1WxrxnwmbminyKZFzYkz/XuiD
73TArabxz5JeNTwFgjVkltm875kLeP6i8H/5GRTMkuDASphaBtv3PTmf90bz7GH/
KKclX9CndsuC2df/EwUjNKOY4DD16Q50BTMPEC/dE8TCrVUXEqeOWbf9A1cFZD4t
l5RW5elbBkGeDkwkMShHBcNQ7N5snwITlGO6qVks+0zPW+okmX/LZZNueJZCiSfo
D0+u0H1Zfp0GJUSicvvS71IMd48Bw3r7+o9kqUw41gOTAaDtmr9h30NlxXpJ/ELE
JH8j25JEk1dOrqp2VJDerj6k9jyBF2bY8bX4VX7S9m2+t5t9KQ47b/JXdYetqVq1
N5r8q2ATtgd+X1/vNdnEeI38T5hGykMlV/Zsn9x54rOR2Sx801j7pdkuU92prdJG
XeyMsMkLPUIPzAz26yXwagyNvNOGYKZh6Ssg2vmtQihDiZCB055UNkfNhnTQchyf
KFnZOWmpCtzCYD72aJtVWR53fMS4IdKNnqAIkRuphBEFGf3Bl+6UCub6gCBZwjzh
lFAxQFL+nK2aC91Crq2H9sTD4kCUyis9ND24P4GCuj20NGX9jCCC/xVeUVgNLjRW
a+QVEpimICR8050fsIQMyY18H88lcggQfI+C72u6ksE8ogTrCMqJKVSxpGMSM72d
IxYTYdjs2tTw7o1S6Z1+YQVp4dUwtk49nE8QTaLxNQuS/TmNaw5MUvKQBhiv+J+y
oKVrS7SqIRY3VQmkNG8G6xReZ4ITrKux6NUYRpcsafmKT9qzWYlnBzbT8ISFukfl
yyehILpqlJ9RetOQQSszCnhQkfXxnJzTJhTIvSOYsvQPl/tQRVXSPZz7QX1UGHDn
efZeAe9LhvkGtCZ1E55w2/DMbqqtrW6+e/aSAe87NpPndAa/Zcw96cqotTdgpYvg
X9BudBNIdi+81dOWYAVMsFIU44xAgOvhKPycWnCe2Vmo1ySIMmbhLOA7fEnpQ4SF
FqjK5+8VaWcR6YkljLAN0+r+ac1Foqt8YavmCL2UGxn1FnlgWIn67txn0eDk7yCZ
jzBSpst1gq/ysEj1VBU7TkzyhYr8Rb5NVKzYD3VAZaLOpaKqIYrXMFalF2ja764j
oV4B0rzOJUih3n6ACXIZqhy3cCq0GWslVM4xLT7+h9sfWKpALO5T+Jh7a7a8gO45
B6w94rli6b9sE+2dPrGY57J/GEMGpBvd1GGqUs4xDbqnZu3oWBgeoYyEzsOwgWZ4
VwTHAqVlnm3tYXSG2KAL028O90LEof5gqrXrM6Mi99EYWfpsebud5gmTZyN0/kGs
d1YYb/rekQb8o6TS8njKKRZF5BqU9qQ/kUo5ctDkFz4gN8tBcZrOBqzB2wgq69mn
HVKDcee8T6FdtXtSFq6h6YCqYpR92KW2MKnZgb1msUkUqKmgyig6qfEB/Hhjqdir
/bCHFhNEgJwRVgpspr1hjMsqqp1S5w5fsVHr3t/sL0crxz1uuphOP8a9LVyaftYH
UYAeTVndX9MebMGEats2itCipAfxK9UeQepEnPqvSnxXxM0dCDwJUkuJ06mVt/2j
8keoHPPhf3N87qHmmn26L1LV9V29EJNyJgixNi+YEC2pHoRLmNi1JvhJ7lhHkt2N
lFOi+84wHuo5AGBLyf6CUN62Otwkv1nnNFAyWEDxcn4vOMVVdJwuL02v4wg6SQys
oTwywiUR/W1Y1O/TZQ2y+YHB/JYRTzaNU8EJOoq6E4tjJjhQEtGOASnV67GN6UCo
BDzIQkF/Gt3NOnunNdd/cx+krKLHak0aFJ/iNTLSd5K8Q7kBcPllOS4sHLadK+D8
gBF/qTubLmPC7QkGFqJP8MS/PcOB3KwxlMfrD62AqNE14Jb89wvslthO+ee39vt7
ansckJaYH6xeM/f7T3NEilh3y5RoGcXx8fvoSkLNgfoTmYIndr3E4+wZTmMvcSAV
wrDI1PxlQKbfoAtxPHan10L+ZnpxcnZB7HzxC18E0hm5kzH6YVnBBRVOVbvVGlKR
4FN7JCPHP2arA7n54lVF9+oWPt/VPyINpUdiWZJ3Xu3ZMfrc49znSd2fGz3qvGl2
QCTzSUh0mtk6P1IIR1O+TpR1jmZU6Ncfssx38DY1ogIy2RswjKwX3kFrbWHym8bV
H5gD5lBwWVDBbXa5l/XcLxfNBZ1J/iA0NIzL4QCIw8x2FxVeDxf1zwLOBl0Zuq8/
dAKvlTL+gs5oPiJjdMFqxl09i1h5N3YVQpJFSPNocfDT6l/DD/DwAPgYmSO6EMF2
/FFV8fy0eFQs1ZnNyzaAsyhVwBx4n4ifLFLDECI63q8NWHZQ3h8bQ0byhqD5623i
ZKJJ0baZ0gTb78ycRakMQ/qJisDMRPzTclEeYZxt/ufPQ/i+ZssIE20Du1loqTwu
+krP0Fb3UHSjr7d9njXTuryqHQiB/MbHDQJZ9N1PB0EHsmuSWBBYRAEGenHH5MC+
MDpBhDX3bE33qmhpiQQwCRvZ2jAHTlbqHM9avoUYst8fg1sFEFTrrPhKeGWh6E2t
Bc+SZl1JcbsS0gPKYtmra5sZkvOwx3DmB3rfiZuw6OgT/AeqlmkSh0sf2Js3LLIx
Ub8j+gjCpcutXyYEHDzHprjhw5ATj495xdg+GfMlrUjETs9OqKUGMuvS0SE8Y238
nMKBvfY5kQkpnGdbtjOIwq2uHqJfeeqVireHuBIaLBZZSPheThnD0M1MeH9e0wm/
s9y486FEURki9m3jTJxVcWmTiGIe9OlwAbmKPDgCvo7umU2Wf4BvEnSaMrv/xeko
UBBrII1n0jBtxvetX9itICGjqGA+7d4qBUf55a+CkyzybP60XVnhytbmVLItSXIr
QQjekdBbSHXGuDsWpOS7okDq6lR+j6q13BjjFkTqt592inyTD7g+dzFcr9WrMNwQ
2kOt3YGcET0o4koiK9EYHmHD69IEE38ux2uOJAqiXd3VEGfc92mgeibl53ey4c7S
Ni3KEqUwRdmKLIRT0ShyBWVYUmYGk749nrUPNIrmaxIyCPbel1gy927fWdeBqDDK
L+9KCD8qlFfyOy+4KIrFjJRLUCok88WYtSg/hTznZ31jrSkz+VZIQsw72YIrT1DC
tIRUmjwBVktoqrFPo1Lyp2gBtzL6N5jXO6gPY+PSb3+Dj9oXbGwszIMpzgDGmXaC
YvSxTI33FwO32Ks007/+Ub3qGJ+G2u6O/5Jsr2pDQ3RRZjL7UNtWHJjJz9OIUcSX
b1i6zslWLFXPLX9my6S2PT3U4xf74ePK70+IoTTqYm36PfrKCd0JF8Yyg4OjEb4x
0O7FKGig0VVATKEopeICHX4A6ELhz3thjhChlfaXEucrUO9E/z9AHGNVMnZTaoBP
axZOInmvWhBm7T+eIHx3Ifo2/Lbv5yKLko5pZzOslIlpmnIc32XVnUclcsT4S9qO
fUvmOr4J+PZf5SYrSsyzE15WVfNyMxF4gFWJUlKXmAtuQMhdM0L3cH/JozeE4+5n
ApHZCN/IdH4N8o7vinkfxp8tbRXRShB5OkZgZEfNhUkk7weA4KswRoA7Bs52dgjt
y4CwUkOnVtHv6NP+Ac45TZvGgCGIWkpG9wRVoQ3wFjdZm4FlvKIj//9i8dP0n4Qs
ixldvD7m3Qo7CfWF2TxkUFZyu5xI7MJgKx5UJBtf8GtqmATgEZ/s+8lfrveX7Xz6
nKukgeFA6oalkTuGYtfetvmSzBchxgCz5DntxanqXekOoqc0EVVrYq88VrxNdg1m
RNAdUDXrAyGw5lFTnDKA5quIoI7v3OPF0tg6ndwmo6LyIRRYdL6AF/2vLr11WX+P
zuCeYClqFRaFHnMM7xwyupkTT1cPW5RlhgdKE0H567R4mI0dHLIcYyXyGbetwwXu
ml9H4a5U9QNm6aDzicLViJJYogJEJJs8NRnpAn3/DZLluSNDDpuzKIBxhPy9WcsQ
QqLxd5emjpwyRAYDB5V9spUQuGdhHPSYnMBLfg8jsHYbV+uB2oHiyXK9mGQ96RYk
Yl9AWOOpH4EnZOIqKNaDQPyb22j4KxE5Y9qAXR0KdAvzoLumAVMdKpKDzCJzS8Ca
1gAE4ntenxFlUBv2AJQgw4B1M5aQdNR3TiNHtsNG5XcWbTdGrZPwaAoDxrQK2u0c
nhb6ovzH+iZP6XmOVs2EJtL0eWOp5uTePxLxVzRxgi0Q8+MaT4fgk3VbQzCw0d5D
qop0Ka/txYJ53dTnfwwnvjSpRwz3swm6ZxS/eyzP9aj9paHbPJoFrD8W+osrKBD/
i7AvyA5gvsA7zTmh4baOLHDjk3NKXUN5Sf7uoBcwd8dIdaWTrGBfo9xfquaEmrmX
QCPmMWUig8EZTuBJxR4LgQ1ZIH4SUb1rNgvXTw1ftlDGjF1sYuO4F+e/RSWLFZY6
xqzbkqLkE54mzRmMWfBeRI+3QLh66dBqPgbPHOWFIBuSBV/6PrVPXd5P4Qbqu0hM
0m0zhUrg692vh0jgop4aIm02w1kBztp8uDQ55iNxUoJbrhxp1Is+0o7e9AwiEcLC
r2DY2ZhRzHGsKJSUW0nziUysZeaPdax+6Ut75p9YxLOzUcroakLWlK6sEQIDbsgl
PtgVxO68hxqnRBU4K+K7V3/kAk8RZP/xdjn0l418R65Gw9ATK+ZCaUz2g2WVi14t
LMWnrn9/v4BAAwt2a4sdnR0OXAiWoJB+s//0cwhE27F5Hfsp1fE/+180BDcW0YUf
7dfondUiWlu0/fT5etsMLrKmLzKpz5jfhRd4Z/eOMYjNWGwbwpjt54D9d1eAYHVL
GxtDNnLVlyPl4BxOLQgxFe5JbCU2S5vBH/ZFdd4LuekIfjzFTXO8lwQF9dlzk7Mh
Ev/u6Koi6dTLjU608uP/otqzef7y6ZA9EsleBe5ws6ar2c1MztmDNIWEqBVP18fW
Jl8nXZii5aToIKt29oo+06sC/z7remE7ewgv6HyD/RrvbJPeKimbA5NyBIyZuavI
58r4335XMJ28Nn/TrxyxUB0Qd50jfWBKjzzvw2xLzAMoB7mv1OB7qI9mD/tpbOE/
qst3r7USSKc6CPjq64TnkU7uV0vVqjddZSCgIsZTH+r62nFPlgzx33HLC75oix1I
oJys5Mxpf6V+lO5kLomfhB1VVi2Xmgu02YW277lk6pc+P+My1u4WA9PnEcFtoxKf
0v7AD8JMME15lz1dWHE7uD13LnyRK/y4dDF38EXjFZtTGPWDCHssezROW6SUY7Om
T2HkjtPAjrqCPRVHa5iU83rI+0xBkme9elYRIdHgEADJZTewhBaSMdgvVHBY1t7F
6GCt8/e7dqIBMnxfbtfU9g5HntIQO2MPfFfiPe9sqn1gXoJXu0nES3jXTLkXxi2B
TDBxf6/4Tcu1uR6RxQXMitoHMfnB85zJMSV4V+TSmt6fTyR1+3IkVXT9l/6oA2Uh
OwlkIIpKeWx+ZHhodMi+ppZr/Jy2sa6l5MZbxVFSXHqsX9GNBjjGzaidqQWeQ1F+
KBrk7IpgslSkucryJ07hjSJvdckeytH+7j5QPDpH4lfA/qDTYi6Wz0/i7hO/0vgs
7WA4eO4YEEiJfgEAGUlYLI3HZjFvcekfoLCwgLuRh1YAG9hpTyxu55TOBfEP4a04
zftto9qSpwvHjPFlGpl2sKh7HMDrwqZo/CW5+xZuKcl8UpaUF4DdZVeQqZddZlsj
Tf49tvToBshcf0FTCunyaw7ffmjKbEwTVnEK0N/6JupmKbMBkpDNzIOKUlx/cM8L
mis8xmdLSDftdbrF0N+vCikz2HDZYjA9CuOE0yv2lkRDrbNgZyYcJENNngsGaWYZ
G66EXyV2oxMHTbMXPJIBTKX/SH3xDx/bzqzVMqZ7qoWz1TMGILEPZKql7dBie6EU
91AcjabAXnMhS7UIYrzyUe6AJpV9cdg+wzVKktZYozBWcmZ04eo/1sizUR7MKzf4
EhyMx/vaMYtMobfqbrYCC4T4+o9SKUaVRmJKh+edW4Ij7qcsGzcG8fBzJZsWquKt
I1g322QYBX2NT3gvfn2NweJeGLn8uQZoDAa4ULFQ5BsQyLfgp7D+Vzeowh12pi/R
OZGCH945FsHMcNVg3fU10LehrM/OdusjyxkTeZ07WBVt+ZXnxyphRpfiU3mhB538
OB8LSrcIYSVDROOyeRDxjEMv0ar8VsANaXlhGQ2QOysuLIzpE4BLLSRShpBZ/p1q
i4sTiftLJO4UEX5QqmsRi4+vMLbjeMdXmmnYg7XgWn7GSW8YOSj1f4qjfardcGWH
0SBw3iFBbPyOGYn+OVNwRFO5OkFh63Ci7omvvJ4b0GZj2t/qYAOZJV2lkpgUGvlk
KSl/v+RnCCBcAj2px4M8gyJ3cUi9qXDYLBG1OFfTP5QyJ/Ykf/TVpv+b4EdNH/Lw
iERMeKBoh73BFuZUh6A9DpYYzjgcw3DXK9GhzPSwtilM1Bkd0Y7W1bYAJvfIMUwQ
6NT4F91aICFsr46pOUUKjGZ5XW6BY8hBWdx1cbL4p5rMnUAyR3uR82DSpD2Nka7j
wSScv0WU5p4NMHTYtnXPZwF4xWPAtYwvpQyO8yYEcoUphPvqnU0lVEoxET1YD0DJ
iC2msp6b3heYQP6Ipdpv8u1a1ajyPhhlAzp9cdleNpN59rT+PfgV1u4IA0QcMvOd
pID17EU23L5eWoscZBRa7F05o/KEHOnZFov4pacVjbawEwx0uN1YsALPS8C6JIf4
qb/7Wo/SlOUQee4y3KfXtJR+TVHRJU1y4CuCQVBcsgBrcmik6Omp8N7b5bFDXu/w
sjEWPmtyyl934LcV6I1RJY+cBlJdm9p22OmA2pox6onjR3YUq76jIGs2BPIoxh2Q
2+qIFM1fkamwnQJXikrPGhOEEMZP0+WkyOf7j7kPSt6s0pPi5YAKchhq4+4IpHld
QPtBqVx4OmNXH8ru3QOEHhfNuHMMcA4TzZBzFc7LaNdHlIHJyVieqO630Yzg6zf5
oDmw86JCRIJR3XQCYoFgrIfnXqojZBhhL4pFb6qfEEab3UsvOBooghvjgbf4o+UW
zrictSsavpRPHc8hZMsCwA4ahhgOBB/lQh3ydW9MG6RnWzu6Q98xpwZZ1jcNNCsI
mKb5zaDAoEEkHKST485wfAhpgs7VyN2+bH/Vi5asxALz+pe8EyVaF3wWgXHr7UTc
4wE6yfBxX1gvY0UK9Sc9o3owKNCaork1GWt4g/kPaeUi0P8lF3+SYh9TUvuRHJkW
LrVMBJcYe6/0XAS7Yqd+//RKgTnft2jqIonsTzxRX2o23OW8jNqEZOs/7dk1/6z9
/AdRBlIzP8GioDbhh14V501HrFfLTapSA/3x2rn+sOrgi+TcGukgwfjKq4eCwmnM
VmdtO6loWn5ygryAENCfN3jQ3ZvJG4UMDvqCKH2zUpvECccaPmvjILYYwmIevIHa
74/rGD2YULucSazY0t1B+FtOOnQo63VF26/S1doxmEaKyzqALUYLNrujsRKGjaAj
SCifr0sAm4U39th2vvC+ZegYHSV6D/M972VPDHPpdaTPUnSFQYL8+jQysmCdYphZ
jnWeUfR+YZWvjl1uPbtBr4bSS2J+HXQI66Tp6cypmrbKiyn3QtapHhxncYFDO1PM
NoXhuzj86MKynApWtX1QXLNSV1S/x/l/r7fOZUZSz98gucKcaivB5vvD9bJLTgyJ
6lJGO4Raxa2mY7q3Wyi6qe3wsNyr89txoPRn1dzEEawKV88NNrguCFqmPWeuEETP
im5GCoNO3HHl0cOOjFWRIgLDE+j32kYg9+46OcdtzM2WwGKzh5YzEaJhV2WVR7Mb
rnvaEFF+eCdmz6e5WZmMbetIdLRqLwpGDy5dyUYaq96YXh6Ip2RYbH7jSb4RAiHX
dYkjTUTKpu6uvkjJ+i7UfLP7fBtwHD9Rn19ZiCD+Wapec+j13XWWpwaVRj4RKPym
4X4p2JxfzF95InAhvRh+Gck7JgQaow5P4i6vlFyUSjU2gpwmem8I03Qv1srqK72H
1fOOS//rziHTCuH3l8w0ncu3B/d2d+qqKrAaqCztyO1oxT4P5X+UbGhJMlIPwAif
Kbn9CAEIzcOoRhita6O5KDMrWwriHbVkKOKw2t6rIUFloyj1+suM85BI9ikZ8wN6
qXPtGO0ffs0iLEMewiqNaHhzxbLcH10UhxXzMW52BE01vPunSBWRyot6bfdS5uXB
t/fgZiq/jq1E8DyuvtWYmLFTcu/TDAyPR3MqNe/fg9adUpPxW3UbEbbE5U3RbeLZ
KrEAMPFHASgu5rHg2uiOUfUEXq2SSD/XYSeLoadoHEhluZzZfxq4jETQtnZ9ZutF
8kv79o5Ja1yITZ4DTtkYMm9XBzXYvvMs2qnyZHRauOHGzPIlvt2mmm7vXWFZULAP
fPR6f+toSsMLbsKD85/IOSZriuyL6O2bAB6RtgUP66/C+pSNmjHxnPbvP7khH0vP
PYGnlJK+jLlW5pR7WCVWlxTs5KhVoC+tkU3QqwBz2UdlBbH4UTYMdLwCBb0rVdap
FeC1weGYLn/xCp3XDgk3jFfo29XoNLE0FGMebeJHl+N+ia+DfrtpGaITZfQo7b5g
pxna5P4DdNFGekQBS5Ok4F39/DEVGmCyejNtPVqBRDt1u+vmvcRjM/zNXd5Z0jrF
+xRB8JaKJ5pbUK48ZwMjepUKOSJThE94VBynE3zQDKKNKxF9aefyN4RAfkP0I53Z
nUeVjAkdpx4QOaFeKOak4moymRL34epOMie7ssOuvA5A4wcevefmXVBAw8v8F3fq
6l7u9nc3BdTExHKke+v5J7Hu699MBO0JVz8M3tK3oO4t+G3pn4CYY6fE1Rn8wYJ3
feU1zaXqeWyGyD30xbhpoYROkIqnqYgzxcP6AI9mASTIGMWfl5+VdpA4oyjTfaox
1alKiIHwLE4tLRrt20cKMSY3jsL+pP7MJnyC5L7rY05Kn+gmN+XpYWBO7qsrJbjt
coRi8arFM5NjJbfL2Yee5WMzWCKXc1JjZxUGe9ug4Jq99JNmteKJV4FXapTKcfEv
j2btKgS0KjMFisXgKsUOJSuayZvauajmo3QcTkaiUtaItp5eWgrt3WiAWdN/ldRm
KudlCDbdvMHwQEUCoWIZmq8ur82038FPuGWtN6gGXbxnbpFZHLyLQe+RHNggvbek
DdXnqTsEJh5Ib7tFniOiadTaGUCxEtboYZqMaorfisK2HvpcIxU3VEck/OrJPUFP
XGUvWxl3Gj7FhgXj2RNAySFxjN4wzongf4TgPxZLBvXwo/1gK29kBGVn0WuF16/9
johWMrp5WOZd7TvtM+KIEKMo0WPG3rCe3R/83HGQf+K7iPj2AtqsZCKgsKmg91j0
iulE9zt3itE53vqyCr7JqZwARZfqeErjwRqDviRjxGeJP0D6IjU5ZuriDehVTss4
qsr/0RcJRlbCrymn8/g+vG2QhSaBqzPuOB4Y6GjQGcWgeC9qpPdCeSRF2wqy38+r
AlWvTjyXOfPOfw0LMxM2C4KZ07JmXcAJCqYn7lzSMCrNiLg9R/p9abEpxc0jbxmr
BY0YPe9l1oM5qUo3bmbRgflMSWbs6CPxOO5LNAaE0Bblby3D2ptoWSbVl7SqStMS
uSuOmHD7dpBTnbFPGfgjo/IfDNLvwb7lJ/diOVE0vU/QM+/KKoZnMTdXDFWD+oIg
/6mm0+M9zGVymy6Yl+I2Hrus1MnXY9uttBPH60KLlhm1lMDbL4iNCqeOYEHwue3i
Q1jViCL8htd9DKUvY7w9iGCiitPM6vHluvSOQ2muWe2N3+W8eTaBMXlmdTgSUCaQ
0UZ7BMgql5FS7JaXfsI1afnHrvpw2tyPewaLaB5CPPIfrmOstpNzuQ5NqXuc2ixT
Xxs1k0tbYZhJ9XfV5mOTeSH1zk2e/LkqwymZEPO7MxV/8WnNx3GM/os5kASHTU+5
v7DZ0Fhrz3qj9g5/0N8Efkz3VHP9ZmrwEI0VNrg+h3TWZ/Q6/6J/8AFFw1dzZM8f
DBfs+y2buQYEkcuhLtUvVp2ndfFGP3oXG4OODEZs53K3v2HRK27C6ewMKOS6HwRO
otf9s96RTGUpYaVGxfOITK8ow82rNH04bduPENh4JAZ5dF5qRVxd7kD78d0YmG7z
RH12hiUBuqvnufriU1iTi962llZRK+72bR+vRQWBTcEktWflS2VJATTWKAg4DeH7
BEkyJkE/s1qk8VoX4/vzSIUTJuC/TdFqx/UKCVk6UwG+wEj/a0+zCZYBFc+GKqND
iJAvxj2ZCRMNhhstJPW8EkyFd+auc7Yr0ZVB++hBmsdTlbhotIMNRD7rlGVN8e82
mfOQFkHexCZH1C0j9aaP4cqPEyr9PBiJ/ufsmMbjC8wtjicr72xZq/UunCgmwsdP
sXsfopZGvpMDdix04E7uMwasLBcrN31ieb+I36zPQ2KF61/WvOlUqq8eq+wSpIuE
HwBX9rgh8VA7uc6FxR08C+Z6pp/uuHbeOTmPek6tJhWRjFONtyU4FRI24dDCes/c
ANOLP+OrnAxvexX9hJPZHVgS5qiIRKbEcgWvvvzsAzb2bNYllcn8aBxyttABTjdi
SMSeEy6F9sQ9e99R/vLLFbCUzQhPMsIWajlLM6KzP50Jey69kXwpknESE9FB7HLl
NYUp/uDbszhNp1imQN0y57BhIZU2lahUfVYvv5o8LRWip4wr19EKHAZ0uCXXnWvo
qdM5CoDwGmiLQ0SG1tWQMIeLAYtfVe4WCbukpm+kDjDdSSnVjAlAN4txSzelDeBY
CbvSDQtwBHvNjofzctfZldv33qzwq8fp8tcJzGtaW3GPOOnRAP1OkGmv5ZZOaNoA
p7w/+CAk3hgGAHEBpycCOVNt5cCRgiK4U7A1TMxhELC6wbArwEBN+xRyLSZn3ntQ
bh6/kiZ5c2jIRZAoIWZ+0xcCDhKLTRRiMCdFwqJI9Ks29yhoE+WcFp/+LOXk/M6c
GiSZ4XKZQmY/TIg8SHHYIhiXDeYvaCZBgGaL8Mmndjr5Do0IDSIanxzfHT+J30ZK
0wgK/EkzL3pn3jR6y8s6GMRRJjKYrwb4wCyMEwcCDk9/VqX/NQ8PtWX9/mcQI/N9
0O+6RFbb5d0fVbW8obd1lJnoj5X7QzIy6Up4DBKCLsmGXEOOQnzayATPDmPNqc9+
IRvddf69oNcLSnCydPe0+GvBisxCBAxl8JylmkZRhZhIHD4+x4id6Z8L2vgSkW63
uluAv1JTTmuCmRllGnMOVZx1dAhIfaCQ7zea7S6tTcOHP5jtpesMwLHCHTKgb25n
1r9BN71ScyZw04Y1HIw/xIoFnMASd40TF60PyRFvv33W6RmuYXFDpEuQ/SzroXV9
GBztg4I8fA50XGUOHRyzfSqP+7MStBU15AAc1wIDKwmTCbZylGTLZFVKgM8KiHIZ
R8eZoc/Wjjz+vJk1rlR83WqmjNVIejPA78guf1mlavPXs+xIDMZc0uYV7BJzEKzU
A9fOi2+aJCZloEXVBUIkRuGXUTZZlHLhpJ8alER2xSECLuMQWLpErBbV9rbD8IQS
iQqPSVJXFYOo1ZWnedvpQm6xx/L2jYWCPp+WqXhayMqNFLNpcGdL0mK7ovoL/Exb
s8tNOIwljEL0LGTkPOmgIXNmuViefIFHh2zHECcPmMtUBswWsdEaqTFW0T+Hpim0
ELwtO2tpMaaW1+bF2G7vNL546uDCVLugt3ag9IkdJ6CLIm+yyi/d3s++mpRFovaO
fMl5oBwAsUK3DaZzCQhk9q/QpycIajcUOIoAplqAjOhBs8n1pjWIlY4197075J/w
2cxGfEOXPQHEfS4+MT/ddzQGFjtgrp44T1LSwkqxaDxk/ruvxQvXfspUUDmTq4dH
nyvy21fbrhAkyondKyPVCD8315Fi+p959hi+RDnCHPOo0Uh7lxHpTOrZXb9f64DI
OgfvUUgXTqohxcfJJwCAOijWkDbBKTORX1leCyz4sRgwAaIe9I2XJHzGI5B5iIz+
3BvQPV4Yoemp/7FkFc4kMpUtuYiOsfJZucQeipiT4Es9bLja3hJF6ztGxKkFpnWL
vsiarpf3Ma8quhlGUwCd0PPTGpFVIHsuZeleS8msC6MWdcpJxVlnsQcCrg58/ehk
ozGog/m2+0Hyo/fI+OWfwL9JlfjeSXwBpJzzOZmyoLnmabj6bM1Z4+PaUIyACCgI
idGJ9pNQzIfBfe+aoAf7d8Sqcjs2dDmMpKQzHqB0ytiDYpv5ZzfIEHhzkvB5WTg3
pxpB90gMeUEQpU8EJfzrUU/MYlhRSgSepqXooknwaKz4LLh5ureKjxoyTW7lUUew
LPGqXLh9OUsCaq6NjMRC2OYXbjLQv0rNLoLp7cpN1h2k5pPaC7v+E50+U25DJsow
JcW6QpZSS5o40wXrMAKCPUVvBSZhkQZR0j/fQEp7ofx8F4k2YWxrWma+NhWBiInX
esb7kxIdY0zYa6snJs/mvQJIgHErtsXg7ksVkVUpRooqW82flzYnugYWVKKpt6L2
WMsCPv/lryUHvBxVbykxls29PkbBULqsSeHNx2FMdrUEk4nE/aSepvX9c2QrceTD
cMnBz4O8IWkUDffawq/DzQiZ+LMfft3ZciCIKzIkjOqZ9KlxQREjaiMZvsXiEdmv
NKjyVCG6nt4q1KUussj/JTERQtvJ0kWQPQwjAxchBccaN13zwPo8AQXAHtU13O/p
DYi+2toj4H7/YRJRjSNrmNZl8T3rZtfKGlpx9H/NdGz+Oh6Y9sd4YDIrm5e6THH8
sczmlsvtr3VztfOX129q/RbTkxZd5dlQoer27+KpUQAE6WStAqItlajj9e47G81G
meNBE4vP6ImoczUwoA0WqNz0NPpSAVXZ+DNtQ5i7zQ5NVmk7ZiRf8MKrA73f0SPg
Ss5MYJ8TCKjaWia//jfsRmrU2KBhoH3E3R3vNAew9Ml1PzzCTfEQi8icL6irSDXK
YGDsLzkZBaR++Pf/YItDnHEYCxnNR/Sic811z4B+VgxtVMkW6Vh8LgB1ROXXYTww
gs5kvV4bFYyzZMXZ2ztxsSQD02y8mLXx4Cz+xAUUMphtIrj0u2HNf/uFcmP6O0cX
NAqzplIEYxVuWg+WHJ588itpTvnXazRteFK49rmQMNBHXxQNPpp8iid3AEp+oV12
UFYEpzYZLCGpJk3RzxIyX5mWf7m/+JLuqxeFGnHgXB1i4wE1ib2Yh0xT3FGzgXTd
tJ2EsBsxuDbu5r/RKbJx6rV4ORtkgeZnJEDaUrvwZLz1pgQLsaG3DIF7sYBlPrMp
QgJ4qCa+6MyiS0qyEV8EvOfaG0DMCzotXbUYU8O8CYJJv8crgHDXnyCoY2LDxUdT
WBk71X64rCYyUdbwcLz5ZHxvNg6qlRaArkUzrwjlDItQg7ITVFQMsH7JY55Lw4Hq
AUxrCuGwPt+8QsPg8gbQnqvOPaIyBgXcM0WL7WyLNH0xO80NRi6RJzdcmUcJhYUU
D577KAG+qScICXESGW3tKCpDInIwfWOt6EqhB117Ys9fczZln/MEI2Ui4IEBywnq
u4n4gswX57ZH9rEWHdboeQejoAp6o3/w66Z2ty4ctipo4m82TByk78L9rqXm3AEj
d8EqW5fJ3kW1Tz69T4RCkI9wHQEz+N/yRf9PIj58tR4TdBE/cRfzS1Xkz7a4K2Ru
shYKPFIdiMavmGELcHkVeqTuLd1pDc/DeaTIqMp3qK4ugrvFNOkHqu3tf5rdqLMQ
Y6T2wUtz5Hzt2FB1ydLkFx+A2kew2EWKwvFkKtdSBa6F9Ph25AHivSyLRm/umcdV
0PIrTCm/JdNnDHv9EFtgi3kjeJz4YV9IMGE3QGnz2YBAbbtbLmcjVdLEbHjpHK7O
mIsT+ZRLDMa8QxlfKiAJX7HcCT5G0jMeG3vFjkGpxiru++mCHmO/7GPJxNyL5S7A
6L9DXseDK0AFHd7fnzpUeqKXATYjMJEmgirfbPWB8VCWX5XQ7oVNrMxWT8ltAzNR
1sfvBmPJq2+1x8I3oUNulYR97yt90S48ucSQ9NYb7edC/T3EY0MTAVvKT8o+PJYA
L2ZsD5Pt7Jmc9VX2IjT1Tv+eUPvjhRmjANWwoNqySTCbUu1HBromrj+hLPYwZQAS
x1UWlTc8ZskNVwU9+rir+gO6suzjV8H79G6J58s9M2OeNCyGw0/SjMmrw8uzBSnG
aWoi25KpoEhiqg/vmE6PusWPxZI8/c/6rq8h3at1AzNqLzSb7/JtKLo53SbBuN4o
Cvt+4Vde9HiMZb0WjL4OmR9lmp6IAoxk5DWd1F9Gn54pKmtSYujZawuhBOaFgMOC
gJyt0H8vTFBmU0D259AI7uC5w0+7tugdp3n9FtrzJtOA64hcRil2KhhNd32rez8n
Zk9C1GVes/Za3BDPM363aTl9p8NgZ/vmdm3p2ScK1vIp5dpABi5Nj5dlKyXcv+Nw
rlNO1hwPbBADYzEuBsBViH8JC5otDj5j80hLnyyTauVE+T0X9K2gPO2vZbGQHGTn
vUAbOnhKbC5HKQj9l5wguy7xGLBcm+ctcDIDNKm9I7Jm+FgF4VRi36XLbttw8C0H
WWc9wh7wzKAu/Kb2si5h7KppTkdY7wZfZes6uLNRmUYeMZi6qq4HWJLC0Zz7F2ZC
sRYWUNbRRrB+c1Rb/7PMIa77ColhTy+blYd9DXhjUbGMbD3my5a8RtCmfSHT7djd
VcwnkbhSL9syM3tPRNeVbd/KYT4Tax9IZ/67uUPZLVFTOxltJioCFv71E51BearI
zt5FfTk4fRQ0dNKEJ+fmg3xBzAarUCEhn4RWBoQrV82THZbqA2lxk93DfFwCX3F/
Tz7GlzxZhsfyrLEIM5yJoL+1oLipvl0mD4h6ErLUQz5N3QecRhCtf3+NXpdPFkum
QgFduroC1sYuS5m/UcdoSXYVj4hEmgpxk17VG2nUFCFWALu6PKGFzhYQ3DRqHMTq
F62qYv3C23TGqM4qqHQeTbupemXHkKFg+f3oz3h7b/Wa+cK3hcWnMGQGzyRIrcjF
3T3ToEpzhy1Wsa089l1/wCkm5J/qawy1CDDKz3Gey4sXMHO8t0pPH1jg+FmBCC9M
OE8ebVEyHYNEOk5jzZynuKDh6NXBx6dmx4WpLOCHAKissv8PpGe+CfPGYLEeWZ3q
kp4Uee9jXrLiedAs2FCxLcAxdqmvhOw2kCFgC9CA6v7H5Ytxdwui3sUhV1Eid0U8
oa2dK0QpDbRFGeHDo35HAxaKxDgzP+0rIIpr5W64865maEajnAHs9LpvLPKF821l
it1T9Oq1xjB78/BuLgkPvT4O46n5CL4XNzg4DJR0XdKDGOnVRqcMt84N8EXiYCQC
tXaXGct25h1OkOPgfjolWr4DCARr5ltSUXPjvFEdSbFZYPi2l/Tveoi4VG7tCR7z
0MBcd4yHmqd+QUw4fRYSY2Vvn/WaqeK8IjSfggtFmV7jYYysTOJlTZqVZGN8XBYE
yN6Mtq4O38wQ1GL5Rwyfg5aSitsD/QM0NwkPylA5SaAor41A26Tq54Kom5S3hKON
hjyhDqlekSUUO4ZsazeQDn7AdACk0rZZ5iFHQeOk520C6I13s2XgkLbeSWpFkoXk
hNi9NWoIkO0bUmDsg033o2nosbQ55BDXw+iSZYOIQ1TphtGoTpASpWOPiIFPBqO3
XMUgaUMfvrJtn92DCEwxPbRW0pnnadimzfwxyi5M1ioF8rBdrQ64nAsSsDbEDQKJ
pKW2k0CSUueOExiCINItc+jwmrrhieGVw+ED0/1AGdES3fImF5VDxi+8srAQhXeS
K1JOhVgGEWSBYMqy9B5t7+5m7TG+cu0igk0vgV6A+IrYdUH6jMEVhKyXo3SvyW+3
DagE0ZcaDWpfCTVHoz2i0UdupKDM+F/Ked3nM4BcauXEJUR19q8+KHAGjsn5GkMu
Jor6MZxoHBVfQ47TGMZ4M3gdxHhEDADnlG1MQ6mmlJXBoOL8S+buiIPoiqdRQROZ
mgFN5iJNpsocqaFiRsd1hp5VMJ+pmmvTFB/y2s1/0qtvehi1dTDKxdaRN+UwQvKQ
64bXgLlN+7LNEdDzEwRFN9ENxZaK1fneR9lPlpco+eEfsxHU4zWCyQ6MyQxTIRDC
b+xOxIeksBHyHpkiUZJD0NtuCVw1iIHlqALxV79hnzSqWW+iZz4GK7fI2yREaSNk
gOVKDq+v97lRUeMZ58lWKthhMpcZsrYyZo8A7cK2e1Q0peNUcGe6Pa0GEszGFSqN
4N4bqGsi4Vwtsp/UG9UBqxjvugeTna2JGIM2yN/Qm+/QQfma3rMgF0R1H6lKHRHG
II37CgSpuICygVbItom5fYHif4ToFzpqnYcrrZdNzfFE87/TJkIMRbj1J5Rr7Plt
/EQW2e2QI/FIZ/LL5f5dBtkvtt3PdnoaJVuOgSVbBbCbWsUYsJntHMmoUDtw7VJE
WLsVAt6uybiiNy9voQ+BFlHfWWs67NzrX2Urh59XRIlPwrweG94GGtHiN3cp4S+v
8yxTs3w2MUk6NrcY3sjftgb2ECCOeb+ym+LTJPtB+wQFvLDM9oPVtOn3s7SBCmVJ
B6GWB/CoCurCg42b2uGi8Vr9zzEG7QtylbwwGn1CZ46KVDCitbRCGMGOGhHiaHXD
0CgztlDsVNoZqBpNTILy4BNkSPnMA7vbEynRhRKGJt3Q+9VNX7v8Wyx7eDgealxV
uc+q0cNrtZK5YMbnx8H/fIwjbeDbcNltEjUAJxgyXttVrXIUWFW71XeZ3ZvGKkpz
HIeJFBOp8CjDdHGkqgvhBEG+phkyp6oYlaq/I79fvQUjZrwt0kpg+2PsMQMyX6K8
ECQ+O5+DywFsKv+FSqrb16+HBHNLt6dmiQmMD0wU+8AxtnQggHPHQWq/YV0nKxUC
d7mMk18CTcoVNK8pylzYguYeYdh+2yZOGmDngLnkzJ1skvYuNFLoBCjnzH/zn0ja
xqkLlMUMzkv4KnPKrckcnqeIpstk6Pt6Ow2TNz2hrdE1ySc7QPWa6OW3lKJ+l29X
NpTZc3pSchXtsK/M5gpNpkRGcAPfpEkMPqqjUb0opuMUQ482uibDOSDo907ErlqR
aMGActqkWVHecOlMZnjQ85bktBcrlqqg5Ppo+xuFqhZDvI/bYhQ7TA4WvmO/WPbI
F5LsxgT0gDl8TQRy5tL4REhhcnJXsOeq3yY4HFIw+khpIX91iMTGrs5TpLR48jxk
c0EjIjuedmZVMEe6OFzBpRuKCMLlFptrA1X2puiJPpZK3+BGckxcwr+UkXgS5Ils
nLZ/IfsXBnU0wMjc5lAhRod1D5RaPOY59mvCnvtYPXFyqBkOcdecP1Ugb+6cxwIV
fOnFFQBzSN1hKqF910V59hCitT1sLisMHSY9usoIMcnTQtQQyPDPzFO5jBKB1Gya
rmosRJAp2CySGBGcokRiBWmAIgnyPEbgvLdG7/Ja6Or/pUZ8aLqYFd+Manbept0j
pFqk1nuG5nvYgYf14T8HSp5NtKUfnCUx7v8GxwmjWiuNKhz1jvc+XragC/zAP4Cf
0stpVWkF9+YW64Si0F3Sg0ipn6nHrLdGuyrP6Me+nh7O24MO/vTqayYlAD6u6Sw/
EKHApi+0I6vFVK9sRua9jUWup/WnwwlEcvejNYy/eMGg6kMD0rergOpxg7oTgstq
39w/g42gq0mlR6EGGLxJ6Swlu1Wi8H/7IAT2QZRkVGekVaj4Da4MXXr5wAlaRsWd
5quDxubiH+kbH8fthDy2LLv4bTCTMaskm53EMthJarXejiaeo2VX6GQzDmiPlpDc
Y0Y3b6qg3Vy3+GecAqBkCgLbJAHYw/VAOpICHvVE1Cj9RySnYBgqWnKAb5GpB9FJ
K1Q+kcA9Z0zJVlqCE6nY9DyFmD6ojabjp54YXhhh3s3bIXHDLWlj58cusV853J1d
x9CAt4XSfSC4rjARc8BYHP5CIYyOOzsDPPSziG4xUfXZycKDybC+TQwj340rqeMc
tngQt4p/4SYc16os62eoD2g3hD/1i0qgPzdRNuQkcls8wFLYfWbo4yoNEy/FtNyn
9zhcR7FJYkp6cDTY12woFx6yILw1rINGoHnxJb3dX1tm5C4N+G4Ov0ZJCGZ4ubXk
xqMpbklKIN/AmVrFxKWqhdox8aQhACz/oawa9HqPKVi4CUBnCk8PQiYjjWS/4Ldw
BPwQt/sT2dYKVr4g1Z7rsfPtBBGpd8+/O3wMW050OYoJp/hdNdLSo61A6iki+KWx
u/mromFMkHYTRiuV9MuqQ3VRBpHTixnyUVC72FE+CmmQYQKGGIlX+vsDbyYPjlC9
Qk5fDusVcykgCb6DyLAAKaC6HeklPfg3ZdSACmLJDzrl1/vQIqFh4wejnhCEWQXs
3LJnUix43E8RX+Ge4aakvhk2CVxm2yUsmjenx9VTBF2xLEWbRqlkFzSHBva2vf4v
hZrqPpsX17GEGuQe2K9Cw9c7Dh9ztFrS5fRg9zPGvpnPSozxvrOj014LmopMYKUq
n+t0mCYF16nRzmWg5AfeHRAFGUPdmarSO5Ur1UzmiqZphw0WCa1VGXt+gjkIxv9i
m8o6caqQF+ZPFdrwkoQEAjOwrBn1wcj6MxckxSXs/CLY3Cl0zDfushrW5sXzlzMB
na40YsU/zv0AIvQMHS+1EQFr+LdQsWW0Slv/3akAJg7ox98Kty7oOLWbNzIz8mlv
Yfyfs7jz+No0RJWubmlrJ2qSAV+Knq7CAR/gOodVZf9bU17LGBMTrjXOPheyPR0D
W+iUM5t+dTWW9prCs8lFsnbChPpWcetcL9ZqXaeLEKX6V3CYJJRDP1RtvO9aWMMu
YaRwahTgLaxyA4JiRedOgWVGsdUYlUYFxn0SGGhToobSpVnb8CPaATP+tVV0osAL
91ifOYT+tvYefeQf5d1VECxI4JloWiC5hkN7j7kZxzx2k6CrHWDbLGjMtGTksPTN
SW/fXAKh86JzgkXEnO1xhOXu0wcZapu415FH/A/rg/4POQZ9cckU52tZWHKs/tl+
YDmPLH9nKXSk63rjq4Ez7OZkSlfVP5FCISNbWSfSLq65ii21x/6can1sEcj8dJMZ
c3i8LNJJlJ6ZDx7PDsj1X61SSdqf+nYT418z6IDHLSIUd/X+5qD5zNxbfW2dPdUA
pvNQQUFHCojYoOaOnGshXrmmw2RKaXB9L2TGarJrB4gGTkqeNycV7MOJPZulNRda
xpp9ML/QxV8GuEVH6hagWygFPAw4NgeRK4FcD0hi5Kv8vomDbqdIVjCzZ6marqF5
+5rnpShqTl7y/EmpZP33EBGuSl5+lB44ck9Yf+tU8nFoQkvg5yAChlRxw0GhGqSh
RA4VU+dveUn4ceqWy87RNDJ08GjeoQX0w8wFSwTa3H20WSMmTyd7CLWku/sMRxE0
V6ilgK2R1ckYKS+NZolv8XZsPoMG1SQb0MiinAYXrtdZS8NQzzNX2I9+BWFIqKDY
ngoCxb+ooROY8zb5ryPmH4vzvhQEjwJ7ItTWMCeHWlGUFXWBZOQ401x6N+hx5xAn
giklveirdIGaa407CytJok8Ya3gfDI0Odni8HLVnvgMUKO4rtGYDKb6hKATzBPIC
XyhJ86ArqLh4Oc6Fa9w/jaT3ddBSx4KSFZxraXF6+Z3n9QFKLbGd+hlCjP8bUBMq
+ndcT1wDcpV1PQ2Iyi/ssjfR8RNRbS/iS0+muDIXf5EYzpwRdEC2O2pqVtQZ0iLC
HACHDFktsKKLSBq3Qe5gLbsf3JCMoKE6Sp+6rSHA1YJTdMHwaNqMDxHhF8kiO8jT
svf7hK0zXl4MTCGjmRJQT7MU8MqIgZo0v3JIoFLWyL6Kfd7XNZaCokty8cPXCjyd
+eMk3hFHjjIMMefvv87C/YIZPsEcLvWpwvDcE226P62Z/RMfsBYfeCVFu6Y3HzDf
kGuBZZh204k0m5jTmPbxdC8nZXBiatmERFivbcS16h1bPrzytiKDLgKskqf/1q9E
l4h+RWQL/Fd+lw5iI9aGwrG7jahWZCsrltCrje+hG9c9+y1pjwjk++6rvBBiAwrZ
7A9mBsjfaKJPS/wiBStBmbUhsRh0irlQpMULFy4f3ZjX8CsWdwc/jEEIYZJ7EQyR
gewsZcz8fSsHeFfe/InFnoogqg+vd8wKwDmuoo6pnOUzsHgEiQpJus1agm9PbS+p
JhJf8FPga4qnxgN3oHSOXw+q+xxoc8W7oh8Z2pH3hHEmfrXMvm0oelRKcGHD83dC
fxcmzLIUtcH0h9vm4J+9nc++QgyPu9eqtMAXP341KVx1Q8LTHbdiyrD/Fc/qHmI0
PJcBfSJhlXoVGJBer2lgzfluCxHzQjvMnLOh2E77WoxluzaLXkPZVaLJTJDHe9UB
T8Rc41PMPAtohAHiq9ZrLSXkp9Zymg5XpzlcHT9EH3XmyZ9ormKQ5JLZzSPpUmzI
M3e/QmGhdoBVOUdQd847UfDBv+AiGBa+gCqwbkDe18GKh2DH6IbQ0164hZGJ8iXA
7PFfk2ncixV8L6/5mKXj45VxTWpJBdN+LyFCc8kMCdq7SLkKT7ZJ0thvSD9jjnKV
hm4GSi7A1rKjOFAe7niqrhXE8PCkuqN+ZniOlt/iaGtezRrth/wcmG9BgDeJ707M
DEuuMo7S4nkHB6AzcabqgyD5CJbjZvhvJQJiaRoow/GVdZbSYjP95i1xhja9+u03
QHkLiQe1shncL+/ni03SV+4MbsE/oZLTYBOL+3Q7i0F6eLql2wUbqG63GaCpaZgd
KIp7sP4y7egnnbmkIWUrDf+2HT71+nKlUHVTJexT6Tq/4LncV8Wf/WC7UNuq67EQ
NyVMKaCeym2RMuQj7w00oKM6jjDzmguUWnAQRz06ACNRRtccM1dkjzsJcdTGQV5U
+OdXvdviW5VaUKyP0NFbDpZ/uc50xT82ko+ADpjoYMMKz63NG6ZxYnYk9pHPifzQ
uPREHz/cSgHfBdgu53i4Dn2d992IxNPfwuCSkDHK9fB2bP+p9j+1hHZlDOK1jy+0
KL7xBq/TlTg6RzzeKE6ub14l7gTuq5T/+wWhkl7D6xdwtClgOvNpyCGr0PueOHGb
Z1MxcsEpdLHuAmeHfBiUtRaYJv6Dk+L8NKfKkQVrZqtvV3+MKpD24fr1XVZ35Xfd
c/4d+RKofw6lgrLX4IGVKqz7FrnB2f9mUZ/PU5YUMhPMAzUjrnfpBA8V5mblehlP
Mmsc3r6IKoKFYM7E0V9nkcVEWBvNDM8Picio80HC1SK0H6ju7Upw4U71pOeAq83c
oqNNr02OKrBdLKCZTyz3Jv6h3iSvKEDSppR1Yldl+TW9wI6xPZuSByPchmVNAQ9f
9Q/vBWSrXHHwuz+I7rAKy9UKoGY4rzP7yeHmpy5rnIpw6/GNAV1OQHKKh+UyyMeC
aUJYQnW6sRYhBxCpiOjDUgy1COygvLjNY/uQxmjm3TdgGBIgSreTVX5Pavlmz5Kv
yzjoch/NJKIHTmWgPuhNACNYfDxurIEl6QIaeZWuiqRRUpEmTxC0a8Wfia+5Doq8
gpK9C5lYLIuVj0wd7LbL5gGz/3dyRfwA9ch0DJp55zb03urSNpd8I0GrcAaMU5OQ
R0rCZPvkVMOk/G/NUSOcheDLQynEAtzQ8bCdNAT33bt8ps1i5YnIgFDJsd/1UbBp
PcPtmLqCkpkcbTfe87unKUdlU7br+I/+Omb99k9qc0uU2e4Da7kL5O+kxO53DqDX
qk0/YC79j17UAGwSSXH91eMSONlcm/U3fSITzC1BDRkIjviZ8m5fYdhff/ZkJDuh
BFjf9yR+pHjfG9CJtyVVpK2E1kw1F84AFUNMlKKw0e/W7DUM+8J/6xL0SQopKKnQ
pWstOxRNEUO1vqGet1lhFihwLp2J1zUTE0Bjt+Vfrre+o0a/VFdPUQtxEQUOHjxm
UM9HoCi5ZrYPYNmBJiEKb/3L2zjI6Zh+ingKyhlwGd9FDh6Ht2RYu0WCkUqlNRrx
X1O4PtbgcD+W1u3sfCYpdlKnpkti9VaJ1m2TcCeu3suzqZKOet4CqMzzJxv1YTH3
rrMxDfDfSxrsTcRF8XVKSyMW4O9YfMBqailPuL+ts71Z93uI4sQeT6/SSDy8DfkU
/gwS7mPBz29Q4IePIdgOw3dABVhxReBBAT3te1jepJ9f3LVmGkY3P2RA4D6ueM8F
BAVv5oySN1xjzwI+mYJVenOnV8CxnFCvpDBdKP4MPQCjeVyyOjHzznkXNerc6+ty
oDBN2TW/9XPAxKTSVssVdDNzLDRx6RgLpAcy/2cYaiwFbcr9l/GbeDRCpeHgq8Sv
E6D89Rbb/fgbkYvRn3tdMlOq8op2rdL1WdJx9IvcuJ9D50PZc5DqrbPgng0Wwk1e
YBzlZxCFv68fdUUEdpZofIsz39WLsZqbzxBai6XCFXd8J4neY+DLmWqbrGlILXRh
yePpNQppAnwxCe4JDPrpsOlkR4Z4yyvXnPCSkSXyoKzWTgbnHs6PFFtyHlAvs7dx
DH+G3H8VIaUuU2e/h0CKKtrjNG7yzUKJOAKyZn2rNOf8G3CmWjM1u1R74hawB6RH
E8F7KzmOgiNMxBiwf97WwRPSBLviA9HHQvK3yF6o8mRA8kVhHU6c6wazYl8NlCUu
ZVPMYpw6ESGw2Rf9xbVJsb1D2zPtEQYxcvEc3AEdqWy0ssNCBmy3Fqn6/B6bUgDo
Oy+rMj9RoeS82YthhTaoyqe2DN3XyQvyWv269/gMfBRKtx3UIZ+iLgvawQetoois
ayHZV6qZ0dNI/wgH+QX5TGDsEgFPXey38kxjC1GzRLLfH1qU8pJOo07lvyZUNRbL
VhZCmTjMDstvSjZwKzQfBWI4iS/W3sYsFKLYvho76N17zvkER2gs7+tjNZzqZBtD
eqOZ1hrJs/2Wmddd1LL750q0tLVvuqgngaOsauHf8Ai5smcmwuFQSKy8pnZuRGV3
flwAIKtKtb+JptrAcC/AIy19rhpdv70qbu33wqG3/3HPXLJbSzeI7gFowpDu/60k
JPlCeo3W24nqsf08tXL1NvlmtnCVggusNswv184Lq2o0oS09WKZWY+bPXELVtKLv
h/7KGu1sT1L8WM8qH5efVqoJjY5kb8E8/AyxkCfTs+oaOK1FWVMKbvkZqdgNPuST
RIYmHuJoYggq/ctIbVQXIXPRPtV3LGmezXKXXt1v7AFIJYCP1dsep9y5nVHE02O7
uA1m1oP3IP3k92StjiDz9B8M4vNRi3I8HvADFnHQc0M+JC7QB2NWBi4uHHhyCob9
CbCoQDXZsFJhGYbX8eWgP31//N2FSoCFfpPIYmn0NqfPPpDIZffVdmXmj/BChuBQ
9fhRVJqaFh+Jf4gryxQDQMKpIAGxLmNfWmMi2fD0Ycc+xS5mTa91dbUb59UuY6HU
yl7NfLBmHU31HcvclldkufGls9ZegB08X0McSFRIaFqSdd9V8Ox0zuhDBHuwqZIn
BpAUSEbCS6PH4cmH+BtOF6kSF7K9RJsZbg7IeiLA1fiNQXfaZwIwO0Tn7XlwFkrw
fZO5/2VaHTYSRN5PQ6Ky6acCpv+tgtXe/ObJMXSdCKT9lddkelHMWYYcjnQO2ysN
Y5MrX1A7r1V6z2a78oRQOIeceJ4P9uXP42r75KqrIYjOXZGX/AcfipW236a1QtGt
GHfT0GXJ9UKYqiV2uCuzNDGLIG2er/ErM31L7EtEp/joFt/lq4q3qEA/zbYFhuw/
xYLI2eGIzAy2T9pc9MguFId1GgG1xWgvX3A7thryPQWYyI0fB8b041S6aP87paAa
40ShRoF35I7EcZMha1RMMlQC+mv8qDp0QPUY3Tx74MLv6ACSfPOvvXWY5Lr56/wH
52aaWZ/YYPHKRK++EY+KXZhic11KHFZSjJfSBWgXnfem0MikvVTIWXIEAavxpdoV
H726xJAgSGHFSDRftb/vl7H9mNUC1/USN48czog8E7BmhQMMXjP2iLsS+dgOFkpj
5WCAGmyRfjES7xiGAAKPeAEeix362cZ2UwfT7rA0FV9jxBkHzlm12frDDx4EyqHW
IJDLlkKuHxraWFvI5YGeoHqo7FrepH3BdA9BFpvL5XGrMuDwJdsm19GDRbwGkvDd
MtzdF6S5x5Qv4tOvCkoaUtkplWAoZktza+bVDRH9x5KgZuvLMUhZ0Ja3TzQv07Xn
AKVGZolxeNhWRXY/kHgcTXiV9NBsAISfQ2APp2IkMd3ScpxvFnjWbkHV5G7eS5lC
z5ofJss5YJLRaJLnAwjEUJJtP6Af7u2irxeIDHBOrioXk3HUQJK6/NuQQOYURI/7
TkWWcmSz8t09s1Z19NRsBufWzk7nki2doWpj9IO+h7d34S57klZdjsElTa5nWAW0
/k5OBBlXj91VaDATxvLR/2xqKB6fWomoa4zwShtPz9pIh61T4BbDvlezNfRsUB6O
SA6pfk3+rA+EDbmQk3FxMPahBrk9Mem0o8NLAUkfSpwZt5fud+Q/dYaBSlPYHFS+
Qv49FnH9XQ8b4NQITztKiP4+m/MDN8NPFm/10XIslJwi7rHrtYM5QNVl/pRgGrep
yTyFO5djDjK+dFfOP32vlonTjbLDrpAzdAv0D7j/C52mZzrVUyPgFB94IqBzM8oB
9tCe2OILMiGKSSlorLq1Y3z9iyRzwNeP00kJODlx87HB9Jz/K2eRkyICcIp7PurJ
ZZMq3PrlPVzO8rhfdbFom0w6ZKqg/z3h0hZw2NKmwZd1HtgPEdwljdK4ayr0VnI5
nUekP9y6kLHISmD4OgqYWYmb55+aKyFrX6Mj7EPjEZh7YrqIvK0dlMuBw4HJW2Sr
9x1x1rluY6PzSMLhz0MhlAy7IL2edIrqPlyOH0dtxqCb5TJs0XWodzlnZE5TnHiT
A2DiFcUs0pGJU761nBw9EwjKR4Jwqj+yijm3S/LVAUTDoViH1qMD73RCozWRNpWN
qk86ejNraFbO0wcbsTVbJ6haXVpswP5MjGyr78/XlVpFla108QmnPrJiRfQxpS7D
Dqe2zsniAsh3CtWgOcYvu3+pD6mjZtmRPjUH0qlII8de4NX5p5UQorhFBALJJN2H
MF5q2aJCuqcY6JVgBKWPldMDKFCo34t9TADSf8SphgWgg4464zjAJbVwk6bLMmBt
DyPastLpT4uHl2qWvDB+TnLk0t0451QOxA8EM+dbgx9pGDNjeGitcuUXKtHonOOd
KkrW0UfCwDFZNy7DrgM35vhKiZPcOysgk0kjN6Q9rKGFDE4WG/qrJrkgEdZrhbuL
kZ8e3l0bSZ12FANkroa/Xb1bCZrySAGHOhmu+jJcKxqCJ3xUQjZNXY3jjJ7clARX
W0oKzwaF+EnSqTtmDLInC5y8nfUqfvqlPCKTpLwqzK3W0vo7ZMp4kMUrJ4xYrJ/j
4BcObzz6VzhTAHPj3h2v/cz+E5sf9lJTkSNi9pWvoL6eu8mf/KI/nlCbTIidImZs
g1CqGjj0bi0dT45z+UGxcY1yHdq+WOm5wpv8HtDfYV61yaZWbcaFMGfgVO46KjLY
x4FfQdaaus0nmYde7y0zn6qytnqYe1OOpJDBDPMjtg03/reKuM/qn0l3cHaxzefD
qhaOoLc0FjuVzHO2S2rv2cJdLgkwbg958hfgaTW4c5xfe1jfGpZohpe51dEkwP3z
36RZOHfaCv9a2Qs4joAQGx/pk/yHeK/E1Dxml0aCr7YxTM1h1+hVds6OYOvmPRGB
UBP1NhpJk3GZGGM/WiozQ2INAS3Z2UVzlmKrZ6u1O0bWqvqgni8z2xaG/tkyP53b
Yykzk9Hwvz3zFQK0LOSkG/PlJjpWQyE/nqNgxe0KhTA/LOBMBHPlGx4/g8hUsL8j
lcQKT7yKFRpCtNTXjGZmUVydkJiRMm3v6YAE78zPfUqlwu3nBp9M6fpyjv6IAuRB
UMD9elD7XMd+RqIDDbG6Om0mMeS5TH9m/y7iaRNe2uzUqHla3B+2yaqGS00cgRgG
+MTAgADPE47RBOf7Oc61EJ2V5zzXLCr6gDH05bzovrLIWdiMHqmIvswP+VODt/CM
HMmpTQWCJuT61GH1k0izqUBWrdHZnKPHqSTWv4ect0h3U6t1EC7KpMnISEFgkR6O
Jb4y1DNHPMPCN/br10rd2ltVng0M64nWDxQc1d4OIbaT201Hvusd0Cqu2LH6GCPL
GYBIBlQloYZFVBf9kHwqC4WJu5U/Oe8bgYYabxuMqGNxFZPd1wO+5rRpxB75kA9K
7yNgrXyXR6e5fY1cf3POXf2F5JCSINURuLrrqo3Q7MQ+M30jTfkbXJHqRlfW6+qS
xvqroG/0nSKuOKnV3CESEltTZcHDg1sBTEW1wtcL1Y14mDz1C8HaMoF32IKZ4mlj
w41Z16EjZQTEbhRiNbD3kTYJxdR4p1pKP38pL3sU3CNMcc7DCry4qd7Ubd7hMSOY
ly4KnZVcN6E8MKHET5J45xE7JEw3rWSrod6TrssBAcdDd3Nt8EGj+/VBCfpIyYva
ahiFp8+krbCSojpM4pcOdpP690XCXKUZPWqb1xMahrcRb6x+lmQMJ5a53+HVV/BO
qNoPvv8B7jq8yvlyD109RtHhRfzhN7s0KHXZ5EhUTrEG+xyPOQQPZ+JZJxqdB4sT
97RLq0M58h3hoZx9aFxL0VeVPh3R8XwPFRiKq/9xc+mxTpvdzcOqoZcwO4qU6OSD
uk6USRRL4JlZR4pGJhYXpJJshKA9tWNcC+lXGg+Kk6OtClCx1vGrZXixhUlJDy9w
vPB6kwwH3UvXAkOA4kdIkd1QOVFbUkn/0wbAOdzazpG2XKTGtfOSFEhz3ppeEi4q
mikNkKUqznWAym73wFfsN+Ns+IyoGE9Aup9G2z1iRjxFD1N3Ie+/46y+zBg5dQq9
b62SeY2QyG6c8Oy8IkiGpXFr03SH5T0HULGdd767Zr4UnHVAvu21hnwCQlcWz1Wc
2Bid/oNUkDBeFrzM1LkAPsz9TYcXim+UHC7ojyqXsTkeq2ILbdOqN9PvU1f+4+wt
MSAqdCN4RCqDz8vPuD5aVJd1He1iswNJE2ING4WuBkiYdxJ4CkTxgWj8uHXXe9yB
qk+oFBEdWZdFAbfc/paJPpUvdJhzlmY/AJCJiDWmsxI+I0vJkzs589k7SJAqds/2
faOdN6A6f3uI9B5Cbxfka5wxv/7+2a7CUMgmKuoUwz7btSgnuDP20IhJgcYksyYb
iFowHwi2RZY8l23UUhVhkXjTX4m7+PGUmKH4Dc2dPo3LyvYuuzvQ5KrZ/7WgGcDG
0LHo+LFnXNiJnw/26CDOZSc0GQojFTh82XiGzh1+YrQpyk9n0gUm8hE2k13d0e0a
I/jyQgZg90EMT/csLG+qAly1onu71mGH9UQEhk41HwSPlZQaYcg0a2qL2x4SiRAQ
RxuKOspDMBbfYHIjSyt4lJsZzjMWjRV721mC4F0WJcSmcdaw9d5ack9RkS1+ADhc
4REZGmWMwwnXsi4Ek105VfLfJFbbWhQismfWypJuOe+/hDgKgQWD5kPhWY0Zi73S
jzjDuiNvCxiDDCMxQKAWD7U2QGNrXbZ3kSaeDYZ+mK4Pe1ErwuvRYuOgNgpWUMoF
FQq2OoeVSbuyFLyRt2xqXRfnUKRkMqQIhdFB5q3jlTt8BJZtdvg9cx3mz6Jlebrq
wDW5e/cOy3Obi4gRcw5dQcsybLSXIwJ3KjL2+Dva9FlXs3VAmLWHKraF8DtYwVle
rJDY8iVgqppV/0ISjjUFL2pUknrmsKiU9wkdrJ2IfRpvCcMuk7FVBvA9Nm9tgxSY
O/ADmX2FUyziQq/XY4iJoBi5AI/QizGsqgwDEwmPTlqBbmqCkwv8tb4wN/9xisvO
clATPqHEK1TE/fd+0itPSR8WU3dgRv5B3kXkpqrbbnTvA/qcDOReiL5cRIBYCROv
nx3TkWaFwM4Yg/+HkiRVVfNRf1TxIlUkXpuuOTtAziDT5jQcDHk8riqJKpf3XAaX
RFcy9FtliRotGyAJn6HisCfg/5n7gP5fccOLFQsGMEVAr/SosKvEz7t8ydFuv2kR
WlEu+zlwUWV917h3BeM66CWkTgyMWpwKVywTLxWde651tkPkVJGK2boJSPdRuJFV
5EQC9YClSl8gFQUF9fnIbSvo12R3WQWVzh2n1GqMVkaK3SX9enOdItXvBxQXjylv
wM1BkbSuN9wHkDbZsh76KtJhqLQqLAguZIpa8UdBECYAQvLjWhfgOiikEhQtsyJu
AYjENMnTdPLEJO6sewq+OxQGiBiRVLA3dtCauLbxxePRx7JA19sF953yxcI/FcNI
qeWd3/QJAk3/ypS3v1fJgttdRwHGD0Yms1wBIOfY4I+U/olJ9cKbHUGVja80M5S1
FRbyhIBiJrDJNIn0I3rqpSrlrTF3n9+qUIzm5ys/QAidPxsF8ggkpGY3ZfxSo4ph
+GtJrqcjle3OO+CBJL0EYyUZ0PXP9pQXhTk726wkIsUrfE//k1P97962MApxsg0l
htfL0KZmFRO3qKrhr8duOiJJCkbfmt7SiwDys+0+OOSxOAP0Hq+6Xn5cIfGClp5j
zZNo60q04EVKpGgHjMLPFOT10g3sz1mOnR/zeYKMsGpN85rb/72MFQFp/jKq9qNy
wpPivTpDYEJNRtWXwZbV9frqnaXCV2d8JtUk5YVX2zANwIIzWwz5FVtLIeZ2ueah
WnEsYTxNg4OPI2oHtrbBLsQzYORtBSf9I068V6mt+7YRniyDMIWvF9WNna6tJSRa
BDNmlw9Ofk/8wVxmp/ucLlUEHhrDzMyIKiw/gv/DS1Cl0cGkJG6sJRDLvfUrDx8j
IBM2a885sPFFBUpfi4yBX9X54mF0iaYqbtvtw/Xz5SUaIOcit5VJ2c3doynpPlaJ
OHhbp4uvBKb0vtbrQcY9DT2QuqyRakvJkHX5eM+c3QPzuwjZDWnhbEK78iDZuJ4y
dH0OEF7nDoD9pN+KNcMAFWOdktlyp9KpkF1bGsaF93Jl9JySaFgdGQN0AM/JZcK2
40YmX75UqgLSQqU9l1nR99uzosLcJcFJK83MkqZ+wLOi+3+CNLkUz/0rcZD7nL5F
3y+3p/uGk2GHmUnGBSU2FDx/L9mPpp7SMjzlIX8NEttrhXDMG6Evyq3tqUlvqYQc
K+JCVWPxxTE13YYf5uCLmwOPm3LwVohZEvhgbzNptAP2VuMG+8JrQqWGzMun45Vm
YMSaAI/NuPSjp6okt3HHd2PgyXuHq2IimDk6iCZLhyfA1osUvJVU5u450mNHJnX6
6mWPeZZIlZHRosFjSpry2cAggEh8aYIE9BB5bXXl16FzS6nZH6PUBFKRwwn2RdcO
FGY0BhmwozUsCb9eBvoOmwD1Gy4j2Otdq3onOSDwynADVazagMlRNCqopmiTtjGS
Zd6vlyychoUeDbTdhJOIH34m9v9bGbevtnBTtIX9iw2a8/JTogyziv7d94R+Ec2I
1rVJl8r98kfa+5BQa2TFfYWsnUcX1+PXgJFKgmj629xdTk/o1nLWtsnBZe7BHbq1
xi30U0Ih4UICLssB9VE3jI3K66Ios5vDbnXlJN9JQM9odPVOakxtOUR54AbSuwZ5
j5YybKQcoYTP/+osuyM4Zz1NzwLzPs6mQz20h7MluKwCD7rsORQMnGxuEuTl4CrN
Nym9MxNI42V75TUuWZgmE/zIJwC3OhInT20JuCc4QeR7rQXcBZCHDKEuQjFPKjnm
b7Z52cGPH51UsjDliw3+ZUAi70/oviGuh53j/NGTHIqQ9fleBFQi0ApItOPxMtP/
ZlSuDpEFpAPdV9ZmFL9luHDC51BE5ad88XsHI9DMkVApDNoVyne1FqT5SqOiLqQr
favQmzChOuO9Ru8eu88dslkGq7i7k9EmsG3yFgPoFS6EboeIup7DFyebFBoOXgJF
mGNLbL5evACQ22r7hOXL8OkRpsque9TBkeCHezKlebofvBfnryzur/2JR/M3+Fg8
FKJ40o0Xss3embTfY+lXav3OMa6wyOaw4VEMDtNCW+u+hm0DjNWod+vUKs0OMP0A
gfpfiwFD4iyWDb8gvpBsmw2flR9CE+T5/5nbjQArzdO0BbUZfFRhVe042ESLHemk
fzs/BS16upgn+pDsQUmmIc5EQuefZSuQ3EL4GDxlMdGIHRS1kfT11kJPYM7JBBqt
13iJRBKrtL4t3CY4F9j7HaqGNwz8Sy5rNuveAVDLsjqM+phbsT4N0uRfrDMF9v/3
v394WpcfZdBKg8AC5gk/HVGJxQRFNeKQxQ15IEQF+WVRbo4t/+MsmV77Bk5oimtd
p6ukcWkpmjqzKeE4kh6Hl1y7z1Bj8iIY3faiRdqaBZzlMG0jQzdUdrMo8ngb9xtu
n80GifM3gfpt5J5fuQGPQLz8zP/57rxa3CGwIVggxQcAFFc+brBoZdE13K0qlWHd
Q75Hz5ZEDJXqe4vVxNUkRInewQPcM596E575w8q6dELshZqkHqLah/lv6XCRMqZS
zrF0mGwYbhvFw9V8n6a98pRz9sxVw/YtPRLmRTJ4+/6sSDW3Ly/Ho4qaiUI9v3SC
FVk+uKvBi8jaXGlx8OU9LUpbFtfcsXJUEK30YIqaHqRmcTUg1pkDL4zcqpwSF4oR
vfcnGShWMjKZ3HN0uRFl5G4/Hlfhs8pFQ9rPm6EU0yc5cBd1AmfDvaDDmFGEYsDz
Z0M+ooJmlSmIfQg2JC3BGGwM8kTnZFN3JetEL58iZ15C78uYybWKJWqVSb3413GF
LTWrHp8atle4tr1nRIkkeU5DgW3FkOm3N671o0hEcN9edQJLMabFUN0+VQCcM04d
A7mJI9TPfLCtn3IuaTAYGmuhpe0uCbP8+z13frAtp3FkAsyBBl9ck+dOzFVOUkJi
jsP33BtkZ3frERY8T7wad+1Cnk6dlvWbaxIChIqsFkWxetw3jiFh1ltt68DupVpy
B1VejJ6bpMDvbT2c8nYI6RHFEyHYPLPy3BJKzsfip5L7gwVisesoGxB8t5BYM9Gl
ZH3aLeDG8E5Khwxro/uS/3TeoIQ5Qdkihcgdz2HVD50nbZcuMSbBOyNE7CKzBc2d
4m+uTgPonpcCLEhm/LJOT1F1SEZnc3/DzCVFE1lkFDmyhNghX/sB0hmNzMYjM/6k
H+UM/dGMeoirnnXPzvvj/g+/73cFgjYKTvOIO71TN4DaizuqQ9ceYc2Rb1q+vLZb
BhIFFTSsylxB/mgZXtQ+qJDXwD8vm3JSa1tBb7GQMCE3r9REQZxG3oaqlLYaEDxS
Jh0dtQ+UAqi1/ccIDoSs9K8oE32KLxfyhRFX2WMaGi99CUKM2tsKRWAN5c5vuuB8
HX1zgParp4IsEJUaIHpMUf0Gg5zFETUrJt2w6khn+UHaoVKcQCYVBjDHuoqb6weF
RdzNlfGqcs07p4eqyVVFNeKk7moJiJQ9iN3wBsFe7FM3fqD+JXRNGJkEipvzGa5S
fsEqj9CCUqtIeUd5eaA6jEW+1A5yLwAtUMbN01trZuQiSwGZL8Ef/laTewC9dmWf
av3p8LhFk4zYjqibTw8XHLCkV/Kuj9cep3am1tLd27RObU16h/hW10vy8ZwuupkP
FlicHO2wQ97yTiINRcCPNO9cDkGbE73J/J/D3q7rK+sjMU1FZQNduvQOQqr+bODu
c/8nJZ9A1Zwn02+Lcl/rd7pRDhrWn29hRLX+IQex3p2gLIXGSmLl+YMxSJQVvOum
TyMUi8/HqGBXk/hRfOpdwcm0w94E9w0rvqYS+HlB4QI+WWhkLhUaKGJ72NGQo9fZ
gW8cIZi4rGBmLK6PfUwA8UmpJ8uNU68ArLreLe307dZd8N22lWFED8Gs0Ey3XAqV
MwB3w7XusEGifcGFSXylgVeslpyKMD15xwPTKda9Gv7pHbnr5y/eTziPwG6FAE6e
gK4oM1rp+wc39vhvr5kJEIgCkH1U3qn8uoEvlsEBCgHoaMjDTcT2gpYs5zvW/U6V
bemi4CWPSYqnsYbE6AsXkR3U3283BRk9s6cOu4DNov5/DmDjXNj4+isme2IHDJq+
nyU99q0hmdq4RqiqEPcsh8iOh0z/DsRBonrgZwqrEutsVQewQGt/nTg5nW88Ziy5
2OhmycIoh0MZg4Vfvvzp2rCwdnWpKVZpl9Lw/agPG91jgxPUwjybXXKORu1RKMXD
abgUWUA51Eeib2xi8GtU0HShM/OGxg2he5UDznZK5cJUuXPQUYRxNZkBqTcaY87v
freNgn5ZIJH/2rQ7l07mpwxwIR5cS2Ay3yrKvr9gF8+GvWlVQalcezhiW8kmJsHt
Da+6NQMnOKwqga3bP0yOZBjDrBUVxhpaZLYC1z2AJ+M1xE063hfbRrIT+9iRykDS
TSO0/ZcGWgF82geCWSqbllzwLhDwGkUoKrWyFfXiHl2aiyqX/m8/WXlZCEmz9S2b
gjJUUHKKyphlK+lrxylg446WduypZIpDSUOzKLJa4oDmA3sXfH/ncoIbuB047NJw
jJLdJU8zKSQAigjluGb7U+246wQn82RSWQDs/UrZmyxVG+glz4uYuQ19mn5AB84N
aSSLfAJhmZZKRCyXeWRv0FJrqbvZBdH+eb2f1mQT1W7zrduByEVSMmf1gGj9dvJc
va0lYW47lN1IHx7ehOt7Es4HSqqIEmeW8RFmBCT0W9HDoeMo48/5gnav+inRi1bS
leOqg1xbrpi9yxsmvJdgmihyjb2Dgm4ICBCKo2DOuuK9cDWLBIZIPH8/u4YoJBhT
Zpj/l++C/TGyuLRLf/OospP4yp2ooPeS0w8IdNmVus70gNa6Zf49AxCBRL97o8S9
LY14o4Yxejfno6CfAYlUvu7mLOiNzaziGHRz+8dVTNbxHz8h0Mls/W3BbSHuxv/Z
N9C6ZK4HDOVaTMyBt0IkJV+MlkPonNDfJMCgdH3ZtfD+U0pizp7waIKKjxwVrSlI
dbwvFG2WUK+Y8w3lRvOC4DkYncUZqveD7DQk9ED/0jPfQSlNgfy+RTp85VOlzhTq
cjb8nwSeHVLs+I6lU7l12r5Fh3LIVU3vITUBdNfIA7UlIrhz5F9dMcqrbxL6XmaP
tnvv7v6yYy3RnuT5RQXJC8nSMKK6yNAZ3GIBrMLuiCxqwC/l/lyHu9IYNRnp3RMf
76ErAa28J6XFOt0rJQ5dqKjqbJ8LRiCP0kEDYwO2enlU8F0utVYW1kj19paGPIxO
YTKj973npieZxyFgjBU4Lw0KZ5tuNcZCcJPT/1y7ino7Hu/3mFFZTy0xn20FgpFC
oF4lyOnr6XDf08qShTyD9A7BSXCdh+SdQRwPBZsRPNWXfO2unJNCqrKcFvObvMVc
flHc9nw7A/kG4MkgOxd1vC8y7x1+ZitdPdDnl8Y/1ZRuWgAWCIr7AuSbqWK0UeVw
Dlz0eqNR6AQs+2S24QOQumjrOZe5LuN5Q/wJuR8u3CXM2gvFPI9b4dNPEB6IU0ZP
QcyNw2btTtVVkWHifmfwexZzYVPE1y507l78oA1dEWaq+oi4HyjhE5r+tNAW/5vf
VDa5fyWWNqIrQ03zMubnpMEBgmpAvpfgjuwdbEGcd1mWKbyFaYWse6/HoryqknR9
M10OmXKR2NNusC9naMnqnnyjYo243t/ySxH9x17SzmevHwLYUU6qXiITXoaO7taz
ZyGjj8CFtJh7ugDUTTThdCFBqPdl8A593CUhmT0kPQ2NFyzBuM6m8YeBCymmuomZ
a2UiyhJ0NBhfUaUd3eW0TZoVruAiByZf6T2n3oIkP1Y5BwazPVxEUgq6eawKoSlK
uZz0QdXFOCm4kVevWBVOKCuVAnDP5ZGYtJeyj6/i6EmHIYchWV6h2qZJz2TD9CC8
ryHrc5rRroxtVynEJU8oagbtZL4fHw40aVyukPuOz2uesQ+W5kNXcMzsCHbLYx9X
S/emDbpPaOSTV2vpws1oqmosYADONcQ9/ydc3HQ8LBGtivxPqae6n2eeIAQVrJ/9
aG8DphBIlOTfrjqXDo4hR4wolj6g63iE/PnJfyCxX5AZBtcpdY2jiP3qGIMYpN/h
gAhgGsvimZeLzqlOYck2ME/TpR2QIzdUCFAhC6DobkS2KJyRH/R1UjiZX5zPaM4b
EFCbURx0B9gpHn/t8G+WWBwHRo0WTdut4b03i1zyw3It8JdfpqfaeDIC5X44DmJa
K4IGwtryoskWh4KV2zej3lH8bOKZRfZ7tu+XRi6A88JoRlLgAipxb07LmIC+ubJh
j2SmY2nL/9abRhVsnplRXaw7JWgT8r/lcEdtPkOzeF5sM8Qk5dU4hfxyNhrP6Vaa
aUkAMb1uAOYVJxZ/5XycxyGpseRtsMllAcUNCzCoPimP+kteLVcoTP5LyRax2k/p
g9sv/xVcjQ8/9CGPQGKfGNA9jQp3Gm+gXIQRsn9Js0CHI2x9X4SOHK8JI7/1Y9rI
3jOsvSM7WcVyWW0voR09XNCgrEV4YtU/SDUStFPXLMjQyYPRsc9b0eVjuejtY5J+
VxSYNO1qlyyz/1ngn0ilRJi62qasJ2tCCIizocf/4aRLb/KIkwT3nJLvB1PZusI9
bzPvGX0Z90VHzJrlvXVsFFJzrYwkrmCrOUBjVTFhB2mfud3qNTlay4odC0QdZklM
LxxbbGqpmtSRjbrKeI+ORTBLRZV9mY4XDl9cB9Z3hGvVvaD8Epfrqoi38oezAawo
MB3qMm1NqRAfL7b1Szn8jTMHJkIZ7C8/4fbIa9zvEmIJgMXoJXfF1r1xVWrIUpvs
M1LP96Nthws1t9FDs+jDzbtsX6cFEuWgdTPPesPvOLunox4CuIPmKVbZA/QBQSNh
7LjhhFlAXhSw1Paowv0h7273al/FGUZF9BKqJM5xebWH5H5U8tKG+51QxIhwv8PS
GRlLLrODAHzHjnhEYuqvqDX+5Zx8gRgEcl7AQc5v1Bec7TvPDX3NUd7/sjJeAndf
2hyaeLEfeKVpLL6gYysZwNoN8C+pJ1AdxTA7nFzBTlP9S8kxkNnkvIjs/ntbLhK6
O1AHPuAWsPgBp5OJvSea5By5OHzI+Obe9RnqnPDKlmxLSX9CY4XVIow/Y8XAW70E
TM85UsJmNDSwDOd5nqqWPpipmzcmEIazR9cqMzUJQ4xqFaaXWjruR6MHQooWFA1R
Epa1DUzO3vrUTWr2jxX9A/jXhI1ZBqBe7MpknQ/EHnI5yMiEJqhLdwAT4YvbCAvT
M0RFDNF/9MH+P732sbmhJBtzcYyRbgeb/UlUCRI/SZdyPz+hnupIpiT/A0gMcVFm
xjB2qxl3t6XIhHxGuzsMOXqohmclEet7rO1iTbLAZL0HGEumlHX6tEA6Qkfb6qbL
6AHXfJHKLMDVI67BHi+kfRwPdomHfYZ12Resspk0ghixCBSEmBQFK82ks09mttRB
saXKreT2aruv1xfjmuplDi7swtnqacq/bipYXqkoINfuBa8s/20OLbYafMPI/lvF
lz5kyCPP5juEJflD7TgI5Zz9S6X+yD8/fKPqixMceUGMlLTXemJRY1WmsAYiY9q5
AG26zGXOeEpnl1e5wllXLE8fUBguzTu9V5IBHg5SYao2SB6jPNhgfyvNeDX8/bs3
HmriCfQTp0cp6tyjo9NQVgW7OXFHpgBn8e/vSgeOkcOxdX7rSTReuwM9ABH52i3/
Ef+LF9Nh8AGBiD691ePMTcLFbT99zlvGjJE9sVsGnJUU45CSw3Em5/C7gpmyy5y2
V02sANo9p9qFRyGY5xeNXSHLOVD7TWxt8fI157t4tLpnOp+VIyrbxWg5aCv/T7+F
Lhmdao5lLy1EMasAxM985ncMSIhHneHVBZ2k8aehDIkKi7Xms3JMu+BFWgvS6K6p
FG1LUCD+uVKYzOn1dRvn8qXDS/sxPJFdKTCGnuWho+P98vCg5K51ZO+KhXW9oLO0
F2kkwL7m+bUWkl2b2LRZgkp8ZUHj8YS5rR967wZ0hMIptMvw4Kt5ynPIbMYMrAXs
gbJzmfRakOEk2aYkdGluo0Ih+hxjT+mrSJE+k2ng02mhSJ1sLQhD0lRpdbhiwSeW
e80rOzLDwgnqycSKtYN7RiP8uo8BkwO4Hxl3J/dKgNx3+T1gQSWeJYnoT2harYj8
5piWT6s/JrygAk13sPO4xy9xsco2aEVQgRIyH1eYOIcvt4Ud0+rGYgWoMgbVfrnR
Zkkvj9cXPb/TEvrnSeeAn0jAtNj9BzBYtbypwhqAOmE9RuAZtu+bsNtHmIeCwCrr
u/iMtTl/pObp11Fjrp5Ke+Z9xscO4PhJ46kLmGY4ibhupMDXILteMSM3+NTyLtPw
eYOvQ8+tnfg3ZvTa29/MhqhhbLLsLFZfPHHIa5jkb6/1aMrud5iizfn/Y//Twb/N
XzcQu6MpPgTAD7try0UvHmpC84PzDpnuFLrzyZV2DK8XyLboAixa0k9KbLJgI9r3
VQTUOpiJoA4irVv+BZfhkToeNfn294buPLD/a9EylNl6YFOpoeoH5ekXv6OCZE8r
TOKip9ccf3gppHGmT8VZNPoGEXpAXBq2nMA18DF/fh6hccbpRHWM0yqrUetRAaEl
1R+KtO0s4I07TNH6MJBO23FPFGz1o6gRTzM+KNI9mg10sbl+6wjQF/B4E4a6jKg8
fDd6st+bXCoK1GSFLSSsp/JxSBlwsk2qh7UR1dRLFhid2HJFNtcSIIXDoaCZZAEd
+448UYVtVHbDkT37os/KwzYUv20S54+ZvkpoNRi71QMXvmMj9EK2b2matLHBU0Bx
QXZOBZrx76K4XvCsWZTRIaiODQVAn4IAkNzasEWe8ZaljGqTGFsD8wLL9qONCR7/
cHY9W/snWN+Wl1MKcEqwUaNunvJGuU0+lEddRTVAYdVQIHUlAG4BoK1czemHSDB2
p41OtTzzkDYgneYGRzqlb+g6UE/ApFW7AuGXBT2Q/8edwKa8jLt+mMkFo1EYd+9A
ZoCiFMIJ5ZndF7m5L0IMmL4XzRM3ZbkPa3yKaLccvPSxyq/HuCD0d7VLKH4oZFzs
72RKjf6hRWMVV0qsFYnmwEMxYM/8ZXSijTynw0cVQRkcJZ+jaYRenefOjKInWl5B
wDbMeII8Z4T0URV4J8qM8pMiiZXahAKlCvWIcOl0tmEPK/Tvy0a8wqsBtY/Zeihl
5yPI8ohiyRPCNI3VWy47Dic39F6DHnp+WUtc7kNwUalpJkAXZGfhcAz5eyGtNktV
1WWS0jAJL0IadtmvSeE7E6gcYLWo0IYTf68rm+I8jheod3Icsqlisv2oTNKlctua
U7AEWV+E96nPDkz3Ze75QujQHuaD8rngTGakH5a71qIRHcUdnmwplh05TzR/ANo4
oVoph7+2xbAAkoGYrgfFZvq2WjyxrOgKuMncTzk/GaRD7j0xES0THt1C9FSrVleK
2mFwpkn9048BrFHgOrmXK4h+3C7flsu9LcCultTRnHkWUfW1T7Uiv/BhpVEtmufa
5OjX5S0qXLvxoHHiZ39BuZRVfCvQGADgNpj/v+SRUt8XPfR4P8L7QVEupuCFqhT9
+4b7mLdcSOt6W4bG9xPoAtTVsFBYNiRtFvRU0ypg7PaWU8kNi7xuYCUM7qO2f85v
WpS/XIF3D21blsY5oR4xTaxkm/G9ELZjJWvfqtQ1nCANO/XA3zuklcqo9gS3oM3w
BFk4AWxc3PcGXsyd15rjosDRDONTBBoVH6+eXvcVG6svkiBKy7e6mdbp+sRA1GtJ
EmEJvpl/zGocBh1J0uiPdGvCfG6RMSCtrdO7LnPzdhcO6zZqHJ4HJgVirZANj2K6
OAnMOPonmd79SqvUFbHAGUfcw9vfW3mXAkriLtTedrowSDX03LT3ku+dw5L5MJHL
lyqTfDYUHnYa8LA0w5PVT7wCjtpb48NMLABHInENiGndr4qXIRWCfIhKl/4KPPBv
czmyQ/KYyOvAIUA0wgptFZr8ZTogEB8XhV6tnJOJRd9Cd+nkjGaBOoZrGY9RaA2W
uD9AA7tKdDABSyrbE4nIKBgUAla0tVdgKv8Lxtms++R03IKrEexQIOOGSFQSY95n
mx5D7QmxNsyDk8BXEmsAxzr1h9IsrO4RNEuak7jq3tzKS0Jm4PGJiAx86paFJLH0
ZG3Nwq/MnIQku3/0eS3sLehymzGZ/AjwUBBLI8GLsr+3faSBu+RGI9v4hZ56hM3t
7hioc+41OwWb6mS/uSJq0jq03kTrhKzHNrtJ0bfgKf84o+8H92JJxxZDmrOG/d/x
ojl1TbjaqYRdVxM8f0m0zZH0mFStjNh/ceOKcj5kd4sQWCNAwZWUVjVMT5iN5Bef
odEKtU7ckA3QZMP9dazoqNrpbPbFe9ChNoW/Efd8WM0d1zaPWR51Gc6E00keUmLW
dtLaKQv01cutndN7bVqtVdc/634MnNQqDzBk2cRoKqI5uXcoTk3bf68358LERMBF
r9VXptpPjOubSfqksVhaog9ozANAdt6Kgimz4RpdvG7Ya7fQNUyu5ykW4IXJ2Y2c
qLEeFqcdSrAwsJyvknIxbRndeghLeKBNfs1FjPmWMLv/xtttZJfXutyyP9BqYdco
olmjypd5m1bga3sGLDxXj/rOlPz3/lkKB6FIn3S03nTQnM2WyH8Vi565AJ0tdd2P
0RSdJ30moH6GPqpRMWSrqIJCDjx/o9GMmhGKbiJwWBl9PV564ElHHozE8JUTU2uI
3wI8DE08M3UsnjC8UzX740Kb7JX0MI3ovkY30HD4vgsea/wE/scznOOSsPfrtN0p
t09oTpLjxajQCsS9x0ojdhjsNw+D2MZHTmFUrAhpIJVR9ZGrGlZAyt06tHSeEr3U
+TVeCxvz/9gEWwPpRP7S6PObesyXLTJtW+hqe79YdmGcxaaAVKSPBoRNh/3K6l8F
LSLelV4sf+Vc3WakDRjfr5PNiPOhGjxO39urF0Ux+J9kOxpTBjD/5+L87nWR1Guf
30P3wghPkADBjFB8AgVJ6qCQQcde/N3RNVK7WPzP1gFm6vYoUCCi1P1VHGMjdf14
7saSMIi+4pgbJwv2DiMOWZ9QZngI5dfBWAnosYtVzY5i9ZgmoN084V2lWqTAEChV
gnp0T3eexu+7Y6sTXzNH5DLdZg44k0CWFP1QfcRMCtevBnTC3rI+tFvbvFsfQBUN
E9zldUECB/DdXd+MpG4tY7vturaBBgEb1tGJOvgMsShHgLz1k11U8QM122+9pvik
pDo1lpukjYoyXopNtljZ25WK1V6cTYvpQF5XMQHSs8yVgZb0QViE5OTIs10AWCtm
qsPcp/k6/+0YHw949we/17jOABuf4VqfzWep5fRnB5V+2ZJBX6PDyvhjsr6ym+05
qanu5WQYy09ABmYSo24wLhpliruj/jLuATze+NknoIFVUDrHPrr575WNGKdCvHe5
tSI2ciF90AXRx1hpvsQ1/yg8t/DHmotfWiyGhe5SAPS2f72TmVnET/DefiACx/U0
/NoBxN/3nUdR0VLYjZ8TSiKfGcW5hOdQJIwGrHzMWbHEp8j+V2g/gVqFDqzUGHyw
7ThVJ7nJyc9EH918uh3gWWxl+hsqI2WlwXctUZQRBj1BC4X8cB03Ksbp4/1PbE24
vNssJA5p+JMwf6Ih7cNu9zJ4lUjT+m1DOx5WMRut9DgBZM7eRGIp/3gFiFZCas5O
vJvmNvLDZzznWQg7UwODn1Fg4m+MNChPJ0UAXgi/xtGVBrQY8QQMR3lDYyQk+Fds
XZuDOGef/PFzWIutE3iUAlspqbhsrLHgSF9SoSTrWvtPR6RqkyiDH8KmnwSW78/1
b/0lU2PMJ74ryO3YdyuUVx3lJwU/Oc2Tt/tVKFD3ykQnKVfL4Cnpk9yJ022eDK8W
qhm31bR/TowkX/Zz9+6YgCeUX6+7LDNXk2/8tT9fJqLinwD6QtKytTm3ycUh5KXD
qbUTrxnFgItOCAmpUEct9f//lczAkEhVcmOHblRKackyHn9P5xJPP0qo1JO7ZpcM
WxRBLiYmu57CayMDgYAAd3/kMev+h0Pe0lDRT7SXuXNnSa0Cqpn3yvO43YEdfxHx
o+RRwP8ECAb5stfDC8hGbXSAPkdwA2ZY0LQ81uL7npy8cMgR/QAjR65nuA/6GklR
SAZehN5Wm9d4LplZJsqnfrs6cazirRQz432hvcviwwZiFto0MmBqkDupsc9nz149
lvkgc+OuJVXctJ9zQIuiag1AnUvdmYZkpemKkmqM5DtUOzhh9aAhxfrP7TU+Iv+Z
ebN/6rNQrPd+WKkLWmz8+GRdxLPlGZUQJ9LmxHrJYazYiE/+Pv3didueRSYwNf6v
xewOepfGVAwrF/UYGuhfydjOq9b4CFHPdmd/ezcshLRb/6QJkocr6nkjYTiprDTM
xKhNWXsO7R5alWL0882aHGOMntTB2cgR86sEcFwNZMM=
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
eWrLA8wpdbo3OijMPMfutcYUCKRbMi1GYu8Yr1CqMHpO2n3O1n42p/HNytQEBu8/
poD0kqYhm537V1zyOiGmn1C6YgUqX9TbzLIPJsiZDK7tRKDwMFPcim9S9WjxenJ7
KywHXWxf1MEZFG1B/8QB6/tEYgGU+hgJJjT4Jc4G7XY=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 6832 )
`pragma protect data_block
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
1sCqNLkDLkxTbmJZRY+kng==
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
qbOqIf6MjOwQu0JG8jONqdoSv2BN7ojf0IErrZ2VMI1Q6C1STz+KQ3fHyvxvop+1
GIg3KQZfeoKZlczDtak7GhO4pAa9nviCMtidd7zzNL6AermFWxarYyKPPQNECt5j
PtbL7anWwTaIHvCXnQPCK4fBvQEi2ykaHML6qOOHtUw=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 29968 )
`pragma protect data_block
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
C81Mx6xdw57uXZmlllOd3w==
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
Wx0fV/YnQxwFAvRLRJswRNSR2h6Hlr1bfwMeCYEq6V0IAxnsi1oJN5EtK+CtmAIJ
34/q1WNXeUyiyYgjvPtRFaJXGpP3ivDofnscXZue82OD93rK26EIsFMb6cEXBVRB
ViMw/ZETGXn8GzUQTQ8E3irOzHABlq52xpwAJm+6y90=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 50592 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
VIk3MftzUG1yzD+HSUFjudlGZhAa86V/YPyB6Jimo1XX1I3QbaufeswiH3Uenwt6
7Gfk0vLPxxu+T9GF7sYk8Kji66hwFpQKyHc8IGNuinsQhQUaj6F3diviPweBR9SJ
yqQ6WsY/T5BZm1oWio/bKAnWfvT2iaBtEYf9lx49wng=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 5088 )
`pragma protect data_block
0RVgpBJJHQVrsZ+jhK2hGSoHSsCDADX2ub0LEJ//lee1mTo1KJyRQ25h4mDLvrke
nrQaNKBe23d6POM0II+CcPd06pcSinj/Fc5hi03nsRIdjSh4LB29UlqFGT8jPEpP
2nprPB8JJsaC+9BUF3AUBgr3qqAYsQ76EYDjPBDqACsQlOGzzclGC8FMseo/IDPC
CYGvJdj2XOsstyqWZvP4BeYVAFvt+oElMrc05IT5H5/rLicwFRnQf15RSrgMAaBW
YrAuFSoLl4Wn2Gl/CgEFWK6GPImbhf3OCZAei6F/ewhuyPzUcvRiBCK+K7mP7z3V
NfI9p3sDH74Nr8qlHA+cxqxi01T+y9gRIoXKBz2lEj0tvL9HKp3lxwMJnCYeHCFF
2b1w5EIF2VLx7Nw6h9OXV2UbVrTcFMRNXrUcNpHXVzXk6V+ZGHqAyfvsgkf9pphK
XprW2bgu7iRAx3BjKmK7yt344Y0/WERniMNxouJMIvNOUoMMGQoC3QgTCTrmMrEL
zA34F1gkO9+H6ge+OdFEdEuVMVcAn7N2ZRU/7MdwHnNA6QCFEVW4OyolYsnGU55A
59KS1xnFKhWV8edZkdQc9PkFjLpjqbOrnc1hOGYbBF0sP57ItwxpDe95Tw5yndy/
aRxbKEKFSYgcvwaHSALwOXXEquwYukrI/6do/xaDfm1Lnvhwn8XctB8VQO3BsHMp
cgpFfFsxGfxovD1sf5jHpt7UxxuV2EFV0IX7Cb4FvBihfd4bmQWlCXnyytXQp2qP
kAAjzgrkfLUIf2CMG6FY1r3hQFPOZwvrQ2StkYfMNO2vVc1xIoiG6mwbLr6OvVLs
qz3zzyKhudCJY2AAEvtA/Dd4eckvd1glBTPLMAbz30RbLGyI3vBBYN4A8hRdxOIe
9RCbYc6nt9uNEzoDbyK1jiYbGrSnSs7Sv4FqZIo7SmniYRoZhqH0Z3YIa+AeKzVj
3ituc2VXbTu8aWu236+aU5l11xmQnwjCHUF8fBYTtWCi3rcQvf+bhirr9oHk/g16
DWibk/Pyfxg7a3IoIh4x7l+aZYlZZ7YVeSg0i3bWl1MuEdvLS4WyTIP1Fwev17ti
T/y3slw+hWltosNFTFntn67jVbJ66/CigUmfwbpspPllmh+ia7i2pYUZXiXb6Dos
yUa1q3i4Ql1WpGrlip7AEzEqZkwbzVrhOsRGh0zYOpq5f7kd5c1ldI0MS89yLKPO
CUHydYJOQXmY8KjxnRejPvJgFBEBlDWQoia6FgMp2bSEnvQHdEg8GTXR0b9oFEn0
5f2PKMmh6s7+DJQvk1EhwPOrTKRN1HpzXGVPU/bah7q1CGhVExskmRDyrjDs4aXW
nU3Zdzj3ncboAcHea1k/OnyOOLrW5HFuxq3rhqarmosChvny0E768gniktK3u1Az
R+ltBSolYTNINLp390wJlUBfurGVeENNpmoRF8tFK5jxkv0E9ND/gRGAGhOoqoON
EKL8VbZKv0y9UQ19zPr+ORDVxoiV04LgC60774J7paElHQhipJXOQhODiSE8gLrC
V5xZ2ocwvAWsvU8GC/LLRiAg1Wn+76V2d33s5V8t7ouXQattQ8ukiIZC6DTLHT/w
nfPL8ihFM7NVPsG0vEkKfoUZCl7Z8XDrU0JEcp5wDr0FnnLtgd4qELAdd29/E0sf
gSnHqR31PldJW5hxSjXn3UldvhWwp6lpDzc/AJ6GFJX0qNN7+bP4psh0ixH2BwyX
/GA2uy2siI6hNh13YiBCHyrXHeFjiNUhe1l9AZNmhRvZ4BtTNQrFja5OK8KHKADY
rjc63TSEfpiFm5jZg5nXUwtfxtxhFYNzQ2qnMa2dzRPoIbsS2B1oXf7CbhdHgkyW
lmZ/xkQKdE7M5xDlM30zzz0ujePqnWPYyl2KkwvqxLFHWhciDxOd8Z4Ui9o3kaCY
9knv+bLIkFqUa7bBQYveZxf6YsSfmnWkPBAunMp4jfV7Rn2YvnicfxeTjd3SFL7R
zK3OdCKGsPNZ10TB+GKhx93PZXzjg7npZJUO2ALdRf0PTSLGCP9vTlq5PbsQhZzg
Z/XWo3qWwVZNBOcKrAOqp7T0LovMb6qaIrLciN20VxftbL3OvRghytFwlVJ91KPK
OWVMbYCZals7aJOcBhKW8JyUuGUxB975PCDzlJN3oyqfsCZbAyKknxbi0mCD0xEK
m2JoNxDN7moVWHLLhr1swI/+cWgu73lltuNLWDowvDNe/2zcqfMVEsx8dVxfAoAx
G4SHH5G0qv2ctHr4D4fss++vmXDNjXSUVdCuU3Z1LgC/3lorkD/U0pNgXCTD6ddc
sokunoVDl4ZShdSqmV/lAQv0fzbVwDtPjU5IG85SPSDRs/fSOZCf5glTfuFfEVIZ
uE3sUIlfgBo6C4MliwPub5ry4AU3JIKlUfcgIRuFN07G48QSpkTNHe+udTmPsN83
CXUQMOXFDc/qTJoqc9TmufoqM/P5GoV8tG3YLRJYYCuPXVMlTlYl6cfAzoXUy4H3
D2BkOqX2k1fynjp7L7v3i/QleYWRHJRcJzPA92JqAmHQRE5lmVR1WFgX2z8yGXtT
ZtS5GpZZwknIMF7xFm725hBqQqGITBV/t0QxxPil4uzEAfF/C5xdR10MBSgzkgHl
oB6KHWJsCZoOiyuggOaCXwgpvgO0xp+Vpa7adKgRrEj4T88XLsa1+A0sWk1C8g0Q
/9b75wyRwfLU62DF3zqeXw7XwHxcOnZDFcWjEJQSDDRqVeo91HUyB1FJa5o/Ic0W
DTxxffP0gR/ALbcvn8Mw8ktwi4ST6q9IFOgbTwdw3kUUHVGy1hA40jM70PGLN0ai
BKSCzWZCwtUQMYHQpAusB+byQwawjSH+xURKCyByHkoOLU8NevJ7JmrCHePoqmdu
a2sR3u0bDNSlGGqncafscG2nIUV0V2kzOODC6J67l0SwLOnkQXOSu4cn05eClFrq
frBqN4debFvjH+4YfsaF3BMTKXITcp7F3jvqcOVB4/zY9Qj3y/DIe5eDT7yhbbvi
S8+PpGhg+AAHzL5I9mqkx/17i8fSYHeKquZkgSywjWBuhJun0/vrymRhbBF+qJoG
jKxt5apMG1yKLxO0BKi6aAVWr/FihXEAvqvc2pVYdeh+NNPoFabOWZpSbt2BjhRe
c2FghqMPSanA5gHFNHI6mZA45pfjyzvuzSpXZBapSNaQE0SnfwD+lOxIZRGxQYvh
sOpHq9D4RMWpc07Xw9YNxVI8zwDiWVHCGD3vWxaGknwjQ5fHQwevsh6VBvxwGNia
hntv8UMWg3yV5gy7vHSu6M2RVVT1+ZfZ6oyzRKVdkcdtHhjTYl3jE+dUEi4aw1U1
jPPqyy9LOEZVa5Lu5e9TAadQ+IkKuZQOpWatP4SNZo4y3e69cqjGpDqVBqriW6tp
3iXP3AuKKOEJ2xQkyfZsJi7MjGApajwmzzwhh/GrPYapj0QQC1OvL0c4PeuFY9bw
3yq95O0Kd6vq0MlwbbmwGJ4m9WvpWRS1Yx1ly6a1zQXnFmY0TGOyXfKUJZDdeTSQ
w15yy980WDHpEEf0eXjjTJBrEcpkGpvPJHglT2YldCYRyjnrmwKzPBGNjfvAOd41
6bZB5cA4j9PuumJ3R3yfz1HkfqmufOsz1gDOt9WNSDYEAIpjrSAKYjdV2pKexccA
iU90qv7SLJgicfXfpntSiz3R6PixpwfFI/3HEahD/075QZ5hAKD2fl8p4PjioLAh
o9OC1A1Eth0b/fx/Ynb68F1U52xStzL/gohDEI0zTwm2dKe2xgPAZmmTsjbMqlj9
A+Ji5sNYkPCrwAIw54Bswru+1SL7pq8/PxYnZpNeIR9t5GwNh30shkDBESDGNS84
eRyB0GVGHYoWHESUVZLJKOkok3GN37sQIGVxSK2LbWWho+1tipNpfeKicEMIQH6s
yk429OUOH5rS0LbvA6vUvDmrcnT4WjSiGt9uD+Tq9G/PbyMp+jgQ0P9eK3Uv4xP7
/MjIhJ2V4jt7wm24iTI39Xf3CZzpNPOzv4sYlu29d90eYG90LE7UcgZ/Qur205dz
Yn/eJFLZ278/MpTotSsS+PBNLV2ccB61Lext7OtfjvJYTVo7EwZU5jBJE30tlj3Q
S23FTXXxjZcY4KJWjg8p2JjynYrw+y7NqLVnyXtHy73r18ziK2nN+dGpOrhiUYt0
+r62pqZVsCuy9DjGZn38AwLMv57ZRLP4fKzdbjlC+fTldJYzX2l5sWWEwfj2+5TX
U4483CvDkMkWVV8V5z1mBsLAWPopCC/vL8RylwoFylj8t2uGufo3169+OjdGpppN
e+QyivAaNpnlf76Yj2xOOs7mjccp4DqQ0gtdIBqyfaHc6sRKRypb/ylJt6kB5qZp
kJS/lMNyCt9M/ZDA3pIdPWmsPUROOnuUR3UwKlWR0ceb64uq4HTs4fQANyc3VEDc
EeT+QXwskTC4DQRC5PwLAz/+HRfxjU3kLK6FSfb44YMhwOaF0sa0CfoqgVDiGoas
1BjleO70CQK/Ccknc0XsQJYbPtns4WGMOhgwxWRYWDRhrJ+oFR5JUsiEjXCuFUS7
w1buF67R2xgJOIHFKOxADc9TK16Xv8duYI0L6xmaEX34HiYMm15YgLPFeKkST8mA
mH3X5P9OQfzPipL5d3d8J2H8rb0dl293yyKefLbyGOgfEpTyq9HMhOgr8kuV/U03
NSCPZffslvxwgPpYzi5vO+e5JD6BGWqdod4LMMQjb7nZpwTNVC9snYXI50kyZeVI
1idD+hLgOS18IjGs1EkPVztUvlzWq62ybS62ZhtTighve+nLi85j8W4+Wve+WvlV
/l52AFbnOG6HXReihDxj1SCND7WHDM6OgjXTwa6YfRT+6irumhsGoPJ4/cK66XE9
b/RizHLSkxAgdtjAyBnienujmm8em5bOM8AnuEZ6E2weaw/60PHG2OQyBrTEhcih
zjOlVc35iWVlzk0WSfy6J2xpm/zdljH8PkXzQaiXpo9ZHaGpEgkJDu0w1C+69bfI
Rf7ar+/XhgDff70gG+3mXxkfyvfuLNn/X0EiVGgxYpl6g9Sw2fkeMupGDPr0cH89
gf2mjKpkZhQRYD88mMdDjto7guQAplNGAfjqaE/ksL0qlM7d2gF/bkWS10wE/5vq
FvGAaSrh3V4/LOiNVeCjz11WNm9+fQgZgZp5jt8C1+5o/Rs2/HZ7xsm6NLD5oOvf
iP+mDoOKldmhA2hiPB95GpYB3tLP5bggy4ghUvuTjMWDP04qQpmgB36JHXKkS0Yo
kpAzKAsobZm37hMHFUBXQ3SVbajIOygR3b+Hkjs1DjKZbQyqgcVzi/mcCxtxmMGX
+BjFDZg5L83a/XMDZk6ty64aHv3dP1mPsu+lh4XZS+jOqWjojfNeOtH1g+Isy9F1
L2u6I4PdzicswKX6kL41geHfiuuFwdhCjcYiuEU0L9mAlb4eUUhnAlzOx2YQZoHc
vLRRnN6Aici5rerqFvt2DH2CWAN0cWRGf9fL8WggLFAYtj003V+CaWl1BIzw0dSh
XjD1uTbCS8t72NKK4EiexRajIfM/twv8fycS0DQn6sPfw5FiRp/3FucNZjPRdUCF
5ZS0CC9rQ/Zj1TIuAp8ay9EPSMevUrEIPzY0AbK3PmuTYzTWjBaNx/YhoNyI0FiV
a5znwsoInzfXs5ndNWLN8fxA8i38rfwuvE8HwjrxkFc7Svuq8W7zw8KvSrcsQJle
nw4XB0PLJc/iwrVrHI5sjAinKFsGwMRnvEzW9BkjXhtK44pqJ2cowf2YgMTySnE+
ojJYuYOVccsU4r0Us2jRy0lmqCvq9zauO9v/OFEgd9kH3hNpOA/jtkJrUnKp2PsT
bYg4P7zeQOxRnXBkeL681e10ij1zaWfZWDBWwUMnsHB79KJiT7jBflLC0sTE6Qi/
IrvCVKvxXc/N0eJlRH8sAThyibyE8ahvRkwpCEIYoSBDCxrTDZ79W7JYptghIkP/
aOMNk6VjK7klhA1X2N2CFBg5MQjkvCPEAI1zhF1WeloMReUpWm8Nahf+828epwn8
Q/02wP2+LYR+7b0SmK+xmiEInbaZmn1crCUbwq3GFJWfSjma4bVMvtopkxNLBNDr
KhhPGdRmFB/Ge1wQUUlucIyLYD47dDaeDXX0dEp9TdvphD/mILaYwFaD7DpJhJR6
5nyG9vmnRZzge2zhBzmTKozGCTiXKLb45i05sDWRfo2G2DPLzkobm9bOEPnsYH/y
/CDFUGDMojNtY8fQcZfRu1qY0z3PRRnXwe6NvtxPCiJ+TklVrf/5LkEDdqzE6Pxs
g/RijYxftP0lSnTqrjD+VGtn2UvTZUG316pvdaFffVQ0N13cQ3aa3sQByZZJ2JIu
Nbyj2PPlacQSEN2pJAHDUle0JAPPb/E4/BihEW2O5A6J/a2B4XULo8dtwA0IygrO
hcw9AWoueToAH5oVtrncs9qrotKXKs3vVVSrTn1/cyqFWkc7f2iqGQYWh6dSaVU9
1DAmcE6GxRxXLjup87LX1sZvu9A1Sl7L7wOJUyqJ3KDT5POwaA9U0kP8okZ5oUgY
c1JCC8OCGPKLpMWNoGcSvG+7LSYUX8drKLRJStn3nr9/oAA+qF7a1XN3cpJxjI7U
9CLoEzaB2rn9bNs1VHnC2LGMts1RgNRCkTOYJcQ7bV4rgkG4I6X1xzRWTqoetPpX
z8Cytka6j3D+JS4x63C0D/ShZSsmBMAgt4cQ4b4cUFrxLxZVjQfG1LaVMQNi6X1W
XzQjEbJZnAuI4EH5AVpewHXyIKa5s4Fde00atwY7+LBLUMlwmO+yFyE3PS6alOQv
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
bYWJSpX/mXvxJ4bUKiF2XAU8GaXksRdvYYaHe1GlRhk3CmzrYzdx77YuD18ZzhjP
UcqJT3slh452kVv/cBFF+XrUupd2raAS32V9qsGrZZtXp7avrggchoXwryzJUC4r
08dMdEEY5m7Mk669YINSj/ovv7BKJZhV6I1nHXboKFg=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 5664 )
`pragma protect data_block
+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
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
PcyspWqEN0UYWFWW+dU16FNBi6TrVKkPjw7hJN3Br0nPN9gzuGz/MombzMNMR3bo
nYhE1fssfPrjgbiUqKA6jNY2D3M4IqRTzhdPftopGjnrEwxpWkU59TVuqAz1VWxM
KVPLTHVytzO57L+iUd1WO4WyyiQBMXEL6Osrx7QVNtA=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 3504 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
KL4BjpxBykCTbtDcWuq0UG8LiDQE6ZyUxWy9pM51iDr6dwLgh8xVbK7w1AHjyOIN
DWMoUcdLGVQ3TiZAhmQy3mg8DJzXTnmrklXiGOPbWiEekUVhRog5gZk0vfuJZn+h
3pPvyNvb65d2JnyFikLI1nIDsncJv/D9oXgPSXo6lVA=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 31840 )
`pragma protect data_block
206psvShA4VTs6/AgA5uN5BMwKp9xmGlFFmw5yoqzERy2222SppXYaty6Bve20r2
wUK2LGCv2qLzPmpMoNPt7ZJCUkAnqgu4hmshQeUNihsPh/QopHxBlOSvU/0JCMvj
T2ePKQgvfciMtcuMasduHPhbM/PdtP8msQ05wz5AK6FiNyq5yB5dTUh1gBwGsj05
EbmkZ/l+2uIUYe8aAkDE/077c6HTND4usLHxu6QkmAzXoHvTNVSp6UVJX4ZkeegZ
m5QkadQe6G2z1XzKwOwjyu35vFCJ/TB77Ol9Z9i9QOuYfmhNFNNJomjlHDzsfItr
EGIsdaHLdYnCJi2n87GkTq3uf8XyIfck9ppnCsPqoZs3zzDRIwdcvsk62ui4ocZJ
rKEkseXs4VkVRRDKwGvKhX1nutNi20hibX0mnH7kvNyUsHA7veqwPcckMhy+DGoo
loaGY8c3vCdAWyZmQKNGCeJQxEFKSblu4r6Syf3a8Mu6sluC/EAlJNZvyLCCKHc1
aO6/jEvIfgDcvArvGEkWM79JJbcFaRwkOy4YV7VcX1gBWB4U/0u1sud1o5VtVVJC
GKgjiERFuJg2jOSPaV3jCNulvmKrp7VZAr2qeFvFWsXykFvywiKbCMzizpUdmnid
7kOxh8YLbQkxf4lsRnV6cwJsE6yrpii4UUpfZVWo8SLzdijr7Pr7MGmpRV2OsBDM
eSyoIokCDxzP/pal4I8WG9Z//0s5k3Af3O9CL5ICa9Un7o2jwBFpXgO4pHsffEup
syw40SKJcM0A6nJFXhpx9RzVYOPmwLxb4R51IgTc5R3hCB5brEH3/nHVaZNr1NFM
9sLBn2LFImbrVvSCCG4MzkZBDO/uMtmHdLjsZ3z2S6MWn00UK4bp0UUjNxLoJjJL
AEjC7fwXDKc+moI5fCeb50RMdeswfZQOyxxwkQBPNxRvNHcOOoTmv9OqYVYrlcX8
1xwMLv4bIRpLr/podXqZReQTpqA9czzj3muxObAcJVRTEkd7J3mGmgL3kG2YHI58
BC9tREIAhdQ+jIiM+a1Mfo9/xVrgynbGgENG0/I3QA1nj2z4oEATdmEWZ9rP0L+L
8Prej9mayzUGCYXyiSw+SJlVExTswBQ1m8qzIE2CaMQPBbJ+ekYqh0uePZSSyaqi
4cnvhXZVcZGw/8ofAnUg7CwGiMJcpu/JB7DH1gW7A8httzEbRNRZvMjv906Z5knc
9PKL9vF6fRwfjpH3kryBS0e/KpPmxdxnQeClHvTQrNAZ1RU3DNcZpGen766uVAuG
9KVC5sisHc9lq2Z6JGg+ScSWvIcHKHkfJe0ahUut8fR6BDSDcGPp1pLxik4xUi55
Vb+Nam3R8gtB+hG2ci6iOgsxqIk4PKKPqlSjnNha+y99wumZCLqHsAbe74t4Xp4M
sZWoqitxYpDtyxWIKmSEpL0/JOoIW10mK6KbzAOkE5RKRU6wGVQ5Zeexl/bT8154
k07Q7RkQx+5g9KjOJosPerCvQUNR+mznnn98lToLi4R6jGLTJwZSLpopYycWrbPL
XJCcp4w2jqfiDc5l4W2OLouMvSE8ghEaERLllT34KQ0mYclb7LANh4BlxGrptWyU
iZnLdJJtm3DD0d39NPHZLwH+bSc5plQkKl/+G6m/LcJ18Mi9rQwG1CFRX8d4sKV3
YIZ/Xy4dDSBps2HUjkiUPXAW07OCn+yn+brTthBNIuBXmEmZ3s3ysN+btNT1l10Q
xf207fVknoTj8mI+U+5OX6aJC0whz+E2iOPi188MBXIZm23R0Q+rknn6jtPzatcG
/r2DgEQHkU9uaK4QNfmpoH+gSXc2XnbRvGgxNi5T0f1txjJ9LaIJk8t345AmVhAq
K0T/rEph968rxBIyaAvdaCCQwTJCxtcnjAhgg2xNmus4V9tb+ihGB3Ketuti6FhO
TRkXnI9Vfz1PTbV0ymlGFKDaHuZKqh5LzL586JKIGAUocOxLffV81sz0AVhpHxoR
G8dl120k8sG3M4aTKhnGhVS6fd92JFfUATFQHq5yrDuJ0HhIwZRBCYeLX7MLRAKG
tdT9W1g7noNx0sp7aVmpstnNSaXqz/MoKyQwHfzAbs75l6NINBl05SDkAY9/WrBn
rILYIPF47PWKXMNPTAT6cDkicGx/kgck5I720iSGSKSQKG4DvO5F1ebiTY2dITGQ
UPR6wDwKnUvNkCcMho2xwYpUYb9zwlld4EiwS4hlWGhX3flnWDlLarGAwB2cptJG
zV6WqsxroaH7IOXjlrg7tSPIhH2qASIlvXROyrIgtV1T2G2EPh4BW9HhYK/3gsBO
ollEzpfbOJUMS74Mg1Pc6dNtTEOtbuFh4VSDvrswM69KJcS/Bcy3wVL3RLDMCJLM
QZPlFLTt1L0dL6gy9h0onDM+phD3aAABQ+hquPay+kiIoBjE7D5JOONKEdZ2szXv
XWLanYqWdM+OTfKpmDrVcYdrkiCtWp+Ykx65QmPef5q6COx/L2JsMoJsrxdq2M2d
3F3/c+uXePMu57vUQe0Yz/DKTr7GVfGsjAhKa2EF9PbhC0cdEOywRBzn8aPv3Leo
DnViQuVOK+6E9FP0A6s/MWlnRobN004gzvFoqF1CnzKG2gCcn+uLdn2lYUkv/1eA
JQZnh8ZXXL7zrbHJ+2R6h3N7JFpp0PFFuHpfLBzHnC+tijTDmc+J/OmXnkCGzM1e
IFMa86uQXBdc8cFXc8fTk9NfUfoawah0YMAhmFWhF2DLoKA5sgsbJyXvb6Wm8M9h
76wEvHYPMFxeYGirnrJo4erByxz+BpbuGK9r6jPIHZYM97tVMB+ffpRjGGfyKgsL
19CeNEqil87MnLCGEZN6tNAYWldHECX6iJ0apO7WzJJl5zystaGRNYsbRAEAj9Ti
LIl10D0nHU4mANtztZf4UGddW+tbokrKT/0Jy+t+P2QA5KSlcdA2x5P7pQN1xJ1w
p9iVkfzDXUWcwNI8d4JL/YU3ipwUqdoBSyaLy9n2OIcetl4zqrFOinANfjeMSKjc
UBUDRFZW25t+uBpu+dr0DRaCAGEyMR1zEYjGqzwu5OKEmrxMO3+Zbt4Gnb7FfqI6
6IdCpk7a42+gm/u1uVHc9WasSOAwBU1AokR8SWndvgHkQywLDY3ZfTBGhwDzzgum
b407sDj78en1TSmbOGZ74VUdlUlYclF2MCfCbUgZ4dpeEM5azba6T/E3HgNmA7cK
CUorbAX7FQQ4Qa+6b5Hwc/33qUDr8pQ/dor3MsYTBT2gxfQ1nQj+RnSNG1BFTZ+V
GTO0+/JjB/TQyvkKePWm/084g938wFNDDay60wF6+WDuXCwCTdIUn3DoC8agvW8x
RKbw1lJQRu0J24PVQpX01f6idPAHkfE7mPFSJ73Vao3lU2CSdJIQwZrJg0Sv9j7v
T7x7EaH8drrxAYUaINH5+RCCUlzMGGcs6tXaWUCBZsEzRM3hEZMmiPKawnsiIZV+
9dg1FCXtbzzOVdLlFoy/VhCLkWXEICw6CE/GevORDTaBYfYrjMLrSQZ3Myk+8xO1
etFDVKNzHDz5MXWb5Qc6DyRYsKeuNTqbn6IFb4Cb9XVLqaC5hNwGh93UeXsGj4/D
mtp/y0OqCkTuvmXAOTeRRR7bloao9hLE2rG6EH6zDhLP7qgnJ63X1kFwsQ5oWKSX
7SDJ83wPQBRnBAKdIGtYw4OF2AVL/1Y7n5AXROHWU88Mrz2SC6Y5QCaHhBZVuo/Z
hyOBLS5GQCb/EXci/LO+J0UY6B9b9asi8eKroiadaTbukeU3oRhbTp/i9pCBUSws
k7N9BYc29Z1IQJC+/AheqVU3F2V2uZrvJUL4apOc2GU11rYq3MlPrGTFWx26K7RF
BvXdyB8c/ymZqayAXmyf+FIZ2nsFtzXMsFWv7dqgMSCZor6QiK4672Qt3kPq6i+G
gyrPykl4C9qAMrCIqdGhmB53YN556Ywp/D9dSm7FIst6zTvpcyFgmenj9XpqbOOg
nVz3IQlFXS0IL6rhrqOJv0GcFVIRZ7DeQtwAWCVvX5mxgqxJIx80Vf3LXDm58kMk
i3/l0A5Eps17X5RqG0DOZ5W1nOdP7xCiXBtdQH2hYN4dh04FHNpgBftfY5fVLmrV
L/XEroMkNjoK3SHk/HoMj61ZtBhgFWab+lXcAiSdmJjxSb2cFgRUSmI/vuqb+kIL
cgC8WLgSbX0g36JruSO9JjwNj8IlJh+GgEJCiJgYl6XJK0KqVzNkQstUPnuLCFhQ
7Q++vxOatpMgY6DD0LdvnBvBjuD4Jpf0CCNls4LbJdUSpV1G+StOUdomZwLLLIpt
G3biZEUB9tA3/6SvkUHqVR3Xm+Qe08JwMOhBPmnAKmjiutYkd9hOasm3TKMRF9q8
BQiG+VG71PF1vmnFZu//u297VBHiT87K69ndlZ07WEWOMp8YR9ogpjF5YYNSmmfz
rEGGy39IwPQ4/9qgUlPiC/pkEhHTeOiV1iEq8dXdyHKoR5J8jCw8DcZiKFSLmPJp
J8M5AufiwG+IBBhOe2aH2geLsXuRk7ZWE5Yulxf3SWnXJe3r/08ppCdD5VMoONuG
DjRgrNPqpGCCzBliRSQD1IZtcApCG3c65zIISP/OytCBtUT1epraez9caYTP9nZU
XladBgAOWgyeaQ8n7eJskZNHuaTqEoMEeT5lJMRK8hhF+wkL96kOno+Te688f5yN
00P0TCsNH4EC4LWAH3I/wSiSWKCmpj04dbY46fbUkZnipkF1Ex3GhkG4bbce/Lm3
ZgT8CaSeWOzNwCJOG+/cdjcHICrPhuc9uxCe+akYPfbTBbU/BdMn/SN+H9UNRfQR
T19Dx1xcjROt1iLfLAqpQOnPBLjXoOtDBEfUX7jp7Jixp3/+JAfnKGShTgq7/p1S
VzoFxfB3kWWidPh1xAucm+W6CQjJCnwqTgWy8F0/F6Cl+k1av0UlL5+2YO+xJJHI
HUio0ZPWZEgqHL5s21J+WpZ9Np/r8RZIqJ8QrOoKwOZCUxcXC0v5wyJH/9zVvHUQ
eck9vC4HPsiDOCRHzrWcNcIkIbZgggJ30QInBl1cB4GdrqoDFLi65MDmGkFCmF5D
DLq1TL6gEgm3BmPTgH+209+NKNkJfBhLXNDXxMfyVnwabZkG3J1e+xuTPOPTZWSY
KaCRHsZSRqm8f8XcRKXP4yS44J6jFHZqqFYHVk18g56tdHklVTGSWdAbR9vhlO6x
FjaTlmDewwoQen2c1hw7VgbOTF5GOtRSWQI+M0erchACL6GJxe4F5F/VJuWvRwsV
9XdGOnLPKNs9dCQy1k5wzGuSC5V5m4kXkLH3x48fCz457BuMBb01uGmLTx9indAU
aTKRAMrIxB21xNfQwRnYuIP/IlhlvXLxoki5ntaZRiVWred67z/WwhHxLG4tiVMz
RreVDsU2NqQlv5lTX8GxAHVEtiw1f3to1VhL/VbH5n8OzvEuBxpdIlwXvW2kynFD
IqyvY5sEmYzGxHTYzXmN2c+6iIa5nogjHw2Zko5sECf3SMKQ31YdA1QYcEKbdLuU
AIDoYiYw8JNAOo/BO9Abu4oOWCUPQ5MsIr8zAPkwpCsv/WxK0HyzN5yWuwGZ3T9V
lQ8XK0fOjeyiHsQRWC2ZyAFHrS6GY59UP0ZnqLJHbCSBf3VXUqXHyuuGnvBmMQ6h
xE46lNtJa0IulxtblBVFIwE9fsyilfFvNYS90t0/98oicIDHmbG1/Vk3fscq4Zld
lbdWPt8SjPXuHtvyMpRDhvt28yowwLIjQ0zOAifi9fbbhjm0nppNYSq11UsENo7H
WOw9pzgNY5+xt1+wxUJTNa0cZndm2gxBBj7WnoNcDujZlp7L03dwaGbyLX0b9g11
znKxsV+pwYNpv0W7Zj4s+FD/x+R+8h68wYt8kYTUdjPbGLb3FhalAwDzgpL3LCMW
gaxs0kkbueTEZMdjZ2QB5l+jpks74kE2XNWJqfJNSbnq+qb0+qmx734TMyPuqec9
5COCKp4b1ErB4uCQp5ikcxTNjPRdxWSgIW21HmM7F120f7DlKo72fo+nxsU9FVr2
nGRroqpyGqmxEKQ+6zGNIQab/oyE6F9gH0JaBe54LhHlFF9oXHwZk/sE6U0oXZeq
sfzVcZ2xg88XLMTkQR2qBTVeq6hmeUd+FIXeaQ3eXBOUwF9JFdzyuoJ+M/48wju4
vCYSKwkbh118nXqqs9hFJY2CbZv6paLm1/OdywR4HFBNeHIPxWEAjg8trlFZJr5o
EqlK8qT3pxCxRpXBlsAoqSEYW4xyWP3ZkCTgzTUIe1cbNuZhQiZhSwNUgTboQzL6
jvZ78HfAbe9fcdAWxwsaVFBZl9y0JiCOXDmkltrOn62Zhs5NGCSBFKrHBf/IEoym
wS+j81gbvnxJ0/rfRxyM/Zro91+zeqX/sgTcLgsTCSIj+qbfmMLC3zNxtxpk/D3w
fEqWDKrRzcSIhjuHsh0QFaQIqkDjgrq+vvKXllVgsMBrgaQdC3Kgh0zVQawfxyEa
qn1iESqxjvl3dWbKDIrxEs2Jj2wWccndTL4mJkSg/e/1M7KDl06tvT2B1+9yGOyI
chRQVye7bhLj48/UGWQ6kPAt5U4Q85ObiHRawe0QZgDUoqwoEind1pAaCS9AiA/W
32hdk+akm3JTPil2ua4g2aLsybFs/s9JzQPI1nIh8PuFstqnp8y3YM/USh1+hpf3
q7waQMtrRpovcIXpxThmzXy5JZiKWtmaRnv+gujfd/b9yd63ELl/uOzdh1DoxWir
8PyhEDdIujb5CW8E1lOZulbok8AH8e1fQy8A5KayyzmnQ9zVPuEqGRIXKD3L+Va5
09BkJ5txBCyb84N7ClgUjBvflr5HPHYNSzxV4BvWX17NcpVFl5atv2RNC76nRAxd
8v3ySJG+7R4ehVNsjlE+ktNsiq0NtYOdZiFc+wH0t2vE5hSjlGnXtzpKHNUdRyBA
2kTnbz2KF94wV0AesEnbxx5hiWwoe4VZe3vQB3xmtZhwsHJNnTJdsOt626O37ZaF
skIJItxghFlPKkSmW1p61l98nbMKfLPxERzeIun5Haf8YFLJTrFczi06OM9wtaAX
sDVRyifaN8GlFNkYjuS/nkBOsP7XtuRJa4lhDT8H1q2nwTx4kQcZPvSxriyx1g7o
i2tGJDKQVz7nG/aEFqbWV/SN4wmeULaSFVMfXRR/25h6okZfccdnk2vL84bKyxfO
U20H1/UisebOPREcX+rRIpn0+1rOYVr8MpQ7DNPKl+wFINV0ywcxzYCQhdVuYtOk
pjQfyXIWkwH9Gve+Mx3p+n97AjBe2ngKnphUGBmtEg+PaSYBuxL7OvqOCOT2YcVG
22GfDZyJYY78E7QzLqixCWY30ITa7i9mwPmuHWULpHsCrIZYZ6qUk2EP2F105XeD
ApiUUN30ErPrAP6qrUla6spSu0CWil2K+ex9oxTHachS+o5nY/RBVFELc+umTlrI
MhBHcaUe1vrTaPMZ0eF8vP8hdQsrHvNE0aGFS7sQXz3/NkmMzg5fDKJDYNpHuYlK
Zt+bfAsoT0pM/feCD5H0U5G6du65pV7zqDVJ4dYNcrof28F4WbEJJQcJ+0nR4w9F
pjaxe9C+2Wy0V16axY/jTCMVJ/wHPquabeZ8qpnHFwVsLeDUlpsGV6DgkNrElkza
IDE5I70llkbV/Ktl5RXtguLlRt0KYbF+9zKOBM4FVWRRwO/vB8VBec5URz8FSOv6
LkaV79EqSh6Dla1aonvohIw9dQKHQRW6shYPqvy2v5OgK5cQ1Rt/eWEMxYl2Lv6E
WyBEjkwgWbBj/gcccwqGuMpQ/S+g6H2KW9aBZVEXhZXVHX0rojAzLuMksoIMf0/F
Skt1H9PU7Eim6kKxsSdK8KTjxqTPa5FZT02WL7qMK0+zv8mJcIw+FWnkh4GCpVEn
EPO3J5DOKQQWkR/0IP4bwyyBuwFQuLpbYU7fHlp3Cc7stY4lXQR1dxYQ2sCPtYGA
mqYs0oc1g9+SE/UuPlN4b+l7/gE56+/JxLxJjsRumPZfNaNUQO7nCgun4ADNClvJ
jEd//+Po9majf2F0wvDygssQYXCT6TwbwXtX06eihYcIodHp/JWjK361fg/aWJPS
Jb00J65f3b8GdPN9f/Dubwi7BRb1QJEjLYdO/evMdxnAGdV4KP6M4AukpnIKwPY+
x5GdG0yx7Q4V23xJjf3YF9dHRdlJKW8J+z49G6UwGYquwQfA3aVqoHhbubL7gcgO
XRWWzkK9oKYH4PJJMwdFb6ClnXhx2pab4YcHuWrpbbwAtAF+yNHNmZMOaWjYYpia
gZLtT55sLbq0Txb1ormvT/OO9warzNmexalFRM/obxcC7m4rlM95UXnzM3B8BxTF
mPHUUOefXyaVzIoLqH6oIxvMvzD8i2ed/VV8FgDdjXAjZNLMEM6yYklsyY+ht0YN
7R2FoS+DDMmW1K02/m50fTWV96rW48/XPGXQhn+lLsOCfAtbnKsm7lO8i2NlQV5z
FvyEypzd3io5SyBXBIa7MDs5nq+GD9wcLzsI2GrFqz27wr/ElkkbY/HEYNfBwxSH
0l8s1wr7/5boA5dsl1QhNUa9BVXrgc/zvTjm5lzDz4k1qRs+jZoseRzhybYYASJO
DGNzzSqED38qIEgP6Cu///ElOJ325f1tIk86s+wyWuBIzuy5A4XS3KNkktzcUkU1
mQBweS0wxy1qNrU2q1CZoZwFm6aArDYs8ViWjp3LAqidtfjkJl27i0g079QVQ38G
Aald69z3RdaRSU/4dCXawL4Kipb3tA+eyhWtpg6v0TB79v0/lYEarXbPyn2A2LsU
rVn9/PoKmorgf/U5stf95j/RTUuzOS+sfbACybzT0nHKBG5uECp3k2kI6e3xvfbA
lYuz6cx6yQKALptIJvHkp//8mZjJQciZuWPfJRWt2OXAjOoXFl6AE6cZQStv/Wny
CYvlDU1HSJqbwp74ITeqDFLN7jsH5SQ+/Es9lIDGQoQHE15QbxAwBuykf77WYPpZ
DEGwYaCgI7sfO+/wUD1yeH9rWgFY8LqYMHxgB2efuCg2myaVrlA1+Cg1HhhnXj5v
yVH7fYpeOyognan15lDlb8OeNCeT9WeYO5TjdKrTqwE+GrDXkn9RChBEZbaz2W79
Jda+CXTL69MRZwxdcHgMeG+zKvBFv35zFlWrG0LBiwVvT3or/1/TFbG+xo7I4Xr7
cyJyWdlGRwirYXfa96CcFgA+Nw0dAleBqRDXpmc4VEYMsSMbEs+VQPQzk5xVhPuR
nF+IPaTXWFG4nC24C4VyA7XfXFhNRa33AAFGqUmKX+pYmF8iiZg10ko+7WhxfxjK
tGfDZSJXy1gJcpbDKmsdaZzTCLSYaiugdCLHnMAsnAHE6T1/QKGa6AcLZ4DfYyh9
lkRlAt7Ni5RzjOpn9mbfY/po1XP5LJUuSmqYnmH4DgQvC9+rSeTORIymj6HR3HML
OQSelDfGiLH+2oSE/z7WbRFkT18oPnBId/r+hccorBpT61RynYwhZp+zDr1l8jXV
7IlkOBS889KdnkAi7czuXQ/xv4UmqVLwvffDaHgma7BPg6Qfkbcfr8LbaB8X2inG
Q8M99KFWeRG5rAed1yH3wSp0NH0m1W6G1fXe8kjqc7nU6PPyA4VLZcKd/pdTzedg
kh4ezxCvE7oxsdqNO5cof1mbN+lVuXbaivCMmerGmeDKO5YB/zF9u0i6IM+wC2Li
I3M488VAAbMLxu8uy/1JJbWKIpqOHzVPp198k3lLaZ6xoZxvaaBKZA/QJ3I9EqHY
wIxGIIsiL/rS04XwreXUj+EypdoIUqD3IolbXjlcUpiUZbEXspBcuwhD8f9kbCSe
i9gvp2URIWKUgCanuw3JouikEZ8zLDrr9JopOV31MfDVpqMFKy+1GKqVuzYBN1Q2
S9UmcUDqCYM/fh4l5WW+xrEc5IGwR8T+bjbkjU+lQ/vpCVmCIgJ+Aw6hocyasW8t
kuqgXgus1+nOupvVls1rgae/sTcMdjURGkXbTfCunV7MEZOaWFD+TBDTbTecPXid
gIXIm+0+qbNF12IajlSl4Uf/3K7MBIXpXIBUZ8y5FJWKhSRsTzfxJRhmHtY9mYYu
nxoxIQgGouLznKLkAKcm8WxtwjB1hxAz9nW/HQ2fyfTY9gIqh3/krkevXyfZfh+o
HHK3nTYKtzL8HfUo2o4kA0BliI9luIvwp1CbECANyVEVR9cyOSrIbWqt3aeMp3M9
kuzl0SN7EKf2oKkU9+1/uu4oZ4VgPjnG8jlKz66oDHV8yeAcTA8/aRiIjpJCnQxg
6RZW4JXrgmrksLNKNnAS3hvVuBc7ll1hmBU+4BUnEWj4oTYmSn6OqhR5GJd0Uiuq
PT5eUkgrE+Y31DHxnoSQ5ysOEmb5Or52Tw0pqiuG8LFPNjaSxLQTwiA33yAVbfX6
GQbLjnOe1BotJWw+iSROhyLDNYpzmvr8j4dGY5oN9Sv5PfsfcF0NE6FYhTSSmulz
A2vq6xVEaNUW64ERQrX6AgQ2oHa3QEC5FO7EJvdbuTrca+N5UPTfbdJalxs23MAa
84pVMYu7+o/2FSJ7Pz/1Tby+RUCvwYf72yymAozz8ZZv6phUI4CfLcWebISbJggs
w47aku3nPx5KjeCdQwGCCUlx8mxjNLNZniiXdlFpcRLIvRbZaQOTsCuWKkn5zUtk
GUFEPlqXmweC+bAux6fZHNuIY05Uyg85dZx8+9lbdkAElzxrDSClSOutX11Fn8YN
3Qy8jBQZvxmVFgcugMCRFbMpTrHim31Kd8ff6VPvWfUcZwfcozMg2RdyjgGRHEeV
t+aYlCrGGlocVWcaPHt8eaaxDTqYkuB2y/aBP+0PcRIlG1ZXbe9KHJ3v4qAWb16U
ZezDWAaFqGGc4VJUm12+b8wumkCmJ/8gw0d6ioTQ4gE63SfiIbUASqjuaO/6JiHu
hfBPsG9lEQs90WWfZ81Y7EI0oY1UxUzh/Vv5KDQyWeBjb2U9/4iAmkEwRlVKOoa9
CXFyyPeQPgyr+cRvMuhMrno676huUu/EQuMfRwERw1RjjbgduymXL3Uy/qnDvbDZ
zlT/tBy34WZzNH3xoAd+/SAtHV7yaF69T0iBSYVFvpfVMCTlCBiv9hLDZlJtNL6c
89C2OcUWh9LmLQa+QWEDr9MVHz/Ur/xoF2/pH575Hf3FTppsD0BAqmJu+5o2nu9k
t1RfoKBdB7hDnZ+p+sR1KCinH4K0n1N7Re0GPKTfg64hK/ltZqU6zoznBLBPGCCZ
BOHn6MdmhyqF5pgICLfl6rWF9n+zoOqNclXklRVBANmFw7Tsw0Nyo2nP6fqTmBc4
nDSY4ku5G4hbjdqLY0spyzHp5XpcQxFU3hERGKutVAV+KtDBa94jWz4rP4ky52/i
e+UfpEYWTvsdve0mR3/Wue/X5vPT9TQiutnGoqBYfCFC5A7VbBnYnalfQ+ffmCdK
qym9yZLyKewxBKDdTP3dlUvdhzfH2oIDKQiSP0HLPFJaCrUGM1qnvOsRQUmhgTuG
UMmROLWjR0ewT2mhV/SFB3G1jxMfQ78CwoGgdwu3wndbNGf+HuHNQmeqwT9pUre2
rR0NOQC+29taxAq7SJKLFNnNLPvYRidzNWJ26rbMvzJbvTpn99Ewme/fGxfV6hWM
WuHzSCQwedQJNK6fwS6NMylmOi+YVc0FIYsNfd4qa/EwgVaRRh2EX6iV7xUfu1rh
NmIeX4wdpS/ULibXCptxElaJiHp+YnR2WOPzh8y3NfdpolVlZk3znEBKlzvYFUJB
YgfgjbaEvRsgDgxKbBhoLnlIj/78CMDV8SwSLAq494uA/3z9fspbZABR198OD+rO
mpdP4pIXOjDxyTuz+Mf1Bxc7fNjMxQV74vyk5WuUqdXy+RE94sZs9XmBHSDRXVOn
yBglQzLMeL71yOYmxTb4M5tMou/B56B65P+i/329CIni4PQwKYfpyC35Nkzd7r0K
wJUhknpfluwvYcgClxmKDC4RDYxqKYIsLzWqv+Y7tyxG2N7ho4/NwYoSdqsK9IsS
ZBfSKPf3saMeYP5D5H/WUylzMWY1Y+v1BIk/iUciKPpQwAil1RjLW8ML1VF5hgko
Z37EUQTkUchFHARkPHJiJMJ14UOjjQDtMbjLqFUiVnocl5GFuKtonutjFeSZFNQa
Ub1NslDpxPangSuj7FSVgNSrZ3ekT56/dob3F7dNvaV8kWGFsqt2iXfI/X7iY+UO
K1f7N531Cv5khwd8zvYLFGEHj3Cxxpc2WjQ6K0AaIBaTCQelxBWfcmDGM85eLM8R
m6L/4cmIATjd9BS5Co0iWi7FTqpswkPtQl7ItBchVx7yX8g5C/h3k+ZfZRd1h7BJ
+HAbvw1Ywyc52ec1yMfNyQSF0YpUSqfwvhmssvwZUg5qozNNf7es5G+2RrkJexMx
U6Pgf1rt9dLTJkyupSynz/Zm1oGoYKMkitMN0t8jFoeSGt4+47KCKJHRMrltT2m5
yKYoR0f/Cj3apZklop6IxMoFPQLAsga6ZCYoZy1AsFGH/xlcH0Js1jeWv45ccOR+
Jx6B09w1wMQlf0uIpX3KPIp2hT3FJQYyeea8d52nfmYw7FitSybwDRE29UfYjVTn
MiR5nSfDGCkCIxWFWhGdNIOLKRhRq2BcD6/Q0rUEfA7h1ACdWwu4FCzKksD8iyh7
kdMJf/uf4/ok+3KO9jC39+2OXQuygFOYM/15FDCtx2YFgpLdlDYmmDkG4oP4+bo5
KOTLOWGyjpAECCsPEa8mHpEyC3cIm+/okZ9kEZIoXB5TPZiv5UwTkJeo0ws8dvc3
ZjfkgKo+A45X+3UHHEVTp1NlFQPuthivr969bjLY42REOQAUzJYC920Xz4c4rTsS
ZS4iGOGSmq8TIPaKenMk4QuQzfpl98FGgWHAWKUKYBN/roDLUHdCRTS8m/hPKe4s
uOCyg/aDfUAdw17dZFr98P0WZKxjwDLrqnqAI5eWIU4+SXqshQ6XrTajxiidAaHa
sf5CcgPX6bhjznD78vWyDLp78vShjq1DH0fUfoWqva6FOhaAi9FSOZ17M/3obIEu
FfXmEdGZI/1QbhcwDtMQxIVoLVwpHEXEcY9bMhAQEyinsrk4Ac3KfyM1TLj+VDS/
OMyijQGDlvPOrpz2AUy8J/k9KL8cfbpxp2DUfr7HA8RgEwUhW+GEpvKtQER+90is
Rm8XT+ybLMCT1MNoaFWh36qT2+hw8NP8nk5rwxUz8EAJ51ZeqLyUtxBtHQB2YrlI
n41yM8Pn81uw8GWrOwDQAdrp3lnPCnz8juNaqp5ZtBLa62djjOda/sBQm7HQYea5
3Vk6TQ0LZBO6AS2ZEaTPlGtYHiBVqEgMdY4ZfYwdODo3V1AQWR5M3S0njl4+XRpv
2fqS1W24AzXVavlMfpVFMMXf6VZijBtdD86uYI2PP53sbaI6IdopsvPxOc10k4zn
Z08jJbQohi2ZEplkGh66b+AzI6Wqp0Grc9tkJKGJhA3WjFmAzJW0yyvsDI/Lkl9H
DUdclHf4oiIuvHTWqnUIGsDKD99fuUtu2QzfTRpEcOR9M+Z6f1nByinfycdClHhY
bBvTrBpkLYdD892q4i8nXubs7CYt7lvqcX3kLm4AQh+Nokr0ex5Zz7PKN7Wbs+Bw
rkirkkXt1bgD7c0t4unuOCV+zZZMeQAg+wW6YjBXHVvYLJPCZ1pN4B3XeJTjHmmF
nBZW2VRYgcmYDO0C6Mvt+34nJr70BMhxqg06i77qazetczSH0JMxPWXXe0A/BVLd
La1xBoiZ194p/d7NyEqYq9KIcDVIs2ZpM0z/QPfWcnFx+8XBcS/ZMS1clsumMplX
+hIdcwusCbeB1TfUq4cYK3fCu/QozRzUx54qLNj4jNSHV8OroAMOFD2KuQpu0u/k
O8ov5CjtneQX2u/fxAUMzaAW78IfSNHIOCD+qSMJSL/37xumOonGfxEAw7GpTlXA
FJCzmEipv4Dfz+33P9d9NIQ8pHYV0KraE3CUcxZEsBWNgsVPKAQ4+7ZtYUgk1413
5+cknSSXebqr/3ywhpTauLVzlsA53pzTTPPf2GK+LdTFr0Qcpw+9NwRnW4KpOnwH
PHyyUTk9dgWIKEjYbCKo+v/kcr/PnAe2yFZGiJEU2nOgZnHb5kA1v4jif3oQQB/w
yWuG0WG1PokuB2zMXdMYIRBDrhgCe9Hh13Bh6ccVIGVB1YSenDWzhJpYxK26e6qa
r/PdGOo399BKSbtwXEgJzIs3Lzo+hzhalqa6Y4FZGgwrle2p+rRfRmSVgsDjuq+g
aS+nvVIxi8YdiY9RKchMdfls7iCmWWb00CRuuTi0fYJwUMLYrP73R+GkMRBSY7MX
qaHhlzAj9pLOtgIps1O5LxV0NTVADkr3ybcbYbU/90yfBJluJhvOhwaT38kqfllA
tjNa8OMjpzOqsgtrP6eF8JYCaoaE0vMS9D8pJjZHiFwUVDrfs9/cIienyBWul03r
ZsgOHaxcY/FkyFK3b+kZLdT7fVkKOaNx5N9yWFyl02R7aK/lxOahfgsb3jMlZ4iE
sUTKypxfcjYAPxdS9K9Ysams2sjtSQwgWpYjlGJTi+r7TsMjFc/1TlslN1G6YnR5
RthUsCYy7rEcBIlm4cJ19vWqjOkWi970xKUs2Ai2RKmqSVrYlpZFNXx9vVrpwc0s
SXQNDqKMgorpvtbAqzdWvxCdiFDMbjxkdD6/fLSnQYi+NLynNQoNbMiJBRRpkqU/
5iRWPH8gWEQN2AfxABkCkS47X66/i0IQC6pGg+kKrC5ItsnVm+iEf7pav3Z7gtJM
7LgPcK3hsfmrqVD4/25SmLf5uLzOmWSF1A3647OWXENtPucqjui/3ImB+kJAaHJq
vBe91NtuShg2hYdVM50PiAy6liZO4peX4Xv0t2owLBJW0/rqK4aD1hTonrJuuI87
n45NntlDV1sdfWNl+0UFLrbq4InWvtabegzz5xJ8sV6aihWnL0sxboCFlPBBEn2i
krSZo+s9OcoxuHr1+elK19XqkUfeOYLqjE3X9qBw2CIl8cV8mSycBq/vQBjlSiry
dD8mu0vOEOlAs4KqHWG2sG5oPirtI4rJFdxCwpD47IkNU1jjxLIJM2T7bjZ3p1XV
lrsJ7yuuX86J5dgU/fmT6aQsUsfblyeBv04+LPiCc9BDpK3N19t5fZz4MuB+vfRC
ZE0Je4Kz/BbdmLA0tGTXFjvgik9hKZqPm8vv8wwVaQIUfjD6uMI9tzMXhKlHHhsj
0oOQDgzeVqEp8syEmLLNANoDtG9k5DBIzv/9tfce4Y5GvpwggpbCQaBDpyESv9x4
TdD6SHB5vtjuCK2Np/JeJH5uCdWSbHERKehQLYXUNZTFSHazHBces6S5U2vzMQE8
wbTbOMrBcBUXGVpTB+Xn1TGVaUXaDS3CwUcaZbt7qUiP0KzbqGkSNf0h9VWoc+1Q
PmCnmtQreoSjMVDIBPkGgCdd0PvyEWchO+pUrQpuIot4+fqx6bCU4vyjRSs6MnfD
dvYASUCLnt8Nqgsm0PNY3TrG8Feb+5qttKeaybixwIHwMukGYjVePvbrd1avcyiD
U0NhDa2ggByzdj+Fh46Pzdfdh+TFOT/T3ESterZBDibJw80AQ1opYlUtjzwqyhUE
GN+LULs4vnXKsRozFYcGiLbehNjz1bnrG47E/8XWPyvW6/Irn5v+WcjH0ffRnKSw
QoI0JigaKbi1a7UqWwIwRlVs61XMYXQ6juUFyvloBdxNpMNC/PcyTieBl8dAPBwe
6xq2B/JAEtBwo5ssvfB7Fy2Q/PYPFN9IqpNmKod1+r0vifdCOo/U9B2ckrqgDXpL
fsvUs2UbHm9PGf5sWRGH1uOm1guk25UThFfHSdDMEaieCp8yZ1YkcbpTFCwKFcKD
s+WrnjXr1xO6yEyDfS/uvpDe2Qg9xhSOCjGPtLqE0YcCe+KhAwU1Xxv4wzn35JMS
/6Lb6oHmI+nVeyZeVWNwBPx7dTkafrPSjWRZxkE6fsM7bwOnf8oqOAN0uHjxdA8l
65my/+o2KpcMP/+V5hmqPwxHAhTmoJMDlgBNwPlyUPs38STNOtrZTGRjo/SdsEQL
E+WmaWZjstyRPYyEP6vTrtleOkOglZRgdJqi/0B7sBMNRlqFylPf0vCI3jj0z4DG
2WnrFKj1TeYMgKMEZlZsUdHm1Xi+H2bnWoRRMxJZFHOvewipLTp0q9LTIYMNpjpi
28z2FAVKTkixW1a7c80wIR/UBtyPI3xIzGAYd+qPVRVzQZ+UCG0bD8Q06WPMLpOF
I3RsDsSMLOWXmxv+ZSawizgjpTnF3yGK2cJeQ/Govfvr1t6S149BvXuj810pIe/B
z8NWMNBzKuqWGNf80WEgox51ioR+rH8JO0SrytrNtXjjHoU2Xb+YvTwF3hnG4C/K
zKsu8dLjQLWOVoiP+gk43hAKMLzDu3w4do/lErU9KoAJu1CZSrPJ0iK6Z/u007Jt
57E3tfr4EQYwBLwnpbzFW7/PngUiVQaE+zZb9uyeGSyrb2Llwf+qQ5+q0B1LG/Iz
9qI2F9ycTHPS0Ap1za54ael8KagyiImTOM5nuV7LD+x51Tt0C26SXmHYCEM1TNRZ
bXmh0peiyfUwj88EBXTjBYgI7NjopP6IyEE4j2FkYULe/+BEf99JIpY8aaCYI7xU
14N7ksnceruhZgJPXGjHt/gsjtrTxnHSfoBSreX6GGzqMXv5isgyjcw2fAiZubdg
rjr8iLMyrV20ciNhuP0f4yv2j0FPyIdnvw9IkHvPPTQ61zOu4a4zchPqb45aHZR6
sZStp6ma0lo5HFAJceXASAiIjzq0/jTEJ0Byu3P4TJyNdS/tAJ8CRBYBuSfi4RQY
/CC6xZBpRyO9buSTePRX0AhbV4JrREfWtSgNdB83ttPLOG1k0mLqJ8EhlwbGrOUu
rhZ30ZafGuEpvEO1kRjdCNfCqRBDOeeThx6qWDCjTSMO7ODYEyCfvdbg8//4ovym
AyfdCsAVDrzj+2uA0Wrq28ucUakkf9FHxwLo5qGRPPa7ELOUNY5oJIhUl+7+E6sr
Mwuh21v5OiJW25XvhtSYlpEZa5Jemt/5FKdxWBgPWxYS0pT7A7o+opjKjKctzCrs
IYnd7Ad2z8FHrcHk1PrPSUIL5D9PfUWUd/jNhtTukcDpD/CIUvfS9rYqAj5rLgCA
kdVWYNGeY8X774KHZHkkBoHXlMxnVYTdVwJWVNpfi6TfeGs8/w/OsMPDIkM6xkJf
+dGev2Vf+LkZCJ9E8zW/5cXhg0dWoHFPKBZku26X8Owp0ofkxrohUdQzrKlpdEvW
MW2QLUYUnlKXHC2a+ArbU93D+CtUFGJW7VhJH9SuxDuMGrNXanT2dBnusoi3USHD
gEmZFfAjvhOf78cEklWaNm0Bt8fEk7gRRG7+nPrTnUS+jAGC3btYH8Rjc1c7UOCb
P2rFKYJ8YWKMvfAAmu+QaYlwXQeiWVqFjgrdimOJSO/8jBWlxmgvH+1OTanmCnof
GQD6GRixU61FY/82HJFZA81DRc5W8uFHzh7lPYDA6DmlPpjCpdxvwS0W9Dw+0m1d
hBTXvazQu/DyOjeKItk7ruxXCvXozvnzqkDK5FPVYgUUgixpQ2xVt7WDWoNiXtkW
DZEblfBtuHnzkFoqhhSe0Vuem5sYAb6vGDcxCjK/i3Q4gfzR0x7Ub9rAoo6ls3tv
f1LZ9G7uQAxynt8DNbvPU5BfvyOlubOfqZGEbVjzSg6sCBU4pXq1uviqwfiuqKaK
9tWDK1PFv1dMBLD1QfDPNFs1BSF+25NMDfFZs3wRYgYIAu9GSy3KyQem75RB36EX
EaQbbnsJXlJsJvUT/PSVBSLFOjeL5gItx/iT77cWpK9mY29qRIwUofHD64wcMm16
SDp6a1+NNF1CZvBm84i2eI2A68fqvsvcrRdzfXtl5muklglo6WY6w/3gW4RsBC/4
eZt8SVuegp+Qxa7hHfKpIDCefNPRXOTUBBX62KbRNDUswfZyoFtt2NIPDSxunbj9
uDED/b8duqEgnRBEOcT1ZUXC2NytY/BODvZrC56ST5/Bhg73qXMUyD+b1UYlUgGI
FoA3I3u7Cf/P8NumyMcM8+C7pFtDznQC0f0x5JCpViTBVFy4dRhe8OZrLYLl/MRF
Rwxp9xW6aZ3bX96tC4Cj1JuyMFcldi8Qocpfvd4NkhS7JlkbbPPC+lA11tHRmYtx
AhVvtQK2pTIwvO3h5yIi1IFhJ5U1ccxj7wi08bic1bULY9DZX9BU7gLeVivHr8FO
CftGf53PHpzEBOaEZDxOoyP1Ln08sSIrZeiIDFUy+8+mutMKiLWauFB7JiDd18VM
T5XULifkuFTpfmMllWYNorV/AeVnWqGjj4B64JxjnFkd7q9fg77vZ6y3nsL7DkUb
lUuCPwOscnCpnSM7JzWrrUQiEoBI+RnUXW85qi7exv5QltUAo0kGtCSahEuI4zTW
O8GrBXER4A5v/E/tG/zy+2dHlObhfW8qGt0ieZML38nRZit/S4Kqu31ypmejGv4N
NXdjSZcopWUwfzQWR097NiOS2DOLy0LWdhOAy6Oa+Zb5YlbgvVCBjWaHQGrK0n57
83ML/9ESZ99YOJ3kRpuhcJcsyR0J6SK8cE+VKpVjOw3fWF/X6t7M6QXDs6owM7LM
b3A6Obok8nEoVi9jBzoMEeFtupgkowVqdy9zjRA/RAMM4gDj3v3ItN3zTGERSEBD
sWj09GG9+HS2wF6/8RH/29NIsO1rVQxFCkrXElTooMwewChXqeSHHWdDQ1TqIZt6
XRz4twh3dNLry8anqNSGj7BXLHKvb0pyxbdUKwat1RDbCVd8TkUgHZyz5QEl8gTz
XkfbcEP1Zwso5MFVQ9AZeF1TahtdbtatVZNER9yESK9K76jij2ZDgHJ/qldzxrGD
Vi0QrUpxPV35h/Qf4kcuYzGk2W0/U2qqbEzIO2AkVlsgL1Ypx8O/nf2lFKqWOFPg
GY8+G+U3AqbQ62qx1Yu1EtvpnNqHp0m/1AO135V8xXsS2ip6u1K5yVwCgnM1Gylj
TGeq2KnmLTFQtARIyTCRmEfQ8FAG0T4pV4FWsmOkvf5tzLpwP0hvy+o25nmRe1aj
QlOktlMnQaD78w+lALeV49geVfnNb/yKXEzO94dmHbObb/1AEUzLXviVY29VaPhz
gOwcyhIm01/W6ppMR5Xn4QUbYDX/9uU5sO+oHwM/cd9OEskspiye5NKfhK7AMBBe
Qi2wnKHMd+zUpbfnSTNI15aJ25lCPs0U2VO5K4jbiG5FkiR53Rk16i9u787bXpFc
iCkS56gkDs4btC+uTZAizN82cBhQ1zx/gS+0bdWELJQzURcte/Utq7OXbDuYi8wV
YnR/zFDB6IED3W6+sZMdzf0/PofTsNdr1W9nsGsKTFWay6TiagxOjEzSLfCco5ja
GTaC9lqDKp0MjgkahJZ+N0+eZGcHVR+72ogPgDPUXNVW95J8kdbV9/4hr3mpeqAP
q7DO2xdegTMnuJGt6UeFpqsrRo9a079CtTGMvKkSBko4kIzFRKdYDkJI5sCRN15Z
4NG0HMrppqGMxKeC0nX+FcF+woSyvIrz7wRIJ8+hgBQy39lBjEJF0aANBd1+4Kci
egiFKrJQYFf0ZolwovsBTtaDbgNQRl1yuSqn1tv1I0NPLEUL4JmAk8if3M6QL1Ug
XGcSPf+FbdT0MMoGFLKDhx47ptsvbfV5MZ5W4HX5uRIta7x9i0SHX5lj3gWX0p/z
pKcmEJdCnwWbmX9wq9Vd+zzhIEqAMbOzHErqG/ILNNxaVZuzIo4zJci4elPRXNfd
XfVVUbh8/6PfTK7oS3ZlbKcTcrX9FuTP/FPHRbnd/MnrMUl+HgxzN9fdYtMRBbDR
W3iTalSkB+W5dDHZ3Stf20BC+79nMETG0JlPbJG5+o6hri3uMM2taNy1P/RV6wf3
gk36aBbcAvCKeQZTrhardRHDSswV8kEn556AfRE14oJR4tGI1D4D4czGTxodQSIY
3RmPHUvgHPWqZ8hjqlYUdhvlf7IJlDYlyNKgjY3oIqs0VvMVtBcMB89r6pHdxKMP
t7IUHYNr9D69tYN2S5GUqYQy/exv34kTz4jTHePM6aGhpuzY8PmNuTKPtLcf8+Rt
59MkpA0fMs7CQws0hpPk0Brr2r/2FQyngJLccE9IF5ln49b29ojmu7uq1XQ2KRnz
3qSvDSbBVvDl6ejarOy2CtbJ0nK9kHlR4BkYpmPTCeqFK6qcv6K8+431hgoHSD3m
2IibAe/nVxuVp6/yup1kQ4s+AkApzzX275obSF3ioKHtsQ98LIaCgL8lwExcOhQS
J+DtwEQFfaMJRJvPzGKPyMdLjM5ph3mFY0Ce34Ki0XBPeNRG3XGOEuOonoXwOlrp
tKi8Srq3AIa2Of8qi3e2GIYEMO07xroF6ExlJBrQG3p4MkzImuiv2NtrtohAwWWw
N4jizb0MLwg6Hk7A7vosroTDEkf4kX7u7awk1zYiFyMVLITwO+KeRsqYpbnFn550
1kwiBR5xzBEJqrPQmZGYv1QmgpQcJRKn7lhnNamcmTUBvkSI6UCL3Rj3QzUEyKIN
2dLsgLAlj4atLRq14k0e8bArxfcwErdVjGNR39dmUCgb0mQdN0hqIJx3LsA4hlPS
6FK0gWE6eU7n85TzymLk1St3VT8KYXEL49ejYjqNobvNRNKpmQULHDyiZKCmRIaC
ddbVwWak9Ix1dvOMY2RnwHa43X4ef19t3jFjYaSGI+uGUIrgumwhe+aepmNFIGAc
qMkv8mUhEkiqt5qq+8MzF/egvey4PqGWJZ6wRDXiMBA76oDF9j8ocfYoMzKf1vrj
L14usss2v/PeScXNKftagRj4C7/eOlPK1OGrmD9yyikx0oWhkpao499stDJnXH8v
s7KctDYuPFV97VS6kBXkT8YxK+CieMKZqVDrDc66btSaZzqyEi4DLNbsqz5+Nx/E
TmpQiBVa4EoaIx1itVXFXp8raiSTAVXgMzXdC2OElymVoi36USmrvH02huTDizob
7tb/zg7JqazuZT/MFAfODDMxiSLFhujpH6Z7WPOXH/z2Ovn3CoxDpbZrXDLeRB+Z
X+FXKKPgA7oxNuMMFzGnAIyCN/Nbr/rdIyob+Cq337oBX/hFfUreG3afo9CrNKRo
qcNK8+Xw6vHZIVMeadZdPNdoaQ30L4nFaWelgmBDYHM6JGO0QATL6ODrrwYJeAAA
4SSVREBSLTOgoTclItaBY6z/a4JAjDhY0GHwrvGyV93YE4lCgtzya+b1AymBFIHA
mKMjxNwKxYIOvmZzidadTMDd8coaK+v622gR+YYTz/+1Wykf4bh/G+3vtztc/q0k
kMSxmGQLhrfPJrUQwZxRfAbkCcHTUEvycJOO3pFmQVhts0ODr1YcjwdZJasXmgdM
Z5z7lspWLd9cZdMLcWdHGYASSFZsoBZk3wOB2ewRo6ATg+39y/3E6KKeJwuew7YU
GkWt42cZC+LRQ8HwQdoFee/HQU6JsTL72YtE5a7TsluMktRMi6VU2CiVALC2TjR4
W7HsW+F3cQ2ogxSd7/iencY/kfx1pj/T6NYtuNqyQbQvggmi1SCj/renkIiLw+0l
eA4n1lEQJL29SmiNQ8JSRXnMMCeZrqfM1qnAl9h/mC+OfbSqjGLH2b+BW4c6dD/I
zlAZlCZpL7JZJtrmwuLpbxE38ulPio4J272OXL6gBkA5chWSiYIxuHu3ORuj68lD
H9QDcOo/VqfrFN5IR7XiWa92BBFM3BZX7Lm9BGvxBNsfEB/yvCnNNSO6+wd/4dBi
xeC58aq9LO1DKfABhcA+cucmUMMOWECS6+6M+bDApKn9b07PoB7JxzulNb99OZ6I
jieaTEleUCsRvtQUCZHbM6gI3X5rX7efG+puvu/y05UjnSSJ8z79aMV/AnXk5v/d
PuY+RWYxsDC1RZgNxguAixlMD4XlwxGizYH/+PwN/EPXHgrZyyEZ8b0uf9aOct6E
3pXDzULZKJLHPtl3lbbVTYVfyJmRVKdyC7iJSht8XwF+DAePuosodrEMqNfO2ggV
9yj6mRUb6CKbdyQr7OCpVOKRwUyD4VJW92frjJYrHGy0FteL6pJQC+9RYSdDXFz/
e9RKBeAgnWAb4h9XtVAXVj0criCrtmCybtfvUkPUvcdqNuFxQXJb3Ntj/4FQ5AJ7
Sg8OFryYteMBWf7M75+ojrncj7li3EFBZOxmRoHvP+mfSuzuhwWWAD+YB2cFtqDh
HfiDVJfPak/hjXUzZ4Mp5W+sycIr9WkVQx3cjotIRp1LK1FULU+wpfi7+YqabtTY
zvE0idtnZEYuC2524BVhcXfJ277bXRw/XbPX6qbkUATgQcZxg4pw8v8V60tThbIL
wsg/oMDUOBQuMC6Ylyc0kct6LOZB7Jt5d0FqvARqrvzCWkJzotz0E6enQHn3XlqQ
z3h4UDtuLmKsKQynZhL8lHIIOXOFyZDDpn8VylKoAAQo1Rdy9eZ3ppXOe46n+C0U
VAnNRAAO0xHICIYmLO1FmlHlO+NvTGxh7sa7VZedRlNUwWgKk3Epnzslsl0XNsul
wtBKvmWksm9vb5krjPsJl0zl1xxdhGdULbO3fgntY6+ghExf1+1K23d1dm04YWZ8
AZKHMl13XfVGUb4OxbyulN7tLW4OJL5PSBt/+fp6hXdhFbVNYKVHB559yb5xGb3F
EffHDYn12DZy7TaqEdADGQyg3La/jMAcTaclsuSCNW+dxnHhr0Z9pElJA88bfx/w
E9TLP4HgC2oJ+X3JWBFgtkaQSXHDqyRiz+3q94XnYY5TVqB6XtLquiuqTbqVc0Hx
JxU10IHmwKgbQiIzOm76PaNNDjyRRWtQPCDGeMt6S5R6UdIC5IpVDiD4JMakBPRU
uvso4kpZiqjDzrKRxYnvvcIhwFQ5CWglICzY7ZhJZ6kqh/HN2ro89HPXV1rd9MpM
0taDoK2n3p6N2vSUIoi+50SraYe1GPRqm0VkAIUahQRag4mRfu4X5hs/TKU3AERZ
vTtLHfcj+SYALLTTWKsYPZSWwe2VHeduMqxdcZiDDUOkHfsLV2S6UHnYjDpVQ0CA
8jde0UGkoO0Np0Qa04uCnBhLX2ai9ZbRqbNSTS7Mr9rSv8nl+olux7RLBlt/gRE5
/5Cdgl8Cho+DKA4F48eZguedhTn0/9RWHIABkqtrdQY08fZtcLxSGXDNZbtfWdpk
XcYPq/FPFwmMgwO0jzAvWsVSzelLcwoXhStT1NGO/7y68TIvbf8LA1hida2V6CBh
2iUHAFmwiA+DixUfe6sAqRpN5SRUJuBaQ/vH0lZqy4nhjTmsdsEWQ5djbQyqU6kG
ej2HHWYQ6+6ZX83WyzjIoZFd1k0QNSm6bdGm18Q/VZ193XKgaGV/29ZL3P0sSZb2
S5tm8GIZcsvJSFeK1sVuCN153ATkk6tfuL8J4YXygZwMGxIDmX7vzsuYYSKek6HR
rfDsPKUc+Jzc0v+sFGsD8xJYkhuXb3BCOL+nT2hOof4FgHoWh+XW1dLlWDWVnIi1
0ukn81pnADlle4YWyCHq81q6V76p/nxpJ7iIG683KhzibRIO73nR8J4BZXmsSYOg
01t7kf2FXOp1EGZOKcVQqxQzfiuXYHKkho5iBRYTNpQX3FvvniO0bmjnZKMrH3J4
albs19f3IuDWVfwSypgSyzeQEXehtCEhY/Z2GLc7lSpO64wn54Oh5oAXcKWjGm0O
t8AFK57eTzjeLYj4cRdKnj6Gz6MKYw6XsD6F3kSva/T+Vy53zLPRmLoDsRy4dzQc
R1BH7TSZXJlP3EAB+cdCh+V1zYvKzas3ppwQf/2iHbLWqRkeGLjFTTW70cV1oRJW
Yal+TjQhFlKKXsx+7+lcfgg9I1RDRM8hv1X2roJ8+J6pbtYbqoeTAbsEGN6+mrOh
8m8/5qfnROGsY4VCpbQFOok0R+n11oRsPfXSrktzKvjykeooIMdIfQDm9eHkzmg2
BEhg7XiipkMemsfIZdKBYxTxUmi73MI7/olUO8K2Vkb2+z5xts0HsuhpkqTmeU0r
guB8BL6tcHwh7k5q0X1ViRWjxsurutZ2eNogPvB2AkGlyySnNt4GhGbQ5fIjsLVK
/jotNE7JddFv/rx4hRZQ8ZhgL8HvYoogX04LDn1zqGi/oVrLPR/le6IxBcxIb62c
iINSDUr+ceoZrh3QQcBfxMUEkGQfjDMtx9OmcCkF7ltgmXd+EWoVM+bCpz/Ey+tt
HsmP46egr/sWT2rx8p7LFb+UZDEtvJqRAk7BWk9hF61BIeiLzeamaoV5IiBVwrGX
1+vLY0qB99ufttzDtQuhHOeqjVclaukJYvklGKsVcBm+CqiGfLb5nwLvOpRPhb0x
IbbF5aM6RSG2m00AAHi7KCotkrJLmQB5HfVQORTQwZRfif1en85MYZyEg84woHGz
jG8RDGnCuxcicXCZJ78UfML/ta0drpgeorF2665XupgajoFDAGlDVkp3kf5NBpU8
PnvxaGTrQjjzPeYKd/xeuMMe+kWFNf0EEmpVF7qddZZFpvAJuw5Jf/UDj5HZ62Jw
X9C4kI8rJg8pyJkmrxY2ecZOW4Yr2BbPmI2iO9Mq2vruLu6Hd/z4Phz0w1f3DZHl
gPcs8I4L6YCMFtqQMj+76Vn3Ho0CUH8CLuvB/EtduTCEsudjeeNCAIV2yO7+hMZ/
dC2M5z01lizNrsoSSZymwzL5uzVOGPhzDAjq0Rj8REO2vAUz/qtkyLp+8m+KE9Gd
hCxnG8IacDtqh6omFJ5WsMeXWl57bJUUcFhRMstza6eorpVOMv773MThFkk1k53U
49cKPxbqAZS0eEiluCVCpSla41gNWidR4K/eufbnU1vullzY3MxuDF/zdzAgfag9
vfwqNlegh4iJu2r2iDWIR5Njme4Fy0RAicJEV3+Kt21JZlYir3FT7YEkNYyIJZZ6
D97DcKSlNaxEpbDr52iRx2vOz8mQwowuVcqXA5MmGtKGimUEzIbWto83MqQT/6GO
7BF6lpNbld8ZofJIv9CYm46pT1Uvy6tTa7FqOFnK65MSCA6VNYLEBbAE4/7drUFB
9PQps5pvYH92+qKVBTAyKx9e4upuQa4L4xEUO7aUuBty8ePmTLTloPtEE86P49OD
p/T+dIFhc0DwMQ9hnosfc2UvDTVrG6xI8emAKEnxf+Vf0XVfTgLoXgvj3ktcpDUK
7vzySiqsG6Q0j+fhYhR5p+A/M2u5wJLv83wSSL+80T9WH/tFn4Wk7PmkIqIqtjTp
BiNvTXc4mX92IRzsgdGSdik1J0uRILEkDGoj5rjYzsbJ+u61p3j1CsJ1OpkWB8dm
V3amkIcuGLPPabfZx9OY1RXpXb4Zbn2yEqj+hTD5+bXEWrYBkNQhakS9wCeHTdAC
6RIXK5c143PkpmaXtmm/WmXR+NcloNzSxycPhaetdctNE14ZkdaOZ3MLhQowdeR4
pwa0HImUaKTHqIF3FUWb2fA5HYd27nwCXD+wmddk3dFk0S2Fofqc9eoNCrVyN+qG
sqUOu5gYtE0eO+6jkJSqtmAne15XbaP0jR997tZYGUL04yQTzNM8LN66L6ysWdqP
25whrjIe0aHIxVFdfOcIp9y/7WnOutaBSybhqmeMrYdtrwzcDpkBqjGgL2Jo1Qs7
e/d7QqlvBmm+8K4VAydwNs7+ZRDFCpI3DOB2ZNPYhSeaVWFCxSEXmXWm6FF6wZ7D
HlbzJdbSZlS1AcErHXFiOIAkgYXenqfs6C346L5o/1fpemhyuJSdTbPK0S99qMHQ
qYWYeuH2WOm0ZnxpGKwPjO+qgCzioK4OpDljN/f2D4a53hAtdyAuplkwsmCr4opd
By0g/WHDtaPmbwlnztJkgNwY8Wt44QB0zv9ltuEet/GAqK7ydzTaaAtNS618y2UR
LNC5tOOw6VO8O+zaH4UNLF2D4gSmuMpD9ef7BjlMnBpvqfUqyzhGAJocjwXFl7lH
YcyJr8lMO6ep/DHqYwt/QfbdstyPCGvH6ar5Cby6+M94frJcCpe342oG6kXjBh9T
L2OWKg6Hd/aIBQo3VLWngnTjWXD6jqK/PKtn3/dNgR44mglQbgXh8fDDEN1l/Jiy
TcDu/+OHHV51bZ2Wxh8EWuG6gNyG5nqIzHiH1hBA2R4/7h6i7OYpfdLKLoorQbC/
7x7cGJVWTGXl2d9ty24Uf54X7dDDLIJHsIFdCx0423Mi7x1yq3j7050qo+4ZPkDc
TLPz6G+4A0pcGXVzu65I0EIL9gGav4WXScRKcYjlROooFBJ7lbPxf2UAlhmBNGeU
fAFFmEjEUwfJ4g85DVg1Qe7F5Y+RfShR/fuIW6t6mt7aIG0CdUP66p9dh82NUGSx
jmMVHo0sFU/0Xpa5wqin2hhKAwxy4fdDqAnPNZTxeCqfoVNqtT6eMyvn7o9lKhQ6
CifHavtg/HGBgVCVaDQFrwjW9hcBwTRl2T6eHi1GvnAhHlbej5sSQBQhwB15doDp
phIVCPWJRrfQLeERE8YULroSoAQGB7pnXV3EqPn0HTvpx7N5/fT5sodJmcjACCIh
8x8Kr+QG9JuHfjEREMs3HYjPcjsGpu/+d9wZKxym0KomvsYTwRTbKEO+GPFR1zWQ
IoW8+K20T8AR4dNAiWOJBAySZMSDd+Ix6i9WkRKuO/iUmW080y8hCHuz6ohAVC1B
0OFF4LYzbzaJgLn4QedX2bEbfye0QKNYpT8kc1VT++DClBOD6bnSxkznleMN/Q1y
KhmhKCmh9dxQSORuA/OULYvrdXjq20eOG9NN1K1sy7v7dC69EMVtSkExPQv3BTsY
8py0gq9WbY7Yuyl02RWFj9dr5F0XP90wKpcCtReiIYnG4O/uq3eaUEYiN6YfdLTb
iqAAos5KR1iCvNXmfpL3MKJcXOPgpmFiT1UVxWH31sIOP+oCmgbceXutE4TFNGQH
kcNQSggkkyAKJD5w1oHcQ8C27RQSb5XCKZ0SrS6F9/nlaKgE+2aQCZJFp2QVc7+O
tj3SEeTANfVh9T9luAYVGqtdy5C6p9nIqExkP0p/KRbpSD0YwYtxs+DFCH4XuZ3B
yonCskdl9+Oz5jKtcf7S2ceDsK/MQBKy87YzWqmr9/oYO0R4dCKVuL1Qwia/qQ++
yquFmW0jipmbkloR894sbHnxBVjL8/rEzJPIZzPEEbDcSejtDW3Jw/2/aR7lqh4Z
w9aib0zhJrM3lxl+5pIa0Pf+9Eh/xfpUASXkSnd9iyYsYzd0L7CLwiuhD/Py0TPl
yd+rgM6VQ4ipHuUpTXGgIDSG71/IteV64NNBBVxyWzt9WUH60aOAfujBNK0zVWTp
GNCBmyvAmkpa3K+IzdNchNCM48v1gmeQ+JUQF3zipIWzFHET1EFJOED1Lew6uirB
93e9Gwcy/2w8lk0iqmCG4qHVgtNPUC8EjHbeNjhcN6tUh9ogWxTYunvlmTqXlMxM
tce83lXi9jwvEAU8ipRntwiU1Lw68QihMNYeOpYxA3IvS/29bJ6x9+pmgJi+Kjwy
f3539LZUpfwwjKsTGXorb6/CH+Lxt/dONgMlm3f0NFFC9r/xzITh82f8WlY1xN0e
ss0Ylfzii/NxmY9wzAQcRemMyOimCKV2qAEy4wZ6RhMxLjh5Uk8g+ItndTjIYT04
nwReQmZpMIXRIfLNjyEgPOfHJ/a6Rs32Jw8s5YNKqxt4nD7n5NKzF/+nOxSUg862
/3rGoSusEw/Mfj38N/QKEU4Bq/5VRz0UOsItImYTUca6y7WHzhzWLmJnmDZpsxIA
NAMXN8vJa8MWY33gThvji9ARv8QNiNE6Z8ezMgHs2v36zFOqQ5YipyPiCme+KiA3
+Tzb/78zPO9AkOXb+NXR5JO+8MpwgwZB8+3SiCXakUt/mVqNrEVk6T/t/QLLhtvs
UYUZGEbHKkwu8pq3Y5ZVPNlBAkTcybafPGrMI4rrBWsr9q8p77IoDqm/j4lA3Xyl
Lpb1U6qDptfMOxC2i9tMoKMVNVfaGUjSh57l2y5CJsKlcO304euv8A+lx4MhwIli
8XEC28M/FkOhrVePP5Ge43qVX4Rnp8f4nDxSqQJI4RqOMLm51usFDee1vSf0m6Nm
XRwcv2NYhiznt1YIpB07iUys9nXmovShp65B80Wu/8/k1Rdsm+OHnP0aBFmM0Nc2
b1CJYO4gDMS8B0H53xkzRsgymCYSzUG9BbcdcqIpZUiqSxaB2t+FS7OtjLSTWPur
JVbDRl8DXa1YT4XL/N0PywLyD4bdhAJWy2YESBC2dwpkXJ7IN9y1k+dffzThkmgn
DNBi6e7BakkY7bh4l932GfJn36E/waVCwi7R5wcyJX2BH3KiHpQtLPWXT+GAdmzY
7doGP+5/zibuhSgbrDCoZTE7FaYaxpkddW+eTqaKDKQlSuXr34OtW4qGHaThDKRN
3Vm5BOt7ZQeMAqc0hBh9ffH2GRcrovmfo+gsNtSMFWLo81CP75G8KyYEUDcxZSFv
7rKQbLPEHCnqHst8txIU7YwPnbjOo5MhNrG9rsdleKOb/rXcYXe6kHwQyN2Pv2Fu
w2sEjpRsHGZr8bNYUIth8O4zAqEQBKO3s6g0ooum56F/eDvXdZ0g2MtPrG85OOV+
OLVywdCQVaHgHFNH+SQVYNo7EJkkYg60Rkbv82v16Zb3KAmBzE+EoUKZnZzuElix
GzAnwSPiJ3azrUd12tyJzYDoJdF50saxwqux30xUhqHnM4jwWwqmq0AGV4+zml/Q
etg3uvuIFx6U5zSiM0PQKgspLG4RfPSsmUKrL+FLQ7pwsw+PAgSxsr+Q6pczSPQP
wh8YfPlXgsGCgl35VNqASW8jjDSrZ7FFglaU23T3JcQSdbWRAMWxBnPHuZo4tQ/g
sYQUWSFfb2PGUf09TncUQ7C3IyMGnbtClOmpLOusW6ncVerxXuDl5xb6owpkN/cu
HuyuC/w/Eg8DEaI1HXc/zmy2j5IGDJ/rBImtQrsM87SfQEXzudWlS9/mJKy8AGUd
fAhgy8EFa0rZB8kdJP7/42NSiNmFm+4pw5PSUf9yumWIS7Y9pwRdbkn/TtUAjAeS
Xl7IQYLBF4eNisrsb6kw6VxQU8W2ozJvYBlU1HKKs1s7J50cEcMG/JlNhxKrWv/j
bmeotSSvy8vBdIHuZYCnR5+bgQZLTGzD2dScMAwurKpVQZ0UNgArOpoF9Ne/qVwC
H0eqzJEF8Bztnv3CrXvE9zMalc4jLP3W2bKAhoOP4RWyipcUNHcmYtyNmNu7hNMz
m5eNlioBVO9VIP5apDSagmMTgmCUqmZBvc2DTMu9qHgv5PCqiMEphn0vnLfNGNHl
cQsK4CaRgg0JPKWU0XdVys3fZqCy01LGkVB2uk0bqUUmvTcEnyfBxF/06OiLry7A
tdeqv8FuvtDXPEVFBcMkmtjYCsYMj1pt1QDGsQayY5W1SD8GZTPVIiMdzRywFqIA
dkMUH/6vNwlkUpWHphK6l8ilQzK7/blleXeaY6WFAeJ6shsaqNeRjNQ5jK84VIec
lJCtTAOWsscm+6Cz213JeSzk1ioqjUflLmfKwjAE1//ZSRGRRclN41VYmKrwE/rp
Rcr15K6PnmJleSt9ayHzV6rFHawOPlbMvOwlkzktlOxIaACPodljDB/E2se5KWT8
lfqCQZMVjmy2V9RUH6trrFJh2CSi/dSrK9T2agUs3U1yjCBUL9b7ACih0w4JBgT4
UE2mku6aosRQei1tsSrNZiw5JR9Arl1MgFV0bSc/zo3DDIBFs0JpFkhBxd5ii7Xx
3Rq3iLHapvQ0msbS5jvY06ZtHBVsguQFfGqnf9NS6mAZJPxv9/j8TRaIz9JoNsKg
7/kyE/L02ziBkOvDqQScdvMIMYw208yh0nW1VI90adqhKUnV7WDeGTtXiX+qi1gB
QjRB+b9qDd6Iis+7F9APVPX+3Df3jKGupTYph4RriqgbZwF6wB4MwP2MyusmuliU
NZpTxRIPa39aXpFVGdSo9OYVof6b6jd7iyJrR5RuFSG2nK0obkY9DgTs50TuQ5lQ
pXNCae2fBVD6FcpNFiVArC2UH9+2mJ19T4ungEFaPzo8xG/DmKnUZi8gLsHfWOU4
fpzFQz8DcFyb/II6ELkg9jnolxs7aKBHU4EoOhxK+FV1AvhD949QhCFkcuuDxn9B
65qR/L6WglDx1dvPURTl552vpu+bfew3thEKFSegGfTYz+8ngITF6VpBCrGKzVDa
k8pA16xQsXUxjgtH4v3fmG5XD0QzZh0vUzdOOGIwbXuwM3+lHwJxTljPRmc80rcQ
N70LwmWMen+A48Os2KAR2BmA3OM2BN9kAotcQtFTTKw9l8C598daET6zTTllgW3O
+qEPONpQcEumVKePTLJojblp+lFSVjQs2bHsORQNkU5S/9UZW9dviGh+tp9ePjmX
PY91iH7hFTuJ7/XEfiG5MABj7W2XbmbBnpPhu5Sb+HWWK1GjhCeI6093M9Kd00aL
/RDGPcculXS8b/MDnXfZLkmSxjn/2AZYzgyGHXnz8L/TuUE+Ajo0ifcNUjmuoNn5
17JU2HADUxbDeH0Y4Tdcrfn5bRAZOwZxkykMtOIDYfaOiEP6Udp3VkiQm8VlAEGo
JMlq7r8jpnOPFGrcaxhPhCevLsbPFaIZeli9X6QvkRyrOleSYFn0BJUFjlaIKFrH
kTspsI1ZOJIdqwqLlkIFbyZpdLdof/yB2x+h/latLzwtaaALJgT3qh5uFwxg+xq/
xBLvvC3f0fEbx9dUJabowPFKHNpa1IiYeiQZxkKm2KxzXj+77yoC7M0Bw1RKKx5T
R9WjQkzz5IQlkmWrv3L1Xxzq3gHYwZDcqixVjGn+TSTS5cQnZiFJgYbG64GuxEiN
VdKTaHdGqFk2QwbfBMnbArNsF/eGwh1AJ1rSqZvSEbFCyOf9bd+5ykHqKRyZGtso
voewP+k6HzRkmJrkrwKoM1XyWJwvAM4JrLVurIqPMsg18+23uH4Wdik8fJgDHMMy
IGlDYo6TSMea43+9/Sre8NJg/3oCP8XelV+NrvTlBpGzjAU931alpUAXKUHUIGL8
Tep1gkv/UpEUB8abC8EQATLlyB3o9COwZVk3qqjesDh3e2ar6FUUEpSEhBMqggs0
ionqFPRtWPytczMMC91nq6PW1bvc7ctNQlfa0Y55OpHdCCTrngDMEtfYa+KCMkcO
W8/swaUGEhlk84g6gMUvQOGmwM4BWEZd57HbVEO8eHe81f58ygNoCUsDLYGDc04K
880pqUyDVxoGSBJqGvVWcc53bjg4/BGaOUf3lDhMJfk/Je8dkdE695NfxtwZoZSo
kC50pljTi1VFMOe2EHBMQfWiSN0kntqXcjuNcN8Z+mJ6NLE7YT53KxAgfuGVyiJG
Pomce+UmLpW7m40C6M5rH9bQK+ReAfL2NNjohl86gmEUoxjmfbfl5kruhr2TRznR
9gY5Rf9TsdAobb7wsgRzbRfwcdDvV+n/uFVVdpnLC+6hMBS99nZH0ft1VCSXX1Nm
ttUjyQ3a0kfXLBTGYgw73TJcrMSbtkdcKglITN9hByUN3WYNiwexCekLEDCnb6DS
hkLM8wshWE0k28oczXqSttSBQi1Nl1WiMzdVLSjZ71Kf6NZ87bCoCdeJhwi8w4bC
aCK3126obD5PB24mLH0mfw4jV7ThH473wt7EpKaFMrdwnChN6H8PgukqDrVo75CB
COQ//r32NEoCcelhni9dZbRyFawTjusl7knEpoqZFVXELecCPvf0/8wrKFiUGyfq
yX1g1ld77OwKcBd1Agb4ShnH649AkobbZMz1AD9suiXVJQnYoNUCTRDmTAvW2Fos
wqss0nkN/WaD/gOVYw2yuK5q/f7Cpp94ELtHf/uEaq1PlRtuvQYtGZ7Fa3n4YHJZ
YonlW0ffIAuGmbY2ZEajOVDE78FArLEPXrXEmMns/j6dihuIDc0g8YKbkX//ZrhD
CtdxL/klC8g4P0+NMZZR0LkPuAgDwZnSf1Mo7HAgOjTtruudh2JdO/q+9uv5OxmU
wgBGDM72CvKs0/9OkgCsDyNQh4DNKksdR27X2wpVoP8QyqCLP5zf+v10JKoSXd08
/9i3vGXbjjc3VW6LRmVi8yofs/AINT9FjuLReKaFVqZll5DZcRpmKhjR3bPu+rKM
GZpglge4mdiYoFwp2yjhlWHBEP607/R46HslyEzaD0L4d7XHG7MiFP5IQwJkN9IH
9icnSOjgg25YUEzSTb1Dw8ZYaZZ0cfjlv6BHjbZsnVy4jgqVmswoseuxEXEQcdPE
t/NXJG5dDCCPUYSbVDu2qtUdVSH+lHDziBO4eNbGzwSXU3XvqZp27g4rN4zgOUwl
42JynkkfAuqwy7oAKf3+qZS6BV+s7FnU80mYma6t1z42pH1sJI7G5PxqTLKM+Gem
S6qWO9p7Hk/kZvWZHM/5AIe8EhgreMaw3r2ucQO7J3L8rScC603gWXeEe9PGxl8Y
ybX4AQARZEs2TqZKzggwwk4Mk4DiyDGUEpsCs94qvlaLBDxHueUvgwONCHUcqJD5
D/qys6f/Gypr+nax0IAKyiF7+3mwhGY0DqQ3ukixmFDGA5xbh54z8j1Zfz0cLNnz
vF4pNplMmGKUdATUAvMnOyRSwIJPFk7NcAF3Y2DCWvEFtEO7ToIK4w/2KaGvJ7Vh
lnIetInHrs0a7+alo5LDmZuLOZ2bi4xEAV0u9tzSwBj8KL2ZdzXghQfPd9iOT/dw
j9EiGPCU3W3wXVhhDXkA7VTUa1xkNDGp7rm26Elqa0Y2mAuJAJvjpFOjhWCxDPqz
JFhkQN/X8939HJtqAA9muENymx9osmjdybZh+mLzxaMfIokabJlb0VjG6aABO7L0
SwnEhqa3EDetIR6+9GSJFEFoAL5W2wfD7LxtbzjSZ7zW/g80oWdxG1Msq18Aw8PW
UtD0ph8UKOKSj4d/MD7DWX5NzVXuTIDlWeUyW1zRy8UTi6KYrk8K4i/Eloas1Mpb
ifidAuBa+3qISXMJaBNUsqQoHKdR52KVZwFmqjTSm9U42+VM4R7BBKV2T4Q1906m
C1tA8TTd9IYqT6EaXVC5UZSdXy64teHusDZbK5rYwOwQRfwxhK2o1fy+7WoQK5Lb
6CYGbcI3PhsYPDYgB+K7pH+FGoPK3dLumyYA2wSJfpoZg4VSoIDmXe/bCbsVkQ8q
UQ/EzV4zuTRQvhWWUU0bXThJRxr/dMQSTz+bWmBdDBWWHvNbbfkIagRmWi5dI0Wg
yKrDBfRjgpcToC6tE6EBQJOVLp/l4BocxhzmtDtIjYknrucJlIY+kIhEF4ljkM7i
bnbUzP3jKrqjzztmC8Ao8qQJY/1QhUAc9mpR4j8BPLm9lPAyuJHuGT/+zKeDAVzW
uJdRiuQVacKWG3fxnvSOlkHGTUH3JOjefZn8OyICaVVlPWKG/jJoMsMquyuszQeR
YD4lofN4h2NshqKNf+Mk7Mbn3P4zpfuqUEzOPeBJ9c0dsGO7hdgd+QBHGWFK8/KQ
+4SPiQFNowjQfcvgnZHnVBk6hTaYSsPVckmLh+DDmXCi+Ps7+APLss0Eh3Oo1XaI
FVFNMmHB6daGFVu3rDUm9T7u3dyhPH4pDGIy8JOM1JnmsXov/XTxC33LQji/B7JS
nob3Jgewce2MrfEjPdhW4QT6EEeB+8Rm1y4Nng/SzF/OawE0uECuXVTCiz4Xuu36
I3nKEW9WNk1rhmjqmmu+ONeJmbrsR7WsEALiNnnPaI1P8NKSdWF5bqG9u4cS/OMk
Lxl5NxJQP7thwQnBI9J/XlKEX1U0CM75C7S9/3RRjy9JPt31hA/AHoMU2x/YLMkW
N4Vn8XQp3x3opCK9aC645W2FOJZvjSGb2mb/St2WwOMkF82+AaoMrAI5uN8Bvycv
qCFqCVhB8PGIMCPzsLPwm74E/oIwHoXWylw20+PdYlf+rY0SBTZEJmKdu9/hrB/h
SZNB6MMlyO2Ek0ZKEUqFJfeh4jRHqDi1ujPqKwBcRfZZHkFPBn04dE9EBssRpLUf
Y+3XOwCHGZ6DPQhlGVipG5gyfOn3dEZTCcb6+lmdi9qZweA0EVhHMmKT9kpf/+wk
1PaOFke5IviynWP/bQCo/3VaNIwqd7/YhTbjAT3OsxOjm6HLcAAF1/ghRSPI2zre
jzoWi4B3bRudkdFMjOwyffVuCoDDNj+/MA7XbOMHV1u5ps2Ji+lZ5o9mZDo0rtoD
Z2jhRRw3XTJ5lkotgxKNfgJg4V1VgK38TDn3BP2izOGLch75piWqKoApj9+j3ftQ
ZAhcmIv4MFuDq9rR4dWZacmkBxU9YtLx+YwWJw4lplweVEsob5kz5mf7TeBFmMf5
gJib1X5+1L00DBjaYUyghBu+j7l65TF1OSG8AV0HLUgP1u5n+YZSQTqJLup6lxh0
M7zlDB3eFSDkOHFcv7Aob2qcTbG18sDYASO+a8oA5oq6fKCJ0OrTt88iae60Q5nI
+LpUz/tAszq7JLy68AGp/ads0QO2WUsMwO8YZjeUzGvz3XdwvN/c3TtEQp4NlohV
UfCZQ/JgoDOAj2SPIBaFrnn3Fkx51IC8PPEPbXDw1jeJN9QJLxyIm40Uwm62DvnH
ZdpAIyRJZeB9ghkQDjivrEXJtBqcYSJdIc36sOrCRxiIH5sYbSkOxRhj3ffAymvz
hMZiZ1oZTCqsFovzDe2E5rb+Tp/LxBF1fzUsFN6/X6iz2Uij6dxOzD28N5gQ8Zm4
WH7nRXpH+67H4WSxrBe3KsxOkB7cLylfuucVJ3vpts0NKEBnTBCIFrisJExwcWg6
tTmb9b3dqdvXel/4AsSMK5FACDOMEIqlrcWluANqCFpNE2L/Z+ZSyYa6nwlsz4q5
/5ZSBzOFok38eAn20x5TUvBBD7zFtTL9cKYpE/BKCHby8pA5tQ06IL2AYbKBBJOE
omEZfw5URmeRx9DYrmwkRzA/lacwC/vCL2iGetbYAJ2BMVZvxPjnUh7dFdBhEQyr
avolS0xt7A92ebC3+QLwWS9ootbc5DV7okzp67JgTTJg6jjAGoE3cDoMdIfr7sHC
+MENAOKASH/LEe8GH5NkXNigcoRC7gLwRiWEhTnxdZC1v+Aw5hXRA6SDeN5YdLYx
PTC0MvfE9O6p4UACz9RsjoHIPHdDhkK9jJqLc9uqy5zWeaCoZE/LT3bgnkpLn6ef
TYFfeR1D8UfYX6GagsCfj7+YNxqKeEDUixSV2HJa/yjgO4J2ppFk0NkcoAaxV6aC
8FDsqD6ZCqi34srPg8+5HZtUcjCbgYurcBVXiUCmODf2kjfL7QL9Ab9SVqObOaJH
3GXHKCEpENOePeRPMcT4s229BIT7bA4xhIC7d7d/V33qbQe7RAH+wtxk/yHDe94i
Wy3MMc+WWySQxkfnj/q36AKKfIducWOc1BX3uJz+g4OZy4KIJHry1CgNDzhwwxZr
Niy8+yRRIp2wpbzWO67Ju9JdjRKokuzcHX1uiZynZNx848pDjkIvGop+ZKee6CfZ
e7QHgCDj8PS2CHzgoNLY/N/S15qmMcn63ca8xzzeCgNMfKLoXu6RDtEUGBI7+8pI
mzbpISRm9ET23BbNQB8eLD++P8+3PWMQa5zwHEULoN9eN9KacmB/3drjvAQY75BH
AoX8tySp9xz8CgmxQtRkkxVPbzR+ZHmJqgzX0ixqQ8OKkMG1uHa1SDLvOxSamR0e
1+lLQD7Ir0EGvfCc6LjYRveQ2uHSvjT26CZmX/hbkR9JuXjLtUOVel5EhdLjczRo
acZ3v45fj34Fbwp584CZ4olBpZSWl9EDVkeXi0J8IrRdwovSEOwXuVkTPu1chA+6
tXr2VeKvWI1YOukaLHiV58msBcpfiVPRwK8GZg0VcbRk45/GIK7Y5eaGgBSVzDPb
VD33NCN0l7dLdnFEh0GKXsF47C+Ql8tdSq2skx71KUjt3ZgoVKNTpZwRf5m+9NrS
zN3RsDQAeGr/VbtpbAxUt0+W32vxX1Xc5DqMq+ikSdBQ6Hsu0aNU3dxspjfZts8h
NziEgcg/W4bMQpm92F6tER/Udby/79KiOKz4M5UJMbpxm6Ol1hnVgIHhSFMggdvI
ZrmyKt6gR+YFIQapMGLMbV/URESI0ET1xaH9Yo/Zad1YITHS5jrKBRYvI/js/uvk
LZ/zIHbhMU9hB+K9DyxMOCT0gnhTLAmdlIxQcTCdeYPN0WS1VMGknJ9v3bbyHXQm
0J7DrbTU1EUWMJQtziYGPZJQeHdVVUKun88iloJXqfXcHjMZRJF7700Np5q+Bzev
khsIrF/XMFn8DxZJgxyIGxxtHn8W6LMtVkrZPZ1EbZSMeqpBV54GeZNQ3H5x0JsU
18dNiWBpX28FlC3E9cILCakEVw0wzCHfIMMauJmuQ+MWoa0c6X6P9C4DYYI9oEUq
cPaTYsG5/oYJei+yD5A/tTVn317fgK2CgmtU3dYWPkE/Xt3mqp9PY0Vq56qP9N/w
Pkj+AnypSQ3pUEnZU3yBTQma9LKNkE65qG2FRX1e/lntfW/UL5kYmy79KNCfpRGR
kMOu8l+LCu5UF8sb4VOfox3p2f4vKl3+mz7mmto2xr95lKA4ESmHqDaqBHPfjnyI
S+6NMYJCU0K5ibTgDU4bqYKfJ3gY7inxypDQ/63tUlc3csSIuSd82Fd4RnJsEU6g
4rJrYN5Y7WcYWh/PSOLoNUxx8mGak8YDC9Lk69j3GRjAYMMN5Y8v5vgWLy3aoAmM
20DTRvG7bfT3J7Geu3Le7KefkSzGu2eTygLiRNrbJkimBo8ABSvrzONyB4BcL5T4
USD6Y9FYo1tsc5HnRE2UGR7DsOGeEY/9MZBsTkgrGfweQsdPL/Aj6P8nDZ9IdV4a
nuD4lb4tMkLeB5iWlqPxbBBMQmThfTIzUgU0siQvl9aylqQ00FLXgbdqODi1XM7E
FRXHjgcwpCMxoAPFb8Bs74pCQj6RlvDoZRE6fiv3pl0n7iX8vdpjUnoRpWXOjefZ
jrni+r26jaOIbSK9bQqbgco5ulAH421+MKMrmGF5s6RbRXO54swPWA9SIncYe19z
pEl6O5aw2XHx0PHnO3GqzkZ9Zae3xFxftkLGoGqwzGIlZ6SkwF93/7yp5iUmZaOy
GVhDTWrKZoOkVoH30MXv3euU7oy+6OMCiLqtoqzgjK8gZbYy3OS2gljlJkqSOW5J
YJzq465nhFj80FeAV3YgaSbkV8ztcUMJHYLsFn5AtunWbbU7lahCl9zQsCzANfON
lHs4gz+l9deq6uXq4DPpeOAWVoXQ3j4HNCAvBIQGoD49Ku01LFlSdIPzSUbQnzZB
FWjWuyt19vECZ9QQUO9gPH0KPdT4Mtu1BvD1FLHwbE67FL0jVIcMaX3S+w59EyAE
qc/WgNWAyWZrmZmaKLTiTvTcBvYWfEDvNaDGZM44G35GCCfx0DhUzpGTJEpIwCny
I/ni7DaMaOkUPlvD9RNMG5StoCBSL7P/Akg0VGkS2xqLEDGiU8vEtENoryKs1211
RTFNSyo0Jz0UQrO8N6UZHPx8vVqoATkvviF0c6sHQD3W7u3Qazy+myCp+S+6Bzyv
XuOcjAMnVOorI1EygNF7KJdZqTXWZo6mCrCX0Bi0AJJM3cbntkK/psAggsT0LWNn
7sMzYeAk8WqEZHFc8Q4MWPEjntqL9Cq0/1Z8E+TqKP19LuXxGfBYeJQTaAH9yUF9
9X411s/Hsj0g7dEYo4WalblYOkqHyWzgh7GHCA7GOXHINC8/VQk0oTAWW7sUSZ6a
7mjlYNXNOWh/peFl7vWCo7PDeG0tilrqvU6lmo7iMRjKkKT7pJ2no8R2jNJQI/vz
mKgVni/+pMhJ9y6BiOgNrIAQ7n/SFb1f8mpOQHEHvsR6aPYoYKap4TEPnBdro6B3
SOmB0dtX/pbccKBKHJAsAaXjBJ7BF3b1R2YDuunhMV+8R2+s+NXe5rbhVOj8PTVc
JpGYDJWXFMN/jF4tHriLP3Wtvk1M2URnK0oXXFYAVQkmcRTETY5Gb2oz7f8Yu500
Bwe7pUvBXAh6ZeEAH/BWYdQOjqcwQpB8+8mAfuHgCzTbEqeV3iqTYMeqUjMeODJT
PTrlKgje+eKjBdy4XQN9q+zFYt+INJIpNF/UU2j9XJvbw8kDq+8YaTmCirM7SGO5
6fgtuyewrtkveU+D0xFUd8j5hs8HVWRr4kQhZGAxCkqY1JSp/L6JllpLlCu7Al09
UUVpRt3VKmpv9fMjCcNmfYTC5umNcgulFMxZCQejCnc/oEnqxJ93f6So6FRGLtEv
vAkNYrGp9lZ2NYwodIoB3fXTP3h2L/1y2vyVQabAPzGh8mpkWBNOyM3+EkCDcmlj
Nsa8aTZ5Q0u9cmDUzNgsXfxSFPXDqB2aq1HNQ88zjc/gdj+BF1X6atCUtBtePrX9
qWRFXptHYazOdb3x8L26iy/oIaLzHHjFQ+mx1UvvhLLpsBMG03NSjbzIw4w+7F/2
D3i6hTVMbsOMdOehv9gPkyh1jURxsBmqz6l03wF2TXzejxSjtfTzO6QlvIIzBosG
v239/f8qqZHQnhcSt2WkI8yaqrThUpoKVgHx/NUq+UOzpkx8gwhhT3hfKzYXhGCp
sKXRH4RwnkzQg84yxByUMtSEQ/mR9n/iWFr1sf08qVortAZCGY7duhA6lnVogGSY
n0zsrR22wbt5o4JEkQpGuXRC48dcoA0UNGL49zOJQcmS7ZCMVh70LZr/xX53iPEb
jhPIT8WlrOtg1lD34pSyER7e04YDCKaVX190SC5lCYRR+mkulhq3GgCRoeuJwdQ8
9rNn8/otdwc1XbnAXTJTE7i9rc98imYD98CrQwte+C2FC6tiv9e/VbmDq19AkJj0
moSJeVlMLcOUWn500y8ySobPIqyaz56xPQjRgK+YjmvWCMdEaX8wylCfpT9HItcj
513r0TZ2VvgI2XJ9/hFsThnZpwjLb7s0JyqXFXs4y+VKhwmF719mKe6h7z20oS+t
Z16G7OScijhG6cPzqrrKXrhxfnf8rNY5hZlRV4773Wee1/hx+6lC7gWTEuSh3S+9
ESjIo2u0+GfdiedN9StG1edPWxs64ZQebg7nXcEVam//TCE1klyJS5Vr9ri62EwC
adirLcI2hXmWNubrpkOPxcGNJF4hdK1HhOdFhFdXKVzql0mYBI0nSy3ApBz2YpSu
13KOkf8kXCb4IYOrCVa1TYp80wYCAp18eKDAxWA8UchE6QH3I+E+C84UcBWWOyZL
xSHKdoXxVsopviY583Z+bO3FWy7NCBizQ92knK4xCdvVS9GNvW+co2+vqEU3LXNW
CAyPsBRhEcAOmABRfzM0+UQMxdiB5pR08VBBnJlWv9R954tX9jN6IIN/Ch5fOSA3
ldgTcvK5q80VyXz3Zq15ah+kBxom6OOZYXnV75ZTdLyhZvnRWaNVpJgAqia5N/2i
PxMxHIpB7lzfhWzUsATNTSggoOFUKLhpcsNQv43E7hYfvxXtP9UmS8Sp5JXPqbI9
6DSH4bgDFUsuf/gyJlnCv7AvS0UP48aDsU3bTRzdUXamn0ZcHldRZGaM60B3b5F3
C8Dd5YxRqgl1a9ZNWEFytkrqrov0dQZn0tGdABJMZJYmmPWNIdocvmolNFF4aecX
Gx9yRilD0IzZqeiQ+VP456+bDjDbBofmSMCnSA4LKmMICq2ZrDy/L7fS/L7T0VMm
eemX9KKWGxnHNSt7AsXv/XV81SspCbJ/f6sTYIK7Px/8MsSVSklJZhTjiJ4l37M9
elxR5VAe+EusoW2xnHNeESFJR37n0p3ZXK3G6a5orRKRjEWlt6/suHUbpoiEiCIU
b70Kyh/RHjtIm3i/p4pVv1OducRoMJ3XnHmtmYul9BQMG7n+O4eG3Qo1d9+Xd++L
91UWr54qzkbE8L8SRMmb0NiMFwGdwFPQc+tviYgk+TfYB/zKLw5946y8ZAEadolG
fXKJhfLk6HRaWoVgofz6mwdm+3eI91uQymRb3nogC843E3brIa+J9r+EjJotlujT
cFd8uLSAWmamaA10lAATOW+CgXX7u9eKmu3WZ33NDynrFTwbmsgJP2wKwAHd7kdx
Z6Z//7SPKO3EtbphLmKV5J0W89Yo+k7wrEaaozw5akODkx6E7Usr9dsYVncLdO8w
uKMbd2W6hzWRYtmY0Jf8Kb57Ey9gJ+ovumVejkpHURJpzJWHMBpb1ambEqsfHprx
mUIh91nGLLkgFzNufNnBrpYiuR1CKC6SHvVt6IiXgv4CHD8gsEcgFXMOTUcnLXXJ
/EVnu2lz180UyXCFBlLPteQNN1mjucEXelzbHOYnm56gc3ae+/S2ZX9OIpI8QKlB
me2grvbI+YRqJDMA7smSdaILHMU4jBDHnmE43FAhvUgnflFbwUqsmSLyY+kj1S+B
92t+rilxy54teVQ5KCe0dRTgUizvvjGxoJftlIqYuwci1V/Zw9HQKJy0jIlb0+/w
WSOkWP1TGNJTKs0oPqpZCr2RXTlmHfSTk4j9T9PkiWeb7yEheVlfK53RtxJZgOr5
Pp+lZa9ZkbgiCNjByzyXiCjL4DsfiSy64MWRntarI+T7ypj1RHSKGoA3G2HCCTSZ
Ut+BmQXoHqfHbl2b12GGCLl9R6+HnKccXrGuZ9RzZ30ESsRizhyfmPjOROlBU3+2
zbTDodzyydKAjx6VxqCjsfeWcu81zQyZKQZMtt4q+PakPyLINfz3hKMqC7pBQ46J
E9WJv3tuSrAJxXGWZYks39gwI6RL/Vf/8PTu5B+Dt+M1BdAbdoy2piaZ8S4C8xke
EfKfopzh/rDks6kuFWYIBot1u4EcGcWyMXSR3K2KjtTxNRHw5EOAaind6jBUklsu
U55sXB7/a1Bkw7yDh8/S8RP0gCwS7WPN1uFUjzr0HKKJKrcrUnV+em7Su8bRHzMj
XRdAehYaATWMN3rytJ15ybR7qKtZwGWRl0zW6YwRdZmQjWF12BUwXWsLAFK7AJLN
MjAU3A+TrjPRKAa2mjPwc54vbwlhQzCfaD3r3vS1pWDMQl6jus9PNKHIUw7TZ8GA
O09PGJuMDzbPkiIMcrvTHQaEEsWnCAtSiKh8VrSUxlKaANg04nSIGQAkA8aWcIWY
tNhrUsYcUO0yhIPlBA6MWg6S/HcIx+XTJqjMIBrLVOx3gT/sD81cx6n7en5Zjvsm
BZgRTOcNUXUbpAbLbxHDlxRiuN+Rh4g+KlsldXOjBxgB4/H79rzAsg2+usfHH2Fi
5FOxt2ma3Qd1IUz9D6UgxjpS+KP+nOXDWrg+q2udXUZhLokugNQQrFS4ZXphviw7
7FkvNZ/NYbp9usogww7dWLhQJWSnzwtldu/maAzdISx7T5RwBoQQV8iSSApMDnhF
+xGrWl2QnrNXv4Hu5NvMDOcyC4xZ7GezMHT6ee8Rm+JXRXKBPb9c0NH7tehxMIr3
Z/8FcYR2weypu+eojxUiA5PKOx61L7ULttAZ83NrvSFwh5C+1OfhviS2mmSo8xuq
XWiaRBd4CM5KOm5fjooVl/J9iu2/Q4ScVTb4eGfuybhJWOXvi+3PixBXUhExiRHl
kpDf0RX+DOzxFlR7Oa5gFKlnIT87Dq0Tylm8m3rt2qaFZa8PA2NyJ7UvSm2f2M9v
NGWNtAiIH2W2TeciNGauzlfYo86wIIGvGAUjvfmdE/+2YLP5BIl0i3JiXLqXELFM
heHR1Zk2FlVT6AVKoggi/HTgxmFArEOx9+RP8N+wZCkFlUopjwloRl897tx6M63G
KiT9W+JkhoISRsg8rAug3pMemcYBV0B4BThJbgXFeTJlroTsCEurheIAhlPiVVbA
mg1MPOQJCZXyRa+j3IFNpevBjYznHSCYKd2sZua+GPmXLBq0Mj46HmqfrT4lUfIG
govuhYqG9q6xIk8J6l4vOWIv57LA5UVjBhRULEtk/EQYI4nwuUpy6PTOQusxYJVF
Hl98E6zH9hPwNVRiF/hWmKvG7zeyMQPqqMr+k01bDYHltPULSVyqUIvlcIFP1eAd
ro9Y34Sh4sRpMlTgRpGt2NDN8wTlZwDY9TNgPnSUXMzhGGJe5MepHWHckGkfxT9g
B4Z5e/yDYCJ9xDq0hL2OqK8P4cgSH/uAGAe2oyOmzbUb7qTYg4B6yOhNGuEc5eps
tGY3Dj4zGT5414POS49i8ZjgI2qZWfLvI93gksuhHzalw2FdQuEuJcmQJ6RPLEWD
9artzDb1XcWSWSVwHzKeOWm/bLggv/AMB31bHzy+XLVswVEctsO4feWg8cElwMFr
gXCpb4pIemYtyPtPwAA1hFVLipHbnWEG6iKO/25pLlinYmrfnmMLyZfxD7qL80Yc
O4rnPa1n0dxy1cgmj/2YKCUC+Y7x0va3RUTyUB9I6nSoQwDqhw91KBg5/TsIKiCK
ElllpwWsbbsSxPhlEj1KBFl2/8jcCq8+M76ELgu6Oc0HP8WVsM8Fnh0LPcnxNt+b
4j4sKTHXp1Pcq1GHc6gXvjXisr7YpwW2xTGItTjyOC5qIRwcGjj5vrn/5DoKuU4f
4Dnb46vrrp+Jhu/FA/vkV5TpYvsYAi6IAbF8I8GNybMpr7X4W6c4q/YSUQ59D5IM
hT1nnvTNMOs3P01YLYdAs2m2MrAq2agJMJyAo7MwfFzEjlT+ozacLwROMgxqCVP6
2ZZ7m2SMCsfvUNfnLkBqMA==
`pragma protect end_protected

//pragma protect end


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   simple_dual_port_ram_fifo.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      EFX FIFO
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
//
// *******************************

module `IP_MODULE_NAME(efx_fifo_top) # (
    parameter FAMILY             = "TRION",       // New Param
    parameter SYNC_CLK           = 0,
    parameter BYPASS_RESET_SYNC  = 0,             // New Param
    parameter SYNC_STAGE         = 2,             // New Param
    parameter MODE               = "STANDARD",
    parameter DEPTH              = 512,           // Reverted (Equivalent to WDATA_DEPTH) 
    parameter DATA_WIDTH         = 32,            // Reverted (Equivalent to WDATA_WIDTH)
    parameter PIPELINE_REG       = 1,             // Reverted (By default is ON)
    parameter OPTIONAL_FLAGS     = 1,             // Reverted
    parameter OUTPUT_REG         = 0,
    parameter PROGRAMMABLE_FULL  = "STATIC_DUAL", // Set to "NONE" if not require this feature
    parameter PROG_FULL_ASSERT   = 27,
    parameter PROG_FULL_NEGATE   = 23,
    parameter PROGRAMMABLE_EMPTY = "STATIC_DUAL", // Set to "NONE" if not require this feature
    parameter PROG_EMPTY_ASSERT  = 5,
    parameter PROG_EMPTY_NEGATE  = 7,
    parameter ALMOST_FLAG        = OPTIONAL_FLAGS,
    parameter HANDSHAKE_FLAG     = OPTIONAL_FLAGS,
    parameter ASYM_WIDTH_RATIO   = 4,
    parameter WADDR_WIDTH        = depth2width(DEPTH),
    parameter RDATA_WIDTH        = rdwidthcompute(ASYM_WIDTH_RATIO,DATA_WIDTH),
    parameter RD_DEPTH           = rddepthcompute(DEPTH,DATA_WIDTH,RDATA_WIDTH),
    parameter RADDR_WIDTH        = depth2width(RD_DEPTH),
    parameter ENDIANESS		      = 0,
    parameter OVERFLOW_PROTECT   = 1,
    parameter UNDERFLOW_PROTECT  = 1,
    parameter RAM_STYLE          = "block_ram"

)(
    input  wire                   a_rst_i,
    input  wire                   a_wr_rst_i,
    input  wire                   a_rd_rst_i,
    input  wire                   clk_i,
    input  wire                   wr_clk_i,
    input  wire                   rd_clk_i,
    input  wire                   wr_en_i,
    input  wire                   rd_en_i,
    input  wire [DATA_WIDTH-1:0]  wdata,
    output wire                   almost_full_o,
    output wire                   prog_full_o,
    output wire                   full_o,
    output wire                   overflow_o,
    output wire                   wr_ack_o,
    output wire [WADDR_WIDTH :0]  datacount_o,
    output wire [WADDR_WIDTH :0]  wr_datacount_o,
    output wire                   empty_o,
    output wire                   almost_empty_o,
    output wire                   prog_empty_o,
    output wire                   underflow_o,
    output wire                   rd_valid_o,
    output wire [RDATA_WIDTH-1:0] rdata,
    output wire [RADDR_WIDTH :0]  rd_datacount_o,
    output wire                   rst_busy
); 

localparam WR_DEPTH      = DEPTH;
localparam WDATA_WIDTH   = DATA_WIDTH;
localparam RAM_MUX_RATIO = (RDATA_WIDTH <= WDATA_WIDTH/32) ? 32 :
                           (RDATA_WIDTH <= WDATA_WIDTH/16) ? 16 :
                           (RDATA_WIDTH <= WDATA_WIDTH/8)  ? 8  :
                           (RDATA_WIDTH <= WDATA_WIDTH/4)  ? 4  :
                           (RDATA_WIDTH <= WDATA_WIDTH/2)  ? 2  :
                           (RDATA_WIDTH <= WDATA_WIDTH)    ? 1  :
                           (RDATA_WIDTH <= WDATA_WIDTH*2)  ? 2  :
                           (RDATA_WIDTH <= WDATA_WIDTH*4)  ? 4  :
                           (RDATA_WIDTH <= WDATA_WIDTH*8)  ? 8  :
                           (RDATA_WIDTH <= WDATA_WIDTH*16) ? 16 : 32;           

wire                   wr_rst_int;
wire                   rd_rst_int;
wire                   wr_en_int;
wire                   rd_en_int;
wire [WADDR_WIDTH-1:0] waddr;
wire [RADDR_WIDTH-1:0] raddr;
wire                   wr_clk_int;
wire                   rd_clk_int;
wire [WADDR_WIDTH :0]  wr_datacount_int;
wire [RADDR_WIDTH :0]  rd_datacount_int;

generate
    if (ASYM_WIDTH_RATIO == 4) begin
        if (SYNC_CLK) begin
            assign wr_clk_int     = clk_i;    
            assign rd_clk_int     = clk_i;
            assign datacount_o    = wr_datacount_int;
            assign wr_datacount_o = {(WADDR_WIDTH+1){1'b0}};
            assign rd_datacount_o = {(RADDR_WIDTH+1){1'b0}};
        end
        else begin
            assign wr_clk_int     = wr_clk_i;    
            assign rd_clk_int     = rd_clk_i;
            assign datacount_o    = {(WADDR_WIDTH+1){1'b0}};
            assign wr_datacount_o = wr_datacount_int;
            assign rd_datacount_o = rd_datacount_int;
        end
    end
    else begin
        assign datacount_o    = {(WADDR_WIDTH+1){1'b0}};
        assign wr_datacount_o = wr_datacount_int;
        assign rd_datacount_o = rd_datacount_int;
        if (SYNC_CLK) begin
            assign wr_clk_int     = clk_i;    
            assign rd_clk_int     = clk_i;
        end
        else begin
            assign wr_clk_int     = wr_clk_i;    
            assign rd_clk_int     = rd_clk_i;
        end
    end    

    if (!SYNC_CLK) begin
        //(* async_reg = "true" *) reg [1:0] wr_rst;
        //(* async_reg = "true" *) reg [1:0] rd_rst;
        //
        //always @ (posedge wr_clk_int or posedge a_rst_i) begin
        //    if (a_rst_i) 
        //        wr_rst <= 2'b11;
        //    else 
        //        wr_rst <= {wr_rst[0],1'b0};            
        //end
        //
        //always @ (posedge rd_clk_int or posedge a_rst_i) begin
        //    if (a_rst_i) 
        //        rd_rst <= 2'b11;
        //    else 
        //        rd_rst <= {rd_rst[0],1'b0};            
        //end
        

        if (BYPASS_RESET_SYNC) begin
            assign wr_rst_int = a_wr_rst_i;
            assign rd_rst_int = a_rd_rst_i; 
            assign rst_busy   = 1'b0;
        end 
        else begin
            `IP_MODULE_NAME(efx_resetsync) #(
               .ACTIVE_LOW (0)
            ) efx_resetsync_wr_rst (
               .clk   (wr_clk_int),
               .reset (a_rst_i),
               .d_o   (wr_rst_int)
            );

            `IP_MODULE_NAME(efx_resetsync) #(
               .ACTIVE_LOW (0)
            ) efx_resetsync_rd_rst (
               .clk   (rd_clk_int),
               .reset (a_rst_i),
               .d_o   (rd_rst_int)
            );
            assign rst_busy   = wr_rst_int | rd_rst_int;
        end

    end
    else begin
        //(* async_reg = "true" *) reg [1:0] a_rst;
        //
        //always @ (posedge clk_i or posedge a_rst_i) begin
        //    if (a_rst_i) 
        //        a_rst <= 2'b11;
        //    else 
        //        a_rst <= {a_rst[0],1'b0};            
        //end
        wire   a_rst;

        `IP_MODULE_NAME(efx_resetsync) #(
           .ACTIVE_LOW (0)
        ) efx_resetsync_a_rst (
           .clk   (clk_i),
           .reset (a_rst_i),
           .d_o   (a_rst)
        );

        if (BYPASS_RESET_SYNC) begin
            assign wr_rst_int = a_rst_i;
            assign rd_rst_int = a_rst_i;
            assign rst_busy   = 1'b0;
        end
        else begin
            assign wr_rst_int = a_rst;
            assign rd_rst_int = a_rst;   
            assign rst_busy   = wr_rst_int | rd_rst_int;
        end
    end 
endgenerate

`IP_MODULE_NAME(efx_fifo_ram) # (
    .FAMILY        (FAMILY),
    .WR_DEPTH      (WR_DEPTH),
    .RD_DEPTH      (RD_DEPTH),
    .WDATA_WIDTH   (WDATA_WIDTH),
    .RDATA_WIDTH   (RDATA_WIDTH),
    .WADDR_WIDTH   (WADDR_WIDTH),
    .RADDR_WIDTH   (RADDR_WIDTH),
    .OUTPUT_REG    (OUTPUT_REG),
    .RAM_MUX_RATIO (RAM_MUX_RATIO),
    .ENDIANESS	    (ENDIANESS),
    .RAM_STYLE     (RAM_STYLE)
) xefx_fifo_ram (
    .wdata (wdata), 
    .waddr (waddr),
    .raddr (raddr), 
    .we    (wr_en_int), 
    .re    (rd_en_int),
    .wclk  (wr_clk_int),
    .rclk  (rd_clk_int),
    .rdata (rdata)
);

`IP_MODULE_NAME(efx_fifo_ctl) # (
    .SYNC_CLK           (SYNC_CLK),
    .SYNC_STAGE         (SYNC_STAGE),
    .MODE               (MODE),
    .WR_DEPTH           (WR_DEPTH),
    .WADDR_WIDTH        (WADDR_WIDTH),
    .RADDR_WIDTH        (RADDR_WIDTH),
    .ASYM_WIDTH_RATIO   (ASYM_WIDTH_RATIO),
    .RAM_MUX_RATIO      (RAM_MUX_RATIO),
    .PIPELINE_REG       (PIPELINE_REG),
    .ALMOST_FLAG        (ALMOST_FLAG),
    .PROGRAMMABLE_FULL  (PROGRAMMABLE_FULL),
    .PROG_FULL_ASSERT   (PROG_FULL_ASSERT),
    .PROG_FULL_NEGATE   (PROG_FULL_NEGATE),
    .PROGRAMMABLE_EMPTY (PROGRAMMABLE_EMPTY),
    .PROG_EMPTY_ASSERT  (PROG_EMPTY_ASSERT),
    .PROG_EMPTY_NEGATE  (PROG_EMPTY_NEGATE),
    .OUTPUT_REG         (OUTPUT_REG),
    .HANDSHAKE_FLAG     (HANDSHAKE_FLAG),
    .OVERFLOW_PROTECT   (OVERFLOW_PROTECT),
    .UNDERFLOW_PROTECT  (UNDERFLOW_PROTECT)
) xefx_fifo_ctl (
    .wr_rst          (wr_rst_int),
    .rd_rst          (rd_rst_int),
    .wclk            (wr_clk_int),
    .rclk            (rd_clk_int),
    .we              (wr_en_i),
    .re              (rd_en_i),
    .wr_full         (full_o),
    .wr_ack          (wr_ack_o),
    .rd_empty        (empty_o),
    .wr_almost_full  (almost_full_o),
    .rd_almost_empty (almost_empty_o),
    .wr_prog_full    (prog_full_o),
    .rd_prog_empty   (prog_empty_o),
    .wr_en_int       (wr_en_int),
    .rd_en_int       (rd_en_int),
    .waddr           (waddr),
    .raddr           (raddr),
    .wr_datacount    (wr_datacount_int),
    .rd_datacount    (rd_datacount_int),
    .rd_vld          (rd_valid_o),
    .wr_overflow     (overflow_o),
    .rd_underflow    (underflow_o)
);

function integer depth2width;
input [31:0] depth;
begin : fnDepth2Width
    if (depth > 1) begin
        depth = depth - 1;
        for (depth2width=0; depth>0; depth2width = depth2width + 1)
            depth = depth>>1;
        end
    else
       depth2width = 0;
end
endfunction 

function integer width2depth;
input [31:0] width;
begin : fnWidth2Depth
    width2depth = width**2;
end
endfunction

function integer rdwidthcompute;
input [31:0] asym_option;
input [31:0] wr_width;
begin : RdWidthCompute
    rdwidthcompute = (asym_option==0)? wr_width/16 :
                     (asym_option==1)? wr_width/8  :
                     (asym_option==2)? wr_width/4  :
                     (asym_option==3)? wr_width/2  :
                     (asym_option==4)? wr_width/1  :
                     (asym_option==5)? wr_width*2  :
                     (asym_option==6)? wr_width*4  :
                     (asym_option==7)? wr_width*8  :
                     (asym_option==8)? wr_width*16 : wr_width/1;
end
endfunction

function integer rddepthcompute;
input [31:0] wr_depth;
input [31:0] wr_width;
input [31:0] rd_width;
begin : RdDepthCompute
    rddepthcompute = (wr_depth * wr_width) / rd_width;
end
endfunction

endmodule


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   simple_dual_port_ram_fifo.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      EFX FIFO
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
//
// *******************************

module `IP_MODULE_NAME(efx_fifo_ram) #(
    parameter FAMILY        = "TRION",
    parameter WR_DEPTH      = 512,
    parameter RD_DEPTH      = 512,
    parameter WDATA_WIDTH   = 8,
    parameter RDATA_WIDTH   = 8,
    parameter WADDR_WIDTH   = 9,
    parameter RADDR_WIDTH   = 9,
    parameter OUTPUT_REG    = 1,
    parameter RAM_MUX_RATIO = 4,
    parameter ENDIANESS 	 = 0, //0: Big endian (default)   1: Little endian 
    parameter RAM_STYLE     = "block_ram"
) (
    input  wire                     wclk,
    input  wire                     rclk,
    input  wire                     we,
    input  wire                     re,
    input  wire [(WDATA_WIDTH-1):0] wdata,
    input  wire [(WADDR_WIDTH-1):0] waddr,
    input  wire [(RADDR_WIDTH-1):0] raddr,
    output wire [(RDATA_WIDTH-1):0] rdata
);

localparam MEM_DEPTH         = (WR_DEPTH > RD_DEPTH) ? WR_DEPTH : RD_DEPTH;
localparam MEM_DATA_WIDTH    = (WDATA_WIDTH > RDATA_WIDTH) ? RDATA_WIDTH : WDATA_WIDTH;   
localparam LSB_WIDTH         = (WADDR_WIDTH > RADDR_WIDTH) ? (WADDR_WIDTH - RADDR_WIDTH) : (RADDR_WIDTH - WADDR_WIDTH);
localparam RDATA_WDATA_RATIO = (RDATA_WIDTH <= WDATA_WIDTH/32) ? "ONE_THIRTYTWO" :
                               (RDATA_WIDTH <= WDATA_WIDTH/16) ? "ONE_SIXTEENTH" :
                               (RDATA_WIDTH <= WDATA_WIDTH/8)  ? "ONE_EIGHTH"    :
                               (RDATA_WIDTH <= WDATA_WIDTH/4)  ? "ONE_FOURTH"    :
                               (RDATA_WIDTH <= WDATA_WIDTH/2)  ? "ONE_HALF"      :
                               (RDATA_WIDTH <= WDATA_WIDTH)    ? "ONE"           :
                               (RDATA_WIDTH <= WDATA_WIDTH*2)  ? "TWO_TIMES"     :
                               (RDATA_WIDTH <= WDATA_WIDTH*4)  ? "FOUR_TIMES"    :
                               (RDATA_WIDTH <= WDATA_WIDTH*4)  ? "EIGHT_TIMES"   :
                               (RDATA_WIDTH <= WDATA_WIDTH*4)  ? "SIXTEEN_TIMES" : "THIRTYTWO_TIMES";

(* syn_ramstyle = RAM_STYLE *) reg [MEM_DATA_WIDTH-1:0] ram[MEM_DEPTH-1:0];
reg [RDATA_WIDTH-1:0]    r_rdata_1P;
reg [RDATA_WIDTH-1:0]    r_rdata_2P;

wire                     re_int;

generate
    if (FAMILY == "TRION") begin
        if (RDATA_WDATA_RATIO == "ONE") begin
            always @ (posedge wclk) begin
                if (we)
                    ram[waddr] <= wdata;
            end
    
            always @ (posedge rclk) begin
                if (re_int) begin
                    r_rdata_1P <= ram[raddr];
                end
                r_rdata_2P <= r_rdata_1P;
            end
        end
        
        else if (RDATA_WDATA_RATIO == "ONE_THIRTYTWO" || RDATA_WDATA_RATIO == "ONE_SIXTEENTH" || RDATA_WDATA_RATIO == "ONE_EIGHTH" || RDATA_WDATA_RATIO == "ONE_FOURTH"  || RDATA_WDATA_RATIO == "ONE_HALF" ) begin
            if (ENDIANESS == 0) begin 
            	integer i;
            	always @ (posedge wclk) begin
                	for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (we) begin
                            ram[{waddr,LSB_WIDTH'(RAM_MUX_RATIO-1-i)}] <= wdata[((WDATA_WIDTH/RAM_MUX_RATIO)*i) +: WDATA_WIDTH/RAM_MUX_RATIO];
                        end
                    end
                end
                always @ (posedge rclk) begin 
                	if (re_int) begin
                		r_rdata_1P <= ram[raddr];
                    end
                		r_rdata_2P <= r_rdata_1P;
                end
            end
            else begin //endianess == 1
            	integer i;
            	always @ (posedge wclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (we) begin
                            ram[{waddr,LSB_WIDTH'(i)}] <= wdata[((WDATA_WIDTH/RAM_MUX_RATIO)*i) +: WDATA_WIDTH/RAM_MUX_RATIO];
                        end
                    end
                end
                always @ (posedge rclk) begin 
                	if (re_int) begin
                		r_rdata_1P <= ram[raddr];
                	end
                		r_rdata_2P <= r_rdata_1P;
                end
            end
        end
        
        else if (RDATA_WDATA_RATIO == "TWO_TIMES" || RDATA_WDATA_RATIO == "FOUR_TIMES"  || RDATA_WDATA_RATIO == "EIGHT_TIMES"  || RDATA_WDATA_RATIO == "SIXTEEN_TIMES"  ||RDATA_WDATA_RATIO == "THIRTYTWO_TIMES" ) begin
            //integer i;
        	if (ENDIANESS == 0) begin
        		always @ (posedge wclk) begin
        			if (we)
        				ram[waddr] <= wdata;
        		end
        		integer i;
        		always @ (posedge rclk) begin
        			for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (re_int) begin
                    		r_rdata_1P[((RDATA_WIDTH/RAM_MUX_RATIO)*i) +: RDATA_WIDTH/RAM_MUX_RATIO] <= ram[{raddr,LSB_WIDTH'(RAM_MUX_RATIO-1-i)}];
                    	end
                        	r_rdata_2P <= r_rdata_1P;
                    end
                end 
            end
            else begin //endianess == 1
            	always @ (posedge wclk) begin
        			if (we)
        				ram[waddr] <= wdata;
        		end
        		integer i;
        		always @ (posedge rclk) begin
        			for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (re_int) begin
                    		r_rdata_1P[((RDATA_WIDTH/RAM_MUX_RATIO)*i) +: RDATA_WIDTH/RAM_MUX_RATIO] <= ram[{raddr,LSB_WIDTH'(i)}];
                    	end
                        	r_rdata_2P <= r_rdata_1P;
                    end
                end
            end
        end
        if (OUTPUT_REG) begin
            assign re_int = re;
            assign rdata  = r_rdata_2P;            
        end
        else begin
            assign re_int = re;
            assign rdata  = r_rdata_1P;
        end
    end
    else begin
        if (RDATA_WDATA_RATIO == "ONE") begin
            always @ (posedge wclk) begin
                if (we)
                    ram[waddr] <= wdata;
            end
    
            always @ (posedge rclk) begin
                if (re_int) begin
                    r_rdata_1P <= ram[raddr];
                    r_rdata_2P <= r_rdata_1P;
                end
            end
        end 
        else if (RDATA_WDATA_RATIO == "ONE_THIRTYTWO" || RDATA_WDATA_RATIO == "ONE_SIXTEENTH" || RDATA_WDATA_RATIO == "ONE_EIGHTH" || RDATA_WDATA_RATIO == "ONE_FOURTH"  || RDATA_WDATA_RATIO == "ONE_HALF" ) begin
            //integer i;
            if (ENDIANESS == 0) begin
            	integer i;
            	always @ (posedge wclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (we) begin
                            	ram[{waddr,LSB_WIDTH'(RAM_MUX_RATIO-1-i)}] <= wdata[((WDATA_WIDTH/RAM_MUX_RATIO)*i) +: WDATA_WIDTH/RAM_MUX_RATIO];
                        end
                    end
                 end
               	always @ (posedge rclk) begin 
               		if (re_int) begin
               			r_rdata_1P <= ram[raddr];
               			r_rdata_2P <= r_rdata_1P;
               		end
               	end
            end
            
            else begin //endianess == 1
            	integer i;
            	always @ (posedge wclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (we) begin
                            	ram[{waddr,LSB_WIDTH'(i)}] <= wdata[((WDATA_WIDTH/RAM_MUX_RATIO)*i) +: WDATA_WIDTH/RAM_MUX_RATIO];
                        end
                    end
                 end
               	always @ (posedge rclk) begin 
               		if (re_int) begin
               			r_rdata_1P <= ram[raddr];
               			r_rdata_2P <= r_rdata_1P;
               		end
               	end
            end
        end
        else if (RDATA_WDATA_RATIO == "TWO_TIMES" || RDATA_WDATA_RATIO == "FOUR_TIMES"  || RDATA_WDATA_RATIO == "EIGHT_TIMES"  || RDATA_WDATA_RATIO == "SIXTEEN_TIMES"  || RDATA_WDATA_RATIO == "THIRTYTWO_TIMES" ) begin
        	//integer i;
        	if (ENDIANESS == 0) begin
        		always @ (posedge wclk) begin
        			if (we)
        				ram[waddr] <= wdata;
        		end
        		integer i;
            	always @ (posedge rclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (re_int) begin
                    		r_rdata_1P[((RDATA_WIDTH/RAM_MUX_RATIO)*i) +: RDATA_WIDTH/RAM_MUX_RATIO] <= ram[{raddr,LSB_WIDTH'(RAM_MUX_RATIO-1-i)}];
                    		r_rdata_2P                                                               <= r_rdata_1P;
                    	end
                    end
                end 
            end
            
            else begin //endianess ==1
        		always @ (posedge wclk) begin
        			if (we)
        				ram[waddr] <= wdata;
        		end
        		integer i;
            	always @ (posedge rclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (re_int) begin
                    		r_rdata_1P[((RDATA_WIDTH/RAM_MUX_RATIO)*i) +: RDATA_WIDTH/RAM_MUX_RATIO] <= ram[{raddr,LSB_WIDTH'(i)}];
                    		r_rdata_2P                                                               <= r_rdata_1P;
                    	end
                    end
                end 
            end
        end
        // NIC
        //if (MODE == "STANDARD") begin     
        //    if (OUTPUT_REG) begin
        //        reg re_r;
        //        always @ (posedge rclk) begin
        //            re_r <= re;
        //        end
        //        assign re_int = re | re_r;        
        //        assign rdata  = r_rdata_2P;            
        //    end
        //    else begin
        //        assign re_int = re;
        //        assign rdata  = r_rdata_1P;
        //    end
        //end
        //else begin
        //    assign re_int = re;
        //    assign rdata  = r_rdata_1P;
        //end    
        if (OUTPUT_REG) begin
            reg re_r;
            always @ (posedge rclk) begin
                re_r <= re;
            end
            assign re_int = re | re_r;        
            assign rdata  = r_rdata_2P;            
        end
        else begin
            assign re_int = re;
            assign rdata  = r_rdata_1P;
        end    
    end
endgenerate

endmodule

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2021 Efinix Inc. All rights reserved.              
//
// This   document  contains  proprietary information  which   is        
// protected by  copyright. All rights  are reserved.  This notice       
// refers to original work by Efinix, Inc. which may be derivitive       
// of other work distributed under license of the authors.  In the       
// case of derivative work, nothing in this notice overrides the         
// original author's license agreement.  Where applicable, the           
// original license agreement is included in it's original               
// unmodified form immediately below this header.                        
//
// WARRANTY DISCLAIMER.                                                  
//     THE  DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND        
//     EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH               
//     RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,  
//     INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF          
//     MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR    
//     PURPOSE.  SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED       
//     WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.           
//
// LIMITATION OF LIABILITY.                                              
//     NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY       
//     INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT    
//     MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY   
//     OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,      
//     SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY    
//     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF      
//     GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR   
//     MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN    
//     THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER    
//     (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE 
//     BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.  SOME STATES DO 
//     NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR            
//     CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT   
//     APPLY TO LICENSEE.
//
////////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   gray2bin.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      Gray to Binary Encoding Convertor
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

`resetall
`timescale 1ns/1ps

module `IP_MODULE_NAME(efx_fifo_gray2bin)
#(parameter WIDTH=5)
(// outputs
 output wire [WIDTH-1:0] bin_o,
 // input
 input [WIDTH-1:0] gray_i);

//---------------------------------------------------------------------
// Recursive Module
// Description: reduction xor
generate
   if (WIDTH > 1) begin
      wire [1:0] bin_1;
      assign bin_1 = {gray_i[WIDTH-1], gray_i[WIDTH-1]^gray_i[WIDTH-2]};
      if (WIDTH == 2) begin
	 assign bin_o = bin_1;
      end
      else begin
	 assign bin_o[WIDTH-1] = bin_1[1];
	 `IP_MODULE_NAME(efx_fifo_gray2bin) #(.WIDTH(WIDTH-1)) u_gray2bin (.bin_o(bin_o[WIDTH-2:0]), .gray_i({bin_1[0], gray_i[WIDTH-3:0]}));
      end
   end
   else /* if (WIDTH == 1) */
     assign bin_o = gray_i;
endgenerate
   
endmodule 

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2020 Efinix Inc. All rights reserved.              
//
// This   document  contains  proprietary information  which   is        
// protected by  copyright. All rights  are reserved.  This notice       
// refers to original work by Efinix, Inc. which may be derivitive       
// of other work distributed under license of the authors.  In the       
// case of derivative work, nothing in this notice overrides the         
// original author's license agreement.  Where applicable, the           
// original license agreement is included in it's original               
// unmodified form immediately below this header.                        
//
// WARRANTY DISCLAIMER.                                                  
//     THE  DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND        
//     EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH               
//     RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,  
//     INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF          
//     MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR    
//     PURPOSE.  SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED       
//     WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.           
//
// LIMITATION OF LIABILITY.                                              
//     NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY       
//     INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT    
//     MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY   
//     OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,      
//     SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY    
//     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF      
//     GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR   
//     MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN    
//     THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER    
//     (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE 
//     BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.  SOME STATES DO 
//     NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR            
//     CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT   
//     APPLY TO LICENSEE.
//
////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   pipe_reg.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      Parallel Pipelining Shift Register
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

module `IP_MODULE_NAME(efx_fifo_datasync) #(
    parameter STAGE = 32,
    parameter WIDTH = 4
) (
 input  wire             clk_i,
 input  wire [WIDTH-1:0] d_i,
 output wire [WIDTH-1:0] d_o
);

(* async_reg = "true" *) reg [WIDTH-1:0] pipe_reg [STAGE-1:0];
integer i;

always @(posedge clk_i) begin
  for (i=STAGE-1; i>0; i = i - 1) begin
    pipe_reg[i] <= pipe_reg[i-1];
  end
  pipe_reg[0] <= d_i;
end
assign d_o = pipe_reg[STAGE-1];
   

endmodule

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2020 Efinix Inc. All rights reserved.              
//
// This   document  contains  proprietary information  which   is        
// protected by  copyright. All rights  are reserved.  This notice       
// refers to original work by Efinix, Inc. which may be derivitive       
// of other work distributed under license of the authors.  In the       
// case of derivative work, nothing in this notice overrides the         
// original author's license agreement.  Where applicable, the           
// original license agreement is included in it's original               
// unmodified form immediately below this header.                        
//
// WARRANTY DISCLAIMER.                                                  
//     THE  DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND        
//     EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH               
//     RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,  
//     INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF          
//     MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR    
//     PURPOSE.  SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED       
//     WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.           
//
// LIMITATION OF LIABILITY.                                              
//     NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY       
//     INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT    
//     MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY   
//     OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,      
//     SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY    
//     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF      
//     GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR   
//     MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN    
//     THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER    
//     (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE 
//     BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.  SOME STATES DO 
//     NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR            
//     CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT   
//     APPLY TO LICENSEE.
//
////////////////////////////////////////////////////////////////////////////////



// synopsys translate_off
`timescale 1 ns / 1 ps													
// synopsys translate_on

module `IP_MODULE_NAME(efx_resetsync) #(
    parameter ASYNC_STAGE = 2,
    parameter ACTIVE_LOW = 1
) (
    input  wire             clk,
    input  wire             reset,
    output wire             d_o
);


generate
   if (ACTIVE_LOW == 1) begin: active_low
      `IP_MODULE_NAME(efx_asyncreg) #(
         .WIDTH      (1),
         .ACTIVE_LOW (1),
         .RST_VALUE  (0)
      ) efx_resetsync_active_low (
         .clk     (clk),
         .reset_n (reset),
         .d_i     (1'b1),
         .d_o     (d_o)
      );
   end
   else begin: active_high
      `IP_MODULE_NAME(efx_asyncreg) #(
         .WIDTH      (1),
         .ACTIVE_LOW (0),
         .RST_VALUE  (1)
      ) efx_resetsync_active_high (
         .clk     (clk),
         .reset_n (reset),
         .d_i     (1'b0),
         .d_o     (d_o)
      );
   end
endgenerate

endmodule



// synopsys translate_off
`timescale 1 ns / 1 ps													
// synopsys translate_on

module `IP_MODULE_NAME(efx_asyncreg) #(
    parameter ASYNC_STAGE = 2,
    parameter WIDTH = 4,
    parameter ACTIVE_LOW = 1, // 0 - Active high reset, 1 - Active low reset
    parameter RST_VALUE = 0,
    parameter OFF_ASSERTION = 0 // 1 = Turn off PULSE_WIDTH_CHK assertion for a particular instance 
) (
    input  wire             clk,
    input  wire             reset_n,
    input  wire [WIDTH-1:0] d_i,
    output wire [WIDTH-1:0] d_o
);










`pragma protect begin_protected
`pragma protect version = 1
`pragma protect author = "author-a" , author_info = "author-a-details"
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
IjzmeF2ACtI8q/MHPcSQakfCyuQSUgg747Z3U+BWZdCStFbqF/Rhg0VPl8JT+91V
o/8Ohsiw6GnpSIX69XazqGYmhEjb+W7W2ngBYentEXdSyzUYvEbr8i71cL04f1fE
El78uYgSvjFwoDyocXOVYk8JA0v7y6WnabkL02lAqASKGQK55nzfKeUVbJHKHjAY
kIT3Nf7JWK2NVVymI1Zs5QttwrNgKBSqoiPvmy4+16bTQMx4R205Bb4rT1MqSqIc
/5U5/Z1e1tZzOqoEyhfcMMKW0emdBIdByNvteK05ZATt11Uzj2M/Vn1r9KmYd0h1
uYJaS5tuGEuFInBHa7oO8g==
`pragma protect key_keyowner = "Cadence Design Systems." , key_keyname = "CDS_RSA_KEY_VER_2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
ABJo/BvEH9XbZrt+xPOQ2C7yeLcnebDlRELbHyCdXeeNkZRVZ9m0ie+1HufS/I+3
fC63lnVTenVdf9s4tm1RLd5VBkmFb37ikgaESy2aRKWsdLG6x2OyuODoMDRCjYUa
rxhnwLWh5E55yR3XVZgM2k7/NPP2cTL7iOSCjH4No38siNjs4Fapyc4FFq0TOsQq
PMqsZ5jgmM+ZT8cil0wMt5tpdEOwvchbe1GcZLIhcIFLD/Gb2XtP0Q0QkOlNzuiL
DNyobLTjDkV5si+/23Ng2E7tDq+SX+vJP4ciI63kXtsmQdn1ff2Y64ibNXJtpu/w
K3OoKmk3zFeArSsql8B4/Q==
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
RAoMYYsrw2j05cvQ8NR0lCh+Ia/OGVfdwZqq0pwIkgDzO3Z7ol96oQmQzFfIQY/M
GzEOFdYJTfjnxPvhSPxT1tpq2Fgx6PbC2FMWFtN6/TrG/s01ifIWIZ9Wrfo8Q01l
6XTAESHR1htrOOx6AiDHAQLOlBb0zgfZjayGJBRX7FI=
`pragma protect key_keyowner = "Aldec" , key_keyname = "ALDEC15_001"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
YclPuIbYLW/ftZYybucr9ooblGFkJDcdUWf6kCJBGKpIRjItUB3LdSwcREekRWqf
RGiSRFoyrOTiScT06zZ4fkm+PEKj8O3RU1VMMzDjuEUqkAEELJHNOH71tCSC6MWk
1dop7MZy8BSXhzg3W3RXIA8IGSJRDibliv+SjkbUzg/WceDI176fJmUwGUji93Tw
Zu2vRjA/RTi3ZMzS/2Z9YE156hpipJ/Cu6ca8V3y5Kt6DX4fcCS09xESr6soT5Oz
eKRExN7wu8dvYMUuu1YgCVVR47BBDQi3wdZHqlq1PLaycnNOwBPLOAzA19Hefh/0
2HflB1HYKxojQCcZU7qUgQ==
`pragma protect key_keyowner = "Siemens" , key_keyname = "SIEMENS-VERIF-SIM-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
fMvC6d2jTMqMqGFzPCPWt6pV9wRUCG4/taH3Nfn7RcekdiLyXQEQgm1SN+X+hkbx
Pu7552vaw2ez4j3zrTk2vRPnDAsxY8GidEnkJcULi8kiia9Xy/ePFLxOJHHigkiB
rU7uwrFblcYYBRwQjhMhJDowyR9HVAonxhOWVIlYagtABxLYlNdDEn+N4yPLVCsr
XUWy1E2L5GUFFNQffENN0iyUaKdWAKGIqgIZK1sB3tVOPVsULetSoyzRErWPNZQD
e5jbBBNZGyQQWgOJkOfy280ekoUUEZajqtB1jDvE3k8kbo4rzvr7yTkhSzLqjGod
B2Zpo2FQ//YDRSAaEa9ksQ==
`pragma protect key_keyowner = "Mentor Graphics Corporation" , key_keyname = "MGC-VERIF-SIM-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
TcmE9lQROafuvxGWP3fMVxDoeaiMX6ALoT3detg/qWZ36+yPTc/t8N7/DtSx17Ze
vr6iBb+ge3aAzWAq2QHyVfgVV15dvW/HsOXXTh7UqExiO7Dxa6nHXuAhYMON6NP2
ihfIRSvdnrL2ufvg7A2rCHGAqnr6cVnRLfhNJxtA1lloQbJEtlf/CWNblDxEfyw2
06l3l8pp1rS0E4tMqagmOr+yhNSpcS9vQswFltqroh6kNIE64zKri96HKkRFLNlP
fpsN7plEpLS54SxIMmh8Op+w0a/jXVOxxD+FLepsZWfGiNksENgu2Xo6TvZIQUUN
ZoPzFCMjGk5ZmMyIlytNCw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4288 )
`pragma protect data_block
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
Ei7EaFpheCmlTJyxUg8TdA==
`pragma protect end_protected


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   simple_dual_port_ram_fifo.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      EFX FIFO
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
//
// *******************************

module `IP_MODULE_NAME(efx_fifo_ctl) # (
    parameter SYNC_CLK           = 1,
    parameter SYNC_STAGE         = 2,
    parameter MODE               = "STANDARD",
    parameter WR_DEPTH           = 512,
    parameter WADDR_WIDTH        = 9,
    parameter RADDR_WIDTH        = 9,
    parameter ASYM_WIDTH_RATIO   = 4,
    parameter RAM_MUX_RATIO      = 1,
    parameter PIPELINE_REG       = 1,
    parameter ALMOST_FLAG        = 1,
    parameter PROGRAMMABLE_FULL  = "NONE",
    parameter PROG_FULL_ASSERT   = 0,
    parameter PROG_FULL_NEGATE   = 0,
    parameter PROGRAMMABLE_EMPTY = "NONE",
    parameter PROG_EMPTY_ASSERT  = 0,
    parameter PROG_EMPTY_NEGATE  = 0,
    parameter OUTPUT_REG         = 0,
    parameter HANDSHAKE_FLAG     = 1, 
    parameter OVERFLOW_PROTECT   = 0,
    parameter UNDERFLOW_PROTECT  = 0
)(
    input   wire                   wr_rst,
    input   wire                   rd_rst,
    input   wire                   wclk,
    input   wire                   rclk,
    input   wire                   we,
    input   wire                   re,
    output  wire                   wr_full,
    output  reg                    wr_ack,
    output  wire                   wr_almost_full,
    output  wire                   rd_empty,
    output  wire                   rd_almost_empty,
    output  wire                   wr_prog_full,
    output  wire                   rd_prog_empty,
    output  wire                   wr_en_int,
    output  wire                   rd_en_int,
    output  wire [WADDR_WIDTH-1:0] waddr,
    output  wire [RADDR_WIDTH-1:0] raddr,
    output  wire [WADDR_WIDTH:0]   wr_datacount,
    output  wire [RADDR_WIDTH:0]   rd_datacount,
    output  wire                   rd_vld,
    output  reg                    wr_overflow,
    output  reg                    rd_underflow
);

reg  [WADDR_WIDTH:0] waddr_cntr;
reg  [WADDR_WIDTH:0] waddr_cntr_r;
reg  [RADDR_WIDTH:0] raddr_cntr;
reg                  rd_valid;

wire [WADDR_WIDTH:0] waddr_int;
wire [RADDR_WIDTH:0] raddr_int;
wire                 rd_empty_int;
wire [WADDR_WIDTH:0] wr_datacount_int;
wire [RADDR_WIDTH:0] rd_datacount_int;

assign waddr     = waddr_cntr[WADDR_WIDTH-1:0];
// NIC
wire [RADDR_WIDTH:0] ram_raddr;
assign raddr     = (MODE == "FWFT") ? ram_raddr[RADDR_WIDTH-1:0] : raddr_cntr[RADDR_WIDTH-1:0];
//assign raddr     = raddr_cntr[RADDR_WIDTH-1:0];
//assign wr_en_int = we & ~wr_full;
assign wr_en_int = OVERFLOW_PROTECT ? we & ~wr_full : we;

assign wr_datacount  = wr_datacount_int;
assign rd_datacount  = ASYM_WIDTH_RATIO == 4 && SYNC_CLK ? wr_datacount_int : rd_datacount_int;


generate
    if (MODE == "FWFT") begin    
        // NIC
        //assign rd_en_int     = (~rd_empty_int & rd_empty) | (re & ~rd_empty_int);
        //assign rd_empty      = rd_empty_fwft;

        assign rd_en_int     = 1'b1;
        //assign rd_empty      = rd_empty_int;
        
        //always @ (posedge rclk or posedge rd_rst) begin
        //    if (rd_rst) begin
        //        init_set <= 1'b1;
        //    end
        //    else if (~init_set & rd_empty) begin
        //        init_set <= 1'b1;            
        //    end
        //    else if (~rd_empty_int) begin
        //        init_set <= 1'b0;            
        //    end
        //    else if (rd_empty) begin
        //        init_set <= 1'b1;            
        //    end
        //end
        // NIC 
        //always @ (posedge rclk or posedge rd_rst) begin
        //    if (rd_rst) begin
        //        rd_empty_fwft <= 1'b1;
        //    end
        //    else if (rd_en_int) begin
        //        rd_empty_fwft <= 1'b0;            
        //    end
        //    else if (re) begin
        //        rd_empty_fwft <= 1'b1;            
        //    end
        //end          
        
        //if (FAMILY == "TRION") begin
        if (OUTPUT_REG) begin
            always @ (posedge rclk or posedge rd_rst) begin
                if (rd_rst) begin
                    rd_valid <= 1'b0;
                end
                else begin
                    rd_valid <= ~rd_empty;
                end
            end
            assign rd_vld = rd_valid;                
        end    
        else begin
            assign rd_vld = ~rd_empty;                
        end
        
        assign rd_empty = rd_empty_int;
    end
    else begin
        assign rd_en_int     = UNDERFLOW_PROTECT ? re & ~rd_empty_int : re;
        assign rd_empty      = rd_empty_int;
        
        if (OUTPUT_REG) begin
            reg rd_valid_r;
            always @ (posedge rclk or posedge rd_rst) begin
                if (rd_rst) begin
                    rd_valid_r <= 'h0;
                    rd_valid   <= 'h0;
                end
                else begin
                    {rd_valid,rd_valid_r} <= {rd_valid_r,rd_en_int};
                end
            end
            assign rd_vld = rd_valid;            
        end
        else begin
            always @ (posedge rclk or posedge rd_rst) begin
                if (rd_rst) begin
                    rd_valid  <= 'h0;
                end
                else begin
                    rd_valid <= rd_en_int;
                end
            end
            assign rd_vld = rd_valid;
        end
    end
    
    if (ALMOST_FLAG) begin
        assign wr_almost_full   = wr_datacount >= WR_DEPTH-1;
        assign rd_almost_empty  = rd_datacount <= 'd1;
    end
    else begin
        assign wr_almost_full   = 1'b0;
        assign rd_almost_empty  = 1'b0;        
    end
    
    if (PROGRAMMABLE_FULL == "STATIC_SINGLE") begin
        reg    wr_prog_full_int;
        assign wr_prog_full  = wr_datacount >= PROG_FULL_ASSERT;
        
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_prog_full_int  <= 1'b0;
            end
            else begin
                wr_prog_full_int  <= wr_prog_full;
            end
        end  
    end
    else if (PROGRAMMABLE_FULL == "STATIC_DUAL") begin
        reg    wr_prog_full_int;
        assign wr_prog_full  = wr_prog_full_int ? wr_datacount >= PROG_FULL_NEGATE : wr_datacount >= PROG_FULL_ASSERT;   

        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_prog_full_int  <= 1'b0;
            end
            else begin
                wr_prog_full_int  <= wr_prog_full;
            end
        end              
    end
    else begin
        assign wr_prog_full  = 1'b0; 
    end
        
    if (PROGRAMMABLE_EMPTY == "STATIC_SINGLE") begin
        reg    rd_prog_empty_int;
        assign rd_prog_empty  = rd_datacount <= PROG_EMPTY_ASSERT;
            
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                rd_prog_empty_int <= 1'b1;
            end
            else begin
                rd_prog_empty_int <= rd_prog_empty;
            end
        end
    end
    else if (PROGRAMMABLE_EMPTY == "STATIC_DUAL") begin
        reg    rd_prog_empty_int;
        assign rd_prog_empty = rd_prog_empty_int ? (rd_datacount <= PROG_EMPTY_NEGATE) : (rd_datacount <= PROG_EMPTY_ASSERT);
            
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                rd_prog_empty_int <= 1'b1;
            end
            else begin
                rd_prog_empty_int <= rd_prog_empty;
            end
        end  
    end
    else begin
        assign rd_prog_empty  = 1'b0; 
    end
    
    if (HANDSHAKE_FLAG) begin
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_ack <= 1'b0;
            end
            else begin
                // NIC
                //wr_ack <= wr_en_int & ~wr_overflow;
                wr_ack <= OVERFLOW_PROTECT ? wr_en_int & ~wr_overflow : wr_en_int;
            end
        end
    end

    if (OVERFLOW_PROTECT) begin
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_overflow <= 1'b0;
            end
            else if (we && wr_full) begin
                wr_overflow <= 1'b1;
            end
            else begin
                wr_overflow <= 1'b0;            
            end
        end
    end
    else if (HANDSHAKE_FLAG) begin
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_overflow <= 1'b0;
            end
            else begin
                wr_overflow <= we && wr_full ? 1'b1 : wr_overflow;
            end
        end
    end

    if (UNDERFLOW_PROTECT) begin     
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                rd_underflow <= 1'b0;
            end
            else if (re && rd_empty) begin
                rd_underflow <= 1'b1;
            end
            else begin
                rd_underflow <= 1'b0;            
            end
        end
    end
    else if (HANDSHAKE_FLAG) begin
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                rd_underflow <= 1'b0;
            end
            else begin
                rd_underflow <= re && rd_empty ? 1'b1 : rd_underflow;
            end
        end
    end
    
    localparam RATIO_WIDTH = (RADDR_WIDTH >= WADDR_WIDTH)? RADDR_WIDTH - WADDR_WIDTH : WADDR_WIDTH - RADDR_WIDTH;
    
    if (ASYM_WIDTH_RATIO < 4) begin
        assign wr_full          = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:RATIO_WIDTH]);
        assign rd_empty_int     = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:RATIO_WIDTH];
        assign wr_datacount_int = waddr_cntr - (raddr_int/RAM_MUX_RATIO);
        assign rd_datacount_int = (waddr_int*RAM_MUX_RATIO)-raddr_cntr;
    end
    // NIC
    else if (ASYM_WIDTH_RATIO == 4) begin
        assign wr_full          = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:0]);
        assign rd_empty_int     = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:0];
        assign wr_datacount_int = waddr_cntr - raddr_int;
        assign rd_datacount_int = waddr_int - raddr_cntr;
    end
    else begin
        assign wr_full          = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:RATIO_WIDTH] == raddr_int[RADDR_WIDTH-1:0]);
        // NIC
        //assign rd_empty_int     = (waddr_int- raddr_cntr*RAM_MUX_RATIO) < RAM_MUX_RATIO;
        assign rd_empty_int     = waddr_int[WADDR_WIDTH:RATIO_WIDTH] == raddr_cntr[RADDR_WIDTH:0];
        assign wr_datacount_int = waddr_cntr - (raddr_int*RAM_MUX_RATIO);
        assign rd_datacount_int = (waddr_int/RAM_MUX_RATIO)-raddr_cntr;
    end
endgenerate

always @ (posedge wclk or posedge wr_rst) begin
    if (wr_rst) begin
        waddr_cntr   <= 'h0;
    end
    else if (wr_en_int) begin
        waddr_cntr   <= waddr_cntr + 1'b1;
    end
end

always @ (posedge wclk or posedge wr_rst) begin
    if (wr_rst) begin
        waddr_cntr_r  <= 'h0;
    end
    else begin
        waddr_cntr_r  <= waddr_cntr;
    end
end

always @ (posedge rclk or posedge rd_rst) begin
    if (rd_rst) begin
        raddr_cntr   <= 'h0;
    end
    // NIC
    //else if (rd_en_int) begin
    else begin
        //raddr_cntr   <= raddr_cntr + 1'b1;
        //raddr_cntr   <= raddr_cntr + (re & ~rd_empty_int);
        raddr_cntr   <= ram_raddr;
    end
end
// NIC
assign ram_raddr = raddr_cntr + (UNDERFLOW_PROTECT ? re & ~rd_empty_int : re);


generate
    if (SYNC_CLK) begin : sync_clk
       if (MODE == "FWFT") begin
          assign waddr_int = waddr_cntr_r;
          assign raddr_int        = raddr_cntr;
       end
       else begin
          assign waddr_int        = waddr_cntr;
          assign raddr_int        = raddr_cntr;
       end
    end
    else begin : async_clk
        reg  [RADDR_WIDTH:0] raddr_cntr_gry_r;
        reg  [WADDR_WIDTH:0] waddr_cntr_gry_r;
        
        wire [RADDR_WIDTH:0] raddr_cntr_gry;
        wire [RADDR_WIDTH:0] raddr_cntr_gry_sync;
        wire [RADDR_WIDTH:0] raddr_cntr_sync_g2b;
        wire [WADDR_WIDTH:0] waddr_cntr_gry;
        wire [WADDR_WIDTH:0] waddr_cntr_gry_sync;
        wire [WADDR_WIDTH:0] waddr_cntr_sync_g2b;

        if (PIPELINE_REG) begin
            reg  [RADDR_WIDTH:0] raddr_cntr_sync_g2b_r;    
            reg  [WADDR_WIDTH:0] waddr_cntr_sync_g2b_r;        
        
            assign waddr_int        = waddr_cntr_sync_g2b_r;
            assign raddr_int        = raddr_cntr_sync_g2b_r;
            
            always @ (posedge wclk or posedge wr_rst) begin
                if (wr_rst) begin
                    raddr_cntr_sync_g2b_r <= 'h0;
                end
                else begin
                    raddr_cntr_sync_g2b_r <= raddr_cntr_sync_g2b;
                end
            end
            
            always @ (posedge rclk or posedge rd_rst) begin
                if (rd_rst) begin
                    waddr_cntr_sync_g2b_r <= 'h0;
                end
                else begin
                    waddr_cntr_sync_g2b_r <= waddr_cntr_sync_g2b;
                end
            end
        end
        else begin
            assign waddr_int        = waddr_cntr_sync_g2b;
            assign raddr_int        = raddr_cntr_sync_g2b;        
        end
      
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                raddr_cntr_gry_r <= 'h0;
            end
            else begin
                raddr_cntr_gry_r <= raddr_cntr_gry;
            end
        end
        `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(RADDR_WIDTH+1)                                                               ) xrd2wr_bin2gray    (.bin_i(raddr_cntr), .gray_o(raddr_cntr_gry));
        `IP_MODULE_NAME(efx_asyncreg)      # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (RADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) xrd2wr_addr_sync   (.clk(wclk), .reset_n(wr_rst), .d_i(raddr_cntr_gry_r), .d_o(raddr_cntr_gry_sync));
        `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(RADDR_WIDTH+1)                                                               ) xrd2wr_gray2bin    (.gray_i(raddr_cntr_gry_sync), .bin_o(raddr_cntr_sync_g2b));
        
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                waddr_cntr_gry_r <= 'h0;
            end
            else begin
                waddr_cntr_gry_r <= waddr_cntr_gry;
            end
        end        
        `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(WADDR_WIDTH+1)                                                               ) wr2rd_bin2gray  (.bin_i(waddr_cntr), .gray_o(waddr_cntr_gry));
        `IP_MODULE_NAME(efx_asyncreg)      # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (WADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) wr2rd_addr_sync (.clk(rclk), .reset_n(rd_rst), .d_i(waddr_cntr_gry_r), .d_o(waddr_cntr_gry_sync));
        `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(WADDR_WIDTH+1)                                                               ) wr2rd_gray2bin  (.gray_i(waddr_cntr_gry_sync), .bin_o(waddr_cntr_sync_g2b));        

    end
endgenerate
endmodule


////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   bin2gray.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      Binary to Gray Encoding Convertor
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

`resetall
`timescale 1ns/1ps

module `IP_MODULE_NAME(efx_fifo_bin2gray)
#(parameter WIDTH=5)
(// outputs
 output wire [WIDTH-1:0] gray_o,
 // input
 input [WIDTH-1:0] bin_i
 );

//---------------------------------------------------------------------
// Function :   bit_xor
// Description: reduction xor
function bit_xor (
  input [31:0] nex_bit,
  input [31:0] curr_bit,
  input [WIDTH-1:0] xor_in);
  begin : fn_bit_xor
    bit_xor = xor_in[nex_bit] ^ xor_in[curr_bit];
  end
endfunction

// Convert Binary to Gray, bit by bit
generate 
begin
  genvar bit_idx;
  for(bit_idx=0; bit_idx<WIDTH-1; bit_idx=bit_idx+1) begin : gBinBits
    assign gray_o[bit_idx] = bit_xor(bit_idx+1, bit_idx, bin_i);
  end
  assign   gray_o[WIDTH-1] = bin_i[WIDTH-1];
end
endgenerate

endmodule 

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2020 Efinix Inc. All rights reserved.              
//
// This   document  contains  proprietary information  which   is        
// protected by  copyright. All rights  are reserved.  This notice       
// refers to original work by Efinix, Inc. which may be derivitive       
// of other work distributed under license of the authors.  In the       
// case of derivative work, nothing in this notice overrides the         
// original author's license agreement.  Where applicable, the           
// original license agreement is included in it's original               
// unmodified form immediately below this header.                        
//
// WARRANTY DISCLAIMER.                                                  
//     THE  DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND        
//     EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH               
//     RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,  
//     INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF          
//     MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR    
//     PURPOSE.  SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED       
//     WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.           
//
// LIMITATION OF LIABILITY.                                              
//     NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY       
//     INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT    
//     MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY   
//     OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,      
//     SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY    
//     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF      
//     GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR   
//     MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN    
//     THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER    
//     (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE 
//     BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.  SOME STATES DO 
//     NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR            
//     CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT   
//     APPLY TO LICENSEE.
//
////////////////////////////////////////////////////////////////////////////////


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
lJQSO0RK2H2ogiwqEX0EF9W73Mi46nhSMrjpYujGSQby+xfLpTE+gG4Bcq9pG6uf
pBg/m/x04spvzjzXtCyY99jNAmzIBKMkCWgf5qi4mFTJb+MCgX5SBGeUjYCLDPH8
wIonHgim1OFOk+7Fqusq1hUQ4O0nEcSkdFoFjguIA/g=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 22080 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


module `IP_MODULE_NAME(mii_if) #(
   parameter NO_PREAMBLE = 0
) (
//Globle Signals
input                           tx_mac_aclk,
output  reg                     tx_mac_aclk_en,
input                           tx_reset,
output  wire                    rx_mac_aclk,
output  reg                     rx_mac_aclk_en,
input                           rx_reset,
//Configuration Signals
input           [2:0]           eth_speed,
//GMII Interface
output  reg     [7:0]           gm_rx_d,
output  reg                     gm_rx_dv,
output  reg                     gm_rx_err,
input           [7:0]           gm_tx_d,
input                           gm_tx_en,
input                           gm_tx_err,
//MII Interface
input                           mii_txc,
output  reg     [3:0]           mii_txd,
output  reg                     mii_tx_dv,
output  reg                     mii_tx_err,

input                           mii_rxc,
input           [3:0]           mii_rxd,
input                           mii_rx_dv,
input                           mii_rx_err

//Status and  Error Signals
);
// Parameter Define 
//localparam                      SPEED_100M_DIV = (TX_REFCLK == 125) ? 10 : 2;
//localparam                      SPEED_10M_DIV  = SPEED_100M_DIV*10;
//localparam                      SPEED_CLK_DIV = (TX_REFCLK == 125) ? SPEED_100M_DIV/2 + 1 : 0 ;
// Register Define 
reg     [6:0]                   aclk_en_cnt;
reg     [3:0]                   txd;
reg                             tx_en;
reg                             tx_er;
reg                             rx_dv_pre;
reg                             rx_dv_dl1;
reg     [3:0]                   rxd_pre;
reg     [3:0]                   rxd_dl1;
reg                             rx_odd_data_ptr;
reg     [3:0]                   rxd;
reg                             rx_dv;
reg                             rx_er;
reg     [3:0]                   gm_tx_d_h;
reg     [7:0]                   gm_tx_d_r;
reg                             gm_tx_en_r;
reg                             gm_tx_err_r;
reg                             preamble_flg;
reg     [1:0]                   cur_st;
reg     [1:0]                   nxt_st;
reg                             add_preamble;


// Wire Define
wire                            add_preamble_w;

assign add_preamble_w = mii_rxd == 4'hd && mii_rx_dv && !mii_rx_err && cur_st == 2'b01 && preamble_flg;

/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/

/*----------------------- Tx Region ----------------------------*/

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_mac_aclk_en <= 1'b0;
   else
      tx_mac_aclk_en <= ~tx_mac_aclk_en;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      gm_tx_d_r <= 8'h0;
   else if ((gm_tx_en == 1'b1) && (tx_mac_aclk_en == 1'b1))
      gm_tx_d_r <= gm_tx_d;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      gm_tx_en_r <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
      gm_tx_en_r <= gm_tx_en;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      gm_tx_err_r <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
      gm_tx_err_r <= gm_tx_err;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      txd <= 4'h0;
   else if (gm_tx_en_r == 1'b1) begin
      if (tx_mac_aclk_en == 1'b0)
          txd <= gm_tx_d_r[3:0];
      else
          txd <= gm_tx_d_r[7:4];
   end
   else;    
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       tx_en <= 1'b0;
   else 
       tx_en <= gm_tx_en_r;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       tx_er <= 1'b0;
   else 
       tx_er <= gm_tx_err_r;
end

always @ (posedge mii_txc or posedge tx_reset) begin 
   if (tx_reset == 1'b1) begin
      mii_tx_dv  <= 1'b0;
      mii_txd    <= 4'h0;
      mii_tx_err <= 1'b0;
   end
   else begin
      mii_tx_dv  <= tx_en;
      mii_txd    <= txd[3:0];
      mii_tx_err <= tx_er;
   end
end
/*----------------------- Rx Region ----------------------------*/
always @ (posedge mii_rxc or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      rxd   <= 4'h0;
      rx_dv <= 1'b0;
      rx_er <= 1'b0;
   end
   else if (add_preamble_w && NO_PREAMBLE != 1) begin
      rxd   <= 4'h5;
      rx_dv <= 1'b1;
      rx_er <= rx_er;
   end
   else if (add_preamble && NO_PREAMBLE != 1) begin
      rxd   <= rxd_pre;
      rx_dv <= rx_dv_pre;
      rx_er <= rx_er;
   end
   else begin
      rxd   <= mii_rxd;
      rx_dv <= mii_rx_dv;
      rx_er <= mii_rx_err;
   end
end

assign rx_mac_aclk = mii_rxc;

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      rxd_pre <= 4'h0;
      rx_dv_pre <= 1'b0;
   end
   else if (add_preamble_w || add_preamble) begin
      rxd_pre <= mii_rxd;
      rx_dv_pre <= mii_rx_dv;
   end
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
    if (rx_reset == 1'b1)
       add_preamble <= 1'b0;
    else if (add_preamble_w)
       add_preamble <= 1'b1;
    else if (!mii_rx_dv)
       add_preamble <= 1'b0;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_mac_aclk_en <= 1'b0;
   else
      rx_mac_aclk_en <= ~rx_mac_aclk_en;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      cur_st <= 2'b00;
   end
   else begin
      cur_st <= nxt_st;
   end
end

always @ (*) begin
   case (cur_st)
      2'b00: begin
         if (mii_rxd == 4'h5 && mii_rx_dv && !mii_rx_err)
            nxt_st = 2'b01;
         else
            nxt_st = 2'b00;
      end
      2'b01: begin
         if (mii_rxd == 4'hd && mii_rx_dv && !mii_rx_err)
            nxt_st = 2'b10;
         else if (mii_rxd == 4'h5 && mii_rx_dv && !mii_rx_err)
            nxt_st = 2'b01;
         else 
            nxt_st = 2'b00;
      end
      2'b10: begin
         if (mii_rx_dv) 
            nxt_st = 2'b10;
         else
            nxt_st = 2'b00;
         end
      default: nxt_st = 2'b00;
   endcase
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      preamble_flg <= 1'b0;
   end
   else if (mii_rxd == 4'h5 && mii_rx_dv && !mii_rx_err && cur_st == 2'b01) begin
      preamble_flg <= ~preamble_flg;
   end
   else begin
      preamble_flg <= 1'b0;
   end
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      rx_dv_dl1 <= 1'b0;
      rxd_dl1   <= 4'h0;
   end
   else begin
      rx_dv_dl1 <= rx_dv;
      rxd_dl1   <= rxd;
   end
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_dv <= 1'b0;
   else
      gm_rx_dv <= rx_dv_dl1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_odd_data_ptr <= 1'b0;
   else if (rx_dv == 1'b0)
      rx_odd_data_ptr <= 1'b0;
   else
      rx_odd_data_ptr <= ~rx_odd_data_ptr;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_d <= 8'h0;
   else if ((rx_dv == 1'b1) && (rx_odd_data_ptr == 1'b1))
      gm_rx_d <= {rxd[3:0], rxd_dl1[3:0]};
   else;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
       gm_rx_err <= 1'b0;
   else begin
      if (rx_er == 1'b1)               gm_rx_err <= 1'b1;
      else if (rx_mac_aclk_en == 1'b1) gm_rx_err <= 1'b0;
   end
end


endmodule



/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   
//       / / .'     /    
//    __/ /.'      /     
//   __   \       /      
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

module `IP_MODULE_NAME(rgmii_if)#(
    parameter                       RGMII_SYNC_EN = 1
) (
   //Globle Signals
   input                           tx_mac_aclk,
   output  reg                     tx_mac_aclk_en,
   input                           tx_reset,
   output  wire                    rx_mac_aclk,
   output  reg                     rx_mac_aclk_en,
   input                           rx_reset,
   //Configuration Signals
   input           [2:0]           eth_speed,
   input                           rgmii_rxc_edge,//0:DDIO Rising Edge; 1:DDIO Falling Edge; 
   input                           rgmii_txc_dly,//0:rgmii tx clock delay disable; 1:rgmii tx clock delay enable;
   //GMII Interface
   output  reg     [7:0]           gm_rx_d,
   output  reg                     gm_rx_dv,
   output  reg                     gm_rx_err,
   input           [7:0]           gm_tx_d,
   input                           gm_tx_en,
   input                           gm_tx_err,
   //RGMII Interface
   output  wire    [3:0]           rgmii_txd_HI,
   output  wire    [3:0]           rgmii_txd_LO,
   output  wire                    rgmii_tx_ctl_HI,
   output  wire                    rgmii_tx_ctl_LO,
   output  wire                    rgmii_txc_HI,//if rgmii_txc_dly set 0, used clk_125m clock. if rgmii_txc_dly set 1, used clk_125m_90deg clock.
   output  wire                    rgmii_txc_LO,
   input           [3:0]           rgmii_rxd_HI,
   input           [3:0]           rgmii_rxd_LO,
   input                           rgmii_rx_ctl_HI,
   input                           rgmii_rx_ctl_LO,
   input                           rgmii_rxc
   //Status and  Error Signals
);

// Parameter Define 

// Register Define 
reg     [6:0]                   aclk_en_cnt;
reg     [7:0]                   txd;
reg                             tx_en;
reg                             tx_er;
reg     [1:0]                   txc;
reg                             rx_dv_dl1;
reg     [7:0]                   rxd_dl1;
reg                             rx_odd_data_ptr;

// Wire Define
wire                            rx_dv;
wire    [7:0]                   rxd;
wire                            rx_er;

/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/
/*----------------------- Tx Region ----------------------------*/
always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      aclk_en_cnt <= 7'd0;
   else if ((eth_speed == 3'h4) ||
           ((eth_speed == 3'h2) && (aclk_en_cnt == 7'd9)) ||
           ((eth_speed == 3'h1) && (aclk_en_cnt == 7'd99)))
      aclk_en_cnt <= 7'd0;
   else
      aclk_en_cnt <= aclk_en_cnt + 1'b1;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_mac_aclk_en <= 1'b0;
   else if (aclk_en_cnt == 7'd0)
      tx_mac_aclk_en <= 1'b1;
   else
      tx_mac_aclk_en <= 1'b0;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      txd[7:4] <= 4'h0;
   else if((gm_tx_en == 1'b1) && (tx_mac_aclk_en == 1'b1))
      txd[7:4] <= gm_tx_d[7:4];
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      txd[3:0] <= 4'h0;
   else if ((gm_tx_en == 1'b1) && (tx_mac_aclk_en == 1'b1))
      txd[3:0] <= gm_tx_d[3:0];
   else if (((eth_speed == 3'h2) && (aclk_en_cnt == 7'd6)) ||
            ((eth_speed == 3'h1) && (aclk_en_cnt == 7'd51)))
      txd[3:0] <= txd[7:4];
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_en <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
      tx_en <= gm_tx_en;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_er <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
      tx_er <= gm_tx_err;
end
/*
always @(posedge tx_mac_aclk or posedge tx_reset)
begin
    if(tx_reset == 1'b1)
        txc <= 2'b0;
    else
        case(eth_speed)
        3'h4 :
            txc <= 2'b01;
        3'h2 :
            case(rgmii_txc_dly)
            1'b0 ://rgmii tx clock delay disable.
                if((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd5))
                    txc <= 2'b11;
                else if((aclk_en_cnt == 7'd3) || (aclk_en_cnt == 7'd8))
                    txc <= 2'b00;
            1'b1 ://rgmii tx clock delay enable.
                if((aclk_en_cnt == 7'd2) || (aclk_en_cnt == 7'd7))
                    txc <= 2'b11;
                else if((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd5))
                    txc <= 2'b00;
            endcase
        3'h1 :
            case(rgmii_txc_dly)
            1'b0 ://rgmii tx clock delay disable.
                if((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd50))
                    txc <= 2'b11;
                else if((aclk_en_cnt == 7'd25) || (aclk_en_cnt == 7'd75))
                    txc <= 2'b00;
            1'b1 ://rgmii tx clock delay enable.
                if((aclk_en_cnt == 7'd13) || (aclk_en_cnt == 7'd63))
                    txc <= 2'b11;
                else if((aclk_en_cnt == 7'd38) || (aclk_en_cnt == 7'd88))
                    txc <= 2'b00;
            endcase
        default :
            txc <= 2'b0;
        endcase
end

*/
reg [1:0]    txc_100m_r;
reg [1:0]    txc_10m_r;

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       txc_100m_r <= 2'b0;
   else begin
       case(rgmii_txc_dly)
          1'b0 : //rgmii tx clock delay disable.
             if ((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd5))
                txc_100m_r <= 2'b11;
             else if ((aclk_en_cnt == 7'd3) || (aclk_en_cnt == 7'd8))
                txc_100m_r <= 2'b00;
          1'b1 ://rgmii tx clock delay enable.
             if ((aclk_en_cnt == 7'd2) || (aclk_en_cnt == 7'd7))
                txc_100m_r <= 2'b11;
             else if ((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd5))
                txc_100m_r <= 2'b00;
       endcase
   end
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       txc_10m_r <= 2'b0;
   else begin
       case(rgmii_txc_dly)
       1'b0 ://rgmii tx clock delay disable.
           if((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd50))
               txc_10m_r <= 2'b11;
           else if((aclk_en_cnt == 7'd25) || (aclk_en_cnt == 7'd75))
               txc_10m_r <= 2'b00;
       1'b1 ://rgmii tx clock delay enable.
           if((aclk_en_cnt == 7'd13) || (aclk_en_cnt == 7'd63))
               txc_10m_r <= 2'b11;
           else if((aclk_en_cnt == 7'd38) || (aclk_en_cnt == 7'd88))
               txc_10m_r <= 2'b00;
       endcase
   end
end

always @(posedge tx_mac_aclk or posedge tx_reset)
begin
    if(tx_reset == 1'b1)
        txc <= 2'b0;
    else
        case(eth_speed)
            3'h4 :
                txc <= 2'b01;
            3'h2 :
                txc <= txc_100m_r;
            3'h1 :
                txc <= txc_10m_r;
            default :
                txc <= 2'b0;
        endcase
end

/*----------------------- Rx Region ----------------------------*/
assign rx_mac_aclk = rgmii_rxc;

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        rx_mac_aclk_en <= 1'b0;
    else if(eth_speed[2] == 1'b1)
        rx_mac_aclk_en <= 1'b1;
    else
        rx_mac_aclk_en <= ~rx_mac_aclk_en;
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        begin
            rx_dv_dl1 <= 1'b0;
            rxd_dl1 <= 8'h0;
        end
    else
        begin
            rx_dv_dl1 <= rx_dv;
            rxd_dl1 <= rxd;
        end
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        gm_rx_dv <= 1'b0;
    else
        gm_rx_dv <= rx_dv_dl1;
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        rx_odd_data_ptr <= 1'b0;
    else if(rx_dv == 1'b0)
        rx_odd_data_ptr <= 1'b0;
    else
        rx_odd_data_ptr <= ~rx_odd_data_ptr;
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        gm_rx_d <= 8'h0;
    else
        begin
            if((eth_speed[2] == 1'b1) && (rx_dv_dl1 == 1'b1))
                gm_rx_d <= rxd_dl1;
            else if((rx_dv == 1'b1) && (rx_odd_data_ptr == 1'b1))
                gm_rx_d <= {rxd[3:0],rxd_dl1[3:0]};
        end
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        gm_rx_err <= 1'b0;
    else
        begin
            if(rx_er == 1'b1)
                gm_rx_err <= 1'b1;
            else if(rx_mac_aclk_en == 1'b1)
                gm_rx_err <= 1'b0;
        end
end

/*----------------------- PHY Interface ----------------------------*/
`IP_MODULE_NAME(rgmii) #(
    .RGMII_SYNC_EN                      (RGMII_SYNC_EN                      )
)
u_rgmii
(
//Globle Signals
    .tx_mac_aclk                        (tx_mac_aclk                        ),
    .tx_reset                           (tx_reset                           ),
    .rx_reset                           (rx_reset                           ),
//Configuration Signals
    .eth_speed                          (eth_speed                          ),
    .rgmii_rxc_edge                     (rgmii_rxc_edge                     ),
//Phy Interface
    .txd                                (txd                                ),
    .tx_en                              (tx_en                              ),
    .tx_er                              (tx_er                              ),
    .txc                                (txc                                ),
    .rxd                                (rxd                                ),
    .rx_dv                              (rx_dv                              ),
    .rx_er                              (rx_er                              ),
//RGMII Interface
    .rgmii_txd_HI                       (rgmii_txd_HI                       ),
    .rgmii_txd_LO                       (rgmii_txd_LO                       ),
    .rgmii_tx_ctl_HI                    (rgmii_tx_ctl_HI                    ),
    .rgmii_tx_ctl_LO                    (rgmii_tx_ctl_LO                    ),
    .rgmii_txc_HI                       (rgmii_txc_HI                       ),
    .rgmii_txc_LO                       (rgmii_txc_LO                       ),
    .rgmii_rxd_HI                       (rgmii_rxd_HI                       ),
    .rgmii_rxd_LO                       (rgmii_rxd_LO                       ),
    .rgmii_rx_ctl_HI                    (rgmii_rx_ctl_HI                    ),
    .rgmii_rx_ctl_LO                    (rgmii_rx_ctl_LO                    ),
    .rgmii_rxc                          (rgmii_rxc                          )
);

endmodule


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   
//       / / .'     /    
//    __/ /.'      /     
//   __   \       /      
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************
module `IP_MODULE_NAME(rgmii_sync)
(
//Globle Signals
input                           rgmii_rxc,
input                           rx_reset,
input           [2:0]           eth_speed,
//RGMII Rx Interface Input
input           [3:0]           rgmii_rxd_HI_i,
input           [3:0]           rgmii_rxd_LO_i,
input                           rgmii_rx_ctl_HI_i,
input                           rgmii_rx_ctl_LO_i,
//RGMII Rx Interface Output
output  reg     [3:0]           rgmii_rxd_HI_o,
output  reg     [3:0]           rgmii_rxd_LO_o,
output  reg                     rgmii_rx_ctl_HI_o,
output  reg                     rgmii_rx_ctl_LO_o
);


// Parameter Define 
parameter State_idle     = 2'd0;
parameter State_preamble = 2'd1;
parameter State_data_dl1 = 2'd2;
parameter State_data_dl2 = 2'd3;


// Register Define 
reg     [1:0]                   cur_state;
reg     [1:0]                   next_state;
reg                             preamble_odd;
reg     [3:0]                   rx_d_dl1;
reg                             rx_dv_dl1;
reg     [3:0]                   rx_d_dl2;
reg                             rx_dv_dl2;

// Wire Define

/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/

always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset) begin
      rx_d_dl1      <= 4'h0;
      rx_dv_dl1     <= 1'b0;
      rx_d_dl2      <= 4'h0;
      rx_dv_dl2     <= 1'b0;
   end
   else begin
      rx_d_dl1      <= rgmii_rxd_LO_i;
      rx_dv_dl1     <= rgmii_rx_ctl_HI_i;
      rx_d_dl2      <= rx_d_dl1;
      rx_dv_dl2     <= rx_dv_dl1;
   end
end

/*----------------------- FSM Region ----------------------------*/
always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset) cur_state <= State_idle;
	else          cur_state <= next_state;
end

always @ (*) begin
	case (cur_state)
      State_idle :
         if ((rx_dv_dl1 == 1'b1) && (rx_d_dl1 == 4'h5))
             next_state = State_preamble;
         else
             next_state = State_idle;

      State_preamble : 
         if (rx_dv_dl1 == 1'b0)
            next_state = State_idle;
         else if ((rx_d_dl1 == 4'hd) && (preamble_odd == 1'b0))
            next_state = State_data_dl1;
         else if ((rx_d_dl1 == 4'hd) && (preamble_odd == 1'b1))
            next_state = State_data_dl2;
         else if (rx_d_dl1 != 4'h5)
            next_state = State_idle;
         else
            next_state = State_preamble;
          
      State_data_dl1 :
         if (rx_dv_dl1 == 1'b0)
            next_state = State_idle;
         else
            next_state = State_data_dl1;

      State_data_dl2 :
         if (rx_dv_dl2 == 1'b0)
            next_state = State_idle;
         else
            next_state = State_data_dl2;

      default :
         next_state = State_idle;
    endcase
end

always @ (posedge rgmii_rxc or posedge rx_reset) begin
    if (rx_reset) 
       preamble_odd <= 1'b0;
    else if (cur_state == State_preamble)
       preamble_odd <= ~preamble_odd;
    else
       preamble_odd <= 1'b0;
end

/*----------------------- Sync Output Region ----------------------------*/

always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset)
      rgmii_rxd_LO_o <= 4'h0;
   else if (eth_speed[2] == 1'b1)
      rgmii_rxd_LO_o <= rgmii_rxd_LO_i;
   else if ((cur_state == State_preamble) && (rx_d_dl1 == 4'hd) && (preamble_odd == 1'b1))
      rgmii_rxd_LO_o <= 4'h5;
   else if (cur_state == State_data_dl2)
      rgmii_rxd_LO_o <= rx_d_dl2;
   else
      rgmii_rxd_LO_o <= rx_d_dl1;
end

always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset) 
      rgmii_rxd_HI_o <= 4'h0;
   else if (eth_speed[2] == 1'b1)
      rgmii_rxd_HI_o <= rgmii_rxd_HI_i;
   else
      rgmii_rxd_HI_o <= 4'h0;
end

always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset)
      rgmii_rx_ctl_HI_o <= 1'b0;
   else if (eth_speed[2] == 1'b1)
      rgmii_rx_ctl_HI_o <= rgmii_rx_ctl_HI_i;
   else if ((cur_state == State_preamble) && (rx_d_dl1 == 4'hd) && (preamble_odd == 1'b1))
      rgmii_rx_ctl_HI_o <= 1'b1;
   else if (cur_state == State_data_dl2)
      rgmii_rx_ctl_HI_o <= rx_dv_dl2;
   else
      rgmii_rx_ctl_HI_o <= rx_dv_dl1;
end

always @(posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset)
      rgmii_rx_ctl_LO_o <= 1'b0;
   else if (eth_speed[2] == 1'b1)
      rgmii_rx_ctl_LO_o <= rgmii_rx_ctl_LO_i;
   else if ((cur_state == State_preamble) && (rx_d_dl1 == 4'hd) && (preamble_odd == 1'b1))
      rgmii_rx_ctl_LO_o <= 1'b1;
   else if (cur_state == State_data_dl2)
      rgmii_rx_ctl_LO_o <= rx_dv_dl2;
   else
      rgmii_rx_ctl_LO_o <= rx_dv_dl1;
end

endmodule


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   
//       / / .'     /    
//    __/ /.'      /     
//   __   \       /      
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

module `IP_MODULE_NAME(rgmii) #(
    parameter                   RGMII_SYNC_EN = 1
) (
   //Globle Signals
   input                        tx_mac_aclk,
   input                        tx_reset,
   input                        rx_reset,
   //Configuration Signals
   input           [2:0]        eth_speed,
   input                        rgmii_rxc_edge, //0:DDIO Rising Edge; 1:DDIO Falling Edge; 
   //Phy Interface
   input           [7:0]        txd,
   input                        tx_en,
   input                        tx_er,
   input           [1:0]        txc, //if rgmii_txc_dly set 0, used clk_125m clock. if rgmii_txc_dly set 1, used clk_125m_90deg clock.
   output  reg     [7:0]        rxd,
   output  reg                  rx_dv,
   output  reg                  rx_er,
   //RGMII Interface
   output  reg     [3:0]        rgmii_txd_HI,
   output  reg     [3:0]        rgmii_txd_LO,
   output  reg                  rgmii_tx_ctl_HI,
   output  reg                  rgmii_tx_ctl_LO,
   output  reg                  rgmii_txc_HI,
   output  reg                  rgmii_txc_LO,
   input           [3:0]        rgmii_rxd_HI,
   input           [3:0]        rgmii_rxd_LO,
   input                        rgmii_rx_ctl_HI,
   input                        rgmii_rx_ctl_LO,
   input                        rgmii_rxc
   //Status and  Error Signals
);
// Parameter Define 

// Register Define 
reg     [3:0]                   rgmii_rxd_HI_d1;
reg                             rgmii_rx_ctl_HI_d1;
reg     [3:0]                   rgmii_txd_HI_r;
reg     [3:0]                   rgmii_txd_LO_r;
reg                             rgmii_tx_ctl_HI_r;
reg                             rgmii_tx_ctl_LO_r;
reg                             rgmii_txc_HI_r;
reg                             rgmii_txc_LO_r;
// Wire Define
wire                            tx_en_to_ddr;
wire                            rgmii_tx_ctl_int;
wire    [3:0]                   txd_falling;
/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/

/*----------------------- RGMII Tx Region ----------------------------*/
assign tx_en_to_ddr = (eth_speed[2] == 1'b1) ? tx_en : tx_en && (!tx_er);
assign rgmii_tx_ctl_int = tx_en ^ tx_er;

assign txd_falling = (eth_speed[2] == 1'b1) ? txd[7:4] : txd[3:0];

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset) begin
      rgmii_txc_HI_r    <= 1'b0;
      rgmii_txc_LO_r    <= 1'b0;
      rgmii_tx_ctl_HI_r <= 1'b0;
      rgmii_tx_ctl_LO_r <= 1'b0;
      rgmii_txd_HI_r    <= 4'b0;
      rgmii_txd_LO_r    <= 4'b0;
   end 
   else begin
      rgmii_txc_HI_r    <= txc[0];
      rgmii_txc_LO_r    <= txc[1];     
      rgmii_tx_ctl_HI_r <= tx_en_to_ddr;
      rgmii_tx_ctl_LO_r <= rgmii_tx_ctl_int;
      rgmii_txd_HI_r    <= txd[3:0];
      rgmii_txd_LO_r    <= txd_falling;
   end
end


always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset) begin
      rgmii_txc_HI    <= 1'b0;
      rgmii_txc_LO    <= 1'b0;
      rgmii_tx_ctl_HI <= 1'b0;
      rgmii_tx_ctl_LO <= 1'b0;
      rgmii_txd_HI    <= 4'b0;
      rgmii_txd_LO    <= 4'b0;
   end
   else begin
      rgmii_txc_HI    <= rgmii_txc_HI_r;
      rgmii_txc_LO    <= rgmii_txc_LO_r;
      rgmii_tx_ctl_HI <= rgmii_tx_ctl_HI_r;
      rgmii_tx_ctl_LO <= rgmii_tx_ctl_LO_r;
      rgmii_txd_HI    <= rgmii_txd_HI_r;
      rgmii_txd_LO    <= rgmii_txd_LO_r;
   end
end

/*----------------------- RGMII Rx Region ----------------------------*/
//rgmii_rxd & rgmii_rx_ctl
always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset) begin
      rgmii_rxd_HI_d1    <= 4'h0;
      rgmii_rx_ctl_HI_d1 <= 1'b0;
   end 
   else begin
      rgmii_rxd_HI_d1    <= rgmii_rxd_HI;
      rgmii_rx_ctl_HI_d1 <= rgmii_rx_ctl_HI;
   end
end

generate
   if (RGMII_SYNC_EN == 0) begin
      always @ (posedge rgmii_rxc or posedge rx_reset) begin
         if (rx_reset) begin
            rxd[7:4] <= 4'h0;
            rxd[3:0] <= 4'h0;
            rx_dv    <= 1'b0;
            rx_er    <= 1'b0;
         end
         else if (eth_speed[2] == 1'b1) begin //1000M
            if (rgmii_rxc_edge == 1'b0) begin //0:DDIO Rising Edge
               rxd[7:4] <= rgmii_rxd_LO;
               rxd[3:0] <= rgmii_rxd_HI_d1;
               rx_dv    <= rgmii_rx_ctl_HI_d1;
               rx_er    <= rgmii_rx_ctl_HI_d1^rgmii_rx_ctl_LO;
            end
            else begin//1:DDIO Falling Edge
               rxd[7:4] <= rgmii_rxd_HI;
               rxd[3:0] <= rgmii_rxd_LO;
               rx_dv    <= rgmii_rx_ctl_LO;
               rx_er    <= rgmii_rx_ctl_LO^rgmii_rx_ctl_HI;
            end
        end
        else begin //100M or 10M
           rxd[7:4] <= 4'b0;
           rxd[3:0] <= rgmii_rxd_LO;
           rx_dv    <= rgmii_rx_ctl_LO;
           rx_er    <= rgmii_rx_ctl_LO^rgmii_rx_ctl_HI_d1;
        end
     end
   end
   else begin
      reg  [3:0]  rgmii_rxd_HI_i;
      reg  [3:0]  rgmii_rxd_LO_i;
      reg         rgmii_rx_ctl_HI_i;
      reg         rgmii_rx_ctl_LO_i;
      wire [3:0]  rgmii_rxd_HI_sync;
      wire [3:0]  rgmii_rxd_LO_sync;
      wire        rgmii_rx_ctl_HI_sync;
      wire        rgmii_rx_ctl_LO_sync;

      always @ (posedge rgmii_rxc or posedge rx_reset) begin
         if (rx_reset) begin
            rgmii_rxd_HI_i    <= 4'h0;
            rgmii_rxd_LO_i    <= 4'h0;
            rgmii_rx_ctl_HI_i <= 1'b0;
            rgmii_rx_ctl_LO_i <= 1'b0;
         end
         else if (eth_speed[2] == 1'b1) begin //1000M
            if (rgmii_rxc_edge == 1'b0) begin //0:DDIO Rising Edge
               rgmii_rxd_HI_i    <= rgmii_rxd_LO;
               rgmii_rxd_LO_i    <= rgmii_rxd_HI_d1;
               rgmii_rx_ctl_HI_i <= rgmii_rx_ctl_HI_d1;
               rgmii_rx_ctl_LO_i <= rgmii_rx_ctl_LO;
            end
            else begin //1:DDIO Falling Edge
               rgmii_rxd_HI_i    <= rgmii_rxd_HI;
               rgmii_rxd_LO_i    <= rgmii_rxd_LO;
               rgmii_rx_ctl_HI_i <= rgmii_rx_ctl_HI;
               rgmii_rx_ctl_LO_i <= rgmii_rx_ctl_LO;
            end
         end        
         else begin//100M or 10M
            rgmii_rxd_HI_i    <= rgmii_rxd_HI_d1;
            rgmii_rxd_LO_i    <= rgmii_rxd_LO;
            rgmii_rx_ctl_HI_i <= rgmii_rx_ctl_LO;
            rgmii_rx_ctl_LO_i <= rgmii_rx_ctl_HI_d1;
         end
      end

      always @ (posedge rgmii_rxc or posedge rx_reset) begin
         if (rx_reset) begin
            rxd[7:4] <= 4'h0;
            rxd[3:0] <= 4'h0;
            rx_dv    <= 1'b0;
            rx_er    <= 1'b0;
         end
         else begin
            rxd[7:4] <= rgmii_rxd_HI_sync;
            rxd[3:0] <= rgmii_rxd_LO_sync;
            rx_dv    <= rgmii_rx_ctl_HI_sync;
            rx_er    <= rgmii_rx_ctl_HI_sync^rgmii_rx_ctl_LO_sync;
         end
      end
      
      /*----------------------- RGMII Rx Sync Module -----------------------*/
      `IP_MODULE_NAME(rgmii_sync) u_rgmii_sync
      (
      //Globle Signals
          .rgmii_rxc                  (rgmii_rxc                  ),
          .rx_reset                   (rx_reset                   ),
          .eth_speed                  (eth_speed                  ),
      //RGMII Rx Interface Input
          .rgmii_rxd_HI_i             (rgmii_rxd_HI_i             ),
          .rgmii_rxd_LO_i             (rgmii_rxd_LO_i             ),
          .rgmii_rx_ctl_HI_i          (rgmii_rx_ctl_HI_i          ),
          .rgmii_rx_ctl_LO_i          (rgmii_rx_ctl_LO_i          ),
      //RGMII Rx Interface Output
          .rgmii_rxd_HI_o             (rgmii_rxd_HI_sync          ),
          .rgmii_rxd_LO_o             (rgmii_rxd_LO_sync          ),
          .rgmii_rx_ctl_HI_o          (rgmii_rx_ctl_HI_sync       ),
          .rgmii_rx_ctl_LO_o          (rgmii_rx_ctl_LO_sync       )
      );
   end
endgenerate


endmodule


module `IP_MODULE_NAME(rmii_if)
(
//Globle Signals
input                           tx_mac_aclk,
output  reg                     tx_mac_aclk_en,
input                           tx_reset,
output  wire                    rx_mac_aclk,
output  reg                     rx_mac_aclk_en,
input                           rx_reset,
//Configuration Signals
input           [2:0]           eth_speed,
//GMII Interface
output  reg     [7:0]           gm_rx_d,
output  reg                     gm_rx_dv,
output  reg                     gm_rx_err,
input           [7:0]           gm_tx_d,
input                           gm_tx_en,
input                           gm_tx_err,
//RGMII Interface
input                           rmii_clk_ref,
output  reg     [1:0]           rmii_txd,
output  reg                     rmii_tx_en,

input           [1:0]           rmii_rxd,
input                           rmii_crs_dv,
input                           rmii_rx_err

//Status and  Error Signals
);
// Parameter Define 

// Register Define 
reg     [6:0]                   aclk_en_cnt;
reg     [6:0]                   rx_aclk_en_cnt;
reg     [1:0]                   txd;
reg                             tx_en;
reg                             tx_er;
reg                             rx_err_dl1;
reg                             rx_dv_dl1;
reg     [7:0]                   rxd_dl1;
reg     [6:0]                   rx_odd_data_ptr;
reg     [1:0]                   rxd;
reg                             rx_dv;
reg                             rx_er;
reg     [7:0]                   gm_tx_d_temp;
reg                             tx_en_temp;
reg     [6:0]                   txbit_cnt;
reg                             rx_dv_compensate;
reg                             rx_err_compensate;
reg                             rx_err_latch;
reg     [7:0]                   rx_d_compensate;
reg     [6:0]                   rx_compensate_cnt;
// Wire Define

/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/

/*----------------------- Tx Region ----------------------------*/
always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      aclk_en_cnt <= 7'd0;
   else if (((eth_speed == 3'h2) && (aclk_en_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (aclk_en_cnt == 7'd39)))
      aclk_en_cnt <= 7'd0;
   else
      aclk_en_cnt <= aclk_en_cnt + 1'b1;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_mac_aclk_en <= 1'b0;
   else if (aclk_en_cnt == 7'd0)
      tx_mac_aclk_en <= 1'b1;
   else
      tx_mac_aclk_en <= 1'b0;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      gm_tx_d_temp <= 8'h0;
   else if ((gm_tx_en == 1'b1) && (tx_mac_aclk_en == 1'b1))
      gm_tx_d_temp <= gm_tx_d;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_en_temp <= 1'b0;
   else if(tx_mac_aclk_en == 1'b1)
      tx_en_temp <= gm_tx_en;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      txbit_cnt <= 7'd0;
   else if (((eth_speed == 3'h2) && (txbit_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (txbit_cnt == 7'd39)))
      txbit_cnt <= 7'd0;
   else if (tx_en_temp == 1'b1)
      txbit_cnt <= txbit_cnt + 1'b1;
   else
      txbit_cnt <= 7'd0; 
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       txd <= 2'h0;
   else if (eth_speed == 3'h2) begin
      case(txbit_cnt[1:0])
         2'b00: txd <= gm_tx_d_temp[1:0];
         2'b01: txd <= gm_tx_d_temp[3:2];
         2'b10: txd <= gm_tx_d_temp[5:4];
         2'b11: txd <= gm_tx_d_temp[7:6];
         default; 
      endcase 
   end 
   else if (eth_speed == 3'h1) begin
      case(txbit_cnt[5:0])
         6'd00: txd <= gm_tx_d_temp[1:0];
         6'd10: txd <= gm_tx_d_temp[3:2];
         6'd20: txd <= gm_tx_d_temp[5:4];
         6'd30: txd <= gm_tx_d_temp[7:6];
         default; 
      endcase 
   end
   else;    
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_en <= 1'b0;
   else 
      tx_en <= tx_en_temp;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       tx_er <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
       tx_er <= gm_tx_err;
end

always @ (posedge rmii_clk_ref or posedge tx_reset) begin 
   if (tx_reset == 1'b1) begin
      rmii_tx_en <= 1'b0;
      rmii_txd   <= 2'b0;
   end
   else begin
      rmii_tx_en  <= tx_en;
      rmii_txd    <= txd[1:0];
   end
end

/*----------------------- Rx Region ----------------------------*/
always @(posedge rmii_clk_ref or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      rxd   <= 2'b00;
      rx_dv <= 1'b0;
      rx_er <= 1'b0;
   end
   else begin
      rxd   <= rmii_rxd;
      rx_dv <= rmii_crs_dv;
      rx_er <= rmii_rx_err;
   end
end

assign rx_mac_aclk = rmii_clk_ref;

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_aclk_en_cnt <= 7'd0;
   else if (((eth_speed == 3'h2) && (rx_aclk_en_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_aclk_en_cnt == 7'd39)))
      rx_aclk_en_cnt <= 7'd0;
   else
      rx_aclk_en_cnt <= rx_aclk_en_cnt + 1'b1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_mac_aclk_en <= 1'b0;
   else if (rx_aclk_en_cnt == 7'd0)
      rx_mac_aclk_en <= 1'b1;
   else
      rx_mac_aclk_en <= 1'b0;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_odd_data_ptr <= 7'd0;
   else if (((eth_speed == 3'h2) && (rx_odd_data_ptr == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_odd_data_ptr == 7'd39)) || (rx_dv == 1'b0))
      rx_odd_data_ptr <= 7'd0;
   else 
      rx_odd_data_ptr <= rx_odd_data_ptr + 1'b1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_dv_dl1 <= 1'b0;
   else 
      rx_dv_dl1 <= rx_dv; 
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
       rx_err_dl1 <= 1'b0;
   else 
       rx_err_dl1 <= rx_er; 
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rxd_dl1 <= 8'h0;
   else if (eth_speed == 3'h2) begin
      case (rx_odd_data_ptr[1:0])
         2'b00: rxd_dl1[1:0] <= rxd;
         2'b01: rxd_dl1[3:2] <= rxd;
         2'b10: rxd_dl1[5:4] <= rxd;
         2'b11: rxd_dl1[7:6] <= rxd;
         default; 
      endcase 
   end 
   else if (eth_speed == 3'h1) begin
      case (rx_odd_data_ptr[5:0])
         6'd00: rxd_dl1[1:0] <= rxd;
         6'd10: rxd_dl1[3:2] <= rxd;
         6'd20: rxd_dl1[5:4] <= rxd;
         6'd30: rxd_dl1[7:6] <= rxd;
         default; 
      endcase 
   end
   else;    
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_compensate_cnt <= 7'b0;
   else if (rx_dv_dl1 == 1'b1)
      rx_compensate_cnt <= 7'b0;
   else if (((eth_speed == 3'h2) && (rx_compensate_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_compensate_cnt == 7'd39)))
      rx_compensate_cnt <= rx_compensate_cnt;
   else
      rx_compensate_cnt <= rx_compensate_cnt + 1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_dv_compensate <= 1'b0;
   else if (((eth_speed == 3'h2) && (rx_compensate_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_compensate_cnt == 7'd39)))
      rx_dv_compensate <= 1'b0;
   else if ((rx_dv_dl1 == 1'b1) && rx_odd_data_ptr == 7'd0)
      rx_dv_compensate <= 1'b1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
       rx_err_latch <= 1'b0;
   else begin
      if (rx_dv & rx_er)                rx_err_latch <= 1'b1;
      else if (rx_odd_data_ptr == 7'd0) rx_err_latch <= 1'b0; 
      else                              rx_err_latch <= rx_err_latch;
   end
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_err_compensate <= 1'b0;
   else if (((eth_speed == 3'h2) && (rx_compensate_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_compensate_cnt == 7'd39)))
      rx_err_compensate <= 1'b0;
   else if (rx_odd_data_ptr == 7'd0)
      rx_err_compensate <= rx_err_latch;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_d_compensate <= 8'h0;
   else if ((rx_dv_dl1 == 1'b1) && rx_odd_data_ptr == 7'd0)
      rx_d_compensate <= rxd_dl1;
   else;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_dv <= 1'b0;
   else if (rx_mac_aclk_en == 1'b1)
      gm_rx_dv <= rx_dv_compensate;
end


always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_d <= 8'h0;
   else if (rx_mac_aclk_en == 1'b1)
      gm_rx_d <= rx_d_compensate;
   else;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_err <= 1'b0;
   else if (rx_mac_aclk_en == 1'b1)
      gm_rx_err <= rx_err_compensate;
end

endmodule



//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
q8PcJMXl5LfGKk+3/kHHW66DrlE5KqEuUAmsMzgIaWRoTlHraOs4iUBfXKEyx3nc
HDsoWsS0O+n8TRTjZT+1WPh2wKbqi6uTszyz9gqd+vNQ35No23AaTUpznEyd7Ihy
OJdwGJo0bOtEevqr/VR2h52oBt5PRDhcMqjKksCtobA=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4800 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
RXb7/MnIF2KgPR79dgq+gyXCna6BCL8z9TYT98a0voV58Z8evdelJJw2M1oxPwc4
+OkOsaipE4C6Aa8ormkApIquk862GhxmzkIh0Mb/VT65POJP/H63CbOh7X+dSlv6
Mtjn10EyLFhUGfgTSufOLfPxTgfQ7mToMRfsNI8FWbA=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 2992 )
`pragma protect data_block
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
Dfzw+oxCbfNnxGVzvGZqkw==
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
tyRA8q+GIVvhzUoLCt5OquZ7W4mh8VySEiFjY8lt2VEIw7HGJZXwP5ZQGNO0pCHA
dQ1DETRwEXOvEodbLf2vuORjxLW1qosVcagxgRTOPEzmVKWwwGpgxN9up0y7bA9D
L+C4LToewkTgNql98xIcIAin0UpV+OUPf95D0m+X9v0=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4640 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
U/5y1MEBEaTmlQC7LqO0Tj0iT886nCX6c5pUT7jlgtUvSQnmUALfc31TW5BlLjMA
uxAHwMXDPDIRw7oDd6++JCn950RgorT+ETQ2WIph5/HXeuA5xJY4NkxaWhtOojTL
FyqudPjCaNJf2ipSrrzjJuyfVs78Q0+ZeXqzxFobYDY=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 3936 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


module `IP_MODULE_NAME(efx_mac1gbe) #(
   parameter FAMILY = "TRION",
   parameter VERSION = 32'h20,
   parameter RXFIFO_EN = 1,
   parameter RXFIFO_DTH = 2048,
   parameter TXFIFO_EN = 1,
   parameter TXFIFO_DTH = 2048,
   parameter PHY_INTF_MODE = 0,  
   parameter LOOPBACK_EN = 1'b0,
   parameter GMII_DW = PHY_INTF_MODE == 4 ? 16 : 8,
   parameter AXIS_DW = 8,  
   parameter APBIF = 0,
   parameter NO_PREAMBLE = 0,
   parameter INTER_PACKET_GAP = 6'd12,
   parameter MTU_FRAME_LENGTH = 16'd1518,
   parameter MAC_SOURCE_ADDRESS = 48'h0,
   parameter ENABLE_BROADCAST_FILTERING = 1'b1,
   parameter RGMII_RXC_EDGE = 1'b1,
   parameter RGMII_TXC_DLY = 1'b1,
   parameter PKT_CNT_MAX = 256, 
   parameter SIP600 = 0 
) (
   input                  tx_mac_aclk,
   output                 rx_mac_aclk,
   input                  mac_reset,   
   input                  proto_reset, 
   input                  tx_axis_clk,
   input [AXIS_DW-1:0]    tx_axis_mac_tdata,
   input                  tx_axis_mac_tvalid,
   input                  tx_axis_mac_tlast,
   input [AXIS_DW/8-1:0]  tx_axis_mac_tstrb,
   input                  tx_axis_mac_tuser,
   output                 tx_axis_mac_tready,
   input                  rx_axis_clk,
   output [AXIS_DW-1:0]   rx_axis_mac_tdata,
   output                 rx_axis_mac_tvalid,
   output                 rx_axis_mac_tlast,
   output [AXIS_DW/8-1:0] rx_axis_mac_tstrb,
   output                 rx_axis_mac_tuser,
   input                  rx_axis_mac_tready,
   input                  gm_rx_c,
   input  [GMII_DW-1:0]   gm_rx_d,
   input  [GMII_DW/8-1:0] gm_rx_dv,
   input  [GMII_DW/8-1:0] gm_rx_err,
   output                 gm_tx_c,
   output [GMII_DW-1:0]   gm_tx_d,
   output [GMII_DW/8-1:0] gm_tx_en,
   output [GMII_DW/8-1:0] gm_tx_err,
   output [3:0]           rgmii_txd_HI,
   output [3:0]           rgmii_txd_LO,
   output                 rgmii_tx_ctl_HI,
   output                 rgmii_tx_ctl_LO,
   output                 rgmii_txc_HI,
   output                 rgmii_txc_LO,
   input  [3:0]           rgmii_rxd_HI,
   input  [3:0]           rgmii_rxd_LO,
   input                  rgmii_rx_ctl_HI,
   input                  rgmii_rx_ctl_LO,
   input                  rgmii_rxc,
   input                  mii_txc,
   output [3:0]           mii_txd,
   output                 mii_tx_dv,
   output                 mii_tx_err,
   input                  mii_rxc,
   input  [3:0]           mii_rxd,
   input                  mii_rx_dv,
   input                  mii_rx_err,
   input                  rmii_clk_ref,
   output [1:0]           rmii_txd,
   output                 rmii_tx_en,
   input  [1:0]           rmii_rxd,
   input                  rmii_crs_dv,
   input                  rmii_rx_err,
   input  [9:0]           s_paddr,
   input  [31:0]          s_pwdata,
   input                  s_pwrite,
   input                  s_penable,
   input                  s_psel,
   output [31:0]          s_prdata,
   output                 s_pready,
   output                 s_perr,
   input                  s_axi_aclk,    
   input  [9:0]           s_axi_awaddr,  
   input                  s_axi_awvalid, 
   output                 s_axi_awready, 
   input  [31:0]          s_axi_wdata,   
   input                  s_axi_wvalid,  
   output                 s_axi_wready,  
   output [1:0]           s_axi_bresp,   
   output                 s_axi_bvalid,  
   input                  s_axi_bready,  
   input  [9:0]           s_axi_araddr,  
   input                  s_axi_arvalid, 
   output                 s_axi_arready, 
   output [1:0]           s_axi_rresp,   
   output [31:0]          s_axi_rdata,   
   output                 s_axi_rvalid,  
   input                  s_axi_rready,  
`ifdef ONCHIP_PHY
   input  logic           init_clk,
   input  logic           init_rst_n,
   input  logic           PMA_CMN_READY,
   input  logic           PMA_XCVR_PLLCLK_EN_ACK,
   input  logic [3:0]     PMA_XCVR_POWER_STATE_ACK,
   input  logic           PMA_RX_SIGNAL_DETECT,
   output logic           PMA_XCVR_PLLCLK_EN,
   output logic [3:0]     PMA_XCVR_POWER_STATE_REQ,
   output logic           phy_init_done,
`else
   output                 Mdo,   
   output                 MdoEn, 
   input                  Mdi,   
   output                 Mdc,   
`endif
   output [2:0]           eth_speed
);
`ifdef ONCHIP_PHY
//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
LyznSVfsT/QtbT6eanx7nWulnCFr2VHPkh8sRRF2JDG7gO8/HJcMTh4Zk6NhoalF
HACF6ZiOeiTKY7CqkFlYT+nSRqLaFdUyzGrapdVLLiZ0HKetIhPqvxwnpPVsPaRR
MjVPO3LkNyDMf+op8W83C1e+2N0uJ2Xqdo1JJZI4G+M=
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4864 )
`pragma protect data_block
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
6TB9Y89hmRp3+nI2rSt3NQ==
`pragma protect end_protected

//pragma protect end


// Module: efx_pulse_sync
// Description:
//   Safely transfers a single-cycle pulse from a source clock domain to a
//   destination clock domain using a toggle-based synchronization scheme.
//
// ==========================================================================

module `IP_MODULE_NAME(efx_pulse_sync) #(
   parameter ACTIVE_LOW = 1, // 0 - Active high reset, 1 - Active low reset
   parameter OFF_ASSERTION = 0
) (
   input  src_clk,      // Source clock (e.g., tx_axis_clk)
   input  src_reset,    // Reset for source domain
   input  pulse_in,     // Single-cycle pulse in src_clk domain

   input  dst_clk,      // Destination clock (e.g., tx_clk)
   input  dst_reset,    // Reset for destination domain
   output pulse_out     // Single-cycle pulse in dst_clk domain
);

// Toggle generation in source clock domain
reg toggle_src;

// Synchronizer flops in destination clock domain
wire toggle_sync;
reg  toggle_sync_r;

generate
   if (ACTIVE_LOW == 1) begin
      always @ (posedge src_clk or negedge src_reset) begin
         if (!src_reset)
            toggle_src <= 1'b0;
         else if (pulse_in)
            toggle_src <= ~toggle_src;
         else
            toggle_src <= toggle_src;
      end

     `IP_MODULE_NAME(efx_asyncreg) #(
        .WIDTH         (1),
        .OFF_ASSERTION (OFF_ASSERTION)
     ) efx_asyncreg_toggle_src (
        .clk     (dst_clk),
        .reset_n (dst_reset),
        .d_i     (toggle_src),
        .d_o     (toggle_sync)
     );
      
      always @ (posedge dst_clk or negedge dst_reset) begin
         if (!dst_reset) begin
            toggle_sync_r <= 1'b0;
         end 
         else begin
            toggle_sync_r <= toggle_sync;  // Delay for edge detect
         end
      end
   end
   else begin
      always @ (posedge src_clk or posedge src_reset) begin
         if (src_reset)
            toggle_src <= 1'b0;
         else if (pulse_in)
            toggle_src <= ~toggle_src;
         else
            toggle_src <= toggle_src;
      end

      `IP_MODULE_NAME(efx_asyncreg) #(
         .WIDTH         (1),
         .ACTIVE_HIGH   (0),
         .OFF_ASSERTION (OFF_ASSERTION)
      ) efx_asyncreg_toggle_src (
         .clk     (dst_clk),
         .reset_n (dst_reset),
         .d_i     (toggle_src),
         .d_o     (toggle_sync)
      );
      
      always @ (posedge dst_clk or posedge dst_reset) begin
         if (!dst_reset) begin
            toggle_sync_r <= 1'b0;
         end 
         else begin
            toggle_sync_r <= toggle_sync;  // Delay for edge detect
         end
      end
   end
endgenerate

// Generate one-cycle pulse in destination domain
assign pulse_out = toggle_sync ^ toggle_sync_r;

endmodule



module `IP_MODULE_NAME(efx_data_pipeline)  #(
    parameter HBP = 1,
    parameter DATA_WIDTH = 256,
    parameter MUX_IN = 1
)(
  input               upstream_valid_i,
  output              upstream_ready_o,
  input      [DATA_WIDTH-1:0]   upstream_data_i,
  output              downstream_valid_o,
  input               downstream_ready_i,
  output     [DATA_WIDTH-1:0]   downstream_data_o,
  input               clk,
  input               resetn
);
//pragma protect
//pragma protect begin
`protected
F/b2V?,QIe(U[JQa8KBXCKWY.DK#cHL>P#I5B-:M0GLUND=:[=ba))NYXA03V1Rb
ZO[aCWeS/Eb3_)<YD:BXRB,(#D+NC?8.[@:S/Yd0-^WJ,^A2c^-d7KN66F^W[RU(
;]I>O27cd-WCe?DS?_FOb_fN?3-[Y^O&/I1.d.4OYe&=+Z53@0W@dG@\\<;59&LV
XWfHKXeDH^db,c(UUL;RFf<+7I=5Z^>-4K)dQ:a]S3YNM/ZRaYA3\Uc@.:g9cF9.
012@V,QDaEE2>HN<?Bd53<dL4XO]2?;<dN4Z<KD.B]c[C<KN(B[JCP.M6FPCc8\R
H>#ROZ^B(7KeZ&B3A7>14Z&QXG4cg)GK<C6=F#GRI78=K0#(3NaWfPD=Q#8M00;f
7AXMWE^G1f+^)?T@d,L:2Y1#.+:6U4.b>EDa2N1\bK9gQA=gX1SIe6ace84TF>8U
B(TR:9E8cH=CLUc&L_R.7OLDOBAEI@bf/<Z2f7e.+2/Qb@_WU>#:3;GBS:R]6ZTX
ME)YS7=)-?)db#7(DOPML4N;?2&_f=N+VZO1OC\L133dGN]ZS77#d[FaI_bUcA6e
fEZ0ZJF;cf5SDF[Ea[,Q?-Tf^(JdJT8[/]J(f/;]A>@9.Qc+a<EdBJN1c8:RO#@(
VK7?.2HaY#\=Q_eB88N\#;4;PLE7.#=0T+-K88)WQ[EcBGN5O+43(4\#=AOR0\V_
/^fc.DA7,=CPG:I6/>99F\4\4db\4W]E@@O[)-&\P0HLKY+#3>OdGeZ5Q\eDe/@)
5_F?OQEeB(3ILabGc&[EeS(2P[2c#9>NOWV&[a9@DVDBA<-fgSUA#]=eX)6d7<(,
[5E-17#bQ\&?M1a\A;T\HcSXgTF&[B;V7d#1OC_1CE^47g)MN)U04-OgSC9P/B09
JSaFb-De;fXf:+7?R[P2X4+_WNYOVgQdLT\7@(C?UNWYb&O0]ec^-P=-6N+ZV]<O
A^)CAI[VS/8]70>5e?1XcNMa6H=<Md\bB\S0G41DJf^(@ccVIKP73B(^C0FCgGS1
[ed+c[-<FaA,@5=8cU/:YFJZ\U]+&T4WG6<Y#B-3WHIM?0^-?F4(17U1dY5<B2VF
FS7Hd2JdM>[e/fM:&ZR+/a2O3HDaaa5#;4ZCR(>WE=M&I(KE@O863-4Y_6B3^^b4
V:P#<?^1]gQ=&<-L<cZI4U/7+)9LJ05IXN=:7L(M;=)FHQSb;dcHFHP-c0STE(;(
UM^#=;M9<&/F8L(),?+5<-+R6R<aC<4WNDg.IV2M<bO\M/#2)URVV>I9,6ROS1@/
4Q/91.bGSA@BJQ,07HRR&^D^8.M7^<J,ZbI#IbKZC:aLXfI)/273SgY+Q3FA[8e5
J_a^a8C0FS+1b+8DZ;.\<NOR2dCGfR.&]aFC0H<PBdQJ:(^GA^S[3.;474Ie7CEJ
]6<2((6<aK[.aADa1^HWZI^R,IW=^F.6<c]XgAU./]M5O^R>E@4HC?JW#JWf?Y#6
0HOCZ6\WZ/B7K4Rgf+34>O#,QJM-a/Sgb&6VBH,G&,GU-VH[01?9GS^[J_BC4Nbf
^\f;J7Oa=0?B#=FY304L+3d4K?5O45F^-4O@g#UcYH03OHW4C:>H(W,_:01B8d]D
Y1X_Z\+G4LM<f2cI8/a]b+S@E@L4KA<]aLI0Zae1C:\I\d]1Q.()USYR04cQW;2N
1=?W#+e4aKc=@&fIP@\&9f[77,SW]U&\9>YE\/]P3Zf0gg+NIA@UJTZTa;g3&;R7
Y[/Y#PGUE;.0B<&((eDb+CM8LbWN;I-JN+K:4I9W?g_X7,6C8M3_BJfFc-LVPQWA
:HPIP.KUc[WLcO7(VG<2MI?ICcPa#d77a<;PUE<e69]XR>^P>L__&?<Z]Wc]TVU+
Bb93M;P;O^)fKUL#,PR<F:BcAV>0AIAMTOK9Ze&,e0+<TUZ50Z#D1dHA5_]9I#e8
_XHX:O_AD_b3GLDBP=[He>;;eK.f:1:]/bK3L6<EXS&gXQF5&N)=/2D&^H8aO]YK
&N(+PQ&X[2[@9(+EG(dGde(\gX0gYCO(@IV>J7#F,,@\:(\UIdDG6>[A]X+>GK<X
/D1,(V2f[VHL>&O<-]S/]?4^WaQ[-N@F&,=C(C;\9_4e(IVdb03;fQ<OY<&&IL#]
Q.5F7IF.fD3V5b+0&8)ba&>KEI)DJaCRc74\NGS_#1cTO)?C^eC->B:?AI63(gNb
e<^PAQW:/a>N(#5fE,N><N3ed:/S_8G]RH]=IK#e;DTd;L+R]AE_&UVK5Jdc@R,:
<DFL(d1cg^7ECM_(I]aO&;/bB2Q)W6ePZ9,gV6I;ID2;c<9XS6PA5?RS@:.fDCD#
7K&9>gVI/fZLA\G&aUQR/G_UNVTA?aa,A/AJ8SS1<[Q77a6J\)Y,S^XJ-N@M4ZJ6
&4Y-Ad6Fg];)Ne-g,[O03>.RL[&fGS@OSTF</KP+@b/SQL&/7feb+L\X<BeMdLAY
#M0N]dS]S1f7&1M/;F_-3]<^VWf_:)V\Q0\B23&5,KaKa6X(gA?RT_C.6_=UY691
#=7<S>NFB<6>Jca4Zf#;8M&NQ-CBZMM<&&CKKBT(gPPg\CO_^NOM[FS=4A5/PMAT
CDN(4<TY)X(.9UB;/a#5C)6^cf2,4B2@(Hb?<IY,HbaOF(P=^B>=4851G;HYA?2?
)ZPF04,5QF35J9JC&\A93,C;fg5O>SV_MT?_ZNeK,,aZZ0VG3We<#22)O,FeM5K3
U#:&S7Xc<^T]ac7@RgO<-W67]T[TYb)PK6.I^;/(HS.;P+Vd(W0:Db0NJ\VbD]1]
Z0E4/+)&+4F&8=R?>A8H4ICZ3cca>dT0Z##VWI^bg9,e_2ARQ4cESBD:^#X8&4EF
^)(+6O#1BVAT4F1I4Q7S/)1KURg-U]@DU3,+.bC_Y<&RUOVYGa]^QS2-#/[@DA/N
U#Gb=Qg?OaP0Y8[-U.G00VE.ISMfeX;M#/&@F7JE+dZFZK,P^\L<Jde6C8=RW[9O
W5FX_0;&P=)<,+J(I;OC/NCN0b_MU[9V_#NL,JK3C?#N.I8+8[M/-gCN?F,NBJ9I
Y58-3CR:+Nb[+(J)7:J(EcVPJ\ZDE016J8Y.O#:2U_]MZ\4#:a,cPgbRZ:\aB](S
e+_/\Oc.bLa&[#;7UP-NCJV+G^+?78McEM902;5I9dRME$
`endprotected

//pragma protect end

`undef IP_UUID
`undef IP_NAME_CONCAT
`undef IP_MODULE_NAME
