起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点起点
相关小说: