From 5f235980b521dbc8ebc500855cf262011d131651 Mon Sep 17 00:00:00 2001 From: shalinilohia50 <46928246+shalinilohia50@users.noreply.github.com> Date: Mon, 10 Feb 2025 16:39:37 +0530 Subject: [PATCH] Port DDL export framework to Dotnet (#3482) Port DDL export framework from Python to Dotnet. Disabled ddl_func_proc and ddl_partitions tests now. Co-authored-by: Nirmit Shah --- .../install-and-run-dotnet/action.yml | 2 +- test/dotnet/ExpectedOutput/ddl_UDDT_UDTT.out | 112 +++ .../dotnet/ExpectedOutput/ddl_all_objects.out | 335 +++++++ .../ExpectedOutput/ddl_tables_index.out | 534 +++++++++++ test/dotnet/ExpectedOutput/ddl_triggers.out | 135 +++ test/dotnet/ExpectedOutput/ddl_users.out | 39 + test/dotnet/ExpectedOutput/ddl_views.out | 62 ++ .../prepexec_boundary_sql_tests.out | 119 ++- test/dotnet/dotnet.csproj | 1 + test/dotnet/input/DDLExport/ddl_UDDT_UDTT.sql | 77 ++ .../input/DDLExport/ddl_all_objects.sql | 123 +++ test/dotnet/input/DDLExport/ddl_func_proc.sql | 255 +++++ .../dotnet/input/DDLExport/ddl_partitions.sql | 893 ++++++++++++++++++ .../input/DDLExport/ddl_tables_index.sql | 149 +++ test/dotnet/input/DDLExport/ddl_triggers.sql | 55 ++ test/dotnet/input/DDLExport/ddl_users.sql | 35 + test/dotnet/input/DDLExport/ddl_views.sql | 30 + .../input/prepexec_boundary_sql_tests.sql | 3 - test/dotnet/src/BatchRun.cs | 19 + test/dotnet/src/ScriptDatabase.cs | 130 +++ test/dotnet/utils/ConfigSetup.cs | 4 + test/dotnet/utils/TestUtils.cs | 11 + 22 files changed, 3118 insertions(+), 5 deletions(-) create mode 100644 test/dotnet/ExpectedOutput/ddl_UDDT_UDTT.out create mode 100644 test/dotnet/ExpectedOutput/ddl_all_objects.out create mode 100644 test/dotnet/ExpectedOutput/ddl_tables_index.out create mode 100644 test/dotnet/ExpectedOutput/ddl_triggers.out create mode 100644 test/dotnet/ExpectedOutput/ddl_users.out create mode 100644 test/dotnet/ExpectedOutput/ddl_views.out create mode 100644 test/dotnet/input/DDLExport/ddl_UDDT_UDTT.sql create mode 100644 test/dotnet/input/DDLExport/ddl_all_objects.sql create mode 100644 test/dotnet/input/DDLExport/ddl_func_proc.sql create mode 100644 test/dotnet/input/DDLExport/ddl_partitions.sql create mode 100644 test/dotnet/input/DDLExport/ddl_tables_index.sql create mode 100644 test/dotnet/input/DDLExport/ddl_triggers.sql create mode 100644 test/dotnet/input/DDLExport/ddl_users.sql create mode 100644 test/dotnet/input/DDLExport/ddl_views.sql create mode 100644 test/dotnet/src/ScriptDatabase.cs diff --git a/.github/composite-actions/install-and-run-dotnet/action.yml b/.github/composite-actions/install-and-run-dotnet/action.yml index 63784689e40..e5a8b5d57af 100644 --- a/.github/composite-actions/install-and-run-dotnet/action.yml +++ b/.github/composite-actions/install-and-run-dotnet/action.yml @@ -40,6 +40,6 @@ runs: babel_databaseName=master \ babel_user=jdbc_user \ babel_password=12345678 \ - testName="all---TestUDD.txt;TestChar.txt;TestSqlVariant.txt;TestVarChar.txt;TestAuthentication.txt;TestText.txt" \ + testName="all---TestUDD.txt;TestChar.txt;TestSqlVariant.txt;TestVarChar.txt;TestAuthentication.txt;TestText.txt;ddl_func_proc.sql;ddl_partitions.sql" \ dotnet test shell: bash diff --git a/test/dotnet/ExpectedOutput/ddl_UDDT_UDTT.out b/test/dotnet/ExpectedOutput/ddl_UDDT_UDTT.out new file mode 100644 index 00000000000..1223eb3b4b6 --- /dev/null +++ b/test/dotnet/ExpectedOutput/ddl_UDDT_UDTT.out @@ -0,0 +1,112 @@ +#Q#DROP TYPE IF EXISTS test1 + +#Q#DROP TYPE IF EXISTS test2 + +#Q#DROP TYPE IF EXISTS test4 + +#Q#DROP TYPE IF EXISTS LocationTableType + +#Q#DROP TYPE IF EXISTS InventoryItem + +#Q#DROP TYPE IF EXISTS shc_test.LocationTableType + +#Q#DROP TABLE IF EXISTS t_udd + +#Q#DROP TYPE IF EXISTS shc_test.test3 + +#Q#DROP SCHEMA IF EXISTS shc_test + +#Q# +CREATE TYPE test1 FROM varchar(11) NOT NULL ; + +#Q# +CREATE TYPE test2 FROM int NULL ; + +#Q# +CREATE SCHEMA shc_test + +#Q# +Create type shc_test.test3 FROM int NOT NULL ; + +#Q# +Create type test4 from numeric(15,4) + +#Q# +create table t_udd( a shc_test.test3); + +#Q# +CREATE TYPE LocationTableType AS TABLE + ( LocationName VARCHAR(50) + , CostRate INT ); + +#Q# +CREATE TYPE InventoryItem AS TABLE +( + [Name] NVARCHAR(50) NOT NULL, + SupplierId BIGINT NOT NULL, + Price DECIMAL (18, 4) NULL, + PRIMARY KEY ( + Name + ) +) + +#Q# +CREATE TYPE shc_test.LocationTableType AS TABLE + ( LocationName VARCHAR(50) + , CostRate INT ); + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[t_udd]( + [a] [shc_test].[test3] NULL +) ON [PRIMARY] + +GO +CREATE TYPE [dbo].[test1] FROM [varchar](11) NOT NULL +GO +CREATE TYPE [dbo].[test2] FROM [int] NULL +GO +CREATE TYPE [dbo].[test4] FROM [numeric](15, 4) NULL +GO +CREATE TYPE [shc_test].[test3] FROM [int] NOT NULL +GO +CREATE TYPE [dbo].[inventoryitem] AS TABLE( + [name] [nvarchar](50) NOT NULL, + [supplierid] [bigint] NOT NULL, + [price] [decimal](18, 4) NULL, + PRIMARY KEY NONCLUSTERED +( + [name] ASC +)WITH (IGNORE_DUP_KEY = OFF) +) +GO +CREATE TYPE [dbo].[locationtabletype] AS TABLE( + [locationname] [varchar](50) NULL, + [costrate] [int] NULL +) +GO +CREATE TYPE [shc_test].[locationtabletype] AS TABLE( + [locationname] [varchar](50) NULL, + [costrate] [int] NULL +) +GO +#Q#DROP TYPE IF EXISTS test1 + +#Q#DROP TYPE IF EXISTS test2 + +#Q#DROP TYPE IF EXISTS test4 + +#Q#DROP TYPE IF EXISTS LocationTableType + +#Q#DROP TYPE IF EXISTS InventoryItem + +#Q#DROP TYPE IF EXISTS shc_test.LocationTableType + +#Q#DROP TABLE IF EXISTS t_udd + +#Q#DROP TYPE IF EXISTS shc_test.test3 + +#Q#DROP SCHEMA IF EXISTS shc_test + diff --git a/test/dotnet/ExpectedOutput/ddl_all_objects.out b/test/dotnet/ExpectedOutput/ddl_all_objects.out new file mode 100644 index 00000000000..5b5128e96f9 --- /dev/null +++ b/test/dotnet/ExpectedOutput/ddl_all_objects.out @@ -0,0 +1,335 @@ +#Q#DROP VIEW IF EXISTS sys_all_views_select_vu_prepare + +#Q#DROP VIEW IF EXISTS sys_all_views_select_chk_option_vu_prepare + +#Q#DROP TABLE IF EXISTS sys_all_views_table_vu_prepare + +#Q#DROP TRIGGER IF EXISTS babel_1654_vu_prepare_trig_t + +#Q#DROP TABLE IF EXISTS babel_1654_vu_prepare_t + +#Q#drop procedure IF EXISTS routines_test_nvar; + +#Q#drop function IF EXISTS routines_fc1; + +#Q#drop function IF EXISTS routines_fc2; + +#Q#drop function IF EXISTS routines_fc3; + +#Q#drop function IF EXISTS routines_fc4; + +#Q#drop function IF EXISTS routines_fc5; + +#Q#drop function IF EXISTS routines_fc6; + +#Q#DROP TABLE IF EXISTS test_tsql_const + +#Q#DROP TABLE IF EXISTS test_datetime + +#Q#DROP TABLE IF EXISTS test_tsql_collate + +#Q# +Create table test_tsql_const( + c_int int primary key, + c_bit sys.bit check(c_bit <> cast(1 as sys.bit)), + check(c_int < 10), + c_smallint smallint check(c_smallint < cast(cast(CAST('20' AS smallint) as sql_variant) as smallint)), + c_binary binary(8) check(c_binary > cast(0xfe as binary(8))), + c_varbinary varbinary(8) check(c_varbinary > cast(0xfe as varbinary(8))) +) + +#Q#Create table test_datetime( + c_time time check(cast(c_time as pg_catalog.time) < cast('09:00:00' as time) and c_time < cast('09:00:00' as time(6))), + c_date date check(c_date < cast('2001-01-01' as date)), + c_datetime datetime check(c_datetime < cast('2020-10-20 09:00:00' as datetime)), + c_datetime2 datetime2 check(c_datetime2 < cast('2020-10-20 09:00:00' as datetime2) and c_datetime2 < cast('2020-10-20 09:00:00' as datetime2(6)) ), + c_datetimeoffset datetimeoffset check(c_datetimeoffset < cast('12-10-25 12:32:10 +01:00' as sys.datetimeoffset) and c_datetimeoffset < cast('12-10-25 12:32:10 +01:00' as datetimeoffset(4))), + c_smalldatetime smalldatetime check(c_smalldatetime < cast('2007-05-08 12:35:29.123' AS smalldatetime)), +) + +#Q#create table test_tsql_collate( + c_varchar varchar check(c_varchar <> cast('sflkjasdlkfjf' as varchar(12)) COLLATE latin1_general_ci_as), + c_char char check(c_char <> cast('sflkjasdlkfjf' as char(7)) COLLATE japanese_ci_as), + c_nchar nchar check(cast(c_nchar as nchar(7)) <> cast('sflkjasdlkfjf' as nchar(7)) COLLATE bbf_unicode_cp1_ci_as), +) + +#Q# +create procedure routines_test_nvar(@test_nvar_a nvarchar , @test_nvar_b int = 8) +AS +BEGIN + SELECT @test_nvar_b=8; +END + +#Q#create function routines_fc1(@fc1_a nvarchar) RETURNS nvarchar AS BEGIN return @fc1_a END; + +#Q#create function routines_fc2(@fc2_a varchar) RETURNS varchar AS BEGIN return @fc2_a END; + +#Q#create function routines_fc3(@fc3_a nchar) RETURNS nchar AS BEGIN return @fc3_a END; + +#Q#create function routines_fc4(@fc4_a binary, @fc4_b tinyint, @fc4_c BIGINT, @fc4_d float) RETURNS binary AS BEGIN return @fc4_a END; + +#Q#create function routines_fc5(@fc5_a varbinary) RETURNS varbinary AS BEGIN return @fc5_a END; + +#Q#create function routines_fc6(@fc6_a char) RETURNS char AS BEGIN return @fc6_a END; + +#Q# +create table babel_1654_vu_prepare_t ( ID INT IDENTITY (1,1) PRIMARY KEY , a varchar(50), b varchar(50)) + +#Q# +CREATE TRIGGER babel_1654_vu_prepare_trig_t on babel_1654_vu_prepare_t after update as + select COLUMNS_UPDATED(); + +#Q# +CREATE TABLE sys_all_views_table_vu_prepare(a int) + +#Q#CREATE VIEW sys_all_views_select_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare + +#Q#CREATE VIEW sys_all_views_select_chk_option_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare +WITH CHECK OPTION + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[babel_1654_vu_prepare_t]( + [id] [int] IDENTITY(1,1) NOT NULL, + [a] [varchar](50) NULL, + [b] [varchar](50) NULL, + CONSTRAINT [babel_1654_vu_prepare_t_pkey] PRIMARY KEY NONCLUSTERED +( + [id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[babel_1654_vu_prepare_t] ADD CONSTRAINT [babel_1654_vu_prepare_t_pkey] PRIMARY KEY NONCLUSTERED +( + [id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS OFF +GO +SET QUOTED_IDENTIFIER OFF +GO + +CREATE TRIGGER babel_1654_vu_prepare_trig_t on babel_1654_vu_prepare_t after update as + select COLUMNS_UPDATED(); + +GO +ALTER TABLE [dbo].[babel_1654_vu_prepare_t] ENABLE TRIGGER [babel_1654_vu_prepare_trig_t] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[sys_all_views_table_vu_prepare]( + [a] [int] NULL +) ON [PRIMARY] + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[test_datetime]( + [c_time] [time](6) NULL, + [c_date] [date] NULL, + [c_datetime] [datetime] NULL, + [c_datetime2] [datetime2](6) NULL, + [c_datetimeoffset] [datetimeoffset](6) NULL, + [c_smalldatetime] [smalldatetime] NULL +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_date_check] CHECK (((c_date < '2001-01-01'))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_date_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_datetime_check] CHECK (((c_datetime < '2020-10-20 09:00:00'))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_datetime_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_datetime2_check] CHECK ((((c_datetime2 < '2020-10-20 09:00:00') AND (c_datetime2 < CAST('2020-10-20 09:00:00' AS datetime2(6)))))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_datetime2_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_datetimeoffset_check] CHECK ((((c_datetimeoffset < '2025-12-10 12:32:10 +01:00') AND (c_datetimeoffset < CAST('2025-12-10 12:32:10 +01:00' AS datetimeoffset(4)))))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_datetimeoffset_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_smalldatetime_check] CHECK (((c_smalldatetime < '2007-05-08 12:35:00'))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_smalldatetime_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_time_check] CHECK ((((c_time < '09:00:00') AND (c_time < CAST('09:00:00' AS time(6)))))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_time_check] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[test_tsql_collate]( + [c_varchar] [varchar](1) NULL, + [c_char] [char](1) NULL, + [c_nchar] [nchar](1) NULL +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[test_tsql_collate] WITH CHECK ADD CONSTRAINT [test_tsql_collate_c_char_check] CHECK (((c_char <> (CAST('sflkjasdlkfjf' AS char(7)) COLLATE japanese_ci_as)))) +GO +ALTER TABLE [dbo].[test_tsql_collate] CHECK CONSTRAINT [test_tsql_collate_c_char_check] +GO +ALTER TABLE [dbo].[test_tsql_collate] WITH CHECK ADD CONSTRAINT [test_tsql_collate_c_nchar_check] CHECK (((CAST((c_nchar) AS nchar(7)) <> (CAST(('sflkjasdlkfjf') AS nchar(7)) COLLATE latin1_general_ci_as)))) +GO +ALTER TABLE [dbo].[test_tsql_collate] CHECK CONSTRAINT [test_tsql_collate_c_nchar_check] +GO +ALTER TABLE [dbo].[test_tsql_collate] WITH CHECK ADD CONSTRAINT [test_tsql_collate_c_varchar_check] CHECK (((c_varchar <> (CAST('sflkjasdlkfjf' AS varchar(12)) COLLATE latin1_general_ci_as)))) +GO +ALTER TABLE [dbo].[test_tsql_collate] CHECK CONSTRAINT [test_tsql_collate_c_varchar_check] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[test_tsql_const]( + [c_int] [int] NOT NULL, + [c_bit] [bit] NULL, + [c_smallint] [smallint] NULL, + [c_binary] [binary](8) NULL, + [c_varbinary] [varbinary](8) NULL, + CONSTRAINT [test_tsql_const_pkey] PRIMARY KEY NONCLUSTERED +( + [c_int] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_binary_check] CHECK (((c_binary > CAST(('0xfe') AS binary(8))))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_binary_check] +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_bit_check] CHECK (((c_bit <> CAST((1) AS bit)))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_bit_check] +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_int_check] CHECK (((c_int < 10))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_int_check] +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_smallint_check] CHECK (((c_smallint < CAST((CAST(('20') AS sql_variant)) AS smallint)))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_smallint_check] +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_varbinary_check] CHECK (((c_varbinary > CAST('0xfe' AS varbinary(8))))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_varbinary_check] +GO +ALTER TABLE [dbo].[test_tsql_const] ADD CONSTRAINT [test_tsql_const_pkey] PRIMARY KEY NONCLUSTERED +( + [c_int] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE VIEW sys_all_views_select_chk_option_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare +WITH CHECK OPTION + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE VIEW sys_all_views_select_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +create procedure routines_test_nvar(@test_nvar_a nvarchar , @test_nvar_b int = 8) +AS +BEGIN + SELECT @test_nvar_b=8; +END + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +create function routines_fc1(@fc1_a nvarchar) RETURNS nvarchar AS BEGIN return @fc1_a END; + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +create function routines_fc2(@fc2_a varchar) RETURNS varchar AS BEGIN return @fc2_a END; + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +create function routines_fc3(@fc3_a nchar) RETURNS nchar AS BEGIN return @fc3_a END; + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +create function routines_fc4(@fc4_a binary, @fc4_b tinyint, @fc4_c BIGINT, @fc4_d float) RETURNS binary AS BEGIN return @fc4_a END; + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +create function routines_fc5(@fc5_a varbinary) RETURNS varbinary AS BEGIN return @fc5_a END; + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +create function routines_fc6(@fc6_a char) RETURNS char AS BEGIN return @fc6_a END; + +GO +#Q#DROP VIEW IF EXISTS sys_all_views_select_vu_prepare + +#Q#DROP VIEW IF EXISTS sys_all_views_select_chk_option_vu_prepare + +#Q#DROP TABLE IF EXISTS sys_all_views_table_vu_prepare + +#Q#DROP TRIGGER IF EXISTS babel_1654_vu_prepare_trig_t + +#Q#DROP TABLE IF EXISTS babel_1654_vu_prepare_t + +#Q#drop procedure IF EXISTS routines_test_nvar; + +#Q#drop function IF EXISTS routines_fc1; + +#Q#drop function IF EXISTS routines_fc2; + +#Q#drop function IF EXISTS routines_fc3; + +#Q#drop function IF EXISTS routines_fc4; + +#Q#drop function IF EXISTS routines_fc5; + +#Q#drop function IF EXISTS routines_fc6; + +#Q#DROP TABLE IF EXISTS test_tsql_const + +#Q#DROP TABLE IF EXISTS test_datetime + +#Q#DROP TABLE IF EXISTS test_tsql_collate + diff --git a/test/dotnet/ExpectedOutput/ddl_tables_index.out b/test/dotnet/ExpectedOutput/ddl_tables_index.out new file mode 100644 index 00000000000..5ed55d31658 --- /dev/null +++ b/test/dotnet/ExpectedOutput/ddl_tables_index.out @@ -0,0 +1,534 @@ +#Q#DROP TABLE IF EXISTS table_check + +#Q#DROP TABLE IF EXISTS table_foreign + +#Q#DROP TABLE IF EXISTS table_primary + +#Q#DROP TABLE IF EXISTS table_unique + +#Q#DROP TABLE IF EXISTS isc_check_constraints_t1 + +#Q#DROP TABLE IF EXISTS test_tsql_const + +#Q#DROP TABLE IF EXISTS test_tsql_cast + +#Q#DROP TABLE IF EXISTS test_datetime + +#Q#DROP TABLE IF EXISTS test_functioncall + +#Q#DROP TABLE IF EXISTS test_tsql_collate + +#Q#DROP TABLE IF EXISTS test_null + +#Q#DROP TABLE IF EXISTS test_upper + +#Q#Create table table_unique (a int NOT NULL UNIQUE) + +#Q#DROP TABLE IF EXISTS babel_4817_t1, babel_4817_t2, babel_4817_t3, babel_4817_t4, babel_4817_t5; + +#Q#Create table table_primary (a int NOT NULL , b int NOT NULL,c int, PRIMARY KEY(a) ) + +#Q#Create table table_foreign (aa int NOT NULL , bb int NOT NULL,a int, PRIMARY KEY(aa) ,FOREIGN KEY (a) REFERENCES table_primary(a)) + +#Q#Create table table_check (ID int NOT NULL,NAME varchar(10) NOT NULL,AGE int NOT NULL CHECK (AGE >= 18)) + +#Q#Create table isc_check_constraints_t1( a varchar, check(a = 'provvwstdjtlyzygsx')); + +#Q#Create table test_tsql_const( + c_int int primary key, + c_bit sys.bit check(c_bit <> cast(1 as sys.bit)), + check(c_int < 10), + c_smallint smallint check(c_smallint < cast(cast(CAST('20' AS smallint) as sql_variant) as smallint)), + c_binary binary(8) check(c_binary > cast(0xfe as binary(8))), + c_varbinary varbinary(8) check(c_varbinary > cast(0xfe as varbinary(8))) +) + +#Q#Create table test_datetime( + c_time time check(cast(c_time as pg_catalog.time) < cast('09:00:00' as time) and c_time < cast('09:00:00' as time(6))), + c_date date check(c_date < cast('2001-01-01' as date)), + c_datetime datetime check(c_datetime < cast('2020-10-20 09:00:00' as datetime)), + c_datetime2 datetime2 check(c_datetime2 < cast('2020-10-20 09:00:00' as datetime2) and c_datetime2 < cast('2020-10-20 09:00:00' as datetime2(6)) ), + c_datetimeoffset datetimeoffset check(c_datetimeoffset < cast('12-10-25 12:32:10 +01:00' as sys.datetimeoffset) and c_datetimeoffset < cast('12-10-25 12:32:10 +01:00' as datetimeoffset(4))), + c_smalldatetime smalldatetime check(c_smalldatetime < cast('2007-05-08 12:35:29.123' AS smalldatetime)), +) + +#Q#create table test_tsql_collate( + c_varchar varchar check(c_varchar <> cast('sflkjasdlkfjf' as varchar(12)) COLLATE latin1_general_ci_as), + c_char char check(c_char <> cast('sflkjasdlkfjf' as char(7)) COLLATE japanese_ci_as), + c_nchar nchar check(cast(c_nchar as nchar(7)) <> cast('sflkjasdlkfjf' as nchar(7)) COLLATE bbf_unicode_cp1_ci_as), +) + +#Q#Create table test_null(a int, b int, check(a IS NOT NULL), CONSTRAINT constraint1 check (a>10)); + +#Q#Create table test_upper(a char, check (upper(a) in ('A','B'))); + +#Q#Create index test_index on test_upper(a) + +#Q#Create index test_comp_index on table_unique(a) + +#Q# +CREATE TABLE babel_4817_t1 (col1 INT, col2 INT NOT NULL, col3 AS col1*col2, col4 INT, col5 INT, col6 INT, col7 INT, col8 INT NOT NULL, PRIMARY KEY NONCLUSTERED(col3, col7 DESC), UNIQUE (col2 DESC, col8)); + +#Q#CREATE INDEX babel_4817_t1_idx_1 ON dbo.babel_4817_t1 (col5) INCLUDE (col1); + +#Q# +CREATE TABLE babel_4817_t2 (col1 INT, col2 INT NOT NULL, col3 AS col1*col2, col4 INT, col5 INT, col6 INT, col7 INT NOT NULL IDENTITY, col8 INT NOT NULL) + +#Q#ALTER TABLE babel_4817_t2 ADD CONSTRAINT babel_4817_t2_pk PRIMARY KEY NONCLUSTERED (col3, col7); + +#Q#CREATE UNIQUE NONCLUSTERED INDEX babel_4817_t2_unique_index ON dbo.babel_4817_t2 (col2 DESC, col8) INCLUDE (col4); + +#Q#CREATE NONCLUSTERED INDEX babel_4817_t2_idx ON dbo.babel_4817_t2 (col5) INCLUDE (col1); + +#Q#CREATE TABLE babel_4817_t3 (col1 INT IDENTITY, col2 INT, col3 INT, col4 INT, col5 AS col1*col2, col6 VARCHAR(30)) + +#Q#ALTER TABLE babel_4817_t3 DROP COLUMN col4 + +#Q#ALTER TABLE babel_4817_t3 ADD col4 INT + +#Q# +SET ANSI_NULLS ON + +#Q#SET QUOTED_IDENTIFIER ON + +#Q#CREATE TABLE [dbo].[babel_4817_t4]( + [id] [int] NULL, + [filename] [varchar](200) NOT NULL, + [commited_dt] [datetime] NOT NULL, + [commited_sql] [ntext] NULL, +PRIMARY KEY CLUSTERED +( + [filename] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] + +#Q# +CREATE TABLE [dbo].[babel_4817_t5] +( + [id] [int] NOT NULL, + [filename] [varchar](200) NOT NULL, + [commited_dt] [datetime] NOT NULL, + [commited_sql] [ntext] NULL, + PRIMARY KEY CLUSTERED +( + [filename] ASC, [ID] DESC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] + +#Q#CREATE NONCLUSTERED INDEX ix_test ON [dbo].[babel_4817_t5] ([filename]) INCLUDE ([id],[commited_dt]) + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[babel_4817_t1]( + [col1] [int] NULL, + [col2] [int] NOT NULL, + [col3] AS (col1 * col2) PERSISTED NOT NULL, + [col4] [int] NULL, + [col5] [int] NULL, + [col6] [int] NULL, + [col7] [int] NOT NULL, + [col8] [int] NOT NULL, + CONSTRAINT [babel_4817_t1_pkey] PRIMARY KEY NONCLUSTERED +( + [col3] ASC, + [col7] DESC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], + CONSTRAINT [babel_4817_t1_col2_col8_key] UNIQUE NONCLUSTERED +( + [col2] DESC, + [col8] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[babel_4817_t1] ADD CONSTRAINT [babel_4817_t1_col2_col8_key] UNIQUE NONCLUSTERED +( + [col2] DESC, + [col8] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +CREATE NONCLUSTERED INDEX [babel_4817_t1_idx_1babel_4817_t54b9390e1f9ca15d901db11774c8a339] ON [dbo].[babel_4817_t1] +( + [col5] ASC +) +INCLUDE([col1]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_PADDING ON + +GO +ALTER TABLE [dbo].[babel_4817_t1] ADD CONSTRAINT [babel_4817_t1_pkey] PRIMARY KEY NONCLUSTERED +( + [col3] ASC, + [col7] DESC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[babel_4817_t2]( + [col1] [int] NULL, + [col2] [int] NOT NULL, + [col3] AS (col1 * col2) PERSISTED NOT NULL, + [col4] [int] NULL, + [col5] [int] NULL, + [col6] [int] NULL, + [col7] [int] IDENTITY(1,1) NOT NULL, + [col8] [int] NOT NULL, + CONSTRAINT [babel_4817_t2_pk] PRIMARY KEY NONCLUSTERED +( + [col3] ASC, + [col7] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +CREATE NONCLUSTERED INDEX [babel_4817_t2_idxbabel_4817_t2ee980ac887cd6b2f46cd1527808a3a02] ON [dbo].[babel_4817_t2] +( + [col5] ASC +) +INCLUDE([col1]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_PADDING ON + +GO +ALTER TABLE [dbo].[babel_4817_t2] ADD CONSTRAINT [babel_4817_t2_pk] PRIMARY KEY NONCLUSTERED +( + [col3] ASC, + [col7] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +CREATE UNIQUE NONCLUSTERED INDEX [babel_4817_t2_unique_indexbabel58db3c54b7c753629ed4fc2951061d2a] ON [dbo].[babel_4817_t2] +( + [col2] DESC, + [col8] ASC +) +INCLUDE([col4]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[babel_4817_t3]( + [col1] [int] IDENTITY(1,1) NOT NULL, + [col2] [int] NULL, + [col3] [int] NULL, + [col5] AS (col1 * col2) PERSISTED, + [col6] [varchar](30) NULL, + [col4] [int] NULL +) ON [PRIMARY] + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[babel_4817_t4]( + [id] [int] NULL, + [filename] [varchar](200) NOT NULL, + [commited_dt] [datetime] NOT NULL, + [commited_sql] [ntext] NULL, + CONSTRAINT [babel_4817_t4_pkey] PRIMARY KEY NONCLUSTERED +( + [filename] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] + +GO +ALTER TABLE [dbo].[babel_4817_t4] ADD CONSTRAINT [babel_4817_t4_pkey] PRIMARY KEY NONCLUSTERED +( + [filename] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[babel_4817_t5]( + [id] [int] NOT NULL, + [filename] [varchar](200) NOT NULL, + [commited_dt] [datetime] NOT NULL, + [commited_sql] [ntext] NULL, + CONSTRAINT [babel_4817_t5_pkey] PRIMARY KEY NONCLUSTERED +( + [filename] ASC, + [id] DESC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] + +GO +ALTER TABLE [dbo].[babel_4817_t5] ADD CONSTRAINT [babel_4817_t5_pkey] PRIMARY KEY NONCLUSTERED +( + [filename] ASC, + [id] DESC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +CREATE NONCLUSTERED INDEX [ix_testbabel_4817_t53c84a25c8e10b5bd55950897f8ca76a1] ON [dbo].[babel_4817_t5] +( + [filename] ASC +) +INCLUDE([id],[commited_dt]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[isc_check_constraints_t1]( + [a] [varchar](1) NULL +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[isc_check_constraints_t1] WITH CHECK ADD CONSTRAINT [isc_check_constraints_t1_a_check] CHECK (((a = 'provvwstdjtlyzygsx'))) +GO +ALTER TABLE [dbo].[isc_check_constraints_t1] CHECK CONSTRAINT [isc_check_constraints_t1_a_check] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[table_check]( + [id] [int] NOT NULL, + [name] [varchar](10) NOT NULL, + [age] [int] NOT NULL +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[table_check] WITH CHECK ADD CONSTRAINT [table_check_age_check] CHECK (((age >= 18))) +GO +ALTER TABLE [dbo].[table_check] CHECK CONSTRAINT [table_check_age_check] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[table_foreign]( + [aa] [int] NOT NULL, + [bb] [int] NOT NULL, + [a] [int] NULL, + CONSTRAINT [table_foreign_pkey] PRIMARY KEY NONCLUSTERED +( + [aa] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[table_foreign] WITH CHECK ADD FOREIGN KEY([a]) +REFERENCES [dbo].[table_primary] ([a]) +GO +ALTER TABLE [dbo].[table_foreign] ADD CONSTRAINT [table_foreign_pkey] PRIMARY KEY NONCLUSTERED +( + [aa] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[table_primary]( + [a] [int] NOT NULL, + [b] [int] NOT NULL, + [c] [int] NULL, + CONSTRAINT [table_primary_pkey] PRIMARY KEY NONCLUSTERED +( + [a] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[table_primary] ADD CONSTRAINT [table_primary_pkey] PRIMARY KEY NONCLUSTERED +( + [a] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[table_unique]( + [a] [int] NOT NULL, + CONSTRAINT [table_unique_a_key] UNIQUE NONCLUSTERED +( + [a] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[table_unique] ADD CONSTRAINT [table_unique_a_key] UNIQUE NONCLUSTERED +( + [a] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +CREATE NONCLUSTERED INDEX [test_comp_indextable_unique54256857b8bed086a06f91b550a3a65b] ON [dbo].[table_unique] +( + [a] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[test_datetime]( + [c_time] [time](6) NULL, + [c_date] [date] NULL, + [c_datetime] [datetime] NULL, + [c_datetime2] [datetime2](6) NULL, + [c_datetimeoffset] [datetimeoffset](6) NULL, + [c_smalldatetime] [smalldatetime] NULL +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_date_check] CHECK (((c_date < '2001-01-01'))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_date_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_datetime_check] CHECK (((c_datetime < '2020-10-20 09:00:00'))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_datetime_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_datetime2_check] CHECK ((((c_datetime2 < '2020-10-20 09:00:00') AND (c_datetime2 < CAST('2020-10-20 09:00:00' AS datetime2(6)))))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_datetime2_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_datetimeoffset_check] CHECK ((((c_datetimeoffset < '2025-12-10 12:32:10 +01:00') AND (c_datetimeoffset < CAST('2025-12-10 12:32:10 +01:00' AS datetimeoffset(4)))))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_datetimeoffset_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_smalldatetime_check] CHECK (((c_smalldatetime < '2007-05-08 12:35:00'))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_smalldatetime_check] +GO +ALTER TABLE [dbo].[test_datetime] WITH CHECK ADD CONSTRAINT [test_datetime_c_time_check] CHECK ((((c_time < '09:00:00') AND (c_time < CAST('09:00:00' AS time(6)))))) +GO +ALTER TABLE [dbo].[test_datetime] CHECK CONSTRAINT [test_datetime_c_time_check] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[test_null]( + [a] [int] NULL, + [b] [int] NULL +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[test_null] WITH CHECK ADD CONSTRAINT [constraint1] CHECK (((a > 10))) +GO +ALTER TABLE [dbo].[test_null] CHECK CONSTRAINT [constraint1] +GO +ALTER TABLE [dbo].[test_null] WITH CHECK ADD CONSTRAINT [test_null_a_check] CHECK (((a IS NOT NULL))) +GO +ALTER TABLE [dbo].[test_null] CHECK CONSTRAINT [test_null_a_check] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[test_tsql_collate]( + [c_varchar] [varchar](1) NULL, + [c_char] [char](1) NULL, + [c_nchar] [nchar](1) NULL +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[test_tsql_collate] WITH CHECK ADD CONSTRAINT [test_tsql_collate_c_char_check] CHECK (((c_char <> (CAST('sflkjasdlkfjf' AS char(7)) COLLATE japanese_ci_as)))) +GO +ALTER TABLE [dbo].[test_tsql_collate] CHECK CONSTRAINT [test_tsql_collate_c_char_check] +GO +ALTER TABLE [dbo].[test_tsql_collate] WITH CHECK ADD CONSTRAINT [test_tsql_collate_c_nchar_check] CHECK (((CAST((c_nchar) AS nchar(7)) <> (CAST(('sflkjasdlkfjf') AS nchar(7)) COLLATE latin1_general_ci_as)))) +GO +ALTER TABLE [dbo].[test_tsql_collate] CHECK CONSTRAINT [test_tsql_collate_c_nchar_check] +GO +ALTER TABLE [dbo].[test_tsql_collate] WITH CHECK ADD CONSTRAINT [test_tsql_collate_c_varchar_check] CHECK (((c_varchar <> (CAST('sflkjasdlkfjf' AS varchar(12)) COLLATE latin1_general_ci_as)))) +GO +ALTER TABLE [dbo].[test_tsql_collate] CHECK CONSTRAINT [test_tsql_collate_c_varchar_check] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[test_tsql_const]( + [c_int] [int] NOT NULL, + [c_bit] [bit] NULL, + [c_smallint] [smallint] NULL, + [c_binary] [binary](8) NULL, + [c_varbinary] [varbinary](8) NULL, + CONSTRAINT [test_tsql_const_pkey] PRIMARY KEY NONCLUSTERED +( + [c_int] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_binary_check] CHECK (((c_binary > CAST(('0xfe') AS binary(8))))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_binary_check] +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_bit_check] CHECK (((c_bit <> CAST((1) AS bit)))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_bit_check] +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_int_check] CHECK (((c_int < 10))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_int_check] +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_smallint_check] CHECK (((c_smallint < CAST((CAST(('20') AS sql_variant)) AS smallint)))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_smallint_check] +GO +ALTER TABLE [dbo].[test_tsql_const] WITH CHECK ADD CONSTRAINT [test_tsql_const_c_varbinary_check] CHECK (((c_varbinary > CAST('0xfe' AS varbinary(8))))) +GO +ALTER TABLE [dbo].[test_tsql_const] CHECK CONSTRAINT [test_tsql_const_c_varbinary_check] +GO +ALTER TABLE [dbo].[test_tsql_const] ADD CONSTRAINT [test_tsql_const_pkey] PRIMARY KEY NONCLUSTERED +( + [c_int] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[test_upper]( + [a] [char](1) NULL +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[test_upper] WITH CHECK ADD CONSTRAINT [test_upper_a_check] CHECK (((upper(a) IN ('A', 'B')))) +GO +ALTER TABLE [dbo].[test_upper] CHECK CONSTRAINT [test_upper_a_check] +GO +CREATE NONCLUSTERED INDEX [test_indextest_upper8e0335bba8a0f780c0c12b75ae201ead] ON [dbo].[test_upper] +( + [a] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +#Q#DROP TABLE IF EXISTS babel_4817_3, babel_4817_4; + +#Q#DROP TABLE IF EXISTS babel_4817_t1, babel_4817_t2, babel_4817_t3, babel_4817_t4, babel_4817_t5; + +#Q#DROP TABLE IF EXISTS table_check + +#Q#DROP TABLE IF EXISTS table_foreign + +#Q#DROP TABLE IF EXISTS table_primary + +#Q#DROP TABLE IF EXISTS table_unique + +#Q#DROP TABLE IF EXISTS isc_check_constraints_t1 + +#Q#DROP TABLE IF EXISTS test_tsql_const + +#Q#DROP TABLE IF EXISTS test_tsql_cast + +#Q#DROP TABLE IF EXISTS test_tsql_collate + +#Q#DROP TABLE IF EXISTS test_datetime + +#Q#DROP TABLE IF EXISTS test_functioncall + +#Q#DROP TABLE IF EXISTS test_null + +#Q#DROP TABLE IF EXISTS test_upper + diff --git a/test/dotnet/ExpectedOutput/ddl_triggers.out b/test/dotnet/ExpectedOutput/ddl_triggers.out new file mode 100644 index 00000000000..7fd93df164e --- /dev/null +++ b/test/dotnet/ExpectedOutput/ddl_triggers.out @@ -0,0 +1,135 @@ +#Q#DROP TRIGGER IF EXISTS babel_1654_vu_prepare_trig_t + +#Q# +DROP TRIGGER IF EXISTS babel_1654_vu_prepare_updEmployeeDatas + +#Q# +DROP TABLE IF EXISTS babel_1654_vu_prepare_employeeData + +#Q# +DROP TABLE IF EXISTS babel_1654_vu_prepare_t + +#Q# +DROP TABLE IF EXISTS sys_computed_columns_vu_prepare_t1 + +#Q# + +CREATE TABLE babel_1654_vu_prepare_employeeData( ID INT IDENTITY (1,1) PRIMARY KEY,Emp_First_name VARCHAR (50),Emp_Last_name VARCHAR (50),Emp_Salary INT, +a varchar (50), b varchar(50), c varchar(50), d varchar(50), e varchar(50), f varchar(50)) + +#Q# +create table babel_1654_vu_prepare_t ( ID INT IDENTITY (1,1) PRIMARY KEY , a varchar(50), b varchar(50)) + +#Q# +CREATE TRIGGER babel_1654_vu_prepare_trig_t on babel_1654_vu_prepare_t after update as + select COLUMNS_UPDATED(); + +#Q# +CREATE TRIGGER babel_1654_vu_prepare_updEmployeeDatas ON babel_1654_vu_prepare_employeeData AFTER UPDATE,INSERT AS + select COLUMNS_UPDATED(); + update babel_1654_vu_prepare_t set a = 'sss' , b = 'sss' where id = 1; + select COLUMNS_UPDATED(); + +#Q# +CREATE TABLE sys_computed_columns_vu_prepare_t1 ( + scc_first_number smallint, + scc_second_number money, + scc_multiplied AS scc_first_number * scc_second_number +) + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[babel_1654_vu_prepare_employeedata]( + [id] [int] IDENTITY(1,1) NOT NULL, + [emp_first_name] [varchar](50) NULL, + [emp_last_name] [varchar](50) NULL, + [emp_salary] [int] NULL, + [a] [varchar](50) NULL, + [b] [varchar](50) NULL, + [c] [varchar](50) NULL, + [d] [varchar](50) NULL, + [e] [varchar](50) NULL, + [f] [varchar](50) NULL, + CONSTRAINT [babel_1654_vu_prepare_employeedata_pkey] PRIMARY KEY NONCLUSTERED +( + [id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[babel_1654_vu_prepare_employeedata] ADD CONSTRAINT [babel_1654_vu_prepare_employeedata_pkey] PRIMARY KEY NONCLUSTERED +( + [id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS OFF +GO +SET QUOTED_IDENTIFIER OFF +GO + +CREATE TRIGGER [dbo].[babel_1654_vu_prepare_updemployeedatas] ON [dbo].[babel_1654_vu_prepare_employeedata] AFTER UPDATE,INSERT AS + select COLUMNS_UPDATED(); + update babel_1654_vu_prepare_t set a = 'sss' , b = 'sss' where id = 1; + select COLUMNS_UPDATED(); + +GO +ALTER TABLE [dbo].[babel_1654_vu_prepare_employeedata] ENABLE TRIGGER [babel_1654_vu_prepare_updemployeedatas] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[babel_1654_vu_prepare_t]( + [id] [int] IDENTITY(1,1) NOT NULL, + [a] [varchar](50) NULL, + [b] [varchar](50) NULL, + CONSTRAINT [babel_1654_vu_prepare_t_pkey] PRIMARY KEY NONCLUSTERED +( + [id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] + +GO +ALTER TABLE [dbo].[babel_1654_vu_prepare_t] ADD CONSTRAINT [babel_1654_vu_prepare_t_pkey] PRIMARY KEY NONCLUSTERED +( + [id] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +SET ANSI_NULLS OFF +GO +SET QUOTED_IDENTIFIER OFF +GO + +CREATE TRIGGER babel_1654_vu_prepare_trig_t on babel_1654_vu_prepare_t after update as + select COLUMNS_UPDATED(); + +GO +ALTER TABLE [dbo].[babel_1654_vu_prepare_t] ENABLE TRIGGER [babel_1654_vu_prepare_trig_t] +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[sys_computed_columns_vu_prepare_t1]( + [scc_first_number] [smallint] NULL, + [scc_second_number] [money] NULL, + [scc_multiplied] AS (scc_first_number * scc_second_number) PERSISTED +) ON [PRIMARY] + +GO +#Q#DROP TRIGGER IF EXISTS babel_1654_vu_prepare_trig_t + +#Q# +DROP TRIGGER IF EXISTS babel_1654_vu_prepare_updEmployeeDatas + +#Q# +DROP TABLE IF EXISTS babel_1654_vu_prepare_employeeData + +#Q# +DROP TABLE IF EXISTS babel_1654_vu_prepare_t + +#Q# +DROP TABLE IF EXISTS sys_computed_columns_vu_prepare_t1 + diff --git a/test/dotnet/ExpectedOutput/ddl_users.out b/test/dotnet/ExpectedOutput/ddl_users.out new file mode 100644 index 00000000000..dc49642a038 --- /dev/null +++ b/test/dotnet/ExpectedOutput/ddl_users.out @@ -0,0 +1,39 @@ +#Q#DROP USER IF EXISTS test_usr1 + +#Q#DROP USER IF EXISTS test_usr2 + +#Q#DROP USER IF EXISTS test_usr3 + +#Q#CREATE LOGIN test_pwd1 + WITH PASSWORD = '340$Uuxwp7Mcxo7Khy'; + +#Q#CREATE LOGIN test_pwd2 + WITH PASSWORD = '340$UuxwpMcxo7Khy'; + +#Q#CREATE LOGIN test_pwd3 + WITH PASSWORD = '340$Uuxwp7Mco7Khy'; + +#Q#CREATE USER test_usr1 FOR LOGIN test_pwd1; + +#Q#CREATE USER test_usr2 FOR LOGIN test_pwd2; + +#Q#CREATE USER test_usr3 FOR LOGIN test_pwd3; + +CREATE USER [test_usr1] FOR LOGIN [test_pwd1] WITH DEFAULT_SCHEMA=[dbo] +GO +CREATE USER [test_usr2] FOR LOGIN [test_pwd2] WITH DEFAULT_SCHEMA=[dbo] +GO +CREATE USER [test_usr3] FOR LOGIN [test_pwd3] WITH DEFAULT_SCHEMA=[dbo] +GO +#Q#DROP LOGIN test_pwd1 + +#Q#DROP LOGIN test_pwd2 + +#Q#DROP LOGIN test_pwd3 + +#Q#DROP USER IF EXISTS test_usr1 + +#Q#DROP USER IF EXISTS test_usr2 + +#Q#DROP USER IF EXISTS test_usr3 + diff --git a/test/dotnet/ExpectedOutput/ddl_views.out b/test/dotnet/ExpectedOutput/ddl_views.out new file mode 100644 index 00000000000..764822afc6b --- /dev/null +++ b/test/dotnet/ExpectedOutput/ddl_views.out @@ -0,0 +1,62 @@ +#Q#DROP VIEW IF EXISTS sys_all_views_select_vu_prepare + +#Q#DROP VIEW IF EXISTS sys_all_views_select_chk_option_vu_prepare + +#Q#DROP VIEW IF EXISTS sys_all_views_dep_view_vu_prepare + +#Q#DROP TABLE IF EXISTS sys_all_views_table_vu_prepare + +#Q#CREATE TABLE sys_all_views_table_vu_prepare(a int) + +#Q#CREATE VIEW sys_all_views_select_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare + +#Q#CREATE VIEW sys_all_views_select_chk_option_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare +WITH CHECK OPTION + +#Q#CREATE VIEW sys_all_views_dep_view_vu_prepare AS +SELECT name, type, with_check_option FROM sys.all_views where object_id = object_id('sys_all_views_select_vu_prepare') + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[sys_all_views_table_vu_prepare]( + [a] [int] NULL +) ON [PRIMARY] + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE VIEW sys_all_views_dep_view_vu_prepare AS +SELECT name, type, with_check_option FROM sys.all_views where object_id = object_id('sys_all_views_select_vu_prepare') + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE VIEW sys_all_views_select_chk_option_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare +WITH CHECK OPTION + +GO +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE VIEW sys_all_views_select_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare + +GO +#Q#DROP VIEW IF EXISTS sys_all_views_select_vu_prepare + +#Q#DROP VIEW IF EXISTS sys_all_views_select_chk_option_vu_prepare + +#Q#DROP VIEW IF EXISTS sys_all_views_dep_view_vu_prepare + +#Q#DROP TABLE IF EXISTS sys_all_views_table_vu_prepare + diff --git a/test/dotnet/ExpectedOutput/prepexec_boundary_sql_tests.out b/test/dotnet/ExpectedOutput/prepexec_boundary_sql_tests.out index 98fdab76cdd..af33987c3cb 100644 --- a/test/dotnet/ExpectedOutput/prepexec_boundary_sql_tests.out +++ b/test/dotnet/ExpectedOutput/prepexec_boundary_sql_tests.out @@ -38,4 +38,121 @@ EXEC SP_EXECUTE @handle, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, #D#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int 1#!#2#!#3#!#4#!#5#!#6#!#7#!#8#!#9#!#10#!#11#!#12#!#13#!#14#!#15#!#16#!#17#!#18#!#19#!#20#!#21#!#22#!#23#!#24#!#25#!#26#!#27#!#28#!#29#!#30#!#31#!#32#!#33#!#34#!#35#!#36#!#37#!#38#!#39#!#40#!#41#!#42#!#43#!#44#!#45#!#46#!#47#!#48#!#49#!#50#!#51#!#52#!#53#!#54#!#55#!#56#!#57#!#58#!#59#!#60#!#61#!#62#!#63#!#64#!#65#!#66#!#67#!#68#!#69#!#70#!#71#!#72#!#73#!#74#!#75#!#76#!#77#!#78#!#79#!#80#!#81#!#82#!#83#!#84#!#85#!#86#!#87#!#88#!#89#!#90#!#91#!#92#!#93#!#94#!#95#!#96#!#97#!#98#!#99#!#100#!#101#!#102#!#103#!#104#!#105#!#106#!#107#!#108#!#109#!#110#!#111#!#112#!#113#!#114#!#115#!#116#!#117#!#118#!#119#!#120#!#121#!#122#!#123#!#124#!#125#!#126#!#127#!#128#!#129#!#130#!#131#!#132#!#133#!#134#!#135#!#136#!#137#!#138#!#139#!#140#!#141#!#142#!#143#!#144#!#145#!#146#!#147#!#148#!#149#!#150#!#151#!#152#!#153#!#154#!#155#!#156#!#157#!#158#!#159#!#160#!#161#!#162#!#163#!#164#!#165#!#166#!#167#!#168#!#169#!#170#!#171#!#172#!#173#!#174#!#175#!#176#!#177#!#178#!#179#!#180#!#181#!#182#!#183#!#184#!#185#!#186#!#187#!#188#!#189#!#190#!#191#!#192#!#193#!#194#!#195#!#196#!#197#!#198#!#199#!#200#!#201#!#202#!#203#!#204#!#205#!#206#!#207#!#208#!#209#!#210#!#211#!#212#!#213#!#214#!#215#!#216#!#217#!#218#!#219#!#220#!#221#!#222#!#223#!#224#!#225#!#226#!#227#!#228#!#229#!#230#!#231#!#232#!#233#!#234#!#235#!#236#!#237#!#238#!#239#!#240#!#241#!#242#!#243#!#244#!#245#!#246#!#247#!#248#!#249#!#250#!#251#!#252#!#253#!#254#!#255#!#256#!#257#!#258#!#259#!#260#!#261#!#262#!#263#!#264#!#265#!#266#!#267#!#268#!#269#!#270#!#271#!#272#!#273#!#274#!#275#!#276#!#277#!#278#!#279#!#280#!#281#!#282#!#283#!#284#!#285#!#286#!#287#!#288#!#289#!#290#!#291#!#292#!#293#!#294#!#295#!#296#!#297#!#298#!#299#!#300#!#301#!#302#!#303#!#304#!#305#!#306#!#307#!#308#!#309#!#310#!#311#!#312#!#313#!#314#!#315#!#316#!#317#!#318#!#319#!#320#!#321#!#322#!#323#!#324#!#325#!#326#!#327#!#328#!#329#!#330#!#331#!#332#!#333#!#334#!#335#!#336#!#337#!#338#!#339#!#340#!#341#!#342#!#343#!#344#!#345#!#346#!#347#!#348#!#349#!#350#!#351#!#352#!#353#!#354#!#355#!#356#!#357#!#358#!#359#!#360#!#361#!#362#!#363#!#364#!#365#!#366#!#367#!#368#!#369#!#370#!#371#!#372#!#373#!#374#!#375#!#376#!#377#!#378#!#379#!#380#!#381#!#382#!#383#!#384#!#385#!#386#!#387#!#388#!#389#!#390#!#391#!#392#!#393#!#394#!#395#!#396#!#397#!#398#!#399#!#400#!#401#!#402#!#403#!#404#!#405#!#406#!#407#!#408#!#409#!#410#!#411#!#412#!#413#!#414#!#415#!#416#!#417#!#418#!#419#!#420#!#421#!#422#!#423#!#424#!#425#!#426#!#427#!#428#!#429#!#430#!#431#!#432#!#433#!#434#!#435#!#436#!#437#!#438#!#439#!#440#!#441#!#442#!#443#!#444#!#445#!#446#!#447#!#448#!#449#!#450#!#451#!#452#!#453#!#454#!#455#!#456#!#457#!#458#!#459#!#460#!#461#!#462#!#463#!#464#!#465#!#466#!#467#!#468#!#469#!#470#!#471#!#472#!#473#!#474#!#475#!#476#!#477#!#478#!#479#!#480#!#481#!#482#!#483#!#484#!#485#!#486#!#487#!#488#!#489#!#490#!#491#!#492#!#493#!#494#!#495#!#496#!#497#!#498#!#499#!#500#!#501#!#502#!#503#!#504#!#505#!#506#!#507#!#508#!#509#!#510#!#511#!#512#!#513#!#514#!#515#!#516#!#517#!#518#!#519#!#520#!#521#!#522#!#523#!#524#!#525#!#526#!#527#!#528#!#529#!#530#!#531#!#532#!#533#!#534#!#535#!#536#!#537#!#538#!#539#!#540#!#541#!#542#!#543#!#544#!#545#!#546#!#547#!#548#!#549#!#550#!#551#!#552#!#553#!#554#!#555#!#556#!#557#!#558#!#559#!#560#!#561#!#562#!#563#!#564#!#565#!#566#!#567#!#568#!#569#!#570#!#571#!#572#!#573#!#574#!#575#!#576#!#577#!#578#!#579#!#580#!#581#!#582#!#583#!#584#!#585#!#586#!#587#!#588#!#589#!#590#!#591#!#592#!#593#!#594#!#595#!#596#!#597#!#598#!#599#!#600#!#601#!#602#!#603#!#604#!#605#!#606#!#607#!#608#!#609#!#610#!#611#!#612#!#613#!#614#!#615#!#616#!#617#!#618#!#619#!#620#!#621#!#622#!#623#!#624#!#625#!#626#!#627#!#628#!#629#!#630#!#631#!#632#!#633#!#634#!#635#!#636#!#637#!#638#!#639#!#640#!#641#!#642#!#643#!#644#!#645#!#646#!#647#!#648#!#649#!#650#!#651#!#652#!#653#!#654#!#655#!#656#!#657#!#658#!#659#!#660#!#661#!#662#!#663#!#664#!#665#!#666#!#667#!#668#!#669#!#670#!#671#!#672#!#673#!#674#!#675#!#676#!#677#!#678#!#679#!#680#!#681#!#682#!#683#!#684#!#685#!#686#!#687#!#688#!#689#!#690#!#691#!#692#!#693#!#694#!#695#!#696#!#697#!#698#!#699#!#700#!#701#!#702#!#703#!#704#!#705#!#706#!#707#!#708#!#709#!#710#!#711#!#712#!#713#!#714#!#715#!#716#!#717#!#718#!#719#!#720#!#721#!#722#!#723#!#724#!#725#!#726#!#727#!#728#!#729#!#730#!#731#!#732#!#733#!#734#!#735#!#736#!#737#!#738#!#739#!#740#!#741#!#742#!#743#!#744#!#745#!#746#!#747#!#748#!#749#!#750#!#751#!#752#!#753#!#754#!#755#!#756#!#757#!#758#!#759#!#760#!#761#!#762#!#763#!#764#!#765#!#766#!#767#!#768#!#769#!#770#!#771#!#772#!#773#!#774#!#775#!#776#!#777#!#778#!#779#!#780#!#781#!#782#!#783#!#784#!#785#!#786#!#787#!#788#!#789#!#790#!#791#!#792#!#793#!#794#!#795#!#796#!#797#!#798#!#799#!#800#!#801#!#802#!#803#!#804#!#805#!#806#!#807#!#808#!#809#!#810#!#811#!#812#!#813#!#814#!#815#!#816#!#817#!#818#!#819#!#820#!#821#!#822#!#823#!#824#!#825#!#826#!#827#!#828#!#829#!#830#!#831#!#832#!#833#!#834#!#835#!#836#!#837#!#838#!#839#!#840#!#841#!#842#!#843#!#844#!#845#!#846#!#847#!#848#!#849#!#850#!#851#!#852#!#853#!#854#!#855#!#856#!#857#!#858#!#859#!#860#!#861#!#862#!#863#!#864#!#865#!#866#!#867#!#868#!#869#!#870#!#871#!#872#!#873#!#874#!#875#!#876#!#877#!#878#!#879#!#880#!#881#!#882#!#883#!#884#!#885#!#886#!#887#!#888#!#889#!#890#!#891#!#892#!#893#!#894#!#895#!#896#!#897#!#898#!#899#!#900#!#901#!#902#!#903#!#904#!#905#!#906#!#907#!#908#!#909#!#910#!#911#!#912#!#913#!#914#!#915#!#916#!#917#!#918#!#919#!#920#!#921#!#922#!#923#!#924#!#925#!#926#!#927#!#928#!#929#!#930#!#931#!#932#!#933#!#934#!#935#!#936#!#937#!#938#!#939#!#940#!#941#!#942#!#943#!#944#!#945#!#946#!#947#!#948#!#949#!#950#!#951#!#952#!#953#!#954#!#955#!#956#!#957#!#958#!#959#!#960#!#961#!#962#!#963#!#964#!#965#!#966#!#967#!#968#!#969#!#970#!#971#!#972#!#973#!#974#!#975#!#976#!#977#!#978#!#979#!#980#!#981#!#982#!#983#!#984#!#985#!#986#!#987#!#988#!#989#!#990#!#991#!#992#!#993#!#994#!#995#!#996#!#997#!#998#!#999#!#1000#!#1001#!#1002#!#1003#!#1004#!#1005#!#1006#!#1007#!#1008#!#1009#!#1010#!#1011#!#1012#!#1013#!#1014#!#1015#!#1016#!#1017#!#1018#!#1019#!#1020#!#1021#!#1022#!#1023#!#1024#!#1025#!#1026#!#1027#!#1028#!#1029#!#1030#!#1031#!#1032#!#1033#!#1034#!#1035#!#1036#!#1037#!#1038#!#1039#!#1040#!#1041#!#1042#!#1043#!#1044#!#1045#!#1046#!#1047#!#1048#!#1049#!#1050#!#1051#!#1052#!#1053#!#1054#!#1055#!#1056#!#1057#!#1058#!#1059#!#1060#!#1061#!#1062#!#1063#!#1064#!#1065#!#1066#!#1067#!#1068#!#1069#!#1070#!#1071#!#1072#!#1073#!#1074#!#1075#!#1076#!#1077#!#1078#!#1079#!#1080#!#1081#!#1082#!#1083#!#1084#!#1085#!#1086#!#1087#!#1088#!#1089#!#1090#!#1091#!#1092#!#1093#!#1094#!#1095#!#1096#!#1097#!#1098#!#1099#!#1100#!#1101#!#1102#!#1103#!#1104#!#1105#!#1106#!#1107#!#1108#!#1109#!#1110#!#1111#!#1112#!#1113#!#1114#!#1115#!#1116#!#1117#!#1118#!#1119#!#1120#!#1121#!#1122#!#1123#!#1124#!#1125#!#1126#!#1127#!#1128#!#1129#!#1130#!#1131#!#1132#!#1133#!#1134#!#1135#!#1136#!#1137#!#1138#!#1139#!#1140#!#1141#!#1142#!#1143#!#1144#!#1145#!#1146#!#1147#!#1148#!#1149#!#1150#!#1151#!#1152#!#1153#!#1154#!#1155#!#1156#!#1157#!#1158#!#1159#!#1160#!#1161#!#1162#!#1163#!#1164#!#1165#!#1166#!#1167#!#1168#!#1169#!#1170#!#1171#!#1172#!#1173#!#1174#!#1175#!#1176#!#1177#!#1178#!#1179#!#1180#!#1181#!#1182#!#1183#!#1184#!#1185#!#1186#!#1187#!#1188#!#1189#!#1190#!#1191#!#1192#!#1193#!#1194#!#1195#!#1196#!#1197#!#1198#!#1199#!#1200 -1201#!#1202#!#1203#!#1204#!#1205#!#1206#!#1207#!#1208#!#1209#!#1210#!#1211#!#1212#!#1213#!#1214#!#1215#!#1216#!#1217#!#1218#!#1219#!#1220#!#1221#!#1222#!#1223#!#1224#!#1225#!#1226#!#1227#!#1228#!#1229#!#1230#!#1231#!#1232#!#1233#!#1234#!#1235#!#1236#!#1237#!#1238#!#1239#!#1240#!#1241#!#1242#!#1243#!#1244#!#1245#!#1246#!#1247#!#1248#!#1249#!#1250#!#1251#!#1252#!#1253#!#1254#!#1255#!#1256#!#1257#!#1258#!#1259#!#1260#!#1261#!#1262#!#1263#!#1264#!#1265#!#1266#!#1267#!#1268#!#1269#!#1270#!#1271#!#1272#!#1273#!#1274#!#1275#!#1276#!#1277#!#1278#!#1279#!#1280#!#1281#!#1282#!#1283#!#1284#!#1285#!#1286#!#1287#!#1288#!#1289#!#1290#!#1291#!#1292#!#1293#!#1294#!#1295#!#1296#!#1297#!#1298#!#1299#!#1300#!#1301#!#1302#!#1303#!#1304#!#1305#!#1306#!#1307#!#1308#!#1309#!#1310#!#1311#!#1312#!#1313#!#1314#!#1315#!#1316#!#1317#!#1318#!#1319#!#1320#!#1321#!#1322#!#1323#!#1324#!#1325#!#1326#!#1327#!#1328#!#1329#!#1330#!#1331#!#1332#!#1333#!#1334#!#1335#!#1336#!#1337#!#1338#!#1339#!#1340#!#1341#!#1342#!#1343#!#1344#!#1345#!#1346#!#1347#!#1348#!#1349#!#1350#!#1351#!#1352#!#1353#!#1354#!#1355#!#1356#!#1357#!#1358#!#1359#!#1360#!#1361#!#1362#!#1363#!#1364#!#1365#!#1366#!#1367#!#1368#!#1369#!#1370#!#1371#!#1372#!#1373#!#1374#!#1375#!#1376#!#1377#!#1378#!#1379#!#1380#!#1381#!#1382#!#1383#!#1384#!#1385#!#1386#!#1387#!#1388#!#1389#!#1390#!#1391#!#1392#!#1393#!#1394#!#1395#!#1396#!#1397#!#1398#!#1399#!#1400#!#1401#!#1402#!#1403#!#1404#!#1405#!#1406#!#1407#!#1408#!#1409#!#1410#!#1411#!#1412#!#1413#!#1414#!#1415#!#1416#!#1417#!#1418#!#1419#!#1420#!#1421#!#1422#!#1423#!#1424#!#1425#!#1426#!#1427#!#1428#!#1429#!#1430#!#1431#!#1432#!#1433#!#1434#!#1435#!#1436#!#1437#!#1438#!#1439#!#1440#!#1441#!#1442#!#1443#!#1444#!#1445#!#1446#!#1447#!#1448#!#1449#!#1450#!#1451#!#1452#!#1453#!#1454#!#1455#!#1456#!#1457#!#1458#!#1459#!#1460#!#1461#!#1462#!#1463#!#1464#!#1465#!#1466#!#1467#!#1468#!#1469#!#1470#!#1471#!#1472#!#1473#!#1474#!#1475#!#1476#!#1477#!#1478#!#1479#!#1480#!#1481#!#1482#!#1483#!#1484#!#1485#!#1486#!#1487#!#1488#!#1489#!#1490#!#1491#!#1492#!#1493#!#1494#!#1495#!#1496#!#1497#!#1498#!#1499#!#1500#!#1501#!#1502#!#1503#!#1504#!#1505#!#1506#!#1507#!#1508#!#1509#!#1510#!#1511#!#1512#!#1513#!#1514#!#1515#!#1516#!#1517#!#1518#!#1519#!#1520#!#1521#!#1522#!#1523#!#1524#!#1525#!#1526#!#1527#!#1528#!#1529#!#1530#!#1531#!#1532#!#1533#!#1534#!#1535#!#1536#!#1537#!#1538#!#1539#!#1540#!#1541#!#1542#!#1543#!#1544#!#1545#!#1546#!#1547#!#1548#!#1549#!#1550#!#1551#!#1552#!#1553#!#1554#!#1555#!#1556#!#1557#!#1558#!#1559#!#1560#!#1561#!#1562#!#1563#!#1564#!#1565#!#1566#!#1567#!#1568#!#1569#!#1570#!#1571#!#1572#!#1573#!#1574#!#1575#!#1576#!#1577#!#1578#!#1579#!#1580#!#1581#!#1582#!#1583#!#1584#!#1585#!#1586#!#1587#!#1588#!#1589#!#1590#!#1591#!#1592#!#1593#!#1594#!#1595#!#1596#!#1597#!#1598#!#1599#!#1600#!#1601#!#1602#!#1603#!#1604#!#1605#!#1606#!#1607#!#1608#!#1609#!#1610#!#1611#!#1612#!#1613#!#1614#!#1615#!#1616#!#1617#!#1618#!#1619#!#1620#!#1621#!#1622#!#1623#!#1624#!#1625#!#1626#!#1627#!#1628#!#1629#!#1630#!#1631#!#1632#!#1633#!#1634#!#1635#!#1636#!#1637#!#1638#!#1639#!#1640#!#1641#!#1642#!#1643#!#1644#!#1645#!#1646#!#1647#!#1648#!#1649#!#1650#!#1651#!#1652#!#1653#!#1654#!#1655#!#1656#!#1657#!#1658#!#1659#!#1660#!#1661#!#1662#!#1663#!#1664#!#1665#!#1666#!#1667#!#1668#!#1669#!#1670#!#1671#!#1672#!#1673#!#1674#!#1675#!#1676#!#1677#!#1678#!#1679#!#1680#!#1681#!#1682#!#1683#!#1684#!#1685#!#1686#!#1687#!#1688#!#1689#!#1690#!#1691#!#1692#!#1693#!#1694#!#1695#!#1696#!#1697#!#1698#!#1699#!#1700#!#1701#!#1702#!#1703#!#1704#!#1705#!#1706#!#1707#!#1708#!#1709#!#1710#!#1711#!#1712#!#1713#!#1714#!#1715#!#1716#!#1717#!#1718#!#1719#!#1720#!#1721#!#1722#!#1723#!#1724#!#1725#!#1726#!#1727#!#1728#!#1729#!#1730#!#1731#!#1732#!#1733#!#1734#!#1735#!#1736#!#1737#!#1738#!#1739#!#1740#!#1741#!#1742#!#1743#!#1744#!#1745#!#1746#!#1747#!#1748#!#1749#!#1750#!#1751#!#1752#!#1753#!#1754#!#1755#!#1756#!#1757#!#1758#!#1759#!#1760#!#1761#!#1762#!#1763#!#1764#!#1765#!#1766#!#1767#!#1768#!#1769#!#1770#!#1771#!#1772#!#1773#!#1774#!#1775#!#1776#!#1777#!#1778#!#1779#!#1780#!#1781#!#1782#!#1783#!#1784#!#1785#!#1786#!#1787#!#1788#!#1789#!#1790#!#1791#!#1792#!#1793#!#1794#!#1795#!#1796#!#1797#!#1798#!#1799#!#1800#!#1801#!#1802#!#1803#!#1804#!#1805#!#1806#!#1807#!#1808#!#1809#!#1810#!#1811#!#1812#!#1813#!#1814#!#1815#!#1816#!#1817#!#1818#!#1819#!#1820#!#1821#!#1822#!#1823#!#1824#!#1825#!#1826#!#1827#!#1828#!#1829#!#1830#!#1831#!#1832#!#1833#!#1834#!#1835#!#1836#!#1837#!#1838#!#1839#!#1840#!#1841#!#1842#!#1843#!#1844#!#1845#!#1846#!#1847#!#1848#!#1849#!#1850#!#1851#!#1852#!#1853#!#1854#!#1855#!#1856#!#1857#!#1858#!#1859#!#1860#!#1861#!#1862#!#1863#!#1864#!#1865#!#1866#!#1867#!#1868#!#1869#!#1870#!#1871#!#1872#!#1873#!#1874#!#1875#!#1876#!#1877#!#1878#!#1879#!#1880#!#1881#!#1882#!#1883#!#1884#!#1885#!#1886#!#1887#!#1888#!#1889#!#1890#!#1891#!#1892#!#1893#!#1894#!#1895#!#1896#!#1897#!#1898#!#1899#!#1900#!#1901#!#1902#!#1903#!#1904#!#1905#!#1906#!#1907#!#1908#!#1909#!#1910#!#1911#!#1912#!#1913#!#1914#!#1915#!#1916#!#1917#!#1918#!#1919#!#1920#!#1921#!#1922#!#1923#!#1924#!#1925#!#1926#!#1927#!#1928#!#1929#!#1930#!#1931#!#1932#!#1933#!#1934#!#1935#!#1936#!#1937#!#1938#!#1939#!#1940#!#1941#!#1942#!#1943#!#1944#!#1945#!#1946#!#1947#!#1948#!#1949#!#1950#!#1951#!#1952#!#1953#!#1954#!#1955#!#1956#!#1957#!#1958#!#1959#!#1960#!#1961#!#1962#!#1963#!#1964#!#1965#!#1966#!#1967#!#1968#!#1969#!#1970#!#1971#!#1972#!#1973#!#1974#!#1975#!#1976#!#1977#!#1978#!#1979#!#1980#!#1981#!#1982#!#1983#!#1984#!#1985#!#1986#!#1987#!#1988#!#1989#!#1990#!#1991#!#1992#!#1993#!#1994#!#1995#!#1996#!#1997#!#1998#!#1999#!#2000#!#2001#!#2002#!#2003#!#2004#!#2005#!#2006#!#2007#!#2008#!#2009#!#2010#!#2011#!#2012#!#2013#!#2014#!#2015#!#2016#!#2017#!#2018#!#2019#!#2020#!#2021#!#2022#!#2023#!#2024#!#2025#!#2026#!#2027#!#2028#!#2029#!#2030#!#2031#!#2032#!#2033#!#2034#!#2035#!#2036#!#2037#!#2038#!#2039#!#2040#!#2041#!#2042#!#2043#!#2044#!#2045#!#2046#!#2047#!#2048#!#2049#!#2050#!#2051#!#2052#!#2053#!#2054#!#2055#!#2056#!#2057#!#2058#!#2059#!#2060#!#2061#!#2062#!#2063#!#2064#!#2065#!#2066#!#2067#!#2068#!#2069#!#2070#!#2071#!#2072#!#2073#!#2074#!#2075#!#2076#!#2077#!#2078#!#2079#!#2080#!#2081#!#2082#!#2083#!#2084#!#2085#!#2086#!#2087#!#2088#!#2089#!#2090#!#2091#!#2092#!#2093#!#2094#!#2095#!#2096#!#2097#!#2098#!#2099#!#2100#!# \ No newline at end of file +1201#!#1202#!#1203#!#1204#!#1205#!#1206#!#1207#!#1208#!#1209#!#1210#!#1211#!#1212#!#1213#!#1214#!#1215#!#1216#!#1217#!#1218#!#1219#!#1220#!#1221#!#1222#!#1223#!#1224#!#1225#!#1226#!#1227#!#1228#!#1229#!#1230#!#1231#!#1232#!#1233#!#1234#!#1235#!#1236#!#1237#!#1238#!#1239#!#1240#!#1241#!#1242#!#1243#!#1244#!#1245#!#1246#!#1247#!#1248#!#1249#!#1250#!#1251#!#1252#!#1253#!#1254#!#1255#!#1256#!#1257#!#1258#!#1259#!#1260#!#1261#!#1262#!#1263#!#1264#!#1265#!#1266#!#1267#!#1268#!#1269#!#1270#!#1271#!#1272#!#1273#!#1274#!#1275#!#1276#!#1277#!#1278#!#1279#!#1280#!#1281#!#1282#!#1283#!#1284#!#1285#!#1286#!#1287#!#1288#!#1289#!#1290#!#1291#!#1292#!#1293#!#1294#!#1295#!#1296#!#1297#!#1298#!#1299#!#1300#!#1301#!#1302#!#1303#!#1304#!#1305#!#1306#!#1307#!#1308#!#1309#!#1310#!#1311#!#1312#!#1313#!#1314#!#1315#!#1316#!#1317#!#1318#!#1319#!#1320#!#1321#!#1322#!#1323#!#1324#!#1325#!#1326#!#1327#!#1328#!#1329#!#1330#!#1331#!#1332#!#1333#!#1334#!#1335#!#1336#!#1337#!#1338#!#1339#!#1340#!#1341#!#1342#!#1343#!#1344#!#1345#!#1346#!#1347#!#1348#!#1349#!#1350#!#1351#!#1352#!#1353#!#1354#!#1355#!#1356#!#1357#!#1358#!#1359#!#1360#!#1361#!#1362#!#1363#!#1364#!#1365#!#1366#!#1367#!#1368#!#1369#!#1370#!#1371#!#1372#!#1373#!#1374#!#1375#!#1376#!#1377#!#1378#!#1379#!#1380#!#1381#!#1382#!#1383#!#1384#!#1385#!#1386#!#1387#!#1388#!#1389#!#1390#!#1391#!#1392#!#1393#!#1394#!#1395#!#1396#!#1397#!#1398#!#1399#!#1400#!#1401#!#1402#!#1403#!#1404#!#1405#!#1406#!#1407#!#1408#!#1409#!#1410#!#1411#!#1412#!#1413#!#1414#!#1415#!#1416#!#1417#!#1418#!#1419#!#1420#!#1421#!#1422#!#1423#!#1424#!#1425#!#1426#!#1427#!#1428#!#1429#!#1430#!#1431#!#1432#!#1433#!#1434#!#1435#!#1436#!#1437#!#1438#!#1439#!#1440#!#1441#!#1442#!#1443#!#1444#!#1445#!#1446#!#1447#!#1448#!#1449#!#1450#!#1451#!#1452#!#1453#!#1454#!#1455#!#1456#!#1457#!#1458#!#1459#!#1460#!#1461#!#1462#!#1463#!#1464#!#1465#!#1466#!#1467#!#1468#!#1469#!#1470#!#1471#!#1472#!#1473#!#1474#!#1475#!#1476#!#1477#!#1478#!#1479#!#1480#!#1481#!#1482#!#1483#!#1484#!#1485#!#1486#!#1487#!#1488#!#1489#!#1490#!#1491#!#1492#!#1493#!#1494#!#1495#!#1496#!#1497#!#1498#!#1499#!#1500#!#1501#!#1502#!#1503#!#1504#!#1505#!#1506#!#1507#!#1508#!#1509#!#1510#!#1511#!#1512#!#1513#!#1514#!#1515#!#1516#!#1517#!#1518#!#1519#!#1520#!#1521#!#1522#!#1523#!#1524#!#1525#!#1526#!#1527#!#1528#!#1529#!#1530#!#1531#!#1532#!#1533#!#1534#!#1535#!#1536#!#1537#!#1538#!#1539#!#1540#!#1541#!#1542#!#1543#!#1544#!#1545#!#1546#!#1547#!#1548#!#1549#!#1550#!#1551#!#1552#!#1553#!#1554#!#1555#!#1556#!#1557#!#1558#!#1559#!#1560#!#1561#!#1562#!#1563#!#1564#!#1565#!#1566#!#1567#!#1568#!#1569#!#1570#!#1571#!#1572#!#1573#!#1574#!#1575#!#1576#!#1577#!#1578#!#1579#!#1580#!#1581#!#1582#!#1583#!#1584#!#1585#!#1586#!#1587#!#1588#!#1589#!#1590#!#1591#!#1592#!#1593#!#1594#!#1595#!#1596#!#1597#!#1598#!#1599#!#1600#!#1601#!#1602#!#1603#!#1604#!#1605#!#1606#!#1607#!#1608#!#1609#!#1610#!#1611#!#1612#!#1613#!#1614#!#1615#!#1616#!#1617#!#1618#!#1619#!#1620#!#1621#!#1622#!#1623#!#1624#!#1625#!#1626#!#1627#!#1628#!#1629#!#1630#!#1631#!#1632#!#1633#!#1634#!#1635#!#1636#!#1637#!#1638#!#1639#!#1640#!#1641#!#1642#!#1643#!#1644#!#1645#!#1646#!#1647#!#1648#!#1649#!#1650#!#1651#!#1652#!#1653#!#1654#!#1655#!#1656#!#1657#!#1658#!#1659#!#1660#!#1661#!#1662#!#1663#!#1664#!#1665#!#1666#!#1667#!#1668#!#1669#!#1670#!#1671#!#1672#!#1673#!#1674#!#1675#!#1676#!#1677#!#1678#!#1679#!#1680#!#1681#!#1682#!#1683#!#1684#!#1685#!#1686#!#1687#!#1688#!#1689#!#1690#!#1691#!#1692#!#1693#!#1694#!#1695#!#1696#!#1697#!#1698#!#1699#!#1700#!#1701#!#1702#!#1703#!#1704#!#1705#!#1706#!#1707#!#1708#!#1709#!#1710#!#1711#!#1712#!#1713#!#1714#!#1715#!#1716#!#1717#!#1718#!#1719#!#1720#!#1721#!#1722#!#1723#!#1724#!#1725#!#1726#!#1727#!#1728#!#1729#!#1730#!#1731#!#1732#!#1733#!#1734#!#1735#!#1736#!#1737#!#1738#!#1739#!#1740#!#1741#!#1742#!#1743#!#1744#!#1745#!#1746#!#1747#!#1748#!#1749#!#1750#!#1751#!#1752#!#1753#!#1754#!#1755#!#1756#!#1757#!#1758#!#1759#!#1760#!#1761#!#1762#!#1763#!#1764#!#1765#!#1766#!#1767#!#1768#!#1769#!#1770#!#1771#!#1772#!#1773#!#1774#!#1775#!#1776#!#1777#!#1778#!#1779#!#1780#!#1781#!#1782#!#1783#!#1784#!#1785#!#1786#!#1787#!#1788#!#1789#!#1790#!#1791#!#1792#!#1793#!#1794#!#1795#!#1796#!#1797#!#1798#!#1799#!#1800#!#1801#!#1802#!#1803#!#1804#!#1805#!#1806#!#1807#!#1808#!#1809#!#1810#!#1811#!#1812#!#1813#!#1814#!#1815#!#1816#!#1817#!#1818#!#1819#!#1820#!#1821#!#1822#!#1823#!#1824#!#1825#!#1826#!#1827#!#1828#!#1829#!#1830#!#1831#!#1832#!#1833#!#1834#!#1835#!#1836#!#1837#!#1838#!#1839#!#1840#!#1841#!#1842#!#1843#!#1844#!#1845#!#1846#!#1847#!#1848#!#1849#!#1850#!#1851#!#1852#!#1853#!#1854#!#1855#!#1856#!#1857#!#1858#!#1859#!#1860#!#1861#!#1862#!#1863#!#1864#!#1865#!#1866#!#1867#!#1868#!#1869#!#1870#!#1871#!#1872#!#1873#!#1874#!#1875#!#1876#!#1877#!#1878#!#1879#!#1880#!#1881#!#1882#!#1883#!#1884#!#1885#!#1886#!#1887#!#1888#!#1889#!#1890#!#1891#!#1892#!#1893#!#1894#!#1895#!#1896#!#1897#!#1898#!#1899#!#1900#!#1901#!#1902#!#1903#!#1904#!#1905#!#1906#!#1907#!#1908#!#1909#!#1910#!#1911#!#1912#!#1913#!#1914#!#1915#!#1916#!#1917#!#1918#!#1919#!#1920#!#1921#!#1922#!#1923#!#1924#!#1925#!#1926#!#1927#!#1928#!#1929#!#1930#!#1931#!#1932#!#1933#!#1934#!#1935#!#1936#!#1937#!#1938#!#1939#!#1940#!#1941#!#1942#!#1943#!#1944#!#1945#!#1946#!#1947#!#1948#!#1949#!#1950#!#1951#!#1952#!#1953#!#1954#!#1955#!#1956#!#1957#!#1958#!#1959#!#1960#!#1961#!#1962#!#1963#!#1964#!#1965#!#1966#!#1967#!#1968#!#1969#!#1970#!#1971#!#1972#!#1973#!#1974#!#1975#!#1976#!#1977#!#1978#!#1979#!#1980#!#1981#!#1982#!#1983#!#1984#!#1985#!#1986#!#1987#!#1988#!#1989#!#1990#!#1991#!#1992#!#1993#!#1994#!#1995#!#1996#!#1997#!#1998#!#1999#!#2000#!#2001#!#2002#!#2003#!#2004#!#2005#!#2006#!#2007#!#2008#!#2009#!#2010#!#2011#!#2012#!#2013#!#2014#!#2015#!#2016#!#2017#!#2018#!#2019#!#2020#!#2021#!#2022#!#2023#!#2024#!#2025#!#2026#!#2027#!#2028#!#2029#!#2030#!#2031#!#2032#!#2033#!#2034#!#2035#!#2036#!#2037#!#2038#!#2039#!#2040#!#2041#!#2042#!#2043#!#2044#!#2045#!#2046#!#2047#!#2048#!#2049#!#2050#!#2051#!#2052#!#2053#!#2054#!#2055#!#2056#!#2057#!#2058#!#2059#!#2060#!#2061#!#2062#!#2063#!#2064#!#2065#!#2066#!#2067#!#2068#!#2069#!#2070#!#2071#!#2072#!#2073#!#2074#!#2075#!#2076#!#2077#!#2078#!#2079#!#2080#!#2081#!#2082#!#2083#!#2084#!#2085#!#2086#!#2087#!#2088#!#2089#!#2090#!#2091#!#2092#!#2093#!#2094#!#2095#!#2096#!#2097#!#2098#!#2099#!#2100#!##Q#declare @handle int; +EXEC SP_PREPEXEC @handle output, +N' +@p1 int, @p2 int, @p3 int, @p4 int, @p5 int, @p6 int, @p7 int, @p8 int, @p9 int, @p10 int, @p11 int, @p12 int, @p13 int, @p14 int, @p15 int, @p16 int, @p17 int, @p18 int, @p19 int, @p20 int, @p21 int, @p22 int, @p23 int, @p24 int, @p25 int, @p26 int, @p27 int, @p28 int, @p29 int, @p30 int, @p31 int, @p32 int, @p33 int, @p34 int, @p35 int, @p36 int, @p37 int, @p38 int, @p39 int, @p40 int, @p41 int, @p42 int, @p43 int, @p44 int, @p45 int, @p46 int, @p47 int, @p48 int, @p49 int, @p50 int, @p51 int, @p52 int, @p53 int, @p54 int, @p55 int, @p56 int, @p57 int, @p58 int, @p59 int, @p60 int, @p61 int, @p62 int, @p63 int, @p64 int, @p65 int, @p66 int, @p67 int, @p68 int, @p69 int, @p70 int, @p71 int, @p72 int, @p73 int, @p74 int, @p75 int, @p76 int, @p77 int, @p78 int, @p79 int, @p80 int, @p81 int, @p82 int, @p83 int, @p84 int, @p85 int, @p86 int, @p87 int, @p88 int, @p89 int, @p90 int, @p91 int, @p92 int, @p93 int, @p94 int, @p95 int, @p96 int, @p97 int, @p98 int, @p99 int, @p100 int, @p101 int, @p102 int, @p103 int, @p104 int, @p105 int, @p106 int, @p107 int, @p108 int, @p109 int, @p110 int, @p111 int, @p112 int, @p113 int, @p114 int, @p115 int, @p116 int, @p117 int, @p118 int, @p119 int, @p120 int, @p121 int, @p122 int, @p123 int, @p124 int, @p125 int, @p126 int, @p127 int, @p128 int, @p129 int, @p130 int, @p131 int, @p132 int, @p133 int, @p134 int, @p135 int, @p136 int, @p137 int, @p138 int, @p139 int, @p140 int, @p141 int, @p142 int, @p143 int, @p144 int, @p145 int, @p146 int, @p147 int, @p148 int, @p149 int, @p150 int, @p151 int, @p152 int, @p153 int, @p154 int, @p155 int, @p156 int, @p157 int, @p158 int, @p159 int, @p160 int, @p161 int, @p162 int, @p163 int, @p164 int, @p165 int, @p166 int, @p167 int, @p168 int, @p169 int, @p170 int, @p171 int, @p172 int, @p173 int, @p174 int, @p175 int, @p176 int, @p177 int, @p178 int, @p179 int, @p180 int, @p181 int, @p182 int, @p183 int, @p184 int, @p185 int, @p186 int, @p187 int, @p188 int, @p189 int, @p190 int, @p191 int, @p192 int, @p193 int, @p194 int, @p195 int, @p196 int, @p197 int, @p198 int, @p199 int, @p200 int, +@p201 int, @p202 int, @p203 int, @p204 int, @p205 int, @p206 int, @p207 int, @p208 int, @p209 int, @p210 int, @p211 int, @p212 int, @p213 int, @p214 int, @p215 int, @p216 int, @p217 int, @p218 int, @p219 int, @p220 int, @p221 int, @p222 int, @p223 int, @p224 int, @p225 int, @p226 int, @p227 int, @p228 int, @p229 int, @p230 int, @p231 int, @p232 int, @p233 int, @p234 int, @p235 int, @p236 int, @p237 int, @p238 int, @p239 int, @p240 int, @p241 int, @p242 int, @p243 int, @p244 int, @p245 int, @p246 int, @p247 int, @p248 int, @p249 int, @p250 int, @p251 int, @p252 int, @p253 int, @p254 int, @p255 int, @p256 int, @p257 int, @p258 int, @p259 int, @p260 int, @p261 int, @p262 int, @p263 int, @p264 int, @p265 int, @p266 int, @p267 int, @p268 int, @p269 int, @p270 int, @p271 int, @p272 int, @p273 int, @p274 int, @p275 int, @p276 int, @p277 int, @p278 int, @p279 int, @p280 int, @p281 int, @p282 int, @p283 int, @p284 int, @p285 int, @p286 int, @p287 int, @p288 int, @p289 int, @p290 int, @p291 int, @p292 int, @p293 int, @p294 int, @p295 int, @p296 int, @p297 int, @p298 int, @p299 int, @p300 int, @p301 int, @p302 int, @p303 int, @p304 int, @p305 int, @p306 int, @p307 int, @p308 int, @p309 int, @p310 int, @p311 int, @p312 int, @p313 int, @p314 int, @p315 int, @p316 int, @p317 int, @p318 int, @p319 int, @p320 int, @p321 int, @p322 int, @p323 int, @p324 int, @p325 int, @p326 int, @p327 int, @p328 int, @p329 int, @p330 int, @p331 int, @p332 int, @p333 int, @p334 int, @p335 int, @p336 int, @p337 int, @p338 int, @p339 int, @p340 int, @p341 int, @p342 int, @p343 int, @p344 int, @p345 int, @p346 int, @p347 int, @p348 int, @p349 int, @p350 int, @p351 int, @p352 int, @p353 int, @p354 int, @p355 int, @p356 int, @p357 int, @p358 int, @p359 int, @p360 int, @p361 int, @p362 int, @p363 int, @p364 int, @p365 int, @p366 int, @p367 int, @p368 int, @p369 int, @p370 int, @p371 int, @p372 int, @p373 int, @p374 int, @p375 int, @p376 int, @p377 int, @p378 int, @p379 int, @p380 int, @p381 int, @p382 int, @p383 int, @p384 int, @p385 int, @p386 int, @p387 int, @p388 int, @p389 int, @p390 int, @p391 int, @p392 int, @p393 int, @p394 int, @p395 int, @p396 int, @p397 int, @p398 int, @p399 int, @p400 int, +@p401 int, @p402 int, @p403 int, @p404 int, @p405 int, @p406 int, @p407 int, @p408 int, @p409 int, @p410 int, @p411 int, @p412 int, @p413 int, @p414 int, @p415 int, @p416 int, @p417 int, @p418 int, @p419 int, @p420 int, @p421 int, @p422 int, @p423 int, @p424 int, @p425 int, @p426 int, @p427 int, @p428 int, @p429 int, @p430 int, @p431 int, @p432 int, @p433 int, @p434 int, @p435 int, @p436 int, @p437 int, @p438 int, @p439 int, @p440 int, @p441 int, @p442 int, @p443 int, @p444 int, @p445 int, @p446 int, @p447 int, @p448 int, @p449 int, @p450 int, @p451 int, @p452 int, @p453 int, @p454 int, @p455 int, @p456 int, @p457 int, @p458 int, @p459 int, @p460 int, @p461 int, @p462 int, @p463 int, @p464 int, @p465 int, @p466 int, @p467 int, @p468 int, @p469 int, @p470 int, @p471 int, @p472 int, @p473 int, @p474 int, @p475 int, @p476 int, @p477 int, @p478 int, @p479 int, @p480 int, @p481 int, @p482 int, @p483 int, @p484 int, @p485 int, @p486 int, @p487 int, @p488 int, @p489 int, @p490 int, @p491 int, @p492 int, @p493 int, @p494 int, @p495 int, @p496 int, @p497 int, @p498 int, @p499 int, @p500 int, @p501 int, @p502 int, @p503 int, @p504 int, @p505 int, @p506 int, @p507 int, @p508 int, @p509 int, @p510 int, @p511 int, @p512 int, @p513 int, @p514 int, @p515 int, @p516 int, @p517 int, @p518 int, @p519 int, @p520 int, @p521 int, @p522 int, @p523 int, @p524 int, @p525 int, @p526 int, @p527 int, @p528 int, @p529 int, @p530 int, @p531 int, @p532 int, @p533 int, @p534 int, @p535 int, @p536 int, @p537 int, @p538 int, @p539 int, @p540 int, @p541 int, @p542 int, @p543 int, @p544 int, @p545 int, @p546 int, @p547 int, @p548 int, @p549 int, @p550 int, @p551 int, @p552 int, @p553 int, @p554 int, @p555 int, @p556 int, @p557 int, @p558 int, @p559 int, @p560 int, @p561 int, @p562 int, @p563 int, @p564 int, @p565 int, @p566 int, @p567 int, @p568 int, @p569 int, @p570 int, @p571 int, @p572 int, @p573 int, @p574 int, @p575 int, @p576 int, @p577 int, @p578 int, @p579 int, @p580 int, @p581 int, @p582 int, @p583 int, @p584 int, @p585 int, @p586 int, @p587 int, @p588 int, @p589 int, @p590 int, @p591 int, @p592 int, @p593 int, @p594 int, @p595 int, @p596 int, @p597 int, @p598 int, @p599 int, @p600 int, +@p601 int, @p602 int, @p603 int, @p604 int, @p605 int, @p606 int, @p607 int, @p608 int, @p609 int, @p610 int, @p611 int, @p612 int, @p613 int, @p614 int, @p615 int, @p616 int, @p617 int, @p618 int, @p619 int, @p620 int, @p621 int, @p622 int, @p623 int, @p624 int, @p625 int, @p626 int, @p627 int, @p628 int, @p629 int, @p630 int, @p631 int, @p632 int, @p633 int, @p634 int, @p635 int, @p636 int, @p637 int, @p638 int, @p639 int, @p640 int, @p641 int, @p642 int, @p643 int, @p644 int, @p645 int, @p646 int, @p647 int, @p648 int, @p649 int, @p650 int, @p651 int, @p652 int, @p653 int, @p654 int, @p655 int, @p656 int, @p657 int, @p658 int, @p659 int, @p660 int, @p661 int, @p662 int, @p663 int, @p664 int, @p665 int, @p666 int, @p667 int, @p668 int, @p669 int, @p670 int, @p671 int, @p672 int, @p673 int, @p674 int, @p675 int, @p676 int, @p677 int, @p678 int, @p679 int, @p680 int, @p681 int, @p682 int, @p683 int, @p684 int, @p685 int, @p686 int, @p687 int, @p688 int, @p689 int, @p690 int, @p691 int, @p692 int, @p693 int, @p694 int, @p695 int, @p696 int, @p697 int, @p698 int, @p699 int, @p700 int, @p701 int, @p702 int, @p703 int, @p704 int, @p705 int, @p706 int, @p707 int, @p708 int, @p709 int, @p710 int, @p711 int, @p712 int, @p713 int, @p714 int, @p715 int, @p716 int, @p717 int, @p718 int, @p719 int, @p720 int, @p721 int, @p722 int, @p723 int, @p724 int, @p725 int, @p726 int, @p727 int, @p728 int, @p729 int, @p730 int, @p731 int, @p732 int, @p733 int, @p734 int, @p735 int, @p736 int, @p737 int, @p738 int, @p739 int, @p740 int, @p741 int, @p742 int, @p743 int, @p744 int, @p745 int, @p746 int, @p747 int, @p748 int, @p749 int, @p750 int, @p751 int, @p752 int, @p753 int, @p754 int, @p755 int, @p756 int, @p757 int, @p758 int, @p759 int, @p760 int, @p761 int, @p762 int, @p763 int, @p764 int, @p765 int, @p766 int, @p767 int, @p768 int, @p769 int, @p770 int, @p771 int, @p772 int, @p773 int, @p774 int, @p775 int, @p776 int, @p777 int, @p778 int, @p779 int, @p780 int, @p781 int, @p782 int, @p783 int, @p784 int, @p785 int, @p786 int, @p787 int, @p788 int, @p789 int, @p790 int, @p791 int, @p792 int, @p793 int, @p794 int, @p795 int, @p796 int, @p797 int, @p798 int, @p799 int, @p800 int, +@p801 int, @p802 int, @p803 int, @p804 int, @p805 int, @p806 int, @p807 int, @p808 int, @p809 int, @p810 int, @p811 int, @p812 int, @p813 int, @p814 int, @p815 int, @p816 int, @p817 int, @p818 int, @p819 int, @p820 int, @p821 int, @p822 int, @p823 int, @p824 int, @p825 int, @p826 int, @p827 int, @p828 int, @p829 int, @p830 int, @p831 int, @p832 int, @p833 int, @p834 int, @p835 int, @p836 int, @p837 int, @p838 int, @p839 int, @p840 int, @p841 int, @p842 int, @p843 int, @p844 int, @p845 int, @p846 int, @p847 int, @p848 int, @p849 int, @p850 int, @p851 int, @p852 int, @p853 int, @p854 int, @p855 int, @p856 int, @p857 int, @p858 int, @p859 int, @p860 int, @p861 int, @p862 int, @p863 int, @p864 int, @p865 int, @p866 int, @p867 int, @p868 int, @p869 int, @p870 int, @p871 int, @p872 int, @p873 int, @p874 int, @p875 int, @p876 int, @p877 int, @p878 int, @p879 int, @p880 int, @p881 int, @p882 int, @p883 int, @p884 int, @p885 int, @p886 int, @p887 int, @p888 int, @p889 int, @p890 int, @p891 int, @p892 int, @p893 int, @p894 int, @p895 int, @p896 int, @p897 int, @p898 int, @p899 int, @p900 int, @p901 int, @p902 int, @p903 int, @p904 int, @p905 int, @p906 int, @p907 int, @p908 int, @p909 int, @p910 int, @p911 int, @p912 int, @p913 int, @p914 int, @p915 int, @p916 int, @p917 int, @p918 int, @p919 int, @p920 int, @p921 int, @p922 int, @p923 int, @p924 int, @p925 int, @p926 int, @p927 int, @p928 int, @p929 int, @p930 int, @p931 int, @p932 int, @p933 int, @p934 int, @p935 int, @p936 int, @p937 int, @p938 int, @p939 int, @p940 int, @p941 int, @p942 int, @p943 int, @p944 int, @p945 int, @p946 int, @p947 int, @p948 int, @p949 int, @p950 int, @p951 int, @p952 int, @p953 int, @p954 int, @p955 int, @p956 int, @p957 int, @p958 int, @p959 int, @p960 int, @p961 int, @p962 int, @p963 int, @p964 int, @p965 int, @p966 int, @p967 int, @p968 int, @p969 int, @p970 int, @p971 int, @p972 int, @p973 int, @p974 int, @p975 int, @p976 int, @p977 int, @p978 int, @p979 int, @p980 int, @p981 int, @p982 int, @p983 int, @p984 int, @p985 int, @p986 int, @p987 int, @p988 int, @p989 int, @p990 int, @p991 int, @p992 int, @p993 int, @p994 int, @p995 int, @p996 int, @p997 int, @p998 int, @p999 int, @p1000 int, +@p1001 int, @p1002 int, @p1003 int, @p1004 int, @p1005 int, @p1006 int, @p1007 int, @p1008 int, @p1009 int, @p1010 int, @p1011 int, @p1012 int, @p1013 int, @p1014 int, @p1015 int, @p1016 int, @p1017 int, @p1018 int, @p1019 int, @p1020 int, @p1021 int, @p1022 int, @p1023 int, @p1024 int, @p1025 int, @p1026 int, @p1027 int, @p1028 int, @p1029 int, @p1030 int, @p1031 int, @p1032 int, @p1033 int, @p1034 int, @p1035 int, @p1036 int, @p1037 int, @p1038 int, @p1039 int, @p1040 int, @p1041 int, @p1042 int, @p1043 int, @p1044 int, @p1045 int, @p1046 int, @p1047 int, @p1048 int, @p1049 int, @p1050 int, @p1051 int, @p1052 int, @p1053 int, @p1054 int, @p1055 int, @p1056 int, @p1057 int, @p1058 int, @p1059 int, @p1060 int, @p1061 int, @p1062 int, @p1063 int, @p1064 int, @p1065 int, @p1066 int, @p1067 int, @p1068 int, @p1069 int, @p1070 int, @p1071 int, @p1072 int, @p1073 int, @p1074 int, @p1075 int, @p1076 int, @p1077 int, @p1078 int, @p1079 int, @p1080 int, @p1081 int, @p1082 int, @p1083 int, @p1084 int, @p1085 int, @p1086 int, @p1087 int, @p1088 int, @p1089 int, @p1090 int, @p1091 int, @p1092 int, @p1093 int, @p1094 int, @p1095 int, @p1096 int, @p1097 int, @p1098 int, @p1099 int, @p1100 int, @p1101 int, @p1102 int, @p1103 int, @p1104 int, @p1105 int, @p1106 int, @p1107 int, @p1108 int, @p1109 int, @p1110 int, @p1111 int, @p1112 int, @p1113 int, @p1114 int, @p1115 int, @p1116 int, @p1117 int, @p1118 int, @p1119 int, @p1120 int, @p1121 int, @p1122 int, @p1123 int, @p1124 int, @p1125 int, @p1126 int, @p1127 int, @p1128 int, @p1129 int, @p1130 int, @p1131 int, @p1132 int, @p1133 int, @p1134 int, @p1135 int, @p1136 int, @p1137 int, @p1138 int, @p1139 int, @p1140 int, @p1141 int, @p1142 int, @p1143 int, @p1144 int, @p1145 int, @p1146 int, @p1147 int, @p1148 int, @p1149 int, @p1150 int, @p1151 int, @p1152 int, @p1153 int, @p1154 int, @p1155 int, @p1156 int, @p1157 int, @p1158 int, @p1159 int, @p1160 int, @p1161 int, @p1162 int, @p1163 int, @p1164 int, @p1165 int, @p1166 int, @p1167 int, @p1168 int, @p1169 int, @p1170 int, @p1171 int, @p1172 int, @p1173 int, @p1174 int, @p1175 int, @p1176 int, @p1177 int, @p1178 int, @p1179 int, @p1180 int, @p1181 int, @p1182 int, @p1183 int, @p1184 int, @p1185 int, @p1186 int, @p1187 int, @p1188 int, @p1189 int, @p1190 int, @p1191 int, @p1192 int, @p1193 int, @p1194 int, @p1195 int, @p1196 int, @p1197 int, @p1198 int, @p1199 int, @p1200 int, +@p1201 int, @p1202 int, @p1203 int, @p1204 int, @p1205 int, @p1206 int, @p1207 int, @p1208 int, @p1209 int, @p1210 int, @p1211 int, @p1212 int, @p1213 int, @p1214 int, @p1215 int, @p1216 int, @p1217 int, @p1218 int, @p1219 int, @p1220 int, @p1221 int, @p1222 int, @p1223 int, @p1224 int, @p1225 int, @p1226 int, @p1227 int, @p1228 int, @p1229 int, @p1230 int, @p1231 int, @p1232 int, @p1233 int, @p1234 int, @p1235 int, @p1236 int, @p1237 int, @p1238 int, @p1239 int, @p1240 int, @p1241 int, @p1242 int, @p1243 int, @p1244 int, @p1245 int, @p1246 int, @p1247 int, @p1248 int, @p1249 int, @p1250 int, @p1251 int, @p1252 int, @p1253 int, @p1254 int, @p1255 int, @p1256 int, @p1257 int, @p1258 int, @p1259 int, @p1260 int, @p1261 int, @p1262 int, @p1263 int, @p1264 int, @p1265 int, @p1266 int, @p1267 int, @p1268 int, @p1269 int, @p1270 int, @p1271 int, @p1272 int, @p1273 int, @p1274 int, @p1275 int, @p1276 int, @p1277 int, @p1278 int, @p1279 int, @p1280 int, @p1281 int, @p1282 int, @p1283 int, @p1284 int, @p1285 int, @p1286 int, @p1287 int, @p1288 int, @p1289 int, @p1290 int, @p1291 int, @p1292 int, @p1293 int, @p1294 int, @p1295 int, @p1296 int, @p1297 int, @p1298 int, @p1299 int, @p1300 int, @p1301 int, @p1302 int, @p1303 int, @p1304 int, @p1305 int, @p1306 int, @p1307 int, @p1308 int, @p1309 int, @p1310 int, @p1311 int, @p1312 int, @p1313 int, @p1314 int, @p1315 int, @p1316 int, @p1317 int, @p1318 int, @p1319 int, @p1320 int, @p1321 int, @p1322 int, @p1323 int, @p1324 int, @p1325 int, @p1326 int, @p1327 int, @p1328 int, @p1329 int, @p1330 int, @p1331 int, @p1332 int, @p1333 int, @p1334 int, @p1335 int, @p1336 int, @p1337 int, @p1338 int, @p1339 int, @p1340 int, @p1341 int, @p1342 int, @p1343 int, @p1344 int, @p1345 int, @p1346 int, @p1347 int, @p1348 int, @p1349 int, @p1350 int, @p1351 int, @p1352 int, @p1353 int, @p1354 int, @p1355 int, @p1356 int, @p1357 int, @p1358 int, @p1359 int, @p1360 int, @p1361 int, @p1362 int, @p1363 int, @p1364 int, @p1365 int, @p1366 int, @p1367 int, @p1368 int, @p1369 int, @p1370 int, @p1371 int, @p1372 int, @p1373 int, @p1374 int, @p1375 int, @p1376 int, @p1377 int, @p1378 int, @p1379 int, @p1380 int, @p1381 int, @p1382 int, @p1383 int, @p1384 int, @p1385 int, @p1386 int, @p1387 int, @p1388 int, @p1389 int, @p1390 int, @p1391 int, @p1392 int, @p1393 int, @p1394 int, @p1395 int, @p1396 int, @p1397 int, @p1398 int, @p1399 int, @p1400 int, +@p1401 int, @p1402 int, @p1403 int, @p1404 int, @p1405 int, @p1406 int, @p1407 int, @p1408 int, @p1409 int, @p1410 int, @p1411 int, @p1412 int, @p1413 int, @p1414 int, @p1415 int, @p1416 int, @p1417 int, @p1418 int, @p1419 int, @p1420 int, @p1421 int, @p1422 int, @p1423 int, @p1424 int, @p1425 int, @p1426 int, @p1427 int, @p1428 int, @p1429 int, @p1430 int, @p1431 int, @p1432 int, @p1433 int, @p1434 int, @p1435 int, @p1436 int, @p1437 int, @p1438 int, @p1439 int, @p1440 int, @p1441 int, @p1442 int, @p1443 int, @p1444 int, @p1445 int, @p1446 int, @p1447 int, @p1448 int, @p1449 int, @p1450 int, @p1451 int, @p1452 int, @p1453 int, @p1454 int, @p1455 int, @p1456 int, @p1457 int, @p1458 int, @p1459 int, @p1460 int, @p1461 int, @p1462 int, @p1463 int, @p1464 int, @p1465 int, @p1466 int, @p1467 int, @p1468 int, @p1469 int, @p1470 int, @p1471 int, @p1472 int, @p1473 int, @p1474 int, @p1475 int, @p1476 int, @p1477 int, @p1478 int, @p1479 int, @p1480 int, @p1481 int, @p1482 int, @p1483 int, @p1484 int, @p1485 int, @p1486 int, @p1487 int, @p1488 int, @p1489 int, @p1490 int, @p1491 int, @p1492 int, @p1493 int, @p1494 int, @p1495 int, @p1496 int, @p1497 int, @p1498 int, @p1499 int, @p1500 int, @p1501 int, @p1502 int, @p1503 int, @p1504 int, @p1505 int, @p1506 int, @p1507 int, @p1508 int, @p1509 int, @p1510 int, @p1511 int, @p1512 int, @p1513 int, @p1514 int, @p1515 int, @p1516 int, @p1517 int, @p1518 int, @p1519 int, @p1520 int, @p1521 int, @p1522 int, @p1523 int, @p1524 int, @p1525 int, @p1526 int, @p1527 int, @p1528 int, @p1529 int, @p1530 int, @p1531 int, @p1532 int, @p1533 int, @p1534 int, @p1535 int, @p1536 int, @p1537 int, @p1538 int, @p1539 int, @p1540 int, @p1541 int, @p1542 int, @p1543 int, @p1544 int, @p1545 int, @p1546 int, @p1547 int, @p1548 int, @p1549 int, @p1550 int, @p1551 int, @p1552 int, @p1553 int, @p1554 int, @p1555 int, @p1556 int, @p1557 int, @p1558 int, @p1559 int, @p1560 int, @p1561 int, @p1562 int, @p1563 int, @p1564 int, @p1565 int, @p1566 int, @p1567 int, @p1568 int, @p1569 int, @p1570 int, @p1571 int, @p1572 int, @p1573 int, @p1574 int, @p1575 int, @p1576 int, @p1577 int, @p1578 int, @p1579 int, @p1580 int, @p1581 int, @p1582 int, @p1583 int, @p1584 int, @p1585 int, @p1586 int, @p1587 int, @p1588 int, @p1589 int, @p1590 int, @p1591 int, @p1592 int, @p1593 int, @p1594 int, @p1595 int, @p1596 int, @p1597 int, @p1598 int, @p1599 int, @p1600 int, +@p1601 int, @p1602 int, @p1603 int, @p1604 int, @p1605 int, @p1606 int, @p1607 int, @p1608 int, @p1609 int, @p1610 int, @p1611 int, @p1612 int, @p1613 int, @p1614 int, @p1615 int, @p1616 int, @p1617 int, @p1618 int, @p1619 int, @p1620 int, @p1621 int, @p1622 int, @p1623 int, @p1624 int, @p1625 int, @p1626 int, @p1627 int, @p1628 int, @p1629 int, @p1630 int, @p1631 int, @p1632 int, @p1633 int, @p1634 int, @p1635 int, @p1636 int, @p1637 int, @p1638 int, @p1639 int, @p1640 int, @p1641 int, @p1642 int, @p1643 int, @p1644 int, @p1645 int, @p1646 int, @p1647 int, @p1648 int, @p1649 int, @p1650 int, @p1651 int, @p1652 int, @p1653 int, @p1654 int, @p1655 int, @p1656 int, @p1657 int, @p1658 int, @p1659 int, @p1660 int, @p1661 int, @p1662 int, @p1663 int, @p1664 int, @p1665 int, @p1666 int, @p1667 int, @p1668 int, @p1669 int, @p1670 int, @p1671 int, @p1672 int, @p1673 int, @p1674 int, @p1675 int, @p1676 int, @p1677 int, @p1678 int, @p1679 int, @p1680 int, @p1681 int, @p1682 int, @p1683 int, @p1684 int, @p1685 int, @p1686 int, @p1687 int, @p1688 int, @p1689 int, @p1690 int, @p1691 int, @p1692 int, @p1693 int, @p1694 int, @p1695 int, @p1696 int, @p1697 int, @p1698 int, @p1699 int, @p1700 int, @p1701 int, @p1702 int, @p1703 int, @p1704 int, @p1705 int, @p1706 int, @p1707 int, @p1708 int, @p1709 int, @p1710 int, @p1711 int, @p1712 int, @p1713 int, @p1714 int, @p1715 int, @p1716 int, @p1717 int, @p1718 int, @p1719 int, @p1720 int, @p1721 int, @p1722 int, @p1723 int, @p1724 int, @p1725 int, @p1726 int, @p1727 int, @p1728 int, @p1729 int, @p1730 int, @p1731 int, @p1732 int, @p1733 int, @p1734 int, @p1735 int, @p1736 int, @p1737 int, @p1738 int, @p1739 int, @p1740 int, @p1741 int, @p1742 int, @p1743 int, @p1744 int, @p1745 int, @p1746 int, @p1747 int, @p1748 int, @p1749 int, @p1750 int, @p1751 int, @p1752 int, @p1753 int, @p1754 int, @p1755 int, @p1756 int, @p1757 int, @p1758 int, @p1759 int, @p1760 int, @p1761 int, @p1762 int, @p1763 int, @p1764 int, @p1765 int, @p1766 int, @p1767 int, @p1768 int, @p1769 int, @p1770 int, @p1771 int, @p1772 int, @p1773 int, @p1774 int, @p1775 int, @p1776 int, @p1777 int, @p1778 int, @p1779 int, @p1780 int, @p1781 int, @p1782 int, @p1783 int, @p1784 int, @p1785 int, @p1786 int, @p1787 int, @p1788 int, @p1789 int, @p1790 int, @p1791 int, @p1792 int, @p1793 int, @p1794 int, @p1795 int, @p1796 int, @p1797 int, @p1798 int, @p1799 int, @p1800 int, +@p1801 int, @p1802 int, @p1803 int, @p1804 int, @p1805 int, @p1806 int, @p1807 int, @p1808 int, @p1809 int, @p1810 int, @p1811 int, @p1812 int, @p1813 int, @p1814 int, @p1815 int, @p1816 int, @p1817 int, @p1818 int, @p1819 int, @p1820 int, @p1821 int, @p1822 int, @p1823 int, @p1824 int, @p1825 int, @p1826 int, @p1827 int, @p1828 int, @p1829 int, @p1830 int, @p1831 int, @p1832 int, @p1833 int, @p1834 int, @p1835 int, @p1836 int, @p1837 int, @p1838 int, @p1839 int, @p1840 int, @p1841 int, @p1842 int, @p1843 int, @p1844 int, @p1845 int, @p1846 int, @p1847 int, @p1848 int, @p1849 int, @p1850 int, @p1851 int, @p1852 int, @p1853 int, @p1854 int, @p1855 int, @p1856 int, @p1857 int, @p1858 int, @p1859 int, @p1860 int, @p1861 int, @p1862 int, @p1863 int, @p1864 int, @p1865 int, @p1866 int, @p1867 int, @p1868 int, @p1869 int, @p1870 int, @p1871 int, @p1872 int, @p1873 int, @p1874 int, @p1875 int, @p1876 int, @p1877 int, @p1878 int, @p1879 int, @p1880 int, @p1881 int, @p1882 int, @p1883 int, @p1884 int, @p1885 int, @p1886 int, @p1887 int, @p1888 int, @p1889 int, @p1890 int, @p1891 int, @p1892 int, @p1893 int, @p1894 int, @p1895 int, @p1896 int, @p1897 int, @p1898 int, @p1899 int, @p1900 int, @p1901 int, @p1902 int, @p1903 int, @p1904 int, @p1905 int, @p1906 int, @p1907 int, @p1908 int, @p1909 int, @p1910 int, @p1911 int, @p1912 int, @p1913 int, @p1914 int, @p1915 int, @p1916 int, @p1917 int, @p1918 int, @p1919 int, @p1920 int, @p1921 int, @p1922 int, @p1923 int, @p1924 int, @p1925 int, @p1926 int, @p1927 int, @p1928 int, @p1929 int, @p1930 int, @p1931 int, @p1932 int, @p1933 int, @p1934 int, @p1935 int, @p1936 int, @p1937 int, @p1938 int, @p1939 int, @p1940 int, @p1941 int, @p1942 int, @p1943 int, @p1944 int, @p1945 int, @p1946 int, @p1947 int, @p1948 int, @p1949 int, @p1950 int, @p1951 int, @p1952 int, @p1953 int, @p1954 int, @p1955 int, @p1956 int, @p1957 int, @p1958 int, @p1959 int, @p1960 int, @p1961 int, @p1962 int, @p1963 int, @p1964 int, @p1965 int, @p1966 int, @p1967 int, @p1968 int, @p1969 int, @p1970 int, @p1971 int, @p1972 int, @p1973 int, @p1974 int, @p1975 int, @p1976 int, @p1977 int, @p1978 int, @p1979 int, @p1980 int, @p1981 int, @p1982 int, @p1983 int, @p1984 int, @p1985 int, @p1986 int, @p1987 int, @p1988 int, @p1989 int, @p1990 int, @p1991 int, @p1992 int, @p1993 int, @p1994 int, @p1995 int, @p1996 int, @p1997 int, @p1998 int, @p1999 int, @p2000 int, +@p2001 int, @p2002 int, @p2003 int, @p2004 int, @p2005 int, @p2006 int, @p2007 int, @p2008 int, @p2009 int, @p2010 int, @p2011 int, @p2012 int, @p2013 int, @p2014 int, @p2015 int, @p2016 int, @p2017 int, @p2018 int, @p2019 int, @p2020 int, @p2021 int, @p2022 int, @p2023 int, @p2024 int, @p2025 int, @p2026 int, @p2027 int, @p2028 int, @p2029 int, @p2030 int, @p2031 int, @p2032 int, @p2033 int, @p2034 int, @p2035 int, @p2036 int, @p2037 int, @p2038 int, @p2039 int, @p2040 int, @p2041 int, @p2042 int, @p2043 int, @p2044 int, @p2045 int, @p2046 int, @p2047 int, @p2048 int, @p2049 int, @p2050 int, @p2051 int, @p2052 int, @p2053 int, @p2054 int, @p2055 int, @p2056 int, @p2057 int, @p2058 int, @p2059 int, @p2060 int, @p2061 int, @p2062 int, @p2063 int, @p2064 int, @p2065 int, @p2066 int, @p2067 int, @p2068 int, @p2069 int, @p2070 int, @p2071 int, @p2072 int, @p2073 int, @p2074 int, @p2075 int, @p2076 int, @p2077 int, @p2078 int, @p2079 int, @p2080 int, @p2081 int, @p2082 int, @p2083 int, @p2084 int, @p2085 int, @p2086 int, @p2087 int, @p2088 int, @p2089 int, @p2090 int, @p2091 int, @p2092 int, @p2093 int, @p2094 int, @p2095 int, @p2096 int, @p2097 int, @p2098 int, @p2099 int, @p2100 int +', +N' +Select +@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20, @p21, @p22, @p23, @p24, @p25, @p26, @p27, @p28, @p29, @p30, @p31, @p32, @p33, @p34, @p35, @p36, @p37, @p38, @p39, @p40, @p41, @p42, @p43, @p44, @p45, @p46, @p47, @p48, @p49, @p50, @p51, @p52, @p53, @p54, @p55, @p56, @p57, @p58, @p59, @p60, @p61, @p62, @p63, @p64, @p65, @p66, @p67, @p68, @p69, @p70, @p71, @p72, @p73, @p74, @p75, @p76, @p77, @p78, @p79, @p80, @p81, @p82, @p83, @p84, @p85, @p86, @p87, @p88, @p89, @p90, @p91, @p92, @p93, @p94, @p95, @p96, @p97, @p98, @p99, @p100, @p101, @p102, @p103, @p104, @p105, @p106, @p107, @p108, @p109, @p110, @p111, @p112, @p113, @p114, @p115, @p116, @p117, @p118, @p119, @p120, @p121, @p122, @p123, @p124, @p125, @p126, @p127, @p128, @p129, @p130, @p131, @p132, @p133, @p134, @p135, @p136, @p137, @p138, @p139, @p140, @p141, @p142, @p143, @p144, @p145, @p146, @p147, @p148, @p149, @p150, @p151, @p152, @p153, @p154, @p155, @p156, @p157, @p158, @p159, @p160, @p161, @p162, @p163, @p164, @p165, @p166, @p167, @p168, @p169, @p170, @p171, @p172, @p173, @p174, @p175, @p176, @p177, @p178, @p179, @p180, @p181, @p182, @p183, @p184, @p185, @p186, @p187, @p188, @p189, @p190, @p191, @p192, @p193, @p194, @p195, @p196, @p197, @p198, @p199, @p200, +@p201, @p202, @p203, @p204, @p205, @p206, @p207, @p208, @p209, @p210, @p211, @p212, @p213, @p214, @p215, @p216, @p217, @p218, @p219, @p220, @p221, @p222, @p223, @p224, @p225, @p226, @p227, @p228, @p229, @p230, @p231, @p232, @p233, @p234, @p235, @p236, @p237, @p238, @p239, @p240, @p241, @p242, @p243, @p244, @p245, @p246, @p247, @p248, @p249, @p250, @p251, @p252, @p253, @p254, @p255, @p256, @p257, @p258, @p259, @p260, @p261, @p262, @p263, @p264, @p265, @p266, @p267, @p268, @p269, @p270, @p271, @p272, @p273, @p274, @p275, @p276, @p277, @p278, @p279, @p280, @p281, @p282, @p283, @p284, @p285, @p286, @p287, @p288, @p289, @p290, @p291, @p292, @p293, @p294, @p295, @p296, @p297, @p298, @p299, @p300, @p301, @p302, @p303, @p304, @p305, @p306, @p307, @p308, @p309, @p310, @p311, @p312, @p313, @p314, @p315, @p316, @p317, @p318, @p319, @p320, @p321, @p322, @p323, @p324, @p325, @p326, @p327, @p328, @p329, @p330, @p331, @p332, @p333, @p334, @p335, @p336, @p337, @p338, @p339, @p340, @p341, @p342, @p343, @p344, @p345, @p346, @p347, @p348, @p349, @p350, @p351, @p352, @p353, @p354, @p355, @p356, @p357, @p358, @p359, @p360, @p361, @p362, @p363, @p364, @p365, @p366, @p367, @p368, @p369, @p370, @p371, @p372, @p373, @p374, @p375, @p376, @p377, @p378, @p379, @p380, @p381, @p382, @p383, @p384, @p385, @p386, @p387, @p388, @p389, @p390, @p391, @p392, @p393, @p394, @p395, @p396, @p397, @p398, @p399, @p400, +@p401, @p402, @p403, @p404, @p405, @p406, @p407, @p408, @p409, @p410, @p411, @p412, @p413, @p414, @p415, @p416, @p417, @p418, @p419, @p420, @p421, @p422, @p423, @p424, @p425, @p426, @p427, @p428, @p429, @p430, @p431, @p432, @p433, @p434, @p435, @p436, @p437, @p438, @p439, @p440, @p441, @p442, @p443, @p444, @p445, @p446, @p447, @p448, @p449, @p450, @p451, @p452, @p453, @p454, @p455, @p456, @p457, @p458, @p459, @p460, @p461, @p462, @p463, @p464, @p465, @p466, @p467, @p468, @p469, @p470, @p471, @p472, @p473, @p474, @p475, @p476, @p477, @p478, @p479, @p480, @p481, @p482, @p483, @p484, @p485, @p486, @p487, @p488, @p489, @p490, @p491, @p492, @p493, @p494, @p495, @p496, @p497, @p498, @p499, @p500, @p501, @p502, @p503, @p504, @p505, @p506, @p507, @p508, @p509, @p510, @p511, @p512, @p513, @p514, @p515, @p516, @p517, @p518, @p519, @p520, @p521, @p522, @p523, @p524, @p525, @p526, @p527, @p528, @p529, @p530, @p531, @p532, @p533, @p534, @p535, @p536, @p537, @p538, @p539, @p540, @p541, @p542, @p543, @p544, @p545, @p546, @p547, @p548, @p549, @p550, @p551, @p552, @p553, @p554, @p555, @p556, @p557, @p558, @p559, @p560, @p561, @p562, @p563, @p564, @p565, @p566, @p567, @p568, @p569, @p570, @p571, @p572, @p573, @p574, @p575, @p576, @p577, @p578, @p579, @p580, @p581, @p582, @p583, @p584, @p585, @p586, @p587, @p588, @p589, @p590, @p591, @p592, @p593, @p594, @p595, @p596, @p597, @p598, @p599, @p600, +@p601, @p602, @p603, @p604, @p605, @p606, @p607, @p608, @p609, @p610, @p611, @p612, @p613, @p614, @p615, @p616, @p617, @p618, @p619, @p620, @p621, @p622, @p623, @p624, @p625, @p626, @p627, @p628, @p629, @p630, @p631, @p632, @p633, @p634, @p635, @p636, @p637, @p638, @p639, @p640, @p641, @p642, @p643, @p644, @p645, @p646, @p647, @p648, @p649, @p650, @p651, @p652, @p653, @p654, @p655, @p656, @p657, @p658, @p659, @p660, @p661, @p662, @p663, @p664, @p665, @p666, @p667, @p668, @p669, @p670, @p671, @p672, @p673, @p674, @p675, @p676, @p677, @p678, @p679, @p680, @p681, @p682, @p683, @p684, @p685, @p686, @p687, @p688, @p689, @p690, @p691, @p692, @p693, @p694, @p695, @p696, @p697, @p698, @p699, @p700, @p701, @p702, @p703, @p704, @p705, @p706, @p707, @p708, @p709, @p710, @p711, @p712, @p713, @p714, @p715, @p716, @p717, @p718, @p719, @p720, @p721, @p722, @p723, @p724, @p725, @p726, @p727, @p728, @p729, @p730, @p731, @p732, @p733, @p734, @p735, @p736, @p737, @p738, @p739, @p740, @p741, @p742, @p743, @p744, @p745, @p746, @p747, @p748, @p749, @p750, @p751, @p752, @p753, @p754, @p755, @p756, @p757, @p758, @p759, @p760, @p761, @p762, @p763, @p764, @p765, @p766, @p767, @p768, @p769, @p770, @p771, @p772, @p773, @p774, @p775, @p776, @p777, @p778, @p779, @p780, @p781, @p782, @p783, @p784, @p785, @p786, @p787, @p788, @p789, @p790, @p791, @p792, @p793, @p794, @p795, @p796, @p797, @p798, @p799, @p800, +@p801, @p802, @p803, @p804, @p805, @p806, @p807, @p808, @p809, @p810, @p811, @p812, @p813, @p814, @p815, @p816, @p817, @p818, @p819, @p820, @p821, @p822, @p823, @p824, @p825, @p826, @p827, @p828, @p829, @p830, @p831, @p832, @p833, @p834, @p835, @p836, @p837, @p838, @p839, @p840, @p841, @p842, @p843, @p844, @p845, @p846, @p847, @p848, @p849, @p850, @p851, @p852, @p853, @p854, @p855, @p856, @p857, @p858, @p859, @p860, @p861, @p862, @p863, @p864, @p865, @p866, @p867, @p868, @p869, @p870, @p871, @p872, @p873, @p874, @p875, @p876, @p877, @p878, @p879, @p880, @p881, @p882, @p883, @p884, @p885, @p886, @p887, @p888, @p889, @p890, @p891, @p892, @p893, @p894, @p895, @p896, @p897, @p898, @p899, @p900, @p901, @p902, @p903, @p904, @p905, @p906, @p907, @p908, @p909, @p910, @p911, @p912, @p913, @p914, @p915, @p916, @p917, @p918, @p919, @p920, @p921, @p922, @p923, @p924, @p925, @p926, @p927, @p928, @p929, @p930, @p931, @p932, @p933, @p934, @p935, @p936, @p937, @p938, @p939, @p940, @p941, @p942, @p943, @p944, @p945, @p946, @p947, @p948, @p949, @p950, @p951, @p952, @p953, @p954, @p955, @p956, @p957, @p958, @p959, @p960, @p961, @p962, @p963, @p964, @p965, @p966, @p967, @p968, @p969, @p970, @p971, @p972, @p973, @p974, @p975, @p976, @p977, @p978, @p979, @p980, @p981, @p982, @p983, @p984, @p985, @p986, @p987, @p988, @p989, @p990, @p991, @p992, @p993, @p994, @p995, @p996, @p997, @p998, @p999, @p1000, +@p1001, @p1002, @p1003, @p1004, @p1005, @p1006, @p1007, @p1008, @p1009, @p1010, @p1011, @p1012, @p1013, @p1014, @p1015, @p1016, @p1017, @p1018, @p1019, @p1020, @p1021, @p1022, @p1023, @p1024, @p1025, @p1026, @p1027, @p1028, @p1029, @p1030, @p1031, @p1032, @p1033, @p1034, @p1035, @p1036, @p1037, @p1038, @p1039, @p1040, @p1041, @p1042, @p1043, @p1044, @p1045, @p1046, @p1047, @p1048, @p1049, @p1050, @p1051, @p1052, @p1053, @p1054, @p1055, @p1056, @p1057, @p1058, @p1059, @p1060, @p1061, @p1062, @p1063, @p1064, @p1065, @p1066, @p1067, @p1068, @p1069, @p1070, @p1071, @p1072, @p1073, @p1074, @p1075, @p1076, @p1077, @p1078, @p1079, @p1080, @p1081, @p1082, @p1083, @p1084, @p1085, @p1086, @p1087, @p1088, @p1089, @p1090, @p1091, @p1092, @p1093, @p1094, @p1095, @p1096, @p1097, @p1098, @p1099, @p1100, @p1101, @p1102, @p1103, @p1104, @p1105, @p1106, @p1107, @p1108, @p1109, @p1110, @p1111, @p1112, @p1113, @p1114, @p1115, @p1116, @p1117, @p1118, @p1119, @p1120, @p1121, @p1122, @p1123, @p1124, @p1125, @p1126, @p1127, @p1128, @p1129, @p1130, @p1131, @p1132, @p1133, @p1134, @p1135, @p1136, @p1137, @p1138, @p1139, @p1140, @p1141, @p1142, @p1143, @p1144, @p1145, @p1146, @p1147, @p1148, @p1149, @p1150, @p1151, @p1152, @p1153, @p1154, @p1155, @p1156, @p1157, @p1158, @p1159, @p1160, @p1161, @p1162, @p1163, @p1164, @p1165, @p1166, @p1167, @p1168, @p1169, @p1170, @p1171, @p1172, @p1173, @p1174, @p1175, @p1176, @p1177, @p1178, @p1179, @p1180, @p1181, @p1182, @p1183, @p1184, @p1185, @p1186, @p1187, @p1188, @p1189, @p1190, @p1191, @p1192, @p1193, @p1194, @p1195, @p1196, @p1197, @p1198, @p1199, @p1200; +Select @p1201, @p1202, @p1203, @p1204, @p1205, @p1206, @p1207, @p1208, @p1209, @p1210, @p1211, @p1212, @p1213, @p1214, @p1215, @p1216, @p1217, @p1218, @p1219, @p1220, @p1221, @p1222, @p1223, @p1224, @p1225, @p1226, @p1227, @p1228, @p1229, @p1230, @p1231, @p1232, @p1233, @p1234, @p1235, @p1236, @p1237, @p1238, @p1239, @p1240, @p1241, @p1242, @p1243, @p1244, @p1245, @p1246, @p1247, @p1248, @p1249, @p1250, @p1251, @p1252, @p1253, @p1254, @p1255, @p1256, @p1257, @p1258, @p1259, @p1260, @p1261, @p1262, @p1263, @p1264, @p1265, @p1266, @p1267, @p1268, @p1269, @p1270, @p1271, @p1272, @p1273, @p1274, @p1275, @p1276, @p1277, @p1278, @p1279, @p1280, @p1281, @p1282, @p1283, @p1284, @p1285, @p1286, @p1287, @p1288, @p1289, @p1290, @p1291, @p1292, @p1293, @p1294, @p1295, @p1296, @p1297, @p1298, @p1299, @p1300, @p1301, @p1302, @p1303, @p1304, @p1305, @p1306, @p1307, @p1308, @p1309, @p1310, @p1311, @p1312, @p1313, @p1314, @p1315, @p1316, @p1317, @p1318, @p1319, @p1320, @p1321, @p1322, @p1323, @p1324, @p1325, @p1326, @p1327, @p1328, @p1329, @p1330, @p1331, @p1332, @p1333, @p1334, @p1335, @p1336, @p1337, @p1338, @p1339, @p1340, @p1341, @p1342, @p1343, @p1344, @p1345, @p1346, @p1347, @p1348, @p1349, @p1350, @p1351, @p1352, @p1353, @p1354, @p1355, @p1356, @p1357, @p1358, @p1359, @p1360, @p1361, @p1362, @p1363, @p1364, @p1365, @p1366, @p1367, @p1368, @p1369, @p1370, @p1371, @p1372, @p1373, @p1374, @p1375, @p1376, @p1377, @p1378, @p1379, @p1380, @p1381, @p1382, @p1383, @p1384, @p1385, @p1386, @p1387, @p1388, @p1389, @p1390, @p1391, @p1392, @p1393, @p1394, @p1395, @p1396, @p1397, @p1398, @p1399, @p1400, +@p1401, @p1402, @p1403, @p1404, @p1405, @p1406, @p1407, @p1408, @p1409, @p1410, @p1411, @p1412, @p1413, @p1414, @p1415, @p1416, @p1417, @p1418, @p1419, @p1420, @p1421, @p1422, @p1423, @p1424, @p1425, @p1426, @p1427, @p1428, @p1429, @p1430, @p1431, @p1432, @p1433, @p1434, @p1435, @p1436, @p1437, @p1438, @p1439, @p1440, @p1441, @p1442, @p1443, @p1444, @p1445, @p1446, @p1447, @p1448, @p1449, @p1450, @p1451, @p1452, @p1453, @p1454, @p1455, @p1456, @p1457, @p1458, @p1459, @p1460, @p1461, @p1462, @p1463, @p1464, @p1465, @p1466, @p1467, @p1468, @p1469, @p1470, @p1471, @p1472, @p1473, @p1474, @p1475, @p1476, @p1477, @p1478, @p1479, @p1480, @p1481, @p1482, @p1483, @p1484, @p1485, @p1486, @p1487, @p1488, @p1489, @p1490, @p1491, @p1492, @p1493, @p1494, @p1495, @p1496, @p1497, @p1498, @p1499, @p1500, @p1501, @p1502, @p1503, @p1504, @p1505, @p1506, @p1507, @p1508, @p1509, @p1510, @p1511, @p1512, @p1513, @p1514, @p1515, @p1516, @p1517, @p1518, @p1519, @p1520, @p1521, @p1522, @p1523, @p1524, @p1525, @p1526, @p1527, @p1528, @p1529, @p1530, @p1531, @p1532, @p1533, @p1534, @p1535, @p1536, @p1537, @p1538, @p1539, @p1540, @p1541, @p1542, @p1543, @p1544, @p1545, @p1546, @p1547, @p1548, @p1549, @p1550, @p1551, @p1552, @p1553, @p1554, @p1555, @p1556, @p1557, @p1558, @p1559, @p1560, @p1561, @p1562, @p1563, @p1564, @p1565, @p1566, @p1567, @p1568, @p1569, @p1570, @p1571, @p1572, @p1573, @p1574, @p1575, @p1576, @p1577, @p1578, @p1579, @p1580, @p1581, @p1582, @p1583, @p1584, @p1585, @p1586, @p1587, @p1588, @p1589, @p1590, @p1591, @p1592, @p1593, @p1594, @p1595, @p1596, @p1597, @p1598, @p1599, @p1600, +@p1601, @p1602, @p1603, @p1604, @p1605, @p1606, @p1607, @p1608, @p1609, @p1610, @p1611, @p1612, @p1613, @p1614, @p1615, @p1616, @p1617, @p1618, @p1619, @p1620, @p1621, @p1622, @p1623, @p1624, @p1625, @p1626, @p1627, @p1628, @p1629, @p1630, @p1631, @p1632, @p1633, @p1634, @p1635, @p1636, @p1637, @p1638, @p1639, @p1640, @p1641, @p1642, @p1643, @p1644, @p1645, @p1646, @p1647, @p1648, @p1649, @p1650, @p1651, @p1652, @p1653, @p1654, @p1655, @p1656, @p1657, @p1658, @p1659, @p1660, @p1661, @p1662, @p1663, @p1664, @p1665, @p1666, @p1667, @p1668, @p1669, @p1670, @p1671, @p1672, @p1673, @p1674, @p1675, @p1676, @p1677, @p1678, @p1679, @p1680, @p1681, @p1682, @p1683, @p1684, @p1685, @p1686, @p1687, @p1688, @p1689, @p1690, @p1691, @p1692, @p1693, @p1694, @p1695, @p1696, @p1697, @p1698, @p1699, @p1700, @p1701, @p1702, @p1703, @p1704, @p1705, @p1706, @p1707, @p1708, @p1709, @p1710, @p1711, @p1712, @p1713, @p1714, @p1715, @p1716, @p1717, @p1718, @p1719, @p1720, @p1721, @p1722, @p1723, @p1724, @p1725, @p1726, @p1727, @p1728, @p1729, @p1730, @p1731, @p1732, @p1733, @p1734, @p1735, @p1736, @p1737, @p1738, @p1739, @p1740, @p1741, @p1742, @p1743, @p1744, @p1745, @p1746, @p1747, @p1748, @p1749, @p1750, @p1751, @p1752, @p1753, @p1754, @p1755, @p1756, @p1757, @p1758, @p1759, @p1760, @p1761, @p1762, @p1763, @p1764, @p1765, @p1766, @p1767, @p1768, @p1769, @p1770, @p1771, @p1772, @p1773, @p1774, @p1775, @p1776, @p1777, @p1778, @p1779, @p1780, @p1781, @p1782, @p1783, @p1784, @p1785, @p1786, @p1787, @p1788, @p1789, @p1790, @p1791, @p1792, @p1793, @p1794, @p1795, @p1796, @p1797, @p1798, @p1799, @p1800, +@p1801, @p1802, @p1803, @p1804, @p1805, @p1806, @p1807, @p1808, @p1809, @p1810, @p1811, @p1812, @p1813, @p1814, @p1815, @p1816, @p1817, @p1818, @p1819, @p1820, @p1821, @p1822, @p1823, @p1824, @p1825, @p1826, @p1827, @p1828, @p1829, @p1830, @p1831, @p1832, @p1833, @p1834, @p1835, @p1836, @p1837, @p1838, @p1839, @p1840, @p1841, @p1842, @p1843, @p1844, @p1845, @p1846, @p1847, @p1848, @p1849, @p1850, @p1851, @p1852, @p1853, @p1854, @p1855, @p1856, @p1857, @p1858, @p1859, @p1860, @p1861, @p1862, @p1863, @p1864, @p1865, @p1866, @p1867, @p1868, @p1869, @p1870, @p1871, @p1872, @p1873, @p1874, @p1875, @p1876, @p1877, @p1878, @p1879, @p1880, @p1881, @p1882, @p1883, @p1884, @p1885, @p1886, @p1887, @p1888, @p1889, @p1890, @p1891, @p1892, @p1893, @p1894, @p1895, @p1896, @p1897, @p1898, @p1899, @p1900, @p1901, @p1902, @p1903, @p1904, @p1905, @p1906, @p1907, @p1908, @p1909, @p1910, @p1911, @p1912, @p1913, @p1914, @p1915, @p1916, @p1917, @p1918, @p1919, @p1920, @p1921, @p1922, @p1923, @p1924, @p1925, @p1926, @p1927, @p1928, @p1929, @p1930, @p1931, @p1932, @p1933, @p1934, @p1935, @p1936, @p1937, @p1938, @p1939, @p1940, @p1941, @p1942, @p1943, @p1944, @p1945, @p1946, @p1947, @p1948, @p1949, @p1950, @p1951, @p1952, @p1953, @p1954, @p1955, @p1956, @p1957, @p1958, @p1959, @p1960, @p1961, @p1962, @p1963, @p1964, @p1965, @p1966, @p1967, @p1968, @p1969, @p1970, @p1971, @p1972, @p1973, @p1974, @p1975, @p1976, @p1977, @p1978, @p1979, @p1980, @p1981, @p1982, @p1983, @p1984, @p1985, @p1986, @p1987, @p1988, @p1989, @p1990, @p1991, @p1992, @p1993, @p1994, @p1995, @p1996, @p1997, @p1998, @p1999, @p2000, +@p2001, @p2002, @p2003, @p2004, @p2005, @p2006, @p2007, @p2008, @p2009, @p2010, @p2011, @p2012, @p2013, @p2014, @p2015, @p2016, @p2017, @p2018, @p2019, @p2020, @p2021, @p2022, @p2023, @p2024, @p2025, @p2026, @p2027, @p2028, @p2029, @p2030, @p2031, @p2032, @p2033, @p2034, @p2035, @p2036, @p2037, @p2038, @p2039, @p2040, @p2041, @p2042, @p2043, @p2044, @p2045, @p2046, @p2047, @p2048, @p2049, @p2050, @p2051, @p2052, @p2053, @p2054, @p2055, @p2056, @p2057, @p2058, @p2059, @p2060, @p2061, @p2062, @p2063, @p2064, @p2065, @p2066, @p2067, @p2068, @p2069, @p2070, @p2071, @p2072, @p2073, @p2074, @p2075, @p2076, @p2077, @p2078, @p2079, @p2080, @p2081, @p2082, @p2083, @p2084, @p2085, @p2086, @p2087, @p2088, @p2089, @p2090, @p2091, @p2092, @p2093, @p2094, @p2095, @p2096, @p2097, @p2098, @p2099, @p2100 +', +1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, +338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, +658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, +978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, +1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, +1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, +1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, +2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100 + +#D#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int#!#int +1#!#2#!#3#!#4#!#5#!#6#!#7#!#8#!#9#!#10#!#11#!#12#!#13#!#14#!#15#!#16#!#17#!#18#!#19#!#20#!#21#!#22#!#23#!#24#!#25#!#26#!#27#!#28#!#29#!#30#!#31#!#32#!#33#!#34#!#35#!#36#!#37#!#38#!#39#!#40#!#41#!#42#!#43#!#44#!#45#!#46#!#47#!#48#!#49#!#50#!#51#!#52#!#53#!#54#!#55#!#56#!#57#!#58#!#59#!#60#!#61#!#62#!#63#!#64#!#65#!#66#!#67#!#68#!#69#!#70#!#71#!#72#!#73#!#74#!#75#!#76#!#77#!#78#!#79#!#80#!#81#!#82#!#83#!#84#!#85#!#86#!#87#!#88#!#89#!#90#!#91#!#92#!#93#!#94#!#95#!#96#!#97#!#98#!#99#!#100#!#101#!#102#!#103#!#104#!#105#!#106#!#107#!#108#!#109#!#110#!#111#!#112#!#113#!#114#!#115#!#116#!#117#!#118#!#119#!#120#!#121#!#122#!#123#!#124#!#125#!#126#!#127#!#128#!#129#!#130#!#131#!#132#!#133#!#134#!#135#!#136#!#137#!#138#!#139#!#140#!#141#!#142#!#143#!#144#!#145#!#146#!#147#!#148#!#149#!#150#!#151#!#152#!#153#!#154#!#155#!#156#!#157#!#158#!#159#!#160#!#161#!#162#!#163#!#164#!#165#!#166#!#167#!#168#!#169#!#170#!#171#!#172#!#173#!#174#!#175#!#176#!#177#!#178#!#179#!#180#!#181#!#182#!#183#!#184#!#185#!#186#!#187#!#188#!#189#!#190#!#191#!#192#!#193#!#194#!#195#!#196#!#197#!#198#!#199#!#200#!#201#!#202#!#203#!#204#!#205#!#206#!#207#!#208#!#209#!#210#!#211#!#212#!#213#!#214#!#215#!#216#!#217#!#218#!#219#!#220#!#221#!#222#!#223#!#224#!#225#!#226#!#227#!#228#!#229#!#230#!#231#!#232#!#233#!#234#!#235#!#236#!#237#!#238#!#239#!#240#!#241#!#242#!#243#!#244#!#245#!#246#!#247#!#248#!#249#!#250#!#251#!#252#!#253#!#254#!#255#!#256#!#257#!#258#!#259#!#260#!#261#!#262#!#263#!#264#!#265#!#266#!#267#!#268#!#269#!#270#!#271#!#272#!#273#!#274#!#275#!#276#!#277#!#278#!#279#!#280#!#281#!#282#!#283#!#284#!#285#!#286#!#287#!#288#!#289#!#290#!#291#!#292#!#293#!#294#!#295#!#296#!#297#!#298#!#299#!#300#!#301#!#302#!#303#!#304#!#305#!#306#!#307#!#308#!#309#!#310#!#311#!#312#!#313#!#314#!#315#!#316#!#317#!#318#!#319#!#320#!#321#!#322#!#323#!#324#!#325#!#326#!#327#!#328#!#329#!#330#!#331#!#332#!#333#!#334#!#335#!#336#!#337#!#338#!#339#!#340#!#341#!#342#!#343#!#344#!#345#!#346#!#347#!#348#!#349#!#350#!#351#!#352#!#353#!#354#!#355#!#356#!#357#!#358#!#359#!#360#!#361#!#362#!#363#!#364#!#365#!#366#!#367#!#368#!#369#!#370#!#371#!#372#!#373#!#374#!#375#!#376#!#377#!#378#!#379#!#380#!#381#!#382#!#383#!#384#!#385#!#386#!#387#!#388#!#389#!#390#!#391#!#392#!#393#!#394#!#395#!#396#!#397#!#398#!#399#!#400#!#401#!#402#!#403#!#404#!#405#!#406#!#407#!#408#!#409#!#410#!#411#!#412#!#413#!#414#!#415#!#416#!#417#!#418#!#419#!#420#!#421#!#422#!#423#!#424#!#425#!#426#!#427#!#428#!#429#!#430#!#431#!#432#!#433#!#434#!#435#!#436#!#437#!#438#!#439#!#440#!#441#!#442#!#443#!#444#!#445#!#446#!#447#!#448#!#449#!#450#!#451#!#452#!#453#!#454#!#455#!#456#!#457#!#458#!#459#!#460#!#461#!#462#!#463#!#464#!#465#!#466#!#467#!#468#!#469#!#470#!#471#!#472#!#473#!#474#!#475#!#476#!#477#!#478#!#479#!#480#!#481#!#482#!#483#!#484#!#485#!#486#!#487#!#488#!#489#!#490#!#491#!#492#!#493#!#494#!#495#!#496#!#497#!#498#!#499#!#500#!#501#!#502#!#503#!#504#!#505#!#506#!#507#!#508#!#509#!#510#!#511#!#512#!#513#!#514#!#515#!#516#!#517#!#518#!#519#!#520#!#521#!#522#!#523#!#524#!#525#!#526#!#527#!#528#!#529#!#530#!#531#!#532#!#533#!#534#!#535#!#536#!#537#!#538#!#539#!#540#!#541#!#542#!#543#!#544#!#545#!#546#!#547#!#548#!#549#!#550#!#551#!#552#!#553#!#554#!#555#!#556#!#557#!#558#!#559#!#560#!#561#!#562#!#563#!#564#!#565#!#566#!#567#!#568#!#569#!#570#!#571#!#572#!#573#!#574#!#575#!#576#!#577#!#578#!#579#!#580#!#581#!#582#!#583#!#584#!#585#!#586#!#587#!#588#!#589#!#590#!#591#!#592#!#593#!#594#!#595#!#596#!#597#!#598#!#599#!#600#!#601#!#602#!#603#!#604#!#605#!#606#!#607#!#608#!#609#!#610#!#611#!#612#!#613#!#614#!#615#!#616#!#617#!#618#!#619#!#620#!#621#!#622#!#623#!#624#!#625#!#626#!#627#!#628#!#629#!#630#!#631#!#632#!#633#!#634#!#635#!#636#!#637#!#638#!#639#!#640#!#641#!#642#!#643#!#644#!#645#!#646#!#647#!#648#!#649#!#650#!#651#!#652#!#653#!#654#!#655#!#656#!#657#!#658#!#659#!#660#!#661#!#662#!#663#!#664#!#665#!#666#!#667#!#668#!#669#!#670#!#671#!#672#!#673#!#674#!#675#!#676#!#677#!#678#!#679#!#680#!#681#!#682#!#683#!#684#!#685#!#686#!#687#!#688#!#689#!#690#!#691#!#692#!#693#!#694#!#695#!#696#!#697#!#698#!#699#!#700#!#701#!#702#!#703#!#704#!#705#!#706#!#707#!#708#!#709#!#710#!#711#!#712#!#713#!#714#!#715#!#716#!#717#!#718#!#719#!#720#!#721#!#722#!#723#!#724#!#725#!#726#!#727#!#728#!#729#!#730#!#731#!#732#!#733#!#734#!#735#!#736#!#737#!#738#!#739#!#740#!#741#!#742#!#743#!#744#!#745#!#746#!#747#!#748#!#749#!#750#!#751#!#752#!#753#!#754#!#755#!#756#!#757#!#758#!#759#!#760#!#761#!#762#!#763#!#764#!#765#!#766#!#767#!#768#!#769#!#770#!#771#!#772#!#773#!#774#!#775#!#776#!#777#!#778#!#779#!#780#!#781#!#782#!#783#!#784#!#785#!#786#!#787#!#788#!#789#!#790#!#791#!#792#!#793#!#794#!#795#!#796#!#797#!#798#!#799#!#800#!#801#!#802#!#803#!#804#!#805#!#806#!#807#!#808#!#809#!#810#!#811#!#812#!#813#!#814#!#815#!#816#!#817#!#818#!#819#!#820#!#821#!#822#!#823#!#824#!#825#!#826#!#827#!#828#!#829#!#830#!#831#!#832#!#833#!#834#!#835#!#836#!#837#!#838#!#839#!#840#!#841#!#842#!#843#!#844#!#845#!#846#!#847#!#848#!#849#!#850#!#851#!#852#!#853#!#854#!#855#!#856#!#857#!#858#!#859#!#860#!#861#!#862#!#863#!#864#!#865#!#866#!#867#!#868#!#869#!#870#!#871#!#872#!#873#!#874#!#875#!#876#!#877#!#878#!#879#!#880#!#881#!#882#!#883#!#884#!#885#!#886#!#887#!#888#!#889#!#890#!#891#!#892#!#893#!#894#!#895#!#896#!#897#!#898#!#899#!#900#!#901#!#902#!#903#!#904#!#905#!#906#!#907#!#908#!#909#!#910#!#911#!#912#!#913#!#914#!#915#!#916#!#917#!#918#!#919#!#920#!#921#!#922#!#923#!#924#!#925#!#926#!#927#!#928#!#929#!#930#!#931#!#932#!#933#!#934#!#935#!#936#!#937#!#938#!#939#!#940#!#941#!#942#!#943#!#944#!#945#!#946#!#947#!#948#!#949#!#950#!#951#!#952#!#953#!#954#!#955#!#956#!#957#!#958#!#959#!#960#!#961#!#962#!#963#!#964#!#965#!#966#!#967#!#968#!#969#!#970#!#971#!#972#!#973#!#974#!#975#!#976#!#977#!#978#!#979#!#980#!#981#!#982#!#983#!#984#!#985#!#986#!#987#!#988#!#989#!#990#!#991#!#992#!#993#!#994#!#995#!#996#!#997#!#998#!#999#!#1000#!#1001#!#1002#!#1003#!#1004#!#1005#!#1006#!#1007#!#1008#!#1009#!#1010#!#1011#!#1012#!#1013#!#1014#!#1015#!#1016#!#1017#!#1018#!#1019#!#1020#!#1021#!#1022#!#1023#!#1024#!#1025#!#1026#!#1027#!#1028#!#1029#!#1030#!#1031#!#1032#!#1033#!#1034#!#1035#!#1036#!#1037#!#1038#!#1039#!#1040#!#1041#!#1042#!#1043#!#1044#!#1045#!#1046#!#1047#!#1048#!#1049#!#1050#!#1051#!#1052#!#1053#!#1054#!#1055#!#1056#!#1057#!#1058#!#1059#!#1060#!#1061#!#1062#!#1063#!#1064#!#1065#!#1066#!#1067#!#1068#!#1069#!#1070#!#1071#!#1072#!#1073#!#1074#!#1075#!#1076#!#1077#!#1078#!#1079#!#1080#!#1081#!#1082#!#1083#!#1084#!#1085#!#1086#!#1087#!#1088#!#1089#!#1090#!#1091#!#1092#!#1093#!#1094#!#1095#!#1096#!#1097#!#1098#!#1099#!#1100#!#1101#!#1102#!#1103#!#1104#!#1105#!#1106#!#1107#!#1108#!#1109#!#1110#!#1111#!#1112#!#1113#!#1114#!#1115#!#1116#!#1117#!#1118#!#1119#!#1120#!#1121#!#1122#!#1123#!#1124#!#1125#!#1126#!#1127#!#1128#!#1129#!#1130#!#1131#!#1132#!#1133#!#1134#!#1135#!#1136#!#1137#!#1138#!#1139#!#1140#!#1141#!#1142#!#1143#!#1144#!#1145#!#1146#!#1147#!#1148#!#1149#!#1150#!#1151#!#1152#!#1153#!#1154#!#1155#!#1156#!#1157#!#1158#!#1159#!#1160#!#1161#!#1162#!#1163#!#1164#!#1165#!#1166#!#1167#!#1168#!#1169#!#1170#!#1171#!#1172#!#1173#!#1174#!#1175#!#1176#!#1177#!#1178#!#1179#!#1180#!#1181#!#1182#!#1183#!#1184#!#1185#!#1186#!#1187#!#1188#!#1189#!#1190#!#1191#!#1192#!#1193#!#1194#!#1195#!#1196#!#1197#!#1198#!#1199#!#1200 +1201#!#1202#!#1203#!#1204#!#1205#!#1206#!#1207#!#1208#!#1209#!#1210#!#1211#!#1212#!#1213#!#1214#!#1215#!#1216#!#1217#!#1218#!#1219#!#1220#!#1221#!#1222#!#1223#!#1224#!#1225#!#1226#!#1227#!#1228#!#1229#!#1230#!#1231#!#1232#!#1233#!#1234#!#1235#!#1236#!#1237#!#1238#!#1239#!#1240#!#1241#!#1242#!#1243#!#1244#!#1245#!#1246#!#1247#!#1248#!#1249#!#1250#!#1251#!#1252#!#1253#!#1254#!#1255#!#1256#!#1257#!#1258#!#1259#!#1260#!#1261#!#1262#!#1263#!#1264#!#1265#!#1266#!#1267#!#1268#!#1269#!#1270#!#1271#!#1272#!#1273#!#1274#!#1275#!#1276#!#1277#!#1278#!#1279#!#1280#!#1281#!#1282#!#1283#!#1284#!#1285#!#1286#!#1287#!#1288#!#1289#!#1290#!#1291#!#1292#!#1293#!#1294#!#1295#!#1296#!#1297#!#1298#!#1299#!#1300#!#1301#!#1302#!#1303#!#1304#!#1305#!#1306#!#1307#!#1308#!#1309#!#1310#!#1311#!#1312#!#1313#!#1314#!#1315#!#1316#!#1317#!#1318#!#1319#!#1320#!#1321#!#1322#!#1323#!#1324#!#1325#!#1326#!#1327#!#1328#!#1329#!#1330#!#1331#!#1332#!#1333#!#1334#!#1335#!#1336#!#1337#!#1338#!#1339#!#1340#!#1341#!#1342#!#1343#!#1344#!#1345#!#1346#!#1347#!#1348#!#1349#!#1350#!#1351#!#1352#!#1353#!#1354#!#1355#!#1356#!#1357#!#1358#!#1359#!#1360#!#1361#!#1362#!#1363#!#1364#!#1365#!#1366#!#1367#!#1368#!#1369#!#1370#!#1371#!#1372#!#1373#!#1374#!#1375#!#1376#!#1377#!#1378#!#1379#!#1380#!#1381#!#1382#!#1383#!#1384#!#1385#!#1386#!#1387#!#1388#!#1389#!#1390#!#1391#!#1392#!#1393#!#1394#!#1395#!#1396#!#1397#!#1398#!#1399#!#1400#!#1401#!#1402#!#1403#!#1404#!#1405#!#1406#!#1407#!#1408#!#1409#!#1410#!#1411#!#1412#!#1413#!#1414#!#1415#!#1416#!#1417#!#1418#!#1419#!#1420#!#1421#!#1422#!#1423#!#1424#!#1425#!#1426#!#1427#!#1428#!#1429#!#1430#!#1431#!#1432#!#1433#!#1434#!#1435#!#1436#!#1437#!#1438#!#1439#!#1440#!#1441#!#1442#!#1443#!#1444#!#1445#!#1446#!#1447#!#1448#!#1449#!#1450#!#1451#!#1452#!#1453#!#1454#!#1455#!#1456#!#1457#!#1458#!#1459#!#1460#!#1461#!#1462#!#1463#!#1464#!#1465#!#1466#!#1467#!#1468#!#1469#!#1470#!#1471#!#1472#!#1473#!#1474#!#1475#!#1476#!#1477#!#1478#!#1479#!#1480#!#1481#!#1482#!#1483#!#1484#!#1485#!#1486#!#1487#!#1488#!#1489#!#1490#!#1491#!#1492#!#1493#!#1494#!#1495#!#1496#!#1497#!#1498#!#1499#!#1500#!#1501#!#1502#!#1503#!#1504#!#1505#!#1506#!#1507#!#1508#!#1509#!#1510#!#1511#!#1512#!#1513#!#1514#!#1515#!#1516#!#1517#!#1518#!#1519#!#1520#!#1521#!#1522#!#1523#!#1524#!#1525#!#1526#!#1527#!#1528#!#1529#!#1530#!#1531#!#1532#!#1533#!#1534#!#1535#!#1536#!#1537#!#1538#!#1539#!#1540#!#1541#!#1542#!#1543#!#1544#!#1545#!#1546#!#1547#!#1548#!#1549#!#1550#!#1551#!#1552#!#1553#!#1554#!#1555#!#1556#!#1557#!#1558#!#1559#!#1560#!#1561#!#1562#!#1563#!#1564#!#1565#!#1566#!#1567#!#1568#!#1569#!#1570#!#1571#!#1572#!#1573#!#1574#!#1575#!#1576#!#1577#!#1578#!#1579#!#1580#!#1581#!#1582#!#1583#!#1584#!#1585#!#1586#!#1587#!#1588#!#1589#!#1590#!#1591#!#1592#!#1593#!#1594#!#1595#!#1596#!#1597#!#1598#!#1599#!#1600#!#1601#!#1602#!#1603#!#1604#!#1605#!#1606#!#1607#!#1608#!#1609#!#1610#!#1611#!#1612#!#1613#!#1614#!#1615#!#1616#!#1617#!#1618#!#1619#!#1620#!#1621#!#1622#!#1623#!#1624#!#1625#!#1626#!#1627#!#1628#!#1629#!#1630#!#1631#!#1632#!#1633#!#1634#!#1635#!#1636#!#1637#!#1638#!#1639#!#1640#!#1641#!#1642#!#1643#!#1644#!#1645#!#1646#!#1647#!#1648#!#1649#!#1650#!#1651#!#1652#!#1653#!#1654#!#1655#!#1656#!#1657#!#1658#!#1659#!#1660#!#1661#!#1662#!#1663#!#1664#!#1665#!#1666#!#1667#!#1668#!#1669#!#1670#!#1671#!#1672#!#1673#!#1674#!#1675#!#1676#!#1677#!#1678#!#1679#!#1680#!#1681#!#1682#!#1683#!#1684#!#1685#!#1686#!#1687#!#1688#!#1689#!#1690#!#1691#!#1692#!#1693#!#1694#!#1695#!#1696#!#1697#!#1698#!#1699#!#1700#!#1701#!#1702#!#1703#!#1704#!#1705#!#1706#!#1707#!#1708#!#1709#!#1710#!#1711#!#1712#!#1713#!#1714#!#1715#!#1716#!#1717#!#1718#!#1719#!#1720#!#1721#!#1722#!#1723#!#1724#!#1725#!#1726#!#1727#!#1728#!#1729#!#1730#!#1731#!#1732#!#1733#!#1734#!#1735#!#1736#!#1737#!#1738#!#1739#!#1740#!#1741#!#1742#!#1743#!#1744#!#1745#!#1746#!#1747#!#1748#!#1749#!#1750#!#1751#!#1752#!#1753#!#1754#!#1755#!#1756#!#1757#!#1758#!#1759#!#1760#!#1761#!#1762#!#1763#!#1764#!#1765#!#1766#!#1767#!#1768#!#1769#!#1770#!#1771#!#1772#!#1773#!#1774#!#1775#!#1776#!#1777#!#1778#!#1779#!#1780#!#1781#!#1782#!#1783#!#1784#!#1785#!#1786#!#1787#!#1788#!#1789#!#1790#!#1791#!#1792#!#1793#!#1794#!#1795#!#1796#!#1797#!#1798#!#1799#!#1800#!#1801#!#1802#!#1803#!#1804#!#1805#!#1806#!#1807#!#1808#!#1809#!#1810#!#1811#!#1812#!#1813#!#1814#!#1815#!#1816#!#1817#!#1818#!#1819#!#1820#!#1821#!#1822#!#1823#!#1824#!#1825#!#1826#!#1827#!#1828#!#1829#!#1830#!#1831#!#1832#!#1833#!#1834#!#1835#!#1836#!#1837#!#1838#!#1839#!#1840#!#1841#!#1842#!#1843#!#1844#!#1845#!#1846#!#1847#!#1848#!#1849#!#1850#!#1851#!#1852#!#1853#!#1854#!#1855#!#1856#!#1857#!#1858#!#1859#!#1860#!#1861#!#1862#!#1863#!#1864#!#1865#!#1866#!#1867#!#1868#!#1869#!#1870#!#1871#!#1872#!#1873#!#1874#!#1875#!#1876#!#1877#!#1878#!#1879#!#1880#!#1881#!#1882#!#1883#!#1884#!#1885#!#1886#!#1887#!#1888#!#1889#!#1890#!#1891#!#1892#!#1893#!#1894#!#1895#!#1896#!#1897#!#1898#!#1899#!#1900#!#1901#!#1902#!#1903#!#1904#!#1905#!#1906#!#1907#!#1908#!#1909#!#1910#!#1911#!#1912#!#1913#!#1914#!#1915#!#1916#!#1917#!#1918#!#1919#!#1920#!#1921#!#1922#!#1923#!#1924#!#1925#!#1926#!#1927#!#1928#!#1929#!#1930#!#1931#!#1932#!#1933#!#1934#!#1935#!#1936#!#1937#!#1938#!#1939#!#1940#!#1941#!#1942#!#1943#!#1944#!#1945#!#1946#!#1947#!#1948#!#1949#!#1950#!#1951#!#1952#!#1953#!#1954#!#1955#!#1956#!#1957#!#1958#!#1959#!#1960#!#1961#!#1962#!#1963#!#1964#!#1965#!#1966#!#1967#!#1968#!#1969#!#1970#!#1971#!#1972#!#1973#!#1974#!#1975#!#1976#!#1977#!#1978#!#1979#!#1980#!#1981#!#1982#!#1983#!#1984#!#1985#!#1986#!#1987#!#1988#!#1989#!#1990#!#1991#!#1992#!#1993#!#1994#!#1995#!#1996#!#1997#!#1998#!#1999#!#2000#!#2001#!#2002#!#2003#!#2004#!#2005#!#2006#!#2007#!#2008#!#2009#!#2010#!#2011#!#2012#!#2013#!#2014#!#2015#!#2016#!#2017#!#2018#!#2019#!#2020#!#2021#!#2022#!#2023#!#2024#!#2025#!#2026#!#2027#!#2028#!#2029#!#2030#!#2031#!#2032#!#2033#!#2034#!#2035#!#2036#!#2037#!#2038#!#2039#!#2040#!#2041#!#2042#!#2043#!#2044#!#2045#!#2046#!#2047#!#2048#!#2049#!#2050#!#2051#!#2052#!#2053#!#2054#!#2055#!#2056#!#2057#!#2058#!#2059#!#2060#!#2061#!#2062#!#2063#!#2064#!#2065#!#2066#!#2067#!#2068#!#2069#!#2070#!#2071#!#2072#!#2073#!#2074#!#2075#!#2076#!#2077#!#2078#!#2079#!#2080#!#2081#!#2082#!#2083#!#2084#!#2085#!#2086#!#2087#!#2088#!#2089#!#2090#!#2091#!#2092#!#2093#!#2094#!#2095#!#2096#!#2097#!#2098#!#2099#!#2100#!##Q#declare @handle int; +EXEC sp_prepare @handle output, +N' +@p1 int, @p2 int, @p3 int, @p4 int, @p5 int, @p6 int, @p7 int, @p8 int, @p9 int, @p10 int, @p11 int, @p12 int, @p13 int, @p14 int, @p15 int, @p16 int, @p17 int, @p18 int, @p19 int, @p20 int, @p21 int, @p22 int, @p23 int, @p24 int, @p25 int, @p26 int, @p27 int, @p28 int, @p29 int, @p30 int, @p31 int, @p32 int, @p33 int, @p34 int, @p35 int, @p36 int, @p37 int, @p38 int, @p39 int, @p40 int, @p41 int, @p42 int, @p43 int, @p44 int, @p45 int, @p46 int, @p47 int, @p48 int, @p49 int, @p50 int, @p51 int, @p52 int, @p53 int, @p54 int, @p55 int, @p56 int, @p57 int, @p58 int, @p59 int, @p60 int, @p61 int, @p62 int, @p63 int, @p64 int, @p65 int, @p66 int, @p67 int, @p68 int, @p69 int, @p70 int, @p71 int, @p72 int, @p73 int, @p74 int, @p75 int, @p76 int, @p77 int, @p78 int, @p79 int, @p80 int, @p81 int, @p82 int, @p83 int, @p84 int, @p85 int, @p86 int, @p87 int, @p88 int, @p89 int, @p90 int, @p91 int, @p92 int, @p93 int, @p94 int, @p95 int, @p96 int, @p97 int, @p98 int, @p99 int, @p100 int, @p101 int, @p102 int, @p103 int, @p104 int, @p105 int, @p106 int, @p107 int, @p108 int, @p109 int, @p110 int, @p111 int, @p112 int, @p113 int, @p114 int, @p115 int, @p116 int, @p117 int, @p118 int, @p119 int, @p120 int, @p121 int, @p122 int, @p123 int, @p124 int, @p125 int, @p126 int, @p127 int, @p128 int, @p129 int, @p130 int, @p131 int, @p132 int, @p133 int, @p134 int, @p135 int, @p136 int, @p137 int, @p138 int, @p139 int, @p140 int, @p141 int, @p142 int, @p143 int, @p144 int, @p145 int, @p146 int, @p147 int, @p148 int, @p149 int, @p150 int, @p151 int, @p152 int, @p153 int, @p154 int, @p155 int, @p156 int, @p157 int, @p158 int, @p159 int, @p160 int, @p161 int, @p162 int, @p163 int, @p164 int, @p165 int, @p166 int, @p167 int, @p168 int, @p169 int, @p170 int, @p171 int, @p172 int, @p173 int, @p174 int, @p175 int, @p176 int, @p177 int, @p178 int, @p179 int, @p180 int, @p181 int, @p182 int, @p183 int, @p184 int, @p185 int, @p186 int, @p187 int, @p188 int, @p189 int, @p190 int, @p191 int, @p192 int, @p193 int, @p194 int, @p195 int, @p196 int, @p197 int, @p198 int, @p199 int, @p200 int, +@p201 int, @p202 int, @p203 int, @p204 int, @p205 int, @p206 int, @p207 int, @p208 int, @p209 int, @p210 int, @p211 int, @p212 int, @p213 int, @p214 int, @p215 int, @p216 int, @p217 int, @p218 int, @p219 int, @p220 int, @p221 int, @p222 int, @p223 int, @p224 int, @p225 int, @p226 int, @p227 int, @p228 int, @p229 int, @p230 int, @p231 int, @p232 int, @p233 int, @p234 int, @p235 int, @p236 int, @p237 int, @p238 int, @p239 int, @p240 int, @p241 int, @p242 int, @p243 int, @p244 int, @p245 int, @p246 int, @p247 int, @p248 int, @p249 int, @p250 int, @p251 int, @p252 int, @p253 int, @p254 int, @p255 int, @p256 int, @p257 int, @p258 int, @p259 int, @p260 int, @p261 int, @p262 int, @p263 int, @p264 int, @p265 int, @p266 int, @p267 int, @p268 int, @p269 int, @p270 int, @p271 int, @p272 int, @p273 int, @p274 int, @p275 int, @p276 int, @p277 int, @p278 int, @p279 int, @p280 int, @p281 int, @p282 int, @p283 int, @p284 int, @p285 int, @p286 int, @p287 int, @p288 int, @p289 int, @p290 int, @p291 int, @p292 int, @p293 int, @p294 int, @p295 int, @p296 int, @p297 int, @p298 int, @p299 int, @p300 int, @p301 int, @p302 int, @p303 int, @p304 int, @p305 int, @p306 int, @p307 int, @p308 int, @p309 int, @p310 int, @p311 int, @p312 int, @p313 int, @p314 int, @p315 int, @p316 int, @p317 int, @p318 int, @p319 int, @p320 int, @p321 int, @p322 int, @p323 int, @p324 int, @p325 int, @p326 int, @p327 int, @p328 int, @p329 int, @p330 int, @p331 int, @p332 int, @p333 int, @p334 int, @p335 int, @p336 int, @p337 int, @p338 int, @p339 int, @p340 int, @p341 int, @p342 int, @p343 int, @p344 int, @p345 int, @p346 int, @p347 int, @p348 int, @p349 int, @p350 int, @p351 int, @p352 int, @p353 int, @p354 int, @p355 int, @p356 int, @p357 int, @p358 int, @p359 int, @p360 int, @p361 int, @p362 int, @p363 int, @p364 int, @p365 int, @p366 int, @p367 int, @p368 int, @p369 int, @p370 int, @p371 int, @p372 int, @p373 int, @p374 int, @p375 int, @p376 int, @p377 int, @p378 int, @p379 int, @p380 int, @p381 int, @p382 int, @p383 int, @p384 int, @p385 int, @p386 int, @p387 int, @p388 int, @p389 int, @p390 int, @p391 int, @p392 int, @p393 int, @p394 int, @p395 int, @p396 int, @p397 int, @p398 int, @p399 int, @p400 int, +@p401 int, @p402 int, @p403 int, @p404 int, @p405 int, @p406 int, @p407 int, @p408 int, @p409 int, @p410 int, @p411 int, @p412 int, @p413 int, @p414 int, @p415 int, @p416 int, @p417 int, @p418 int, @p419 int, @p420 int, @p421 int, @p422 int, @p423 int, @p424 int, @p425 int, @p426 int, @p427 int, @p428 int, @p429 int, @p430 int, @p431 int, @p432 int, @p433 int, @p434 int, @p435 int, @p436 int, @p437 int, @p438 int, @p439 int, @p440 int, @p441 int, @p442 int, @p443 int, @p444 int, @p445 int, @p446 int, @p447 int, @p448 int, @p449 int, @p450 int, @p451 int, @p452 int, @p453 int, @p454 int, @p455 int, @p456 int, @p457 int, @p458 int, @p459 int, @p460 int, @p461 int, @p462 int, @p463 int, @p464 int, @p465 int, @p466 int, @p467 int, @p468 int, @p469 int, @p470 int, @p471 int, @p472 int, @p473 int, @p474 int, @p475 int, @p476 int, @p477 int, @p478 int, @p479 int, @p480 int, @p481 int, @p482 int, @p483 int, @p484 int, @p485 int, @p486 int, @p487 int, @p488 int, @p489 int, @p490 int, @p491 int, @p492 int, @p493 int, @p494 int, @p495 int, @p496 int, @p497 int, @p498 int, @p499 int, @p500 int, @p501 int, @p502 int, @p503 int, @p504 int, @p505 int, @p506 int, @p507 int, @p508 int, @p509 int, @p510 int, @p511 int, @p512 int, @p513 int, @p514 int, @p515 int, @p516 int, @p517 int, @p518 int, @p519 int, @p520 int, @p521 int, @p522 int, @p523 int, @p524 int, @p525 int, @p526 int, @p527 int, @p528 int, @p529 int, @p530 int, @p531 int, @p532 int, @p533 int, @p534 int, @p535 int, @p536 int, @p537 int, @p538 int, @p539 int, @p540 int, @p541 int, @p542 int, @p543 int, @p544 int, @p545 int, @p546 int, @p547 int, @p548 int, @p549 int, @p550 int, @p551 int, @p552 int, @p553 int, @p554 int, @p555 int, @p556 int, @p557 int, @p558 int, @p559 int, @p560 int, @p561 int, @p562 int, @p563 int, @p564 int, @p565 int, @p566 int, @p567 int, @p568 int, @p569 int, @p570 int, @p571 int, @p572 int, @p573 int, @p574 int, @p575 int, @p576 int, @p577 int, @p578 int, @p579 int, @p580 int, @p581 int, @p582 int, @p583 int, @p584 int, @p585 int, @p586 int, @p587 int, @p588 int, @p589 int, @p590 int, @p591 int, @p592 int, @p593 int, @p594 int, @p595 int, @p596 int, @p597 int, @p598 int, @p599 int, @p600 int, +@p601 int, @p602 int, @p603 int, @p604 int, @p605 int, @p606 int, @p607 int, @p608 int, @p609 int, @p610 int, @p611 int, @p612 int, @p613 int, @p614 int, @p615 int, @p616 int, @p617 int, @p618 int, @p619 int, @p620 int, @p621 int, @p622 int, @p623 int, @p624 int, @p625 int, @p626 int, @p627 int, @p628 int, @p629 int, @p630 int, @p631 int, @p632 int, @p633 int, @p634 int, @p635 int, @p636 int, @p637 int, @p638 int, @p639 int, @p640 int, @p641 int, @p642 int, @p643 int, @p644 int, @p645 int, @p646 int, @p647 int, @p648 int, @p649 int, @p650 int, @p651 int, @p652 int, @p653 int, @p654 int, @p655 int, @p656 int, @p657 int, @p658 int, @p659 int, @p660 int, @p661 int, @p662 int, @p663 int, @p664 int, @p665 int, @p666 int, @p667 int, @p668 int, @p669 int, @p670 int, @p671 int, @p672 int, @p673 int, @p674 int, @p675 int, @p676 int, @p677 int, @p678 int, @p679 int, @p680 int, @p681 int, @p682 int, @p683 int, @p684 int, @p685 int, @p686 int, @p687 int, @p688 int, @p689 int, @p690 int, @p691 int, @p692 int, @p693 int, @p694 int, @p695 int, @p696 int, @p697 int, @p698 int, @p699 int, @p700 int, @p701 int, @p702 int, @p703 int, @p704 int, @p705 int, @p706 int, @p707 int, @p708 int, @p709 int, @p710 int, @p711 int, @p712 int, @p713 int, @p714 int, @p715 int, @p716 int, @p717 int, @p718 int, @p719 int, @p720 int, @p721 int, @p722 int, @p723 int, @p724 int, @p725 int, @p726 int, @p727 int, @p728 int, @p729 int, @p730 int, @p731 int, @p732 int, @p733 int, @p734 int, @p735 int, @p736 int, @p737 int, @p738 int, @p739 int, @p740 int, @p741 int, @p742 int, @p743 int, @p744 int, @p745 int, @p746 int, @p747 int, @p748 int, @p749 int, @p750 int, @p751 int, @p752 int, @p753 int, @p754 int, @p755 int, @p756 int, @p757 int, @p758 int, @p759 int, @p760 int, @p761 int, @p762 int, @p763 int, @p764 int, @p765 int, @p766 int, @p767 int, @p768 int, @p769 int, @p770 int, @p771 int, @p772 int, @p773 int, @p774 int, @p775 int, @p776 int, @p777 int, @p778 int, @p779 int, @p780 int, @p781 int, @p782 int, @p783 int, @p784 int, @p785 int, @p786 int, @p787 int, @p788 int, @p789 int, @p790 int, @p791 int, @p792 int, @p793 int, @p794 int, @p795 int, @p796 int, @p797 int, @p798 int, @p799 int, @p800 int, +@p801 int, @p802 int, @p803 int, @p804 int, @p805 int, @p806 int, @p807 int, @p808 int, @p809 int, @p810 int, @p811 int, @p812 int, @p813 int, @p814 int, @p815 int, @p816 int, @p817 int, @p818 int, @p819 int, @p820 int, @p821 int, @p822 int, @p823 int, @p824 int, @p825 int, @p826 int, @p827 int, @p828 int, @p829 int, @p830 int, @p831 int, @p832 int, @p833 int, @p834 int, @p835 int, @p836 int, @p837 int, @p838 int, @p839 int, @p840 int, @p841 int, @p842 int, @p843 int, @p844 int, @p845 int, @p846 int, @p847 int, @p848 int, @p849 int, @p850 int, @p851 int, @p852 int, @p853 int, @p854 int, @p855 int, @p856 int, @p857 int, @p858 int, @p859 int, @p860 int, @p861 int, @p862 int, @p863 int, @p864 int, @p865 int, @p866 int, @p867 int, @p868 int, @p869 int, @p870 int, @p871 int, @p872 int, @p873 int, @p874 int, @p875 int, @p876 int, @p877 int, @p878 int, @p879 int, @p880 int, @p881 int, @p882 int, @p883 int, @p884 int, @p885 int, @p886 int, @p887 int, @p888 int, @p889 int, @p890 int, @p891 int, @p892 int, @p893 int, @p894 int, @p895 int, @p896 int, @p897 int, @p898 int, @p899 int, @p900 int, @p901 int, @p902 int, @p903 int, @p904 int, @p905 int, @p906 int, @p907 int, @p908 int, @p909 int, @p910 int, @p911 int, @p912 int, @p913 int, @p914 int, @p915 int, @p916 int, @p917 int, @p918 int, @p919 int, @p920 int, @p921 int, @p922 int, @p923 int, @p924 int, @p925 int, @p926 int, @p927 int, @p928 int, @p929 int, @p930 int, @p931 int, @p932 int, @p933 int, @p934 int, @p935 int, @p936 int, @p937 int, @p938 int, @p939 int, @p940 int, @p941 int, @p942 int, @p943 int, @p944 int, @p945 int, @p946 int, @p947 int, @p948 int, @p949 int, @p950 int, @p951 int, @p952 int, @p953 int, @p954 int, @p955 int, @p956 int, @p957 int, @p958 int, @p959 int, @p960 int, @p961 int, @p962 int, @p963 int, @p964 int, @p965 int, @p966 int, @p967 int, @p968 int, @p969 int, @p970 int, @p971 int, @p972 int, @p973 int, @p974 int, @p975 int, @p976 int, @p977 int, @p978 int, @p979 int, @p980 int, @p981 int, @p982 int, @p983 int, @p984 int, @p985 int, @p986 int, @p987 int, @p988 int, @p989 int, @p990 int, @p991 int, @p992 int, @p993 int, @p994 int, @p995 int, @p996 int, @p997 int, @p998 int, @p999 int, @p1000 int, +@p1001 int, @p1002 int, @p1003 int, @p1004 int, @p1005 int, @p1006 int, @p1007 int, @p1008 int, @p1009 int, @p1010 int, @p1011 int, @p1012 int, @p1013 int, @p1014 int, @p1015 int, @p1016 int, @p1017 int, @p1018 int, @p1019 int, @p1020 int, @p1021 int, @p1022 int, @p1023 int, @p1024 int, @p1025 int, @p1026 int, @p1027 int, @p1028 int, @p1029 int, @p1030 int, @p1031 int, @p1032 int, @p1033 int, @p1034 int, @p1035 int, @p1036 int, @p1037 int, @p1038 int, @p1039 int, @p1040 int, @p1041 int, @p1042 int, @p1043 int, @p1044 int, @p1045 int, @p1046 int, @p1047 int, @p1048 int, @p1049 int, @p1050 int, @p1051 int, @p1052 int, @p1053 int, @p1054 int, @p1055 int, @p1056 int, @p1057 int, @p1058 int, @p1059 int, @p1060 int, @p1061 int, @p1062 int, @p1063 int, @p1064 int, @p1065 int, @p1066 int, @p1067 int, @p1068 int, @p1069 int, @p1070 int, @p1071 int, @p1072 int, @p1073 int, @p1074 int, @p1075 int, @p1076 int, @p1077 int, @p1078 int, @p1079 int, @p1080 int, @p1081 int, @p1082 int, @p1083 int, @p1084 int, @p1085 int, @p1086 int, @p1087 int, @p1088 int, @p1089 int, @p1090 int, @p1091 int, @p1092 int, @p1093 int, @p1094 int, @p1095 int, @p1096 int, @p1097 int, @p1098 int, @p1099 int, @p1100 int, @p1101 int, @p1102 int, @p1103 int, @p1104 int, @p1105 int, @p1106 int, @p1107 int, @p1108 int, @p1109 int, @p1110 int, @p1111 int, @p1112 int, @p1113 int, @p1114 int, @p1115 int, @p1116 int, @p1117 int, @p1118 int, @p1119 int, @p1120 int, @p1121 int, @p1122 int, @p1123 int, @p1124 int, @p1125 int, @p1126 int, @p1127 int, @p1128 int, @p1129 int, @p1130 int, @p1131 int, @p1132 int, @p1133 int, @p1134 int, @p1135 int, @p1136 int, @p1137 int, @p1138 int, @p1139 int, @p1140 int, @p1141 int, @p1142 int, @p1143 int, @p1144 int, @p1145 int, @p1146 int, @p1147 int, @p1148 int, @p1149 int, @p1150 int, @p1151 int, @p1152 int, @p1153 int, @p1154 int, @p1155 int, @p1156 int, @p1157 int, @p1158 int, @p1159 int, @p1160 int, @p1161 int, @p1162 int, @p1163 int, @p1164 int, @p1165 int, @p1166 int, @p1167 int, @p1168 int, @p1169 int, @p1170 int, @p1171 int, @p1172 int, @p1173 int, @p1174 int, @p1175 int, @p1176 int, @p1177 int, @p1178 int, @p1179 int, @p1180 int, @p1181 int, @p1182 int, @p1183 int, @p1184 int, @p1185 int, @p1186 int, @p1187 int, @p1188 int, @p1189 int, @p1190 int, @p1191 int, @p1192 int, @p1193 int, @p1194 int, @p1195 int, @p1196 int, @p1197 int, @p1198 int, @p1199 int, @p1200 int, +@p1201 int, @p1202 int, @p1203 int, @p1204 int, @p1205 int, @p1206 int, @p1207 int, @p1208 int, @p1209 int, @p1210 int, @p1211 int, @p1212 int, @p1213 int, @p1214 int, @p1215 int, @p1216 int, @p1217 int, @p1218 int, @p1219 int, @p1220 int, @p1221 int, @p1222 int, @p1223 int, @p1224 int, @p1225 int, @p1226 int, @p1227 int, @p1228 int, @p1229 int, @p1230 int, @p1231 int, @p1232 int, @p1233 int, @p1234 int, @p1235 int, @p1236 int, @p1237 int, @p1238 int, @p1239 int, @p1240 int, @p1241 int, @p1242 int, @p1243 int, @p1244 int, @p1245 int, @p1246 int, @p1247 int, @p1248 int, @p1249 int, @p1250 int, @p1251 int, @p1252 int, @p1253 int, @p1254 int, @p1255 int, @p1256 int, @p1257 int, @p1258 int, @p1259 int, @p1260 int, @p1261 int, @p1262 int, @p1263 int, @p1264 int, @p1265 int, @p1266 int, @p1267 int, @p1268 int, @p1269 int, @p1270 int, @p1271 int, @p1272 int, @p1273 int, @p1274 int, @p1275 int, @p1276 int, @p1277 int, @p1278 int, @p1279 int, @p1280 int, @p1281 int, @p1282 int, @p1283 int, @p1284 int, @p1285 int, @p1286 int, @p1287 int, @p1288 int, @p1289 int, @p1290 int, @p1291 int, @p1292 int, @p1293 int, @p1294 int, @p1295 int, @p1296 int, @p1297 int, @p1298 int, @p1299 int, @p1300 int, @p1301 int, @p1302 int, @p1303 int, @p1304 int, @p1305 int, @p1306 int, @p1307 int, @p1308 int, @p1309 int, @p1310 int, @p1311 int, @p1312 int, @p1313 int, @p1314 int, @p1315 int, @p1316 int, @p1317 int, @p1318 int, @p1319 int, @p1320 int, @p1321 int, @p1322 int, @p1323 int, @p1324 int, @p1325 int, @p1326 int, @p1327 int, @p1328 int, @p1329 int, @p1330 int, @p1331 int, @p1332 int, @p1333 int, @p1334 int, @p1335 int, @p1336 int, @p1337 int, @p1338 int, @p1339 int, @p1340 int, @p1341 int, @p1342 int, @p1343 int, @p1344 int, @p1345 int, @p1346 int, @p1347 int, @p1348 int, @p1349 int, @p1350 int, @p1351 int, @p1352 int, @p1353 int, @p1354 int, @p1355 int, @p1356 int, @p1357 int, @p1358 int, @p1359 int, @p1360 int, @p1361 int, @p1362 int, @p1363 int, @p1364 int, @p1365 int, @p1366 int, @p1367 int, @p1368 int, @p1369 int, @p1370 int, @p1371 int, @p1372 int, @p1373 int, @p1374 int, @p1375 int, @p1376 int, @p1377 int, @p1378 int, @p1379 int, @p1380 int, @p1381 int, @p1382 int, @p1383 int, @p1384 int, @p1385 int, @p1386 int, @p1387 int, @p1388 int, @p1389 int, @p1390 int, @p1391 int, @p1392 int, @p1393 int, @p1394 int, @p1395 int, @p1396 int, @p1397 int, @p1398 int, @p1399 int, @p1400 int, +@p1401 int, @p1402 int, @p1403 int, @p1404 int, @p1405 int, @p1406 int, @p1407 int, @p1408 int, @p1409 int, @p1410 int, @p1411 int, @p1412 int, @p1413 int, @p1414 int, @p1415 int, @p1416 int, @p1417 int, @p1418 int, @p1419 int, @p1420 int, @p1421 int, @p1422 int, @p1423 int, @p1424 int, @p1425 int, @p1426 int, @p1427 int, @p1428 int, @p1429 int, @p1430 int, @p1431 int, @p1432 int, @p1433 int, @p1434 int, @p1435 int, @p1436 int, @p1437 int, @p1438 int, @p1439 int, @p1440 int, @p1441 int, @p1442 int, @p1443 int, @p1444 int, @p1445 int, @p1446 int, @p1447 int, @p1448 int, @p1449 int, @p1450 int, @p1451 int, @p1452 int, @p1453 int, @p1454 int, @p1455 int, @p1456 int, @p1457 int, @p1458 int, @p1459 int, @p1460 int, @p1461 int, @p1462 int, @p1463 int, @p1464 int, @p1465 int, @p1466 int, @p1467 int, @p1468 int, @p1469 int, @p1470 int, @p1471 int, @p1472 int, @p1473 int, @p1474 int, @p1475 int, @p1476 int, @p1477 int, @p1478 int, @p1479 int, @p1480 int, @p1481 int, @p1482 int, @p1483 int, @p1484 int, @p1485 int, @p1486 int, @p1487 int, @p1488 int, @p1489 int, @p1490 int, @p1491 int, @p1492 int, @p1493 int, @p1494 int, @p1495 int, @p1496 int, @p1497 int, @p1498 int, @p1499 int, @p1500 int, @p1501 int, @p1502 int, @p1503 int, @p1504 int, @p1505 int, @p1506 int, @p1507 int, @p1508 int, @p1509 int, @p1510 int, @p1511 int, @p1512 int, @p1513 int, @p1514 int, @p1515 int, @p1516 int, @p1517 int, @p1518 int, @p1519 int, @p1520 int, @p1521 int, @p1522 int, @p1523 int, @p1524 int, @p1525 int, @p1526 int, @p1527 int, @p1528 int, @p1529 int, @p1530 int, @p1531 int, @p1532 int, @p1533 int, @p1534 int, @p1535 int, @p1536 int, @p1537 int, @p1538 int, @p1539 int, @p1540 int, @p1541 int, @p1542 int, @p1543 int, @p1544 int, @p1545 int, @p1546 int, @p1547 int, @p1548 int, @p1549 int, @p1550 int, @p1551 int, @p1552 int, @p1553 int, @p1554 int, @p1555 int, @p1556 int, @p1557 int, @p1558 int, @p1559 int, @p1560 int, @p1561 int, @p1562 int, @p1563 int, @p1564 int, @p1565 int, @p1566 int, @p1567 int, @p1568 int, @p1569 int, @p1570 int, @p1571 int, @p1572 int, @p1573 int, @p1574 int, @p1575 int, @p1576 int, @p1577 int, @p1578 int, @p1579 int, @p1580 int, @p1581 int, @p1582 int, @p1583 int, @p1584 int, @p1585 int, @p1586 int, @p1587 int, @p1588 int, @p1589 int, @p1590 int, @p1591 int, @p1592 int, @p1593 int, @p1594 int, @p1595 int, @p1596 int, @p1597 int, @p1598 int, @p1599 int, @p1600 int, +@p1601 int, @p1602 int, @p1603 int, @p1604 int, @p1605 int, @p1606 int, @p1607 int, @p1608 int, @p1609 int, @p1610 int, @p1611 int, @p1612 int, @p1613 int, @p1614 int, @p1615 int, @p1616 int, @p1617 int, @p1618 int, @p1619 int, @p1620 int, @p1621 int, @p1622 int, @p1623 int, @p1624 int, @p1625 int, @p1626 int, @p1627 int, @p1628 int, @p1629 int, @p1630 int, @p1631 int, @p1632 int, @p1633 int, @p1634 int, @p1635 int, @p1636 int, @p1637 int, @p1638 int, @p1639 int, @p1640 int, @p1641 int, @p1642 int, @p1643 int, @p1644 int, @p1645 int, @p1646 int, @p1647 int, @p1648 int, @p1649 int, @p1650 int, @p1651 int, @p1652 int, @p1653 int, @p1654 int, @p1655 int, @p1656 int, @p1657 int, @p1658 int, @p1659 int, @p1660 int, @p1661 int, @p1662 int, @p1663 int, @p1664 int, @p1665 int, @p1666 int, @p1667 int, @p1668 int, @p1669 int, @p1670 int, @p1671 int, @p1672 int, @p1673 int, @p1674 int, @p1675 int, @p1676 int, @p1677 int, @p1678 int, @p1679 int, @p1680 int, @p1681 int, @p1682 int, @p1683 int, @p1684 int, @p1685 int, @p1686 int, @p1687 int, @p1688 int, @p1689 int, @p1690 int, @p1691 int, @p1692 int, @p1693 int, @p1694 int, @p1695 int, @p1696 int, @p1697 int, @p1698 int, @p1699 int, @p1700 int, @p1701 int, @p1702 int, @p1703 int, @p1704 int, @p1705 int, @p1706 int, @p1707 int, @p1708 int, @p1709 int, @p1710 int, @p1711 int, @p1712 int, @p1713 int, @p1714 int, @p1715 int, @p1716 int, @p1717 int, @p1718 int, @p1719 int, @p1720 int, @p1721 int, @p1722 int, @p1723 int, @p1724 int, @p1725 int, @p1726 int, @p1727 int, @p1728 int, @p1729 int, @p1730 int, @p1731 int, @p1732 int, @p1733 int, @p1734 int, @p1735 int, @p1736 int, @p1737 int, @p1738 int, @p1739 int, @p1740 int, @p1741 int, @p1742 int, @p1743 int, @p1744 int, @p1745 int, @p1746 int, @p1747 int, @p1748 int, @p1749 int, @p1750 int, @p1751 int, @p1752 int, @p1753 int, @p1754 int, @p1755 int, @p1756 int, @p1757 int, @p1758 int, @p1759 int, @p1760 int, @p1761 int, @p1762 int, @p1763 int, @p1764 int, @p1765 int, @p1766 int, @p1767 int, @p1768 int, @p1769 int, @p1770 int, @p1771 int, @p1772 int, @p1773 int, @p1774 int, @p1775 int, @p1776 int, @p1777 int, @p1778 int, @p1779 int, @p1780 int, @p1781 int, @p1782 int, @p1783 int, @p1784 int, @p1785 int, @p1786 int, @p1787 int, @p1788 int, @p1789 int, @p1790 int, @p1791 int, @p1792 int, @p1793 int, @p1794 int, @p1795 int, @p1796 int, @p1797 int, @p1798 int, @p1799 int, @p1800 int, +@p1801 int, @p1802 int, @p1803 int, @p1804 int, @p1805 int, @p1806 int, @p1807 int, @p1808 int, @p1809 int, @p1810 int, @p1811 int, @p1812 int, @p1813 int, @p1814 int, @p1815 int, @p1816 int, @p1817 int, @p1818 int, @p1819 int, @p1820 int, @p1821 int, @p1822 int, @p1823 int, @p1824 int, @p1825 int, @p1826 int, @p1827 int, @p1828 int, @p1829 int, @p1830 int, @p1831 int, @p1832 int, @p1833 int, @p1834 int, @p1835 int, @p1836 int, @p1837 int, @p1838 int, @p1839 int, @p1840 int, @p1841 int, @p1842 int, @p1843 int, @p1844 int, @p1845 int, @p1846 int, @p1847 int, @p1848 int, @p1849 int, @p1850 int, @p1851 int, @p1852 int, @p1853 int, @p1854 int, @p1855 int, @p1856 int, @p1857 int, @p1858 int, @p1859 int, @p1860 int, @p1861 int, @p1862 int, @p1863 int, @p1864 int, @p1865 int, @p1866 int, @p1867 int, @p1868 int, @p1869 int, @p1870 int, @p1871 int, @p1872 int, @p1873 int, @p1874 int, @p1875 int, @p1876 int, @p1877 int, @p1878 int, @p1879 int, @p1880 int, @p1881 int, @p1882 int, @p1883 int, @p1884 int, @p1885 int, @p1886 int, @p1887 int, @p1888 int, @p1889 int, @p1890 int, @p1891 int, @p1892 int, @p1893 int, @p1894 int, @p1895 int, @p1896 int, @p1897 int, @p1898 int, @p1899 int, @p1900 int, @p1901 int, @p1902 int, @p1903 int, @p1904 int, @p1905 int, @p1906 int, @p1907 int, @p1908 int, @p1909 int, @p1910 int, @p1911 int, @p1912 int, @p1913 int, @p1914 int, @p1915 int, @p1916 int, @p1917 int, @p1918 int, @p1919 int, @p1920 int, @p1921 int, @p1922 int, @p1923 int, @p1924 int, @p1925 int, @p1926 int, @p1927 int, @p1928 int, @p1929 int, @p1930 int, @p1931 int, @p1932 int, @p1933 int, @p1934 int, @p1935 int, @p1936 int, @p1937 int, @p1938 int, @p1939 int, @p1940 int, @p1941 int, @p1942 int, @p1943 int, @p1944 int, @p1945 int, @p1946 int, @p1947 int, @p1948 int, @p1949 int, @p1950 int, @p1951 int, @p1952 int, @p1953 int, @p1954 int, @p1955 int, @p1956 int, @p1957 int, @p1958 int, @p1959 int, @p1960 int, @p1961 int, @p1962 int, @p1963 int, @p1964 int, @p1965 int, @p1966 int, @p1967 int, @p1968 int, @p1969 int, @p1970 int, @p1971 int, @p1972 int, @p1973 int, @p1974 int, @p1975 int, @p1976 int, @p1977 int, @p1978 int, @p1979 int, @p1980 int, @p1981 int, @p1982 int, @p1983 int, @p1984 int, @p1985 int, @p1986 int, @p1987 int, @p1988 int, @p1989 int, @p1990 int, @p1991 int, @p1992 int, @p1993 int, @p1994 int, @p1995 int, @p1996 int, @p1997 int, @p1998 int, @p1999 int, @p2000 int, +@p2001 int, @p2002 int, @p2003 int, @p2004 int, @p2005 int, @p2006 int, @p2007 int, @p2008 int, @p2009 int, @p2010 int, @p2011 int, @p2012 int, @p2013 int, @p2014 int, @p2015 int, @p2016 int, @p2017 int, @p2018 int, @p2019 int, @p2020 int, @p2021 int, @p2022 int, @p2023 int, @p2024 int, @p2025 int, @p2026 int, @p2027 int, @p2028 int, @p2029 int, @p2030 int, @p2031 int, @p2032 int, @p2033 int, @p2034 int, @p2035 int, @p2036 int, @p2037 int, @p2038 int, @p2039 int, @p2040 int, @p2041 int, @p2042 int, @p2043 int, @p2044 int, @p2045 int, @p2046 int, @p2047 int, @p2048 int, @p2049 int, @p2050 int, @p2051 int, @p2052 int, @p2053 int, @p2054 int, @p2055 int, @p2056 int, @p2057 int, @p2058 int, @p2059 int, @p2060 int, @p2061 int, @p2062 int, @p2063 int, @p2064 int, @p2065 int, @p2066 int, @p2067 int, @p2068 int, @p2069 int, @p2070 int, @p2071 int, @p2072 int, @p2073 int, @p2074 int, @p2075 int, @p2076 int, @p2077 int, @p2078 int, @p2079 int, @p2080 int, @p2081 int, @p2082 int, @p2083 int, @p2084 int, @p2085 int, @p2086 int, @p2087 int, @p2088 int, @p2089 int, @p2090 int, @p2091 int, @p2092 int, @p2093 int, @p2094 int, @p2095 int, @p2096 int, @p2097 int, @p2098 int, @p2099 int, @p2100 int, @p2101 int +', +N' +Select +@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20, @p21, @p22, @p23, @p24, @p25, @p26, @p27, @p28, @p29, @p30, @p31, @p32, @p33, @p34, @p35, @p36, @p37, @p38, @p39, @p40, @p41, @p42, @p43, @p44, @p45, @p46, @p47, @p48, @p49, @p50, @p51, @p52, @p53, @p54, @p55, @p56, @p57, @p58, @p59, @p60, @p61, @p62, @p63, @p64, @p65, @p66, @p67, @p68, @p69, @p70, @p71, @p72, @p73, @p74, @p75, @p76, @p77, @p78, @p79, @p80, @p81, @p82, @p83, @p84, @p85, @p86, @p87, @p88, @p89, @p90, @p91, @p92, @p93, @p94, @p95, @p96, @p97, @p98, @p99, @p100, @p101, @p102, @p103, @p104, @p105, @p106, @p107, @p108, @p109, @p110, @p111, @p112, @p113, @p114, @p115, @p116, @p117, @p118, @p119, @p120, @p121, @p122, @p123, @p124, @p125, @p126, @p127, @p128, @p129, @p130, @p131, @p132, @p133, @p134, @p135, @p136, @p137, @p138, @p139, @p140, @p141, @p142, @p143, @p144, @p145, @p146, @p147, @p148, @p149, @p150, @p151, @p152, @p153, @p154, @p155, @p156, @p157, @p158, @p159, @p160, @p161, @p162, @p163, @p164, @p165, @p166, @p167, @p168, @p169, @p170, @p171, @p172, @p173, @p174, @p175, @p176, @p177, @p178, @p179, @p180, @p181, @p182, @p183, @p184, @p185, @p186, @p187, @p188, @p189, @p190, @p191, @p192, @p193, @p194, @p195, @p196, @p197, @p198, @p199, @p200, +@p201, @p202, @p203, @p204, @p205, @p206, @p207, @p208, @p209, @p210, @p211, @p212, @p213, @p214, @p215, @p216, @p217, @p218, @p219, @p220, @p221, @p222, @p223, @p224, @p225, @p226, @p227, @p228, @p229, @p230, @p231, @p232, @p233, @p234, @p235, @p236, @p237, @p238, @p239, @p240, @p241, @p242, @p243, @p244, @p245, @p246, @p247, @p248, @p249, @p250, @p251, @p252, @p253, @p254, @p255, @p256, @p257, @p258, @p259, @p260, @p261, @p262, @p263, @p264, @p265, @p266, @p267, @p268, @p269, @p270, @p271, @p272, @p273, @p274, @p275, @p276, @p277, @p278, @p279, @p280, @p281, @p282, @p283, @p284, @p285, @p286, @p287, @p288, @p289, @p290, @p291, @p292, @p293, @p294, @p295, @p296, @p297, @p298, @p299, @p300, @p301, @p302, @p303, @p304, @p305, @p306, @p307, @p308, @p309, @p310, @p311, @p312, @p313, @p314, @p315, @p316, @p317, @p318, @p319, @p320, @p321, @p322, @p323, @p324, @p325, @p326, @p327, @p328, @p329, @p330, @p331, @p332, @p333, @p334, @p335, @p336, @p337, @p338, @p339, @p340, @p341, @p342, @p343, @p344, @p345, @p346, @p347, @p348, @p349, @p350, @p351, @p352, @p353, @p354, @p355, @p356, @p357, @p358, @p359, @p360, @p361, @p362, @p363, @p364, @p365, @p366, @p367, @p368, @p369, @p370, @p371, @p372, @p373, @p374, @p375, @p376, @p377, @p378, @p379, @p380, @p381, @p382, @p383, @p384, @p385, @p386, @p387, @p388, @p389, @p390, @p391, @p392, @p393, @p394, @p395, @p396, @p397, @p398, @p399, @p400, +@p401, @p402, @p403, @p404, @p405, @p406, @p407, @p408, @p409, @p410, @p411, @p412, @p413, @p414, @p415, @p416, @p417, @p418, @p419, @p420, @p421, @p422, @p423, @p424, @p425, @p426, @p427, @p428, @p429, @p430, @p431, @p432, @p433, @p434, @p435, @p436, @p437, @p438, @p439, @p440, @p441, @p442, @p443, @p444, @p445, @p446, @p447, @p448, @p449, @p450, @p451, @p452, @p453, @p454, @p455, @p456, @p457, @p458, @p459, @p460, @p461, @p462, @p463, @p464, @p465, @p466, @p467, @p468, @p469, @p470, @p471, @p472, @p473, @p474, @p475, @p476, @p477, @p478, @p479, @p480, @p481, @p482, @p483, @p484, @p485, @p486, @p487, @p488, @p489, @p490, @p491, @p492, @p493, @p494, @p495, @p496, @p497, @p498, @p499, @p500, @p501, @p502, @p503, @p504, @p505, @p506, @p507, @p508, @p509, @p510, @p511, @p512, @p513, @p514, @p515, @p516, @p517, @p518, @p519, @p520, @p521, @p522, @p523, @p524, @p525, @p526, @p527, @p528, @p529, @p530, @p531, @p532, @p533, @p534, @p535, @p536, @p537, @p538, @p539, @p540, @p541, @p542, @p543, @p544, @p545, @p546, @p547, @p548, @p549, @p550, @p551, @p552, @p553, @p554, @p555, @p556, @p557, @p558, @p559, @p560, @p561, @p562, @p563, @p564, @p565, @p566, @p567, @p568, @p569, @p570, @p571, @p572, @p573, @p574, @p575, @p576, @p577, @p578, @p579, @p580, @p581, @p582, @p583, @p584, @p585, @p586, @p587, @p588, @p589, @p590, @p591, @p592, @p593, @p594, @p595, @p596, @p597, @p598, @p599, @p600, +@p601, @p602, @p603, @p604, @p605, @p606, @p607, @p608, @p609, @p610, @p611, @p612, @p613, @p614, @p615, @p616, @p617, @p618, @p619, @p620, @p621, @p622, @p623, @p624, @p625, @p626, @p627, @p628, @p629, @p630, @p631, @p632, @p633, @p634, @p635, @p636, @p637, @p638, @p639, @p640, @p641, @p642, @p643, @p644, @p645, @p646, @p647, @p648, @p649, @p650, @p651, @p652, @p653, @p654, @p655, @p656, @p657, @p658, @p659, @p660, @p661, @p662, @p663, @p664, @p665, @p666, @p667, @p668, @p669, @p670, @p671, @p672, @p673, @p674, @p675, @p676, @p677, @p678, @p679, @p680, @p681, @p682, @p683, @p684, @p685, @p686, @p687, @p688, @p689, @p690, @p691, @p692, @p693, @p694, @p695, @p696, @p697, @p698, @p699, @p700, @p701, @p702, @p703, @p704, @p705, @p706, @p707, @p708, @p709, @p710, @p711, @p712, @p713, @p714, @p715, @p716, @p717, @p718, @p719, @p720, @p721, @p722, @p723, @p724, @p725, @p726, @p727, @p728, @p729, @p730, @p731, @p732, @p733, @p734, @p735, @p736, @p737, @p738, @p739, @p740, @p741, @p742, @p743, @p744, @p745, @p746, @p747, @p748, @p749, @p750, @p751, @p752, @p753, @p754, @p755, @p756, @p757, @p758, @p759, @p760, @p761, @p762, @p763, @p764, @p765, @p766, @p767, @p768, @p769, @p770, @p771, @p772, @p773, @p774, @p775, @p776, @p777, @p778, @p779, @p780, @p781, @p782, @p783, @p784, @p785, @p786, @p787, @p788, @p789, @p790, @p791, @p792, @p793, @p794, @p795, @p796, @p797, @p798, @p799, @p800, +@p801, @p802, @p803, @p804, @p805, @p806, @p807, @p808, @p809, @p810, @p811, @p812, @p813, @p814, @p815, @p816, @p817, @p818, @p819, @p820, @p821, @p822, @p823, @p824, @p825, @p826, @p827, @p828, @p829, @p830, @p831, @p832, @p833, @p834, @p835, @p836, @p837, @p838, @p839, @p840, @p841, @p842, @p843, @p844, @p845, @p846, @p847, @p848, @p849, @p850, @p851, @p852, @p853, @p854, @p855, @p856, @p857, @p858, @p859, @p860, @p861, @p862, @p863, @p864, @p865, @p866, @p867, @p868, @p869, @p870, @p871, @p872, @p873, @p874, @p875, @p876, @p877, @p878, @p879, @p880, @p881, @p882, @p883, @p884, @p885, @p886, @p887, @p888, @p889, @p890, @p891, @p892, @p893, @p894, @p895, @p896, @p897, @p898, @p899, @p900, @p901, @p902, @p903, @p904, @p905, @p906, @p907, @p908, @p909, @p910, @p911, @p912, @p913, @p914, @p915, @p916, @p917, @p918, @p919, @p920, @p921, @p922, @p923, @p924, @p925, @p926, @p927, @p928, @p929, @p930, @p931, @p932, @p933, @p934, @p935, @p936, @p937, @p938, @p939, @p940, @p941, @p942, @p943, @p944, @p945, @p946, @p947, @p948, @p949, @p950, @p951, @p952, @p953, @p954, @p955, @p956, @p957, @p958, @p959, @p960, @p961, @p962, @p963, @p964, @p965, @p966, @p967, @p968, @p969, @p970, @p971, @p972, @p973, @p974, @p975, @p976, @p977, @p978, @p979, @p980, @p981, @p982, @p983, @p984, @p985, @p986, @p987, @p988, @p989, @p990, @p991, @p992, @p993, @p994, @p995, @p996, @p997, @p998, @p999, @p1000, +@p1001, @p1002, @p1003, @p1004, @p1005, @p1006, @p1007, @p1008, @p1009, @p1010, @p1011, @p1012, @p1013, @p1014, @p1015, @p1016, @p1017, @p1018, @p1019, @p1020, @p1021, @p1022, @p1023, @p1024, @p1025, @p1026, @p1027, @p1028, @p1029, @p1030, @p1031, @p1032, @p1033, @p1034, @p1035, @p1036, @p1037, @p1038, @p1039, @p1040, @p1041, @p1042, @p1043, @p1044, @p1045, @p1046, @p1047, @p1048, @p1049, @p1050, @p1051, @p1052, @p1053, @p1054, @p1055, @p1056, @p1057, @p1058, @p1059, @p1060, @p1061, @p1062, @p1063, @p1064, @p1065, @p1066, @p1067, @p1068, @p1069, @p1070, @p1071, @p1072, @p1073, @p1074, @p1075, @p1076, @p1077, @p1078, @p1079, @p1080, @p1081, @p1082, @p1083, @p1084, @p1085, @p1086, @p1087, @p1088, @p1089, @p1090, @p1091, @p1092, @p1093, @p1094, @p1095, @p1096, @p1097, @p1098, @p1099, @p1100, @p1101, @p1102, @p1103, @p1104, @p1105, @p1106, @p1107, @p1108, @p1109, @p1110, @p1111, @p1112, @p1113, @p1114, @p1115, @p1116, @p1117, @p1118, @p1119, @p1120, @p1121, @p1122, @p1123, @p1124, @p1125, @p1126, @p1127, @p1128, @p1129, @p1130, @p1131, @p1132, @p1133, @p1134, @p1135, @p1136, @p1137, @p1138, @p1139, @p1140, @p1141, @p1142, @p1143, @p1144, @p1145, @p1146, @p1147, @p1148, @p1149, @p1150, @p1151, @p1152, @p1153, @p1154, @p1155, @p1156, @p1157, @p1158, @p1159, @p1160, @p1161, @p1162, @p1163, @p1164, @p1165, @p1166, @p1167, @p1168, @p1169, @p1170, @p1171, @p1172, @p1173, @p1174, @p1175, @p1176, @p1177, @p1178, @p1179, @p1180, @p1181, @p1182, @p1183, @p1184, @p1185, @p1186, @p1187, @p1188, @p1189, @p1190, @p1191, @p1192, @p1193, @p1194, @p1195, @p1196, @p1197, @p1198, @p1199, @p1200; +Select @p1201, @p1202, @p1203, @p1204, @p1205, @p1206, @p1207, @p1208, @p1209, @p1210, @p1211, @p1212, @p1213, @p1214, @p1215, @p1216, @p1217, @p1218, @p1219, @p1220, @p1221, @p1222, @p1223, @p1224, @p1225, @p1226, @p1227, @p1228, @p1229, @p1230, @p1231, @p1232, @p1233, @p1234, @p1235, @p1236, @p1237, @p1238, @p1239, @p1240, @p1241, @p1242, @p1243, @p1244, @p1245, @p1246, @p1247, @p1248, @p1249, @p1250, @p1251, @p1252, @p1253, @p1254, @p1255, @p1256, @p1257, @p1258, @p1259, @p1260, @p1261, @p1262, @p1263, @p1264, @p1265, @p1266, @p1267, @p1268, @p1269, @p1270, @p1271, @p1272, @p1273, @p1274, @p1275, @p1276, @p1277, @p1278, @p1279, @p1280, @p1281, @p1282, @p1283, @p1284, @p1285, @p1286, @p1287, @p1288, @p1289, @p1290, @p1291, @p1292, @p1293, @p1294, @p1295, @p1296, @p1297, @p1298, @p1299, @p1300, @p1301, @p1302, @p1303, @p1304, @p1305, @p1306, @p1307, @p1308, @p1309, @p1310, @p1311, @p1312, @p1313, @p1314, @p1315, @p1316, @p1317, @p1318, @p1319, @p1320, @p1321, @p1322, @p1323, @p1324, @p1325, @p1326, @p1327, @p1328, @p1329, @p1330, @p1331, @p1332, @p1333, @p1334, @p1335, @p1336, @p1337, @p1338, @p1339, @p1340, @p1341, @p1342, @p1343, @p1344, @p1345, @p1346, @p1347, @p1348, @p1349, @p1350, @p1351, @p1352, @p1353, @p1354, @p1355, @p1356, @p1357, @p1358, @p1359, @p1360, @p1361, @p1362, @p1363, @p1364, @p1365, @p1366, @p1367, @p1368, @p1369, @p1370, @p1371, @p1372, @p1373, @p1374, @p1375, @p1376, @p1377, @p1378, @p1379, @p1380, @p1381, @p1382, @p1383, @p1384, @p1385, @p1386, @p1387, @p1388, @p1389, @p1390, @p1391, @p1392, @p1393, @p1394, @p1395, @p1396, @p1397, @p1398, @p1399, @p1400, +@p1401, @p1402, @p1403, @p1404, @p1405, @p1406, @p1407, @p1408, @p1409, @p1410, @p1411, @p1412, @p1413, @p1414, @p1415, @p1416, @p1417, @p1418, @p1419, @p1420, @p1421, @p1422, @p1423, @p1424, @p1425, @p1426, @p1427, @p1428, @p1429, @p1430, @p1431, @p1432, @p1433, @p1434, @p1435, @p1436, @p1437, @p1438, @p1439, @p1440, @p1441, @p1442, @p1443, @p1444, @p1445, @p1446, @p1447, @p1448, @p1449, @p1450, @p1451, @p1452, @p1453, @p1454, @p1455, @p1456, @p1457, @p1458, @p1459, @p1460, @p1461, @p1462, @p1463, @p1464, @p1465, @p1466, @p1467, @p1468, @p1469, @p1470, @p1471, @p1472, @p1473, @p1474, @p1475, @p1476, @p1477, @p1478, @p1479, @p1480, @p1481, @p1482, @p1483, @p1484, @p1485, @p1486, @p1487, @p1488, @p1489, @p1490, @p1491, @p1492, @p1493, @p1494, @p1495, @p1496, @p1497, @p1498, @p1499, @p1500, @p1501, @p1502, @p1503, @p1504, @p1505, @p1506, @p1507, @p1508, @p1509, @p1510, @p1511, @p1512, @p1513, @p1514, @p1515, @p1516, @p1517, @p1518, @p1519, @p1520, @p1521, @p1522, @p1523, @p1524, @p1525, @p1526, @p1527, @p1528, @p1529, @p1530, @p1531, @p1532, @p1533, @p1534, @p1535, @p1536, @p1537, @p1538, @p1539, @p1540, @p1541, @p1542, @p1543, @p1544, @p1545, @p1546, @p1547, @p1548, @p1549, @p1550, @p1551, @p1552, @p1553, @p1554, @p1555, @p1556, @p1557, @p1558, @p1559, @p1560, @p1561, @p1562, @p1563, @p1564, @p1565, @p1566, @p1567, @p1568, @p1569, @p1570, @p1571, @p1572, @p1573, @p1574, @p1575, @p1576, @p1577, @p1578, @p1579, @p1580, @p1581, @p1582, @p1583, @p1584, @p1585, @p1586, @p1587, @p1588, @p1589, @p1590, @p1591, @p1592, @p1593, @p1594, @p1595, @p1596, @p1597, @p1598, @p1599, @p1600, +@p1601, @p1602, @p1603, @p1604, @p1605, @p1606, @p1607, @p1608, @p1609, @p1610, @p1611, @p1612, @p1613, @p1614, @p1615, @p1616, @p1617, @p1618, @p1619, @p1620, @p1621, @p1622, @p1623, @p1624, @p1625, @p1626, @p1627, @p1628, @p1629, @p1630, @p1631, @p1632, @p1633, @p1634, @p1635, @p1636, @p1637, @p1638, @p1639, @p1640, @p1641, @p1642, @p1643, @p1644, @p1645, @p1646, @p1647, @p1648, @p1649, @p1650, @p1651, @p1652, @p1653, @p1654, @p1655, @p1656, @p1657, @p1658, @p1659, @p1660, @p1661, @p1662, @p1663, @p1664, @p1665, @p1666, @p1667, @p1668, @p1669, @p1670, @p1671, @p1672, @p1673, @p1674, @p1675, @p1676, @p1677, @p1678, @p1679, @p1680, @p1681, @p1682, @p1683, @p1684, @p1685, @p1686, @p1687, @p1688, @p1689, @p1690, @p1691, @p1692, @p1693, @p1694, @p1695, @p1696, @p1697, @p1698, @p1699, @p1700, @p1701, @p1702, @p1703, @p1704, @p1705, @p1706, @p1707, @p1708, @p1709, @p1710, @p1711, @p1712, @p1713, @p1714, @p1715, @p1716, @p1717, @p1718, @p1719, @p1720, @p1721, @p1722, @p1723, @p1724, @p1725, @p1726, @p1727, @p1728, @p1729, @p1730, @p1731, @p1732, @p1733, @p1734, @p1735, @p1736, @p1737, @p1738, @p1739, @p1740, @p1741, @p1742, @p1743, @p1744, @p1745, @p1746, @p1747, @p1748, @p1749, @p1750, @p1751, @p1752, @p1753, @p1754, @p1755, @p1756, @p1757, @p1758, @p1759, @p1760, @p1761, @p1762, @p1763, @p1764, @p1765, @p1766, @p1767, @p1768, @p1769, @p1770, @p1771, @p1772, @p1773, @p1774, @p1775, @p1776, @p1777, @p1778, @p1779, @p1780, @p1781, @p1782, @p1783, @p1784, @p1785, @p1786, @p1787, @p1788, @p1789, @p1790, @p1791, @p1792, @p1793, @p1794, @p1795, @p1796, @p1797, @p1798, @p1799, @p1800, +@p1801, @p1802, @p1803, @p1804, @p1805, @p1806, @p1807, @p1808, @p1809, @p1810, @p1811, @p1812, @p1813, @p1814, @p1815, @p1816, @p1817, @p1818, @p1819, @p1820, @p1821, @p1822, @p1823, @p1824, @p1825, @p1826, @p1827, @p1828, @p1829, @p1830, @p1831, @p1832, @p1833, @p1834, @p1835, @p1836, @p1837, @p1838, @p1839, @p1840, @p1841, @p1842, @p1843, @p1844, @p1845, @p1846, @p1847, @p1848, @p1849, @p1850, @p1851, @p1852, @p1853, @p1854, @p1855, @p1856, @p1857, @p1858, @p1859, @p1860, @p1861, @p1862, @p1863, @p1864, @p1865, @p1866, @p1867, @p1868, @p1869, @p1870, @p1871, @p1872, @p1873, @p1874, @p1875, @p1876, @p1877, @p1878, @p1879, @p1880, @p1881, @p1882, @p1883, @p1884, @p1885, @p1886, @p1887, @p1888, @p1889, @p1890, @p1891, @p1892, @p1893, @p1894, @p1895, @p1896, @p1897, @p1898, @p1899, @p1900, @p1901, @p1902, @p1903, @p1904, @p1905, @p1906, @p1907, @p1908, @p1909, @p1910, @p1911, @p1912, @p1913, @p1914, @p1915, @p1916, @p1917, @p1918, @p1919, @p1920, @p1921, @p1922, @p1923, @p1924, @p1925, @p1926, @p1927, @p1928, @p1929, @p1930, @p1931, @p1932, @p1933, @p1934, @p1935, @p1936, @p1937, @p1938, @p1939, @p1940, @p1941, @p1942, @p1943, @p1944, @p1945, @p1946, @p1947, @p1948, @p1949, @p1950, @p1951, @p1952, @p1953, @p1954, @p1955, @p1956, @p1957, @p1958, @p1959, @p1960, @p1961, @p1962, @p1963, @p1964, @p1965, @p1966, @p1967, @p1968, @p1969, @p1970, @p1971, @p1972, @p1973, @p1974, @p1975, @p1976, @p1977, @p1978, @p1979, @p1980, @p1981, @p1982, @p1983, @p1984, @p1985, @p1986, @p1987, @p1988, @p1989, @p1990, @p1991, @p1992, @p1993, @p1994, @p1995, @p1996, @p1997, @p1998, @p1999, @p2000, +@p2001, @p2002, @p2003, @p2004, @p2005, @p2006, @p2007, @p2008, @p2009, @p2010, @p2011, @p2012, @p2013, @p2014, @p2015, @p2016, @p2017, @p2018, @p2019, @p2020, @p2021, @p2022, @p2023, @p2024, @p2025, @p2026, @p2027, @p2028, @p2029, @p2030, @p2031, @p2032, @p2033, @p2034, @p2035, @p2036, @p2037, @p2038, @p2039, @p2040, @p2041, @p2042, @p2043, @p2044, @p2045, @p2046, @p2047, @p2048, @p2049, @p2050, @p2051, @p2052, @p2053, @p2054, @p2055, @p2056, @p2057, @p2058, @p2059, @p2060, @p2061, @p2062, @p2063, @p2064, @p2065, @p2066, @p2067, @p2068, @p2069, @p2070, @p2071, @p2072, @p2073, @p2074, @p2075, @p2076, @p2077, @p2078, @p2079, @p2080, @p2081, @p2082, @p2083, @p2084, @p2085, @p2086, @p2087, @p2088, @p2089, @p2090, @p2091, @p2092, @p2093, @p2094, @p2095, @p2096, @p2097, @p2098, @p2099, @p2100, @p2101 +' +EXEC SP_EXECUTE @handle, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, +338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, +658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, +978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, +1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, +1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, +1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, +2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101 + +#E#Too many arguments were provided: 2101. The maximum allowed limit is 2100 +#Q#declare @handle int; +EXEC SP_PREPEXEC @handle output, +N' +@p1 int, @p2 int, @p3 int, @p4 int, @p5 int, @p6 int, @p7 int, @p8 int, @p9 int, @p10 int, @p11 int, @p12 int, @p13 int, @p14 int, @p15 int, @p16 int, @p17 int, @p18 int, @p19 int, @p20 int, @p21 int, @p22 int, @p23 int, @p24 int, @p25 int, @p26 int, @p27 int, @p28 int, @p29 int, @p30 int, @p31 int, @p32 int, @p33 int, @p34 int, @p35 int, @p36 int, @p37 int, @p38 int, @p39 int, @p40 int, @p41 int, @p42 int, @p43 int, @p44 int, @p45 int, @p46 int, @p47 int, @p48 int, @p49 int, @p50 int, @p51 int, @p52 int, @p53 int, @p54 int, @p55 int, @p56 int, @p57 int, @p58 int, @p59 int, @p60 int, @p61 int, @p62 int, @p63 int, @p64 int, @p65 int, @p66 int, @p67 int, @p68 int, @p69 int, @p70 int, @p71 int, @p72 int, @p73 int, @p74 int, @p75 int, @p76 int, @p77 int, @p78 int, @p79 int, @p80 int, @p81 int, @p82 int, @p83 int, @p84 int, @p85 int, @p86 int, @p87 int, @p88 int, @p89 int, @p90 int, @p91 int, @p92 int, @p93 int, @p94 int, @p95 int, @p96 int, @p97 int, @p98 int, @p99 int, @p100 int, @p101 int, @p102 int, @p103 int, @p104 int, @p105 int, @p106 int, @p107 int, @p108 int, @p109 int, @p110 int, @p111 int, @p112 int, @p113 int, @p114 int, @p115 int, @p116 int, @p117 int, @p118 int, @p119 int, @p120 int, @p121 int, @p122 int, @p123 int, @p124 int, @p125 int, @p126 int, @p127 int, @p128 int, @p129 int, @p130 int, @p131 int, @p132 int, @p133 int, @p134 int, @p135 int, @p136 int, @p137 int, @p138 int, @p139 int, @p140 int, @p141 int, @p142 int, @p143 int, @p144 int, @p145 int, @p146 int, @p147 int, @p148 int, @p149 int, @p150 int, @p151 int, @p152 int, @p153 int, @p154 int, @p155 int, @p156 int, @p157 int, @p158 int, @p159 int, @p160 int, @p161 int, @p162 int, @p163 int, @p164 int, @p165 int, @p166 int, @p167 int, @p168 int, @p169 int, @p170 int, @p171 int, @p172 int, @p173 int, @p174 int, @p175 int, @p176 int, @p177 int, @p178 int, @p179 int, @p180 int, @p181 int, @p182 int, @p183 int, @p184 int, @p185 int, @p186 int, @p187 int, @p188 int, @p189 int, @p190 int, @p191 int, @p192 int, @p193 int, @p194 int, @p195 int, @p196 int, @p197 int, @p198 int, @p199 int, @p200 int, +@p201 int, @p202 int, @p203 int, @p204 int, @p205 int, @p206 int, @p207 int, @p208 int, @p209 int, @p210 int, @p211 int, @p212 int, @p213 int, @p214 int, @p215 int, @p216 int, @p217 int, @p218 int, @p219 int, @p220 int, @p221 int, @p222 int, @p223 int, @p224 int, @p225 int, @p226 int, @p227 int, @p228 int, @p229 int, @p230 int, @p231 int, @p232 int, @p233 int, @p234 int, @p235 int, @p236 int, @p237 int, @p238 int, @p239 int, @p240 int, @p241 int, @p242 int, @p243 int, @p244 int, @p245 int, @p246 int, @p247 int, @p248 int, @p249 int, @p250 int, @p251 int, @p252 int, @p253 int, @p254 int, @p255 int, @p256 int, @p257 int, @p258 int, @p259 int, @p260 int, @p261 int, @p262 int, @p263 int, @p264 int, @p265 int, @p266 int, @p267 int, @p268 int, @p269 int, @p270 int, @p271 int, @p272 int, @p273 int, @p274 int, @p275 int, @p276 int, @p277 int, @p278 int, @p279 int, @p280 int, @p281 int, @p282 int, @p283 int, @p284 int, @p285 int, @p286 int, @p287 int, @p288 int, @p289 int, @p290 int, @p291 int, @p292 int, @p293 int, @p294 int, @p295 int, @p296 int, @p297 int, @p298 int, @p299 int, @p300 int, @p301 int, @p302 int, @p303 int, @p304 int, @p305 int, @p306 int, @p307 int, @p308 int, @p309 int, @p310 int, @p311 int, @p312 int, @p313 int, @p314 int, @p315 int, @p316 int, @p317 int, @p318 int, @p319 int, @p320 int, @p321 int, @p322 int, @p323 int, @p324 int, @p325 int, @p326 int, @p327 int, @p328 int, @p329 int, @p330 int, @p331 int, @p332 int, @p333 int, @p334 int, @p335 int, @p336 int, @p337 int, @p338 int, @p339 int, @p340 int, @p341 int, @p342 int, @p343 int, @p344 int, @p345 int, @p346 int, @p347 int, @p348 int, @p349 int, @p350 int, @p351 int, @p352 int, @p353 int, @p354 int, @p355 int, @p356 int, @p357 int, @p358 int, @p359 int, @p360 int, @p361 int, @p362 int, @p363 int, @p364 int, @p365 int, @p366 int, @p367 int, @p368 int, @p369 int, @p370 int, @p371 int, @p372 int, @p373 int, @p374 int, @p375 int, @p376 int, @p377 int, @p378 int, @p379 int, @p380 int, @p381 int, @p382 int, @p383 int, @p384 int, @p385 int, @p386 int, @p387 int, @p388 int, @p389 int, @p390 int, @p391 int, @p392 int, @p393 int, @p394 int, @p395 int, @p396 int, @p397 int, @p398 int, @p399 int, @p400 int, +@p401 int, @p402 int, @p403 int, @p404 int, @p405 int, @p406 int, @p407 int, @p408 int, @p409 int, @p410 int, @p411 int, @p412 int, @p413 int, @p414 int, @p415 int, @p416 int, @p417 int, @p418 int, @p419 int, @p420 int, @p421 int, @p422 int, @p423 int, @p424 int, @p425 int, @p426 int, @p427 int, @p428 int, @p429 int, @p430 int, @p431 int, @p432 int, @p433 int, @p434 int, @p435 int, @p436 int, @p437 int, @p438 int, @p439 int, @p440 int, @p441 int, @p442 int, @p443 int, @p444 int, @p445 int, @p446 int, @p447 int, @p448 int, @p449 int, @p450 int, @p451 int, @p452 int, @p453 int, @p454 int, @p455 int, @p456 int, @p457 int, @p458 int, @p459 int, @p460 int, @p461 int, @p462 int, @p463 int, @p464 int, @p465 int, @p466 int, @p467 int, @p468 int, @p469 int, @p470 int, @p471 int, @p472 int, @p473 int, @p474 int, @p475 int, @p476 int, @p477 int, @p478 int, @p479 int, @p480 int, @p481 int, @p482 int, @p483 int, @p484 int, @p485 int, @p486 int, @p487 int, @p488 int, @p489 int, @p490 int, @p491 int, @p492 int, @p493 int, @p494 int, @p495 int, @p496 int, @p497 int, @p498 int, @p499 int, @p500 int, @p501 int, @p502 int, @p503 int, @p504 int, @p505 int, @p506 int, @p507 int, @p508 int, @p509 int, @p510 int, @p511 int, @p512 int, @p513 int, @p514 int, @p515 int, @p516 int, @p517 int, @p518 int, @p519 int, @p520 int, @p521 int, @p522 int, @p523 int, @p524 int, @p525 int, @p526 int, @p527 int, @p528 int, @p529 int, @p530 int, @p531 int, @p532 int, @p533 int, @p534 int, @p535 int, @p536 int, @p537 int, @p538 int, @p539 int, @p540 int, @p541 int, @p542 int, @p543 int, @p544 int, @p545 int, @p546 int, @p547 int, @p548 int, @p549 int, @p550 int, @p551 int, @p552 int, @p553 int, @p554 int, @p555 int, @p556 int, @p557 int, @p558 int, @p559 int, @p560 int, @p561 int, @p562 int, @p563 int, @p564 int, @p565 int, @p566 int, @p567 int, @p568 int, @p569 int, @p570 int, @p571 int, @p572 int, @p573 int, @p574 int, @p575 int, @p576 int, @p577 int, @p578 int, @p579 int, @p580 int, @p581 int, @p582 int, @p583 int, @p584 int, @p585 int, @p586 int, @p587 int, @p588 int, @p589 int, @p590 int, @p591 int, @p592 int, @p593 int, @p594 int, @p595 int, @p596 int, @p597 int, @p598 int, @p599 int, @p600 int, +@p601 int, @p602 int, @p603 int, @p604 int, @p605 int, @p606 int, @p607 int, @p608 int, @p609 int, @p610 int, @p611 int, @p612 int, @p613 int, @p614 int, @p615 int, @p616 int, @p617 int, @p618 int, @p619 int, @p620 int, @p621 int, @p622 int, @p623 int, @p624 int, @p625 int, @p626 int, @p627 int, @p628 int, @p629 int, @p630 int, @p631 int, @p632 int, @p633 int, @p634 int, @p635 int, @p636 int, @p637 int, @p638 int, @p639 int, @p640 int, @p641 int, @p642 int, @p643 int, @p644 int, @p645 int, @p646 int, @p647 int, @p648 int, @p649 int, @p650 int, @p651 int, @p652 int, @p653 int, @p654 int, @p655 int, @p656 int, @p657 int, @p658 int, @p659 int, @p660 int, @p661 int, @p662 int, @p663 int, @p664 int, @p665 int, @p666 int, @p667 int, @p668 int, @p669 int, @p670 int, @p671 int, @p672 int, @p673 int, @p674 int, @p675 int, @p676 int, @p677 int, @p678 int, @p679 int, @p680 int, @p681 int, @p682 int, @p683 int, @p684 int, @p685 int, @p686 int, @p687 int, @p688 int, @p689 int, @p690 int, @p691 int, @p692 int, @p693 int, @p694 int, @p695 int, @p696 int, @p697 int, @p698 int, @p699 int, @p700 int, @p701 int, @p702 int, @p703 int, @p704 int, @p705 int, @p706 int, @p707 int, @p708 int, @p709 int, @p710 int, @p711 int, @p712 int, @p713 int, @p714 int, @p715 int, @p716 int, @p717 int, @p718 int, @p719 int, @p720 int, @p721 int, @p722 int, @p723 int, @p724 int, @p725 int, @p726 int, @p727 int, @p728 int, @p729 int, @p730 int, @p731 int, @p732 int, @p733 int, @p734 int, @p735 int, @p736 int, @p737 int, @p738 int, @p739 int, @p740 int, @p741 int, @p742 int, @p743 int, @p744 int, @p745 int, @p746 int, @p747 int, @p748 int, @p749 int, @p750 int, @p751 int, @p752 int, @p753 int, @p754 int, @p755 int, @p756 int, @p757 int, @p758 int, @p759 int, @p760 int, @p761 int, @p762 int, @p763 int, @p764 int, @p765 int, @p766 int, @p767 int, @p768 int, @p769 int, @p770 int, @p771 int, @p772 int, @p773 int, @p774 int, @p775 int, @p776 int, @p777 int, @p778 int, @p779 int, @p780 int, @p781 int, @p782 int, @p783 int, @p784 int, @p785 int, @p786 int, @p787 int, @p788 int, @p789 int, @p790 int, @p791 int, @p792 int, @p793 int, @p794 int, @p795 int, @p796 int, @p797 int, @p798 int, @p799 int, @p800 int, +@p801 int, @p802 int, @p803 int, @p804 int, @p805 int, @p806 int, @p807 int, @p808 int, @p809 int, @p810 int, @p811 int, @p812 int, @p813 int, @p814 int, @p815 int, @p816 int, @p817 int, @p818 int, @p819 int, @p820 int, @p821 int, @p822 int, @p823 int, @p824 int, @p825 int, @p826 int, @p827 int, @p828 int, @p829 int, @p830 int, @p831 int, @p832 int, @p833 int, @p834 int, @p835 int, @p836 int, @p837 int, @p838 int, @p839 int, @p840 int, @p841 int, @p842 int, @p843 int, @p844 int, @p845 int, @p846 int, @p847 int, @p848 int, @p849 int, @p850 int, @p851 int, @p852 int, @p853 int, @p854 int, @p855 int, @p856 int, @p857 int, @p858 int, @p859 int, @p860 int, @p861 int, @p862 int, @p863 int, @p864 int, @p865 int, @p866 int, @p867 int, @p868 int, @p869 int, @p870 int, @p871 int, @p872 int, @p873 int, @p874 int, @p875 int, @p876 int, @p877 int, @p878 int, @p879 int, @p880 int, @p881 int, @p882 int, @p883 int, @p884 int, @p885 int, @p886 int, @p887 int, @p888 int, @p889 int, @p890 int, @p891 int, @p892 int, @p893 int, @p894 int, @p895 int, @p896 int, @p897 int, @p898 int, @p899 int, @p900 int, @p901 int, @p902 int, @p903 int, @p904 int, @p905 int, @p906 int, @p907 int, @p908 int, @p909 int, @p910 int, @p911 int, @p912 int, @p913 int, @p914 int, @p915 int, @p916 int, @p917 int, @p918 int, @p919 int, @p920 int, @p921 int, @p922 int, @p923 int, @p924 int, @p925 int, @p926 int, @p927 int, @p928 int, @p929 int, @p930 int, @p931 int, @p932 int, @p933 int, @p934 int, @p935 int, @p936 int, @p937 int, @p938 int, @p939 int, @p940 int, @p941 int, @p942 int, @p943 int, @p944 int, @p945 int, @p946 int, @p947 int, @p948 int, @p949 int, @p950 int, @p951 int, @p952 int, @p953 int, @p954 int, @p955 int, @p956 int, @p957 int, @p958 int, @p959 int, @p960 int, @p961 int, @p962 int, @p963 int, @p964 int, @p965 int, @p966 int, @p967 int, @p968 int, @p969 int, @p970 int, @p971 int, @p972 int, @p973 int, @p974 int, @p975 int, @p976 int, @p977 int, @p978 int, @p979 int, @p980 int, @p981 int, @p982 int, @p983 int, @p984 int, @p985 int, @p986 int, @p987 int, @p988 int, @p989 int, @p990 int, @p991 int, @p992 int, @p993 int, @p994 int, @p995 int, @p996 int, @p997 int, @p998 int, @p999 int, @p1000 int, +@p1001 int, @p1002 int, @p1003 int, @p1004 int, @p1005 int, @p1006 int, @p1007 int, @p1008 int, @p1009 int, @p1010 int, @p1011 int, @p1012 int, @p1013 int, @p1014 int, @p1015 int, @p1016 int, @p1017 int, @p1018 int, @p1019 int, @p1020 int, @p1021 int, @p1022 int, @p1023 int, @p1024 int, @p1025 int, @p1026 int, @p1027 int, @p1028 int, @p1029 int, @p1030 int, @p1031 int, @p1032 int, @p1033 int, @p1034 int, @p1035 int, @p1036 int, @p1037 int, @p1038 int, @p1039 int, @p1040 int, @p1041 int, @p1042 int, @p1043 int, @p1044 int, @p1045 int, @p1046 int, @p1047 int, @p1048 int, @p1049 int, @p1050 int, @p1051 int, @p1052 int, @p1053 int, @p1054 int, @p1055 int, @p1056 int, @p1057 int, @p1058 int, @p1059 int, @p1060 int, @p1061 int, @p1062 int, @p1063 int, @p1064 int, @p1065 int, @p1066 int, @p1067 int, @p1068 int, @p1069 int, @p1070 int, @p1071 int, @p1072 int, @p1073 int, @p1074 int, @p1075 int, @p1076 int, @p1077 int, @p1078 int, @p1079 int, @p1080 int, @p1081 int, @p1082 int, @p1083 int, @p1084 int, @p1085 int, @p1086 int, @p1087 int, @p1088 int, @p1089 int, @p1090 int, @p1091 int, @p1092 int, @p1093 int, @p1094 int, @p1095 int, @p1096 int, @p1097 int, @p1098 int, @p1099 int, @p1100 int, @p1101 int, @p1102 int, @p1103 int, @p1104 int, @p1105 int, @p1106 int, @p1107 int, @p1108 int, @p1109 int, @p1110 int, @p1111 int, @p1112 int, @p1113 int, @p1114 int, @p1115 int, @p1116 int, @p1117 int, @p1118 int, @p1119 int, @p1120 int, @p1121 int, @p1122 int, @p1123 int, @p1124 int, @p1125 int, @p1126 int, @p1127 int, @p1128 int, @p1129 int, @p1130 int, @p1131 int, @p1132 int, @p1133 int, @p1134 int, @p1135 int, @p1136 int, @p1137 int, @p1138 int, @p1139 int, @p1140 int, @p1141 int, @p1142 int, @p1143 int, @p1144 int, @p1145 int, @p1146 int, @p1147 int, @p1148 int, @p1149 int, @p1150 int, @p1151 int, @p1152 int, @p1153 int, @p1154 int, @p1155 int, @p1156 int, @p1157 int, @p1158 int, @p1159 int, @p1160 int, @p1161 int, @p1162 int, @p1163 int, @p1164 int, @p1165 int, @p1166 int, @p1167 int, @p1168 int, @p1169 int, @p1170 int, @p1171 int, @p1172 int, @p1173 int, @p1174 int, @p1175 int, @p1176 int, @p1177 int, @p1178 int, @p1179 int, @p1180 int, @p1181 int, @p1182 int, @p1183 int, @p1184 int, @p1185 int, @p1186 int, @p1187 int, @p1188 int, @p1189 int, @p1190 int, @p1191 int, @p1192 int, @p1193 int, @p1194 int, @p1195 int, @p1196 int, @p1197 int, @p1198 int, @p1199 int, @p1200 int, +@p1201 int, @p1202 int, @p1203 int, @p1204 int, @p1205 int, @p1206 int, @p1207 int, @p1208 int, @p1209 int, @p1210 int, @p1211 int, @p1212 int, @p1213 int, @p1214 int, @p1215 int, @p1216 int, @p1217 int, @p1218 int, @p1219 int, @p1220 int, @p1221 int, @p1222 int, @p1223 int, @p1224 int, @p1225 int, @p1226 int, @p1227 int, @p1228 int, @p1229 int, @p1230 int, @p1231 int, @p1232 int, @p1233 int, @p1234 int, @p1235 int, @p1236 int, @p1237 int, @p1238 int, @p1239 int, @p1240 int, @p1241 int, @p1242 int, @p1243 int, @p1244 int, @p1245 int, @p1246 int, @p1247 int, @p1248 int, @p1249 int, @p1250 int, @p1251 int, @p1252 int, @p1253 int, @p1254 int, @p1255 int, @p1256 int, @p1257 int, @p1258 int, @p1259 int, @p1260 int, @p1261 int, @p1262 int, @p1263 int, @p1264 int, @p1265 int, @p1266 int, @p1267 int, @p1268 int, @p1269 int, @p1270 int, @p1271 int, @p1272 int, @p1273 int, @p1274 int, @p1275 int, @p1276 int, @p1277 int, @p1278 int, @p1279 int, @p1280 int, @p1281 int, @p1282 int, @p1283 int, @p1284 int, @p1285 int, @p1286 int, @p1287 int, @p1288 int, @p1289 int, @p1290 int, @p1291 int, @p1292 int, @p1293 int, @p1294 int, @p1295 int, @p1296 int, @p1297 int, @p1298 int, @p1299 int, @p1300 int, @p1301 int, @p1302 int, @p1303 int, @p1304 int, @p1305 int, @p1306 int, @p1307 int, @p1308 int, @p1309 int, @p1310 int, @p1311 int, @p1312 int, @p1313 int, @p1314 int, @p1315 int, @p1316 int, @p1317 int, @p1318 int, @p1319 int, @p1320 int, @p1321 int, @p1322 int, @p1323 int, @p1324 int, @p1325 int, @p1326 int, @p1327 int, @p1328 int, @p1329 int, @p1330 int, @p1331 int, @p1332 int, @p1333 int, @p1334 int, @p1335 int, @p1336 int, @p1337 int, @p1338 int, @p1339 int, @p1340 int, @p1341 int, @p1342 int, @p1343 int, @p1344 int, @p1345 int, @p1346 int, @p1347 int, @p1348 int, @p1349 int, @p1350 int, @p1351 int, @p1352 int, @p1353 int, @p1354 int, @p1355 int, @p1356 int, @p1357 int, @p1358 int, @p1359 int, @p1360 int, @p1361 int, @p1362 int, @p1363 int, @p1364 int, @p1365 int, @p1366 int, @p1367 int, @p1368 int, @p1369 int, @p1370 int, @p1371 int, @p1372 int, @p1373 int, @p1374 int, @p1375 int, @p1376 int, @p1377 int, @p1378 int, @p1379 int, @p1380 int, @p1381 int, @p1382 int, @p1383 int, @p1384 int, @p1385 int, @p1386 int, @p1387 int, @p1388 int, @p1389 int, @p1390 int, @p1391 int, @p1392 int, @p1393 int, @p1394 int, @p1395 int, @p1396 int, @p1397 int, @p1398 int, @p1399 int, @p1400 int, +@p1401 int, @p1402 int, @p1403 int, @p1404 int, @p1405 int, @p1406 int, @p1407 int, @p1408 int, @p1409 int, @p1410 int, @p1411 int, @p1412 int, @p1413 int, @p1414 int, @p1415 int, @p1416 int, @p1417 int, @p1418 int, @p1419 int, @p1420 int, @p1421 int, @p1422 int, @p1423 int, @p1424 int, @p1425 int, @p1426 int, @p1427 int, @p1428 int, @p1429 int, @p1430 int, @p1431 int, @p1432 int, @p1433 int, @p1434 int, @p1435 int, @p1436 int, @p1437 int, @p1438 int, @p1439 int, @p1440 int, @p1441 int, @p1442 int, @p1443 int, @p1444 int, @p1445 int, @p1446 int, @p1447 int, @p1448 int, @p1449 int, @p1450 int, @p1451 int, @p1452 int, @p1453 int, @p1454 int, @p1455 int, @p1456 int, @p1457 int, @p1458 int, @p1459 int, @p1460 int, @p1461 int, @p1462 int, @p1463 int, @p1464 int, @p1465 int, @p1466 int, @p1467 int, @p1468 int, @p1469 int, @p1470 int, @p1471 int, @p1472 int, @p1473 int, @p1474 int, @p1475 int, @p1476 int, @p1477 int, @p1478 int, @p1479 int, @p1480 int, @p1481 int, @p1482 int, @p1483 int, @p1484 int, @p1485 int, @p1486 int, @p1487 int, @p1488 int, @p1489 int, @p1490 int, @p1491 int, @p1492 int, @p1493 int, @p1494 int, @p1495 int, @p1496 int, @p1497 int, @p1498 int, @p1499 int, @p1500 int, @p1501 int, @p1502 int, @p1503 int, @p1504 int, @p1505 int, @p1506 int, @p1507 int, @p1508 int, @p1509 int, @p1510 int, @p1511 int, @p1512 int, @p1513 int, @p1514 int, @p1515 int, @p1516 int, @p1517 int, @p1518 int, @p1519 int, @p1520 int, @p1521 int, @p1522 int, @p1523 int, @p1524 int, @p1525 int, @p1526 int, @p1527 int, @p1528 int, @p1529 int, @p1530 int, @p1531 int, @p1532 int, @p1533 int, @p1534 int, @p1535 int, @p1536 int, @p1537 int, @p1538 int, @p1539 int, @p1540 int, @p1541 int, @p1542 int, @p1543 int, @p1544 int, @p1545 int, @p1546 int, @p1547 int, @p1548 int, @p1549 int, @p1550 int, @p1551 int, @p1552 int, @p1553 int, @p1554 int, @p1555 int, @p1556 int, @p1557 int, @p1558 int, @p1559 int, @p1560 int, @p1561 int, @p1562 int, @p1563 int, @p1564 int, @p1565 int, @p1566 int, @p1567 int, @p1568 int, @p1569 int, @p1570 int, @p1571 int, @p1572 int, @p1573 int, @p1574 int, @p1575 int, @p1576 int, @p1577 int, @p1578 int, @p1579 int, @p1580 int, @p1581 int, @p1582 int, @p1583 int, @p1584 int, @p1585 int, @p1586 int, @p1587 int, @p1588 int, @p1589 int, @p1590 int, @p1591 int, @p1592 int, @p1593 int, @p1594 int, @p1595 int, @p1596 int, @p1597 int, @p1598 int, @p1599 int, @p1600 int, +@p1601 int, @p1602 int, @p1603 int, @p1604 int, @p1605 int, @p1606 int, @p1607 int, @p1608 int, @p1609 int, @p1610 int, @p1611 int, @p1612 int, @p1613 int, @p1614 int, @p1615 int, @p1616 int, @p1617 int, @p1618 int, @p1619 int, @p1620 int, @p1621 int, @p1622 int, @p1623 int, @p1624 int, @p1625 int, @p1626 int, @p1627 int, @p1628 int, @p1629 int, @p1630 int, @p1631 int, @p1632 int, @p1633 int, @p1634 int, @p1635 int, @p1636 int, @p1637 int, @p1638 int, @p1639 int, @p1640 int, @p1641 int, @p1642 int, @p1643 int, @p1644 int, @p1645 int, @p1646 int, @p1647 int, @p1648 int, @p1649 int, @p1650 int, @p1651 int, @p1652 int, @p1653 int, @p1654 int, @p1655 int, @p1656 int, @p1657 int, @p1658 int, @p1659 int, @p1660 int, @p1661 int, @p1662 int, @p1663 int, @p1664 int, @p1665 int, @p1666 int, @p1667 int, @p1668 int, @p1669 int, @p1670 int, @p1671 int, @p1672 int, @p1673 int, @p1674 int, @p1675 int, @p1676 int, @p1677 int, @p1678 int, @p1679 int, @p1680 int, @p1681 int, @p1682 int, @p1683 int, @p1684 int, @p1685 int, @p1686 int, @p1687 int, @p1688 int, @p1689 int, @p1690 int, @p1691 int, @p1692 int, @p1693 int, @p1694 int, @p1695 int, @p1696 int, @p1697 int, @p1698 int, @p1699 int, @p1700 int, @p1701 int, @p1702 int, @p1703 int, @p1704 int, @p1705 int, @p1706 int, @p1707 int, @p1708 int, @p1709 int, @p1710 int, @p1711 int, @p1712 int, @p1713 int, @p1714 int, @p1715 int, @p1716 int, @p1717 int, @p1718 int, @p1719 int, @p1720 int, @p1721 int, @p1722 int, @p1723 int, @p1724 int, @p1725 int, @p1726 int, @p1727 int, @p1728 int, @p1729 int, @p1730 int, @p1731 int, @p1732 int, @p1733 int, @p1734 int, @p1735 int, @p1736 int, @p1737 int, @p1738 int, @p1739 int, @p1740 int, @p1741 int, @p1742 int, @p1743 int, @p1744 int, @p1745 int, @p1746 int, @p1747 int, @p1748 int, @p1749 int, @p1750 int, @p1751 int, @p1752 int, @p1753 int, @p1754 int, @p1755 int, @p1756 int, @p1757 int, @p1758 int, @p1759 int, @p1760 int, @p1761 int, @p1762 int, @p1763 int, @p1764 int, @p1765 int, @p1766 int, @p1767 int, @p1768 int, @p1769 int, @p1770 int, @p1771 int, @p1772 int, @p1773 int, @p1774 int, @p1775 int, @p1776 int, @p1777 int, @p1778 int, @p1779 int, @p1780 int, @p1781 int, @p1782 int, @p1783 int, @p1784 int, @p1785 int, @p1786 int, @p1787 int, @p1788 int, @p1789 int, @p1790 int, @p1791 int, @p1792 int, @p1793 int, @p1794 int, @p1795 int, @p1796 int, @p1797 int, @p1798 int, @p1799 int, @p1800 int, +@p1801 int, @p1802 int, @p1803 int, @p1804 int, @p1805 int, @p1806 int, @p1807 int, @p1808 int, @p1809 int, @p1810 int, @p1811 int, @p1812 int, @p1813 int, @p1814 int, @p1815 int, @p1816 int, @p1817 int, @p1818 int, @p1819 int, @p1820 int, @p1821 int, @p1822 int, @p1823 int, @p1824 int, @p1825 int, @p1826 int, @p1827 int, @p1828 int, @p1829 int, @p1830 int, @p1831 int, @p1832 int, @p1833 int, @p1834 int, @p1835 int, @p1836 int, @p1837 int, @p1838 int, @p1839 int, @p1840 int, @p1841 int, @p1842 int, @p1843 int, @p1844 int, @p1845 int, @p1846 int, @p1847 int, @p1848 int, @p1849 int, @p1850 int, @p1851 int, @p1852 int, @p1853 int, @p1854 int, @p1855 int, @p1856 int, @p1857 int, @p1858 int, @p1859 int, @p1860 int, @p1861 int, @p1862 int, @p1863 int, @p1864 int, @p1865 int, @p1866 int, @p1867 int, @p1868 int, @p1869 int, @p1870 int, @p1871 int, @p1872 int, @p1873 int, @p1874 int, @p1875 int, @p1876 int, @p1877 int, @p1878 int, @p1879 int, @p1880 int, @p1881 int, @p1882 int, @p1883 int, @p1884 int, @p1885 int, @p1886 int, @p1887 int, @p1888 int, @p1889 int, @p1890 int, @p1891 int, @p1892 int, @p1893 int, @p1894 int, @p1895 int, @p1896 int, @p1897 int, @p1898 int, @p1899 int, @p1900 int, @p1901 int, @p1902 int, @p1903 int, @p1904 int, @p1905 int, @p1906 int, @p1907 int, @p1908 int, @p1909 int, @p1910 int, @p1911 int, @p1912 int, @p1913 int, @p1914 int, @p1915 int, @p1916 int, @p1917 int, @p1918 int, @p1919 int, @p1920 int, @p1921 int, @p1922 int, @p1923 int, @p1924 int, @p1925 int, @p1926 int, @p1927 int, @p1928 int, @p1929 int, @p1930 int, @p1931 int, @p1932 int, @p1933 int, @p1934 int, @p1935 int, @p1936 int, @p1937 int, @p1938 int, @p1939 int, @p1940 int, @p1941 int, @p1942 int, @p1943 int, @p1944 int, @p1945 int, @p1946 int, @p1947 int, @p1948 int, @p1949 int, @p1950 int, @p1951 int, @p1952 int, @p1953 int, @p1954 int, @p1955 int, @p1956 int, @p1957 int, @p1958 int, @p1959 int, @p1960 int, @p1961 int, @p1962 int, @p1963 int, @p1964 int, @p1965 int, @p1966 int, @p1967 int, @p1968 int, @p1969 int, @p1970 int, @p1971 int, @p1972 int, @p1973 int, @p1974 int, @p1975 int, @p1976 int, @p1977 int, @p1978 int, @p1979 int, @p1980 int, @p1981 int, @p1982 int, @p1983 int, @p1984 int, @p1985 int, @p1986 int, @p1987 int, @p1988 int, @p1989 int, @p1990 int, @p1991 int, @p1992 int, @p1993 int, @p1994 int, @p1995 int, @p1996 int, @p1997 int, @p1998 int, @p1999 int, @p2000 int, +@p2001 int, @p2002 int, @p2003 int, @p2004 int, @p2005 int, @p2006 int, @p2007 int, @p2008 int, @p2009 int, @p2010 int, @p2011 int, @p2012 int, @p2013 int, @p2014 int, @p2015 int, @p2016 int, @p2017 int, @p2018 int, @p2019 int, @p2020 int, @p2021 int, @p2022 int, @p2023 int, @p2024 int, @p2025 int, @p2026 int, @p2027 int, @p2028 int, @p2029 int, @p2030 int, @p2031 int, @p2032 int, @p2033 int, @p2034 int, @p2035 int, @p2036 int, @p2037 int, @p2038 int, @p2039 int, @p2040 int, @p2041 int, @p2042 int, @p2043 int, @p2044 int, @p2045 int, @p2046 int, @p2047 int, @p2048 int, @p2049 int, @p2050 int, @p2051 int, @p2052 int, @p2053 int, @p2054 int, @p2055 int, @p2056 int, @p2057 int, @p2058 int, @p2059 int, @p2060 int, @p2061 int, @p2062 int, @p2063 int, @p2064 int, @p2065 int, @p2066 int, @p2067 int, @p2068 int, @p2069 int, @p2070 int, @p2071 int, @p2072 int, @p2073 int, @p2074 int, @p2075 int, @p2076 int, @p2077 int, @p2078 int, @p2079 int, @p2080 int, @p2081 int, @p2082 int, @p2083 int, @p2084 int, @p2085 int, @p2086 int, @p2087 int, @p2088 int, @p2089 int, @p2090 int, @p2091 int, @p2092 int, @p2093 int, @p2094 int, @p2095 int, @p2096 int, @p2097 int, @p2098 int, @p2099 int, @p2100 int, @p2101 int +', +N' +Select +@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20, @p21, @p22, @p23, @p24, @p25, @p26, @p27, @p28, @p29, @p30, @p31, @p32, @p33, @p34, @p35, @p36, @p37, @p38, @p39, @p40, @p41, @p42, @p43, @p44, @p45, @p46, @p47, @p48, @p49, @p50, @p51, @p52, @p53, @p54, @p55, @p56, @p57, @p58, @p59, @p60, @p61, @p62, @p63, @p64, @p65, @p66, @p67, @p68, @p69, @p70, @p71, @p72, @p73, @p74, @p75, @p76, @p77, @p78, @p79, @p80, @p81, @p82, @p83, @p84, @p85, @p86, @p87, @p88, @p89, @p90, @p91, @p92, @p93, @p94, @p95, @p96, @p97, @p98, @p99, @p100, @p101, @p102, @p103, @p104, @p105, @p106, @p107, @p108, @p109, @p110, @p111, @p112, @p113, @p114, @p115, @p116, @p117, @p118, @p119, @p120, @p121, @p122, @p123, @p124, @p125, @p126, @p127, @p128, @p129, @p130, @p131, @p132, @p133, @p134, @p135, @p136, @p137, @p138, @p139, @p140, @p141, @p142, @p143, @p144, @p145, @p146, @p147, @p148, @p149, @p150, @p151, @p152, @p153, @p154, @p155, @p156, @p157, @p158, @p159, @p160, @p161, @p162, @p163, @p164, @p165, @p166, @p167, @p168, @p169, @p170, @p171, @p172, @p173, @p174, @p175, @p176, @p177, @p178, @p179, @p180, @p181, @p182, @p183, @p184, @p185, @p186, @p187, @p188, @p189, @p190, @p191, @p192, @p193, @p194, @p195, @p196, @p197, @p198, @p199, @p200, +@p201, @p202, @p203, @p204, @p205, @p206, @p207, @p208, @p209, @p210, @p211, @p212, @p213, @p214, @p215, @p216, @p217, @p218, @p219, @p220, @p221, @p222, @p223, @p224, @p225, @p226, @p227, @p228, @p229, @p230, @p231, @p232, @p233, @p234, @p235, @p236, @p237, @p238, @p239, @p240, @p241, @p242, @p243, @p244, @p245, @p246, @p247, @p248, @p249, @p250, @p251, @p252, @p253, @p254, @p255, @p256, @p257, @p258, @p259, @p260, @p261, @p262, @p263, @p264, @p265, @p266, @p267, @p268, @p269, @p270, @p271, @p272, @p273, @p274, @p275, @p276, @p277, @p278, @p279, @p280, @p281, @p282, @p283, @p284, @p285, @p286, @p287, @p288, @p289, @p290, @p291, @p292, @p293, @p294, @p295, @p296, @p297, @p298, @p299, @p300, @p301, @p302, @p303, @p304, @p305, @p306, @p307, @p308, @p309, @p310, @p311, @p312, @p313, @p314, @p315, @p316, @p317, @p318, @p319, @p320, @p321, @p322, @p323, @p324, @p325, @p326, @p327, @p328, @p329, @p330, @p331, @p332, @p333, @p334, @p335, @p336, @p337, @p338, @p339, @p340, @p341, @p342, @p343, @p344, @p345, @p346, @p347, @p348, @p349, @p350, @p351, @p352, @p353, @p354, @p355, @p356, @p357, @p358, @p359, @p360, @p361, @p362, @p363, @p364, @p365, @p366, @p367, @p368, @p369, @p370, @p371, @p372, @p373, @p374, @p375, @p376, @p377, @p378, @p379, @p380, @p381, @p382, @p383, @p384, @p385, @p386, @p387, @p388, @p389, @p390, @p391, @p392, @p393, @p394, @p395, @p396, @p397, @p398, @p399, @p400, +@p401, @p402, @p403, @p404, @p405, @p406, @p407, @p408, @p409, @p410, @p411, @p412, @p413, @p414, @p415, @p416, @p417, @p418, @p419, @p420, @p421, @p422, @p423, @p424, @p425, @p426, @p427, @p428, @p429, @p430, @p431, @p432, @p433, @p434, @p435, @p436, @p437, @p438, @p439, @p440, @p441, @p442, @p443, @p444, @p445, @p446, @p447, @p448, @p449, @p450, @p451, @p452, @p453, @p454, @p455, @p456, @p457, @p458, @p459, @p460, @p461, @p462, @p463, @p464, @p465, @p466, @p467, @p468, @p469, @p470, @p471, @p472, @p473, @p474, @p475, @p476, @p477, @p478, @p479, @p480, @p481, @p482, @p483, @p484, @p485, @p486, @p487, @p488, @p489, @p490, @p491, @p492, @p493, @p494, @p495, @p496, @p497, @p498, @p499, @p500, @p501, @p502, @p503, @p504, @p505, @p506, @p507, @p508, @p509, @p510, @p511, @p512, @p513, @p514, @p515, @p516, @p517, @p518, @p519, @p520, @p521, @p522, @p523, @p524, @p525, @p526, @p527, @p528, @p529, @p530, @p531, @p532, @p533, @p534, @p535, @p536, @p537, @p538, @p539, @p540, @p541, @p542, @p543, @p544, @p545, @p546, @p547, @p548, @p549, @p550, @p551, @p552, @p553, @p554, @p555, @p556, @p557, @p558, @p559, @p560, @p561, @p562, @p563, @p564, @p565, @p566, @p567, @p568, @p569, @p570, @p571, @p572, @p573, @p574, @p575, @p576, @p577, @p578, @p579, @p580, @p581, @p582, @p583, @p584, @p585, @p586, @p587, @p588, @p589, @p590, @p591, @p592, @p593, @p594, @p595, @p596, @p597, @p598, @p599, @p600, +@p601, @p602, @p603, @p604, @p605, @p606, @p607, @p608, @p609, @p610, @p611, @p612, @p613, @p614, @p615, @p616, @p617, @p618, @p619, @p620, @p621, @p622, @p623, @p624, @p625, @p626, @p627, @p628, @p629, @p630, @p631, @p632, @p633, @p634, @p635, @p636, @p637, @p638, @p639, @p640, @p641, @p642, @p643, @p644, @p645, @p646, @p647, @p648, @p649, @p650, @p651, @p652, @p653, @p654, @p655, @p656, @p657, @p658, @p659, @p660, @p661, @p662, @p663, @p664, @p665, @p666, @p667, @p668, @p669, @p670, @p671, @p672, @p673, @p674, @p675, @p676, @p677, @p678, @p679, @p680, @p681, @p682, @p683, @p684, @p685, @p686, @p687, @p688, @p689, @p690, @p691, @p692, @p693, @p694, @p695, @p696, @p697, @p698, @p699, @p700, @p701, @p702, @p703, @p704, @p705, @p706, @p707, @p708, @p709, @p710, @p711, @p712, @p713, @p714, @p715, @p716, @p717, @p718, @p719, @p720, @p721, @p722, @p723, @p724, @p725, @p726, @p727, @p728, @p729, @p730, @p731, @p732, @p733, @p734, @p735, @p736, @p737, @p738, @p739, @p740, @p741, @p742, @p743, @p744, @p745, @p746, @p747, @p748, @p749, @p750, @p751, @p752, @p753, @p754, @p755, @p756, @p757, @p758, @p759, @p760, @p761, @p762, @p763, @p764, @p765, @p766, @p767, @p768, @p769, @p770, @p771, @p772, @p773, @p774, @p775, @p776, @p777, @p778, @p779, @p780, @p781, @p782, @p783, @p784, @p785, @p786, @p787, @p788, @p789, @p790, @p791, @p792, @p793, @p794, @p795, @p796, @p797, @p798, @p799, @p800, +@p801, @p802, @p803, @p804, @p805, @p806, @p807, @p808, @p809, @p810, @p811, @p812, @p813, @p814, @p815, @p816, @p817, @p818, @p819, @p820, @p821, @p822, @p823, @p824, @p825, @p826, @p827, @p828, @p829, @p830, @p831, @p832, @p833, @p834, @p835, @p836, @p837, @p838, @p839, @p840, @p841, @p842, @p843, @p844, @p845, @p846, @p847, @p848, @p849, @p850, @p851, @p852, @p853, @p854, @p855, @p856, @p857, @p858, @p859, @p860, @p861, @p862, @p863, @p864, @p865, @p866, @p867, @p868, @p869, @p870, @p871, @p872, @p873, @p874, @p875, @p876, @p877, @p878, @p879, @p880, @p881, @p882, @p883, @p884, @p885, @p886, @p887, @p888, @p889, @p890, @p891, @p892, @p893, @p894, @p895, @p896, @p897, @p898, @p899, @p900, @p901, @p902, @p903, @p904, @p905, @p906, @p907, @p908, @p909, @p910, @p911, @p912, @p913, @p914, @p915, @p916, @p917, @p918, @p919, @p920, @p921, @p922, @p923, @p924, @p925, @p926, @p927, @p928, @p929, @p930, @p931, @p932, @p933, @p934, @p935, @p936, @p937, @p938, @p939, @p940, @p941, @p942, @p943, @p944, @p945, @p946, @p947, @p948, @p949, @p950, @p951, @p952, @p953, @p954, @p955, @p956, @p957, @p958, @p959, @p960, @p961, @p962, @p963, @p964, @p965, @p966, @p967, @p968, @p969, @p970, @p971, @p972, @p973, @p974, @p975, @p976, @p977, @p978, @p979, @p980, @p981, @p982, @p983, @p984, @p985, @p986, @p987, @p988, @p989, @p990, @p991, @p992, @p993, @p994, @p995, @p996, @p997, @p998, @p999, @p1000, +@p1001, @p1002, @p1003, @p1004, @p1005, @p1006, @p1007, @p1008, @p1009, @p1010, @p1011, @p1012, @p1013, @p1014, @p1015, @p1016, @p1017, @p1018, @p1019, @p1020, @p1021, @p1022, @p1023, @p1024, @p1025, @p1026, @p1027, @p1028, @p1029, @p1030, @p1031, @p1032, @p1033, @p1034, @p1035, @p1036, @p1037, @p1038, @p1039, @p1040, @p1041, @p1042, @p1043, @p1044, @p1045, @p1046, @p1047, @p1048, @p1049, @p1050, @p1051, @p1052, @p1053, @p1054, @p1055, @p1056, @p1057, @p1058, @p1059, @p1060, @p1061, @p1062, @p1063, @p1064, @p1065, @p1066, @p1067, @p1068, @p1069, @p1070, @p1071, @p1072, @p1073, @p1074, @p1075, @p1076, @p1077, @p1078, @p1079, @p1080, @p1081, @p1082, @p1083, @p1084, @p1085, @p1086, @p1087, @p1088, @p1089, @p1090, @p1091, @p1092, @p1093, @p1094, @p1095, @p1096, @p1097, @p1098, @p1099, @p1100, @p1101, @p1102, @p1103, @p1104, @p1105, @p1106, @p1107, @p1108, @p1109, @p1110, @p1111, @p1112, @p1113, @p1114, @p1115, @p1116, @p1117, @p1118, @p1119, @p1120, @p1121, @p1122, @p1123, @p1124, @p1125, @p1126, @p1127, @p1128, @p1129, @p1130, @p1131, @p1132, @p1133, @p1134, @p1135, @p1136, @p1137, @p1138, @p1139, @p1140, @p1141, @p1142, @p1143, @p1144, @p1145, @p1146, @p1147, @p1148, @p1149, @p1150, @p1151, @p1152, @p1153, @p1154, @p1155, @p1156, @p1157, @p1158, @p1159, @p1160, @p1161, @p1162, @p1163, @p1164, @p1165, @p1166, @p1167, @p1168, @p1169, @p1170, @p1171, @p1172, @p1173, @p1174, @p1175, @p1176, @p1177, @p1178, @p1179, @p1180, @p1181, @p1182, @p1183, @p1184, @p1185, @p1186, @p1187, @p1188, @p1189, @p1190, @p1191, @p1192, @p1193, @p1194, @p1195, @p1196, @p1197, @p1198, @p1199, @p1200; +Select @p1201, @p1202, @p1203, @p1204, @p1205, @p1206, @p1207, @p1208, @p1209, @p1210, @p1211, @p1212, @p1213, @p1214, @p1215, @p1216, @p1217, @p1218, @p1219, @p1220, @p1221, @p1222, @p1223, @p1224, @p1225, @p1226, @p1227, @p1228, @p1229, @p1230, @p1231, @p1232, @p1233, @p1234, @p1235, @p1236, @p1237, @p1238, @p1239, @p1240, @p1241, @p1242, @p1243, @p1244, @p1245, @p1246, @p1247, @p1248, @p1249, @p1250, @p1251, @p1252, @p1253, @p1254, @p1255, @p1256, @p1257, @p1258, @p1259, @p1260, @p1261, @p1262, @p1263, @p1264, @p1265, @p1266, @p1267, @p1268, @p1269, @p1270, @p1271, @p1272, @p1273, @p1274, @p1275, @p1276, @p1277, @p1278, @p1279, @p1280, @p1281, @p1282, @p1283, @p1284, @p1285, @p1286, @p1287, @p1288, @p1289, @p1290, @p1291, @p1292, @p1293, @p1294, @p1295, @p1296, @p1297, @p1298, @p1299, @p1300, @p1301, @p1302, @p1303, @p1304, @p1305, @p1306, @p1307, @p1308, @p1309, @p1310, @p1311, @p1312, @p1313, @p1314, @p1315, @p1316, @p1317, @p1318, @p1319, @p1320, @p1321, @p1322, @p1323, @p1324, @p1325, @p1326, @p1327, @p1328, @p1329, @p1330, @p1331, @p1332, @p1333, @p1334, @p1335, @p1336, @p1337, @p1338, @p1339, @p1340, @p1341, @p1342, @p1343, @p1344, @p1345, @p1346, @p1347, @p1348, @p1349, @p1350, @p1351, @p1352, @p1353, @p1354, @p1355, @p1356, @p1357, @p1358, @p1359, @p1360, @p1361, @p1362, @p1363, @p1364, @p1365, @p1366, @p1367, @p1368, @p1369, @p1370, @p1371, @p1372, @p1373, @p1374, @p1375, @p1376, @p1377, @p1378, @p1379, @p1380, @p1381, @p1382, @p1383, @p1384, @p1385, @p1386, @p1387, @p1388, @p1389, @p1390, @p1391, @p1392, @p1393, @p1394, @p1395, @p1396, @p1397, @p1398, @p1399, @p1400, +@p1401, @p1402, @p1403, @p1404, @p1405, @p1406, @p1407, @p1408, @p1409, @p1410, @p1411, @p1412, @p1413, @p1414, @p1415, @p1416, @p1417, @p1418, @p1419, @p1420, @p1421, @p1422, @p1423, @p1424, @p1425, @p1426, @p1427, @p1428, @p1429, @p1430, @p1431, @p1432, @p1433, @p1434, @p1435, @p1436, @p1437, @p1438, @p1439, @p1440, @p1441, @p1442, @p1443, @p1444, @p1445, @p1446, @p1447, @p1448, @p1449, @p1450, @p1451, @p1452, @p1453, @p1454, @p1455, @p1456, @p1457, @p1458, @p1459, @p1460, @p1461, @p1462, @p1463, @p1464, @p1465, @p1466, @p1467, @p1468, @p1469, @p1470, @p1471, @p1472, @p1473, @p1474, @p1475, @p1476, @p1477, @p1478, @p1479, @p1480, @p1481, @p1482, @p1483, @p1484, @p1485, @p1486, @p1487, @p1488, @p1489, @p1490, @p1491, @p1492, @p1493, @p1494, @p1495, @p1496, @p1497, @p1498, @p1499, @p1500, @p1501, @p1502, @p1503, @p1504, @p1505, @p1506, @p1507, @p1508, @p1509, @p1510, @p1511, @p1512, @p1513, @p1514, @p1515, @p1516, @p1517, @p1518, @p1519, @p1520, @p1521, @p1522, @p1523, @p1524, @p1525, @p1526, @p1527, @p1528, @p1529, @p1530, @p1531, @p1532, @p1533, @p1534, @p1535, @p1536, @p1537, @p1538, @p1539, @p1540, @p1541, @p1542, @p1543, @p1544, @p1545, @p1546, @p1547, @p1548, @p1549, @p1550, @p1551, @p1552, @p1553, @p1554, @p1555, @p1556, @p1557, @p1558, @p1559, @p1560, @p1561, @p1562, @p1563, @p1564, @p1565, @p1566, @p1567, @p1568, @p1569, @p1570, @p1571, @p1572, @p1573, @p1574, @p1575, @p1576, @p1577, @p1578, @p1579, @p1580, @p1581, @p1582, @p1583, @p1584, @p1585, @p1586, @p1587, @p1588, @p1589, @p1590, @p1591, @p1592, @p1593, @p1594, @p1595, @p1596, @p1597, @p1598, @p1599, @p1600, +@p1601, @p1602, @p1603, @p1604, @p1605, @p1606, @p1607, @p1608, @p1609, @p1610, @p1611, @p1612, @p1613, @p1614, @p1615, @p1616, @p1617, @p1618, @p1619, @p1620, @p1621, @p1622, @p1623, @p1624, @p1625, @p1626, @p1627, @p1628, @p1629, @p1630, @p1631, @p1632, @p1633, @p1634, @p1635, @p1636, @p1637, @p1638, @p1639, @p1640, @p1641, @p1642, @p1643, @p1644, @p1645, @p1646, @p1647, @p1648, @p1649, @p1650, @p1651, @p1652, @p1653, @p1654, @p1655, @p1656, @p1657, @p1658, @p1659, @p1660, @p1661, @p1662, @p1663, @p1664, @p1665, @p1666, @p1667, @p1668, @p1669, @p1670, @p1671, @p1672, @p1673, @p1674, @p1675, @p1676, @p1677, @p1678, @p1679, @p1680, @p1681, @p1682, @p1683, @p1684, @p1685, @p1686, @p1687, @p1688, @p1689, @p1690, @p1691, @p1692, @p1693, @p1694, @p1695, @p1696, @p1697, @p1698, @p1699, @p1700, @p1701, @p1702, @p1703, @p1704, @p1705, @p1706, @p1707, @p1708, @p1709, @p1710, @p1711, @p1712, @p1713, @p1714, @p1715, @p1716, @p1717, @p1718, @p1719, @p1720, @p1721, @p1722, @p1723, @p1724, @p1725, @p1726, @p1727, @p1728, @p1729, @p1730, @p1731, @p1732, @p1733, @p1734, @p1735, @p1736, @p1737, @p1738, @p1739, @p1740, @p1741, @p1742, @p1743, @p1744, @p1745, @p1746, @p1747, @p1748, @p1749, @p1750, @p1751, @p1752, @p1753, @p1754, @p1755, @p1756, @p1757, @p1758, @p1759, @p1760, @p1761, @p1762, @p1763, @p1764, @p1765, @p1766, @p1767, @p1768, @p1769, @p1770, @p1771, @p1772, @p1773, @p1774, @p1775, @p1776, @p1777, @p1778, @p1779, @p1780, @p1781, @p1782, @p1783, @p1784, @p1785, @p1786, @p1787, @p1788, @p1789, @p1790, @p1791, @p1792, @p1793, @p1794, @p1795, @p1796, @p1797, @p1798, @p1799, @p1800, +@p1801, @p1802, @p1803, @p1804, @p1805, @p1806, @p1807, @p1808, @p1809, @p1810, @p1811, @p1812, @p1813, @p1814, @p1815, @p1816, @p1817, @p1818, @p1819, @p1820, @p1821, @p1822, @p1823, @p1824, @p1825, @p1826, @p1827, @p1828, @p1829, @p1830, @p1831, @p1832, @p1833, @p1834, @p1835, @p1836, @p1837, @p1838, @p1839, @p1840, @p1841, @p1842, @p1843, @p1844, @p1845, @p1846, @p1847, @p1848, @p1849, @p1850, @p1851, @p1852, @p1853, @p1854, @p1855, @p1856, @p1857, @p1858, @p1859, @p1860, @p1861, @p1862, @p1863, @p1864, @p1865, @p1866, @p1867, @p1868, @p1869, @p1870, @p1871, @p1872, @p1873, @p1874, @p1875, @p1876, @p1877, @p1878, @p1879, @p1880, @p1881, @p1882, @p1883, @p1884, @p1885, @p1886, @p1887, @p1888, @p1889, @p1890, @p1891, @p1892, @p1893, @p1894, @p1895, @p1896, @p1897, @p1898, @p1899, @p1900, @p1901, @p1902, @p1903, @p1904, @p1905, @p1906, @p1907, @p1908, @p1909, @p1910, @p1911, @p1912, @p1913, @p1914, @p1915, @p1916, @p1917, @p1918, @p1919, @p1920, @p1921, @p1922, @p1923, @p1924, @p1925, @p1926, @p1927, @p1928, @p1929, @p1930, @p1931, @p1932, @p1933, @p1934, @p1935, @p1936, @p1937, @p1938, @p1939, @p1940, @p1941, @p1942, @p1943, @p1944, @p1945, @p1946, @p1947, @p1948, @p1949, @p1950, @p1951, @p1952, @p1953, @p1954, @p1955, @p1956, @p1957, @p1958, @p1959, @p1960, @p1961, @p1962, @p1963, @p1964, @p1965, @p1966, @p1967, @p1968, @p1969, @p1970, @p1971, @p1972, @p1973, @p1974, @p1975, @p1976, @p1977, @p1978, @p1979, @p1980, @p1981, @p1982, @p1983, @p1984, @p1985, @p1986, @p1987, @p1988, @p1989, @p1990, @p1991, @p1992, @p1993, @p1994, @p1995, @p1996, @p1997, @p1998, @p1999, @p2000, +@p2001, @p2002, @p2003, @p2004, @p2005, @p2006, @p2007, @p2008, @p2009, @p2010, @p2011, @p2012, @p2013, @p2014, @p2015, @p2016, @p2017, @p2018, @p2019, @p2020, @p2021, @p2022, @p2023, @p2024, @p2025, @p2026, @p2027, @p2028, @p2029, @p2030, @p2031, @p2032, @p2033, @p2034, @p2035, @p2036, @p2037, @p2038, @p2039, @p2040, @p2041, @p2042, @p2043, @p2044, @p2045, @p2046, @p2047, @p2048, @p2049, @p2050, @p2051, @p2052, @p2053, @p2054, @p2055, @p2056, @p2057, @p2058, @p2059, @p2060, @p2061, @p2062, @p2063, @p2064, @p2065, @p2066, @p2067, @p2068, @p2069, @p2070, @p2071, @p2072, @p2073, @p2074, @p2075, @p2076, @p2077, @p2078, @p2079, @p2080, @p2081, @p2082, @p2083, @p2084, @p2085, @p2086, @p2087, @p2088, @p2089, @p2090, @p2091, @p2092, @p2093, @p2094, @p2095, @p2096, @p2097, @p2098, @p2099, @p2100, @p2101 +', +1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, +338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, +658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, +978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, +1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, +1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, +1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, +2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101 + +#E#Too many arguments were provided: 2101. The maximum allowed limit is 2100 diff --git a/test/dotnet/dotnet.csproj b/test/dotnet/dotnet.csproj index 6430c5c02c0..382be9f9435 100644 --- a/test/dotnet/dotnet.csproj +++ b/test/dotnet/dotnet.csproj @@ -7,6 +7,7 @@ + diff --git a/test/dotnet/input/DDLExport/ddl_UDDT_UDTT.sql b/test/dotnet/input/DDLExport/ddl_UDDT_UDTT.sql new file mode 100644 index 00000000000..1fe41b62557 --- /dev/null +++ b/test/dotnet/input/DDLExport/ddl_UDDT_UDTT.sql @@ -0,0 +1,77 @@ +DROP TYPE IF EXISTS test1 +GO +DROP TYPE IF EXISTS test2 +GO +DROP TYPE IF EXISTS test4 +GO +DROP TYPE IF EXISTS LocationTableType +GO +DROP TYPE IF EXISTS InventoryItem +GO +DROP TYPE IF EXISTS shc_test.LocationTableType +GO +DROP TABLE IF EXISTS t_udd +GO +DROP TYPE IF EXISTS shc_test.test3 +GO +DROP SCHEMA IF EXISTS shc_test +GO + +CREATE TYPE test1 FROM varchar(11) NOT NULL ; +GO + +CREATE TYPE test2 FROM int NULL ; +GO + +CREATE SCHEMA shc_test +GO + +Create type shc_test.test3 FROM int NOT NULL ; +GO + +Create type test4 from numeric(15,4) +GO + +create table t_udd( a shc_test.test3); +go + +CREATE TYPE LocationTableType AS TABLE + ( LocationName VARCHAR(50) + , CostRate INT ); +GO + +CREATE TYPE InventoryItem AS TABLE +( + [Name] NVARCHAR(50) NOT NULL, + SupplierId BIGINT NOT NULL, + Price DECIMAL (18, 4) NULL, + PRIMARY KEY ( + Name + ) +) +GO + +CREATE TYPE shc_test.LocationTableType AS TABLE + ( LocationName VARCHAR(50) + , CostRate INT ); +GO +ddlexport#!#0 +GO +DROP TYPE IF EXISTS test1 +GO +DROP TYPE IF EXISTS test2 +GO +DROP TYPE IF EXISTS test4 +GO +DROP TYPE IF EXISTS LocationTableType +GO +DROP TYPE IF EXISTS InventoryItem +GO +DROP TYPE IF EXISTS shc_test.LocationTableType +GO +DROP TABLE IF EXISTS t_udd +GO +DROP TYPE IF EXISTS shc_test.test3 +GO +DROP SCHEMA IF EXISTS shc_test +GO diff --git a/test/dotnet/input/DDLExport/ddl_all_objects.sql b/test/dotnet/input/DDLExport/ddl_all_objects.sql new file mode 100644 index 00000000000..af76b805dbb --- /dev/null +++ b/test/dotnet/input/DDLExport/ddl_all_objects.sql @@ -0,0 +1,123 @@ +DROP VIEW IF EXISTS sys_all_views_select_vu_prepare +GO +DROP VIEW IF EXISTS sys_all_views_select_chk_option_vu_prepare +GO +DROP TABLE IF EXISTS sys_all_views_table_vu_prepare +GO +DROP TRIGGER IF EXISTS babel_1654_vu_prepare_trig_t +GO +DROP TABLE IF EXISTS babel_1654_vu_prepare_t +GO +drop procedure IF EXISTS routines_test_nvar; +go +drop function IF EXISTS routines_fc1; +go +drop function IF EXISTS routines_fc2; +go +drop function IF EXISTS routines_fc3; +go +drop function IF EXISTS routines_fc4; +go +drop function IF EXISTS routines_fc5; +go +drop function IF EXISTS routines_fc6; +go +DROP TABLE IF EXISTS test_tsql_const +GO +DROP TABLE IF EXISTS test_datetime +GO +DROP TABLE IF EXISTS test_tsql_collate +GO + +Create table test_tsql_const( + c_int int primary key, + c_bit sys.bit check(c_bit <> cast(1 as sys.bit)), + check(c_int < 10), + c_smallint smallint check(c_smallint < cast(cast(CAST('20' AS smallint) as sql_variant) as smallint)), + c_binary binary(8) check(c_binary > cast(0xfe as binary(8))), + c_varbinary varbinary(8) check(c_varbinary > cast(0xfe as varbinary(8))) +) +GO +Create table test_datetime( + c_time time check(cast(c_time as pg_catalog.time) < cast('09:00:00' as time) and c_time < cast('09:00:00' as time(6))), + c_date date check(c_date < cast('2001-01-01' as date)), + c_datetime datetime check(c_datetime < cast('2020-10-20 09:00:00' as datetime)), + c_datetime2 datetime2 check(c_datetime2 < cast('2020-10-20 09:00:00' as datetime2) and c_datetime2 < cast('2020-10-20 09:00:00' as datetime2(6)) ), + c_datetimeoffset datetimeoffset check(c_datetimeoffset < cast('12-10-25 12:32:10 +01:00' as sys.datetimeoffset) and c_datetimeoffset < cast('12-10-25 12:32:10 +01:00' as datetimeoffset(4))), + c_smalldatetime smalldatetime check(c_smalldatetime < cast('2007-05-08 12:35:29.123' AS smalldatetime)), +) +GO +create table test_tsql_collate( + c_varchar varchar check(c_varchar <> cast('sflkjasdlkfjf' as varchar(12)) COLLATE latin1_general_ci_as), + c_char char check(c_char <> cast('sflkjasdlkfjf' as char(7)) COLLATE japanese_ci_as), + c_nchar nchar check(cast(c_nchar as nchar(7)) <> cast('sflkjasdlkfjf' as nchar(7)) COLLATE bbf_unicode_cp1_ci_as), +) +GO + +create procedure routines_test_nvar(@test_nvar_a nvarchar , @test_nvar_b int = 8) +AS +BEGIN + SELECT @test_nvar_b=8; +END +go +create function routines_fc1(@fc1_a nvarchar) RETURNS nvarchar AS BEGIN return @fc1_a END; +go +create function routines_fc2(@fc2_a varchar) RETURNS varchar AS BEGIN return @fc2_a END; +go +create function routines_fc3(@fc3_a nchar) RETURNS nchar AS BEGIN return @fc3_a END; +go +create function routines_fc4(@fc4_a binary, @fc4_b tinyint, @fc4_c BIGINT, @fc4_d float) RETURNS binary AS BEGIN return @fc4_a END; +go +create function routines_fc5(@fc5_a varbinary) RETURNS varbinary AS BEGIN return @fc5_a END; +go +create function routines_fc6(@fc6_a char) RETURNS char AS BEGIN return @fc6_a END; +go + +create table babel_1654_vu_prepare_t ( ID INT IDENTITY (1,1) PRIMARY KEY , a varchar(50), b varchar(50)) +GO + +CREATE TRIGGER babel_1654_vu_prepare_trig_t on babel_1654_vu_prepare_t after update as + select COLUMNS_UPDATED(); +GO + +CREATE TABLE sys_all_views_table_vu_prepare(a int) +GO +CREATE VIEW sys_all_views_select_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare +GO +CREATE VIEW sys_all_views_select_chk_option_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare +WITH CHECK OPTION +GO +ddlexport#!#1 +GO +DROP VIEW IF EXISTS sys_all_views_select_vu_prepare +GO +DROP VIEW IF EXISTS sys_all_views_select_chk_option_vu_prepare +GO +DROP TABLE IF EXISTS sys_all_views_table_vu_prepare +GO +DROP TRIGGER IF EXISTS babel_1654_vu_prepare_trig_t +GO +DROP TABLE IF EXISTS babel_1654_vu_prepare_t +GO +drop procedure IF EXISTS routines_test_nvar; +go +drop function IF EXISTS routines_fc1; +go +drop function IF EXISTS routines_fc2; +go +drop function IF EXISTS routines_fc3; +go +drop function IF EXISTS routines_fc4; +go +drop function IF EXISTS routines_fc5; +go +drop function IF EXISTS routines_fc6; +go +DROP TABLE IF EXISTS test_tsql_const +GO +DROP TABLE IF EXISTS test_datetime +GO +DROP TABLE IF EXISTS test_tsql_collate +GO \ No newline at end of file diff --git a/test/dotnet/input/DDLExport/ddl_func_proc.sql b/test/dotnet/input/DDLExport/ddl_func_proc.sql new file mode 100644 index 00000000000..3a18c61d2d6 --- /dev/null +++ b/test/dotnet/input/DDLExport/ddl_func_proc.sql @@ -0,0 +1,255 @@ +drop procedure IF EXISTS routines_test_nvar; +go +drop procedure IF EXISTS routines_test_num; +go +drop procedure IF EXISTS routines_test_uid; +go +drop procedure IF EXISTS routines_test_b1; +go +drop procedure IF EXISTS routines_test_b2; +go +drop procedure IF EXISTS routines_test_b3; +go +drop procedure IF EXISTS routines_test_b4; +go +drop function IF EXISTS routines_test_b6; +go +DROP function IF EXISTS routines_func_nvar; +go +drop function IF EXISTS routines_test_func_opt; +go +drop function IF EXISTS routines_test_s; +go +drop function IF EXISTS routines_test_con; +go +drop procedure IF EXISTS routines_test_t; +go +drop procedure IF EXISTS routines_cur_var; +go +drop procedure IF EXISTS routines_test_def; +go +drop function IF EXISTS routines_fc1; +go +drop function IF EXISTS routines_fc2; +go +drop function IF EXISTS routines_fc3; +go +drop function IF EXISTS routines_fc4; +go +drop function IF EXISTS routines_fc5; +go +drop function IF EXISTS routines_fc6; +go +drop function IF EXISTS routines_fc7; +go +DROP TABLE IF EXISTS routines_customers; +go +drop procedure if exists storeoriginalquery_procedure; +go +drop function if exists storeOriginalQuery_function(); +go + +create procedure routines_test_nvar(@test_nvar_a nvarchar , @test_nvar_b int = 8) +AS +BEGIN + SELECT @test_nvar_b=8; +END +go +create function routines_fc1(@fc1_a nvarchar) RETURNS nvarchar AS BEGIN return @fc1_a END; +go +create function routines_fc2(@fc2_a varchar) RETURNS varchar AS BEGIN return @fc2_a END; +go +create function routines_fc3(@fc3_a nchar) RETURNS nchar AS BEGIN return @fc3_a END; +go +create function routines_fc4(@fc4_a binary, @fc4_b tinyint, @fc4_c BIGINT, @fc4_d float) RETURNS binary AS BEGIN return @fc4_a END; +go +create function routines_fc5(@fc5_a varbinary) RETURNS varbinary AS BEGIN return @fc5_a END; +go +create function routines_fc6(@fc6_a char) RETURNS char AS BEGIN return @fc6_a END; +go + +create procedure routines_test_uid(@test_uid_a uniqueidentifier output) +AS +BEGIN + set @test_uid_a ='ce8af10a-2709-43b0-9e4e-a02753929d17'; + SELECT @test_uid_a as test_uid_a; +END; +go +CREATE TABLE routines_customers +( customer_id int NOT NULL, + customer_name char(50) NOT NULL, + address char(50), + city char(50), + state char(25), + zip_code char(10), + CONSTRAINT customers_pk PRIMARY KEY (customer_id) +); +go +create procedure routines_test_b1 +AS +BEGIN + select * from customers; + select * from customers where customer_id = 25; + select count(state) from customers; +END; +go +create procedure routines_test_b2(@test_b2_name char(255), @test_b2_city char(255), @test_b2_id int, @test_b2_address char(255), @test_b2_state char(255), @test_b2_cust_id int) +AS +BEGIN + INSERT INTO customers (customer_name,address,city,state,customer_id) VALUES (@test_b2_name,@test_b2_address,@test_b2_city,@test_b2_state,@test_b2_cust_id); + DELETE from customers where customer_id = @test_b2_id; + ALTER TABLE customers ADD email varchar(255); +END; +go +create procedure routines_test_b3 @test_b3_paramout varchar(20) out +AS +BEGIN +SELECT @test_b3_paramout ='helloworld'; +END; +go +create procedure routines_test_b4(@test_b4_a int, @test_b4_b char(255), @test_b4_c char(255), @test_b4_d char(255)) +AS +SET @test_b4_a=10; SET Nocount ON; +DECLARE @test_b4_temp int =12; +BEGIN + INSERT INTO customers (customer_name,address,city,customer_id) VALUES (@test_b4_b,@test_b4_c,@test_b4_d,@test_b4_a); +END; +go + +create function routines_test_b6( + @test_b6_a INT, + @test_b6_b DEC(10,2), + @test_b6_c DEC(4,2) +) +RETURNS DEC(10,2) +AS +BEGIN + RETURN @test_b6_a * @test_b6_b * (1 - @test_b6_c); +END; +go +create function routines_func_nvar (@func_nvar_a nvarchar(23)) returns nvarchar(23) AS BEGIN return @func_nvar_a END; +go +CREATE FUNCTION routines_test_func_opt (@test_func_opt_name varchar(10)) +RETURNS INT + WITH RETURNS NULL ON NULL INPUT +AS +BEGIN + RETURN 2; +END; +go +create function routines_test_s (@test_s_a char(45)) RETURNS char(45) +WITH SCHEMABINDING +AS +BEGIN + RETURN @test_s_a; +END; +go +create function routines_test_con(@test_con_a int) +RETURNS INT + WITH CALLED ON NULL INPUT +AS +BEGIN +RETURN @test_con_a; +END; +go +create procedure routines_test_t (@test_t_a int) +AS +BEGIN + begin try + begin transaction + update Empl set Name ="Arman" where id =99; + update Empl set Name ="Anand" where id =100; + commit transaction + print 'transaction committed' + END try + BEGIN catch + rollback transaction + print 'rollback' + end catch +END; +go +CREATE PROCEDURE routines_test_def(@test_def_a int = 2, @test_def_b char(255) OUTPUT, @test_def_c varchar(20) = 'abc', @test_def_d varbinary(8)) +AS +BEGIN + SET @test_def_b = 'a'; + SELECT @test_def_a, @test_def_b, @test_def_c, @test_def_d; +END; +go +CREATE FUNCTION routines_fc7() +RETURNS @myRetTable table (a int PRIMARY KEY) +AS +BEGIN +INSERT INTO @myRetTable VALUES (1) +RETURN +END; +GO + +--create procedure with multiline comment +-- multiline comment with bracket around datatype +CREATE PROCEDURE storeOriginalQuery_procedure AS BEGIN DECLARE @storeOriginalQuery_var [varchar] (8000) END +go +--create function with multiline comment +-- multiline comment with bracket around datatype +CREATE FUNCTION storeOriginalQuery_function() RETURNS [VARCHAR](8000) AS BEGIN DECLARE @storeOriginalQuery_var [VARCHAR](8000) RETURN @storeOriginalQuery_var END +go +-- Create procedure with more than 4K characters +CREATE PROCEDURE proc_more_than_4k +AS +BEGIN +SELECT 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +END +GO +ddlexport#!#0 +GO +drop procedure IF EXISTS routines_test_nvar; +go +drop procedure IF EXISTS routines_test_num; +go +drop procedure IF EXISTS routines_test_uid; +go +drop procedure IF EXISTS routines_test_b1; +go +drop procedure IF EXISTS routines_test_b2; +go +drop procedure IF EXISTS routines_test_b3; +go +drop procedure IF EXISTS routines_test_b4; +go +drop function IF EXISTS routines_test_b6; +go +DROP function IF EXISTS routines_func_nvar; +go +drop function IF EXISTS routines_test_func_opt; +go +drop function IF EXISTS routines_test_s; +go +drop function IF EXISTS routines_test_con; +go +drop procedure IF EXISTS routines_test_t; +go +drop procedure IF EXISTS routines_cur_var; +go +drop procedure IF EXISTS routines_test_def; +go +drop function IF EXISTS routines_fc1; +go +drop function IF EXISTS routines_fc2; +go +drop function IF EXISTS routines_fc3; +go +drop function IF EXISTS routines_fc4; +go +drop function IF EXISTS routines_fc5; +go +drop function IF EXISTS routines_fc6; +go +drop function IF EXISTS routines_fc7; +go +DROP TABLE IF EXISTS routines_customers; +go +drop procedure IF EXISTS proc_more_than_4k; +go +drop procedure if exists storeoriginalquery_procedure; +go +drop function if exists storeOriginalQuery_function; +go \ No newline at end of file diff --git a/test/dotnet/input/DDLExport/ddl_partitions.sql b/test/dotnet/input/DDLExport/ddl_partitions.sql new file mode 100644 index 00000000000..ea1cd683af5 --- /dev/null +++ b/test/dotnet/input/DDLExport/ddl_partitions.sql @@ -0,0 +1,893 @@ + +-- This test files will check for scripting of partition functions, partition schemes, +-- partitioned tables and partitioned indexes. + +----------------------------------------------------- +--- Partition Function with All supported datatypes +----------------------------------------------------- +-- all datatypes should sort and store the values in ascending order by itself +-- and input values should be implicit casted into specified type + +-- using local variable in args +CREATE PARTITION FUNCTION IntPartitionFunction (int) +AS RANGE RIGHT FOR VALUES (0, 1000, 500); +GO + + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION BigIntPartitionFunction (sys.bigint) +AS RANGE RIGHT FOR VALUES (0, 10000, 100, 1000); +GO + +CREATE PARTITION FUNCTION SmallIntPartitionFunction (smallint) +AS RANGE RIGHT FOR VALUES (cast(32767 as bigint), -32768, 0); +GO + +-- explicit schema can also be specified with paramater type +CREATE PARTITION FUNCTION TinyIntPartitionFunction (sys.tinyint) +AS RANGE RIGHT FOR VALUES (0, cast(255 as varchar), 128); +GO + +CREATE PARTITION FUNCTION DecimalPartitionFunction (decimal(10, 5)) +AS RANGE RIGHT FOR VALUES (0.0, 300.0, 200.0, 100.0); +GO + +CREATE PARTITION FUNCTION NumericPartitionFunction (numeric(5, 2)) +AS RANGE RIGHT FOR VALUES (0.0, 30.0, 10.0, 20.0); +GO + +CREATE PARTITION FUNCTION MoneyPartitionFunction (MONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION SmallMoneyPartitionFunction (SMALLMONEY) +AS RANGE RIGHT FOR VALUES ($2.56789, ¥4.91, $3.56789); +GO + +CREATE PARTITION FUNCTION DatePartitionFunction (date) +AS RANGE RIGHT FOR VALUES ('2022-07-01', '2022-01-01','2023-01-01'); +GO + +-- should implicity cast it to input type +CREATE PARTITION FUNCTION DateTimePartitionFunction (datetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01 00:00:00', '2019-01-01 00:00:00'); +GO + +CREATE PARTITION FUNCTION DateTime2PartitionFunction (datetime2(3)) +AS RANGE RIGHT FOR VALUES ('2022-01-01 00:00:00.000', '2022-07-01 00:00:00.000', '2019-01-01 00:00:00.000'); +GO + +CREATE PARTITION FUNCTION SmallDateTimePartitionFunction (smalldatetime) +AS RANGE RIGHT FOR VALUES ('2022-01-01', '2022-07-01', '2019-01-01'); +GO + +CREATE PARTITION FUNCTION CharPartitionFunction (char(5)) +AS RANGE RIGHT FOR VALUES ('A', 'F', 'K', 'P', 'U', 'Z', 'D'); +GO + +CREATE PARTITION FUNCTION VarCharPartitionFunction (varchar(10)) +AS RANGE RIGHT FOR VALUES ('Apple', 'Banana', 'Mango', 'Cherry', 'Date'); +GO + +CREATE PARTITION FUNCTION NVarCharPartitionFunction (nvarchar(10)) +AS RANGE RIGHT FOR VALUES (N'Apple', N'Banana', N'Mango', N'Cherry', N'Date'); +GO + +CREATE PARTITION FUNCTION NCharPartitionFunction (nchar(5)) +AS RANGE RIGHT FOR VALUES (N'A', N'F', N'K', N'P', N'U', N'Z', N'B'); +GO + +CREATE PARTITION FUNCTION BinaryPartitionFunction (binary(4)) +AS RANGE RIGHT FOR VALUES (0x000, 0x800, 0x400, 0xC000); +GO + +CREATE PARTITION FUNCTION VarBinaryPartitionFunction (varbinary(8)) +AS RANGE RIGHT FOR VALUES (0x0000000000000000, 0x8000000000000000, 0x4000000000000000, 0xC000000000000000); +GO + +CREATE PARTITION FUNCTION UniqueIdentifierPartitionFunction (uniqueidentifier) +AS RANGE RIGHT FOR VALUES ('00000000-0000-0000-0000-000000000000', 'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF', '6F9619FF-8B86-D011-B42D-00C04FC964FF'); +GO + +-- identifier length greater than 64 +CREATE PARTITION FUNCTION PartitionFunctionNameGreaterThan64AndLessThan128abcdefghijklmnopqrstuvwxyz (bigint) +AS RANGE RIGHT FOR VALUES (0, 10000, 100, 1000); +GO + +CREATE PARTITION FUNCTION PartitionFunctionNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder (bigint) +AS RANGE RIGHT FOR VALUES (0, 10000, 100, 1000); +GO + +CREATE PARTITION FUNCTION PartitionFunctionHavingDifferentCollationInput (NVARCHAR(50)) +AS RANGE RIGHT +FOR VALUES ( + N'John Doe', + N'Jane Smith' COLLATE Latin1_General_CI_AS, + N'châu phố' COLLATE Vietnamese_CI_AS, + N'Müller GmbH' COLLATE Traditional_Spanish_CI_AS +); +GO + +-------------------------------------------------- +--- Partition Scheme +-------------------------------------------------- + +-- without all option +-- filegroups are equal to partition that will generated by function +CREATE PARTITION SCHEME IntPartitionScheme AS +PARTITION IntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- filgroups are more than partition that will generated by function +CREATE PARTITION SCHEME BigIntPartitionScheme AS +PARTITION BigIntPartitionFunction +TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]); +GO + +-- with all option +CREATE PARTITION SCHEME SmallIntPartitionScheme AS +PARTITION SmallIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME TinyIntPartitionScheme AS +PARTITION TinyIntPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DecimalPartitionScheme AS +PARTITION DecimalPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NumericPartitionScheme AS +PARTITION NumericPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME MoneyPartitionScheme AS +PARTITION MoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallMoneyPartitionScheme AS +PARTITION SmallMoneyPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DatePartitionScheme AS +PARTITION DatePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTimePartitionScheme AS +PARTITION DateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME DateTime2PartitionScheme AS +PARTITION DateTime2PartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME SmallDateTimePartitionScheme AS +PARTITION SmallDateTimePartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME CharPartitionScheme AS +PARTITION CharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarCharPartitionScheme AS +PARTITION VarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NVarCharPartitionScheme AS +PARTITION NVarCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME NCharPartitionScheme AS +PARTITION NCharPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME BinaryPartitionScheme AS +PARTITION BinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME VarBinaryPartitionScheme AS +PARTITION VarBinaryPartitionFunction +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME UniqueIdentifierPartitionScheme AS +PARTITION UniqueIdentifierPartitionFunction +ALL TO ([PRIMARY]); +GO + +-- identifier length greater than 64 +CREATE PARTITION SCHEME PartitionSchemeNameGreaterThan64AndLessThan128abcdefghijklmnopqrstuvwxyz AS +PARTITION PartitionFunctionNameGreaterThan64AndLessThan128abcdefghijklmnopqrstuvwxyz +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION SCHEME PartitionSchemeNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder AS +PARTITION PartitionFunctionNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder +ALL TO ([PRIMARY]); +GO + +CREATE SCHEMA PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz +GO + +CREATE TABLE PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.PartitionTableNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz ( + PartitionColumnNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz BIGINT, + Value sys.varchar(50) +) ON PartitionSchemeNameGreaterThan64AndLessThan128abcdefghijklmnopqrstuvwxyz (PartitionColumnNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz); +GO + +CREATE INDEX PartitionIndexNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz +ON PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.PartitionTableNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz(Value) +ON PartitionSchemeNameGreaterThan64AndLessThan128abcdefghijklmnopqrstuvwxyz +(PartitionColumnNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz); +GO + +CREATE TABLE PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.PartitionTableNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder ( + PartitionColumnNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz BIGINT, + Value sys.varchar(50) +) ON PartitionSchemeNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder +(PartitionColumnNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz); +GO + +CREATE INDEX PartitionIndexNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz +ON PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.PartitionTableNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder(Value) +ON PartitionSchemeNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder +(PartitionColumnNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz); +GO + +-------------------------------------------------- +--- name identifiers test +-------------------------------------------------- +CREATE PARTITION FUNCTION PARTITION_FUNCTIONログインαιώνια (int) +AS RANGE RIGHT FOR VALUES (0, 500, 1000); +GO + +CREATE PARTITION SCHEME PARTITION_SCHEMEログインαιώνια AS +PARTITION PARTITION_FUNCTIONログインαιώνια +ALL TO ([PRIMARY]); +GO + +CREATE PARTITION FUNCTION [PARTITION_FUNCTION 유니코드스키마👻 ] (int) +AS RANGE RIGHT FOR VALUES (0, 500, 1000); +GO + +CREATE PARTITION SCHEME [PARTITION_SCHEME 유니코드스키마👻 ] AS +PARTITION [PARTITION_FUNCTION 유니코드스키마👻 ] +ALL TO ([PRIMARY]); +GO + +CREATE TABLE [PARTITION_TABLE 유니코드스키마👻 ]( + [PARTITION_COLUMN 유니코드스키마👻 ] INT, + Value sys.varchar(50) +) ON [PARTITION_SCHEME 유니코드스키마👻 ]([PARTITION_COLUMN 유니코드스키마👻 ]); +GO + +CREATE INDEX [PARTITION_INDEX 유니코드스키마👻 ] +ON [PARTITION_TABLE 유니코드스키마👻 ](Value) +ON [PARTITION_SCHEME 유니코드스키마👻 ]([PARTITION_COLUMN 유니코드스키마👻 ]); +GO + +-- qouted identifer +SET QUOTED_IDENTIFIER ON; +GO + +CREATE PARTITION FUNCTION "PARTITION_FUNCTION 😎$@ #123 🌍rder " (int) +AS RANGE RIGHT FOR VALUES (0, 500, 1000); +GO + +CREATE PARTITION SCHEME "PARTITION_SCHEME 😎$@ #123 🌍rder " AS +PARTITION "PARTITION_FUNCTION 😎$@ #123 🌍rder " +ALL TO ([PRIMARY]); +GO + + +CREATE TABLE "PARTITION_TABLE 😎$@ #123 🌍rder " ( + "PARTITION_COLUMN 😎$@ #123 🌍rder " INT, + Value sys.varchar(50) +) ON "PARTITION_SCHEME 😎$@ #123 🌍rder " ("PARTITION_COLUMN 😎$@ #123 🌍rder "); +GO + +CREATE INDEX "PARTITION_INDEX 😎$@ #123 🌍rder " +ON "PARTITION_TABLE 😎$@ #123 🌍rder " (Value) +ON "PARTITION_SCHEME 😎$@ #123 🌍rder "("PARTITION_COLUMN 😎$@ #123 🌍rder "); +GO + +SET QUOTED_IDENTIFIER OFF; +Go + + +--------------------------------------------------------------------------- +--- CREATE PARTITIONED TABLES with PARTITION SCHEME for different datatypes +--------------------------------------------------------------------------- +-- int data type +CREATE TABLE partition_vu_prepare_int_table ( + Id INT UNIQUE, + Value sys.varchar(50) +) ON IntPartitionScheme(Id); +GO + +-- add constraint +ALTER TABLE partition_vu_prepare_int_table ADD CONSTRAINT check_value_not_null CHECK(value IS NOT NULL); +GO + +-- bigint data type +CREATE TABLE partition_vu_prepare_bigint_table ( + Id BIGINT, + Value sys.varchar(50) +) ON BigIntPartitionScheme--this is comment should get ignored +(Id); +GO + +-- smallint data type +CREATE TABLE partition_vu_prepare_smallint_table ( + Id SMALLINT, + Value sys.varchar(50) +) ON SmallIntPartitionScheme(Id); +GO + +-- tinyint data type +CREATE TABLE partition_vu_prepare_tinyint_table ( + Id TINYINT, + Value sys.varchar(50) +) ON TinyIntPartitionScheme(Id); +GO + +-- decimal data type +CREATE TABLE partition_vu_prepare_decimal_table ( + Id DECIMAL(10, 5), + Value sys.varchar(50) +) ON DecimalPartitionScheme(Id); +GO + +-- numeric data type +CREATE TABLE partition_vu_prepare_numeric_table ( + Id NUMERIC(5, 2), + Value sys.varchar(50) +) ON NumericPartitionScheme(Id); +GO + +-- money data type +CREATE TABLE partition_vu_prepare_money_table ( + Id MONEY, + Value sys.varchar(50) +) ON MoneyPartitionScheme(Id); +GO + +-- smallmoney data type +CREATE TABLE partition_vu_prepare_smallmoney_table ( + Id SMALLMONEY, + Value sys.varchar(50) +) ON SmallMoneyPartitionScheme(Id); +GO + +-- date data type +CREATE TABLE partition_vu_prepare_date_table ( + Id DATE, + Value sys.varchar(50) +) ON DatePartitionScheme(Id); +GO + +-- datetime data type +CREATE TABLE partition_vu_prepare_datetime_table ( + Id DATETIME, + Value sys.varchar(50) +) ON DateTimePartitionScheme(Id); +GO + +-- datetime2 data type +CREATE TABLE partition_vu_prepare_datetime2_table ( + Id DATETIME2(3), + Value sys.varchar(50) +) ON DateTime2PartitionScheme(Id); +GO + +-- smalldatetime data type +CREATE TABLE partition_vu_prepare_smalldatetime_table ( + Id SMALLDATETIME, + Value sys.varchar(50) +) ON SmallDateTimePartitionScheme(Id); +GO + +-- char data type +CREATE TABLE partition_vu_prepare_char_table ( + Id CHAR(5), + Value sys.varchar(50) +) ON CharPartitionScheme(Id); +GO + +-- varchar data type +CREATE TABLE partition_vu_prepare_varchar_table ( + Id VARCHAR(10), + Value sys.varchar(50) +) ON VarCharPartitionScheme(Id); +GO + +-- nvarchar data type +CREATE TABLE partition_vu_prepare_nvarchar_table ( + Id NVARCHAR(10), + Value sys.varchar(50) +) ON NVarCharPartitionScheme(Id); +GO + +-- nchar data type +CREATE TABLE partition_vu_prepare_nchar_table ( + Id NCHAR(5), + Value sys.varchar(50) +) ON NCharPartitionScheme(Id); +GO + +-- binary data type +CREATE TABLE partition_vu_prepare_binary_table ( + Id BINARY(4), + Value sys.varchar(50) +) ON BinaryPartitionScheme(Id); +GO + +-- varbinary data type +CREATE TABLE partition_vu_prepare_varbinary_table ( + Id VARBINARY(8), + Value sys.varchar(50) +) ON VarBinaryPartitionScheme(Id); +GO + +-- uniqueidentifier data type +CREATE TABLE partition_vu_prepare_uniqueidentifier_table ( + Id UNIQUEIDENTIFIER, + Value sys.varchar(50) +) ON UniqueIdentifierPartitionScheme(Id); +GO + +-- identifier length greater than 64 +CREATE TABLE PartitionTableNameGreaterThan64AndLessThan128abcdefghijklmnopqrstuvwxyz ( + Id INT, + Value sys.varchar(50) +) ON IntPartitionScheme(Id); +GO + +--------------------------------------------------------------------------- +--- CREATE ALIGNED PARTITIONED INDEX with PARTITION SCHEME +--------------------------------------------------------------------------- +-- using schema name +CREATE INDEX partition_vu_prepare_int_index +ON dbo.partition_vu_prepare_int_table(Value) +ON IntPartitionScheme (Id); +GO + +-- without explicit schema name +CREATE INDEX partition_vu_prepare_bigint_index +ON partition_vu_prepare_bigint_table(Id) +ON BigIntPartitionScheme (Id); +GO + +-- without partition scheme should also work +CREATE INDEX partition_vu_prepare_smallint_index +ON partition_vu_prepare_smallint_table--this is comment should get ignored +(Id) +GO + +CREATE INDEX partition_vu_prepare_tinyint_index +ON partition_vu_prepare_tinyint_table(Id) +ON TinyIntPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_decimal_index +ON partition_vu_prepare_decimal_table(Id) +ON DecimalPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_numeric_index +ON partition_vu_prepare_numeric_table(Id) +ON NumericPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_money_index +ON partition_vu_prepare_money_table(Id) +ON MoneyPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_smallmoney_index +ON partition_vu_prepare_smallmoney_table(Id) +ON SmallMoneyPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_date_index +ON partition_vu_prepare_date_table(Id) +ON DatePartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_datetime_index +ON partition_vu_prepare_datetime_table(Id) +ON DateTimePartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_datetime2_index +ON partition_vu_prepare_datetime2_table(Id) +ON DateTime2PartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_smalldatetime_index +ON partition_vu_prepare_smalldatetime_table(Id) +ON SmallDateTimePartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_char_index +ON partition_vu_prepare_char_table(Id) +ON CharPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_varchar_index +ON partition_vu_prepare_varchar_table(Id) +ON VarCharPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_nvarchar_index +ON partition_vu_prepare_nvarchar_table(Id) +ON NVarCharPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_nchar_index +ON partition_vu_prepare_nchar_table(Id) +ON NCharPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_binary_index +ON partition_vu_prepare_binary_table(Id) +ON BinaryPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_varbinary_index +ON partition_vu_prepare_varbinary_table(Id) +ON VarBinaryPartitionScheme (Id); +GO + +CREATE INDEX partition_vu_prepare_uniqueidentifier_index +ON partition_vu_prepare_uniqueidentifier_table(Id) +ON UniqueIdentifierPartitionScheme (Id); +GO +ddlexport#!#0 +GO +-------------------------------------------------- +--- DROP Partitioned Index +-------------------------------------------------- + + +DROP INDEX partition_vu_prepare_uniqueidentifier_index ON partition_vu_prepare_uniqueidentifier_table; +GO + +DROP INDEX partition_vu_prepare_varbinary_index ON partition_vu_prepare_varbinary_table; +GO + +DROP INDEX partition_vu_prepare_binary_index ON partition_vu_prepare_binary_table; +GO + +DROP INDEX partition_vu_prepare_nchar_index ON partition_vu_prepare_nchar_table; +GO + +DROP INDEX partition_vu_prepare_nvarchar_index ON partition_vu_prepare_nvarchar_table; +GO + +DROP INDEX partition_vu_prepare_varchar_index ON partition_vu_prepare_varchar_table; +GO + +DROP INDEX partition_vu_prepare_char_index ON partition_vu_prepare_char_table; +GO + +DROP INDEX partition_vu_prepare_smalldatetime_index ON partition_vu_prepare_smalldatetime_table; +GO + +DROP INDEX partition_vu_prepare_datetime2_index ON partition_vu_prepare_datetime2_table; +GO + +DROP INDEX partition_vu_prepare_datetime_index ON partition_vu_prepare_datetime_table; +GO + +DROP INDEX partition_vu_prepare_date_index ON partition_vu_prepare_date_table; +GO + +DROP INDEX partition_vu_prepare_smallmoney_index ON partition_vu_prepare_smallmoney_table; +GO + +DROP INDEX partition_vu_prepare_money_index ON partition_vu_prepare_money_table; +GO + +DROP INDEX partition_vu_prepare_numeric_index ON partition_vu_prepare_numeric_table; +GO + +DROP INDEX partition_vu_prepare_decimal_index ON partition_vu_prepare_decimal_table; +GO + +DROP INDEX partition_vu_prepare_tinyint_index ON partition_vu_prepare_tinyint_table; +GO + +DROP INDEX partition_vu_prepare_smallint_index ON partition_vu_prepare_smallint_table; +GO + +DROP INDEX partition_vu_prepare_bigint_index ON partition_vu_prepare_bigint_table; +GO + +DROP INDEX partition_vu_prepare_int_index ON partition_vu_prepare_int_table; +GO + +DROP INDEX [PARTITION_INDEX 유니코드스키마👻 ] ON [PARTITION_TABLE 유니코드스키마👻 ] +GO + +SET QUOTED_IDENTIFIER ON; +GO + +DROP INDEX "PARTITION_INDEX 😎$@ #123 🌍rder " ON "PARTITION_TABLE 😎$@ #123 🌍rder " +GO + +SET QUOTED_IDENTIFIER OFF; +GO + +DROP INDEX PartitionIndexNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz +ON PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.PartitionTableNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz +GO + +DROP INDEX PartitionIndexNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz +ON PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.PartitionTableNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder +GO +-------------------------------------------------- +--- DROP Partitioned Table +-------------------------------------------------- + +DROP TABLE partition_vu_prepare_uniqueidentifier_table; +GO + +DROP TABLE partition_vu_prepare_varbinary_table; +GO + +DROP TABLE partition_vu_prepare_binary_table; +GO + +DROP TABLE partition_vu_prepare_nchar_table; +GO + +DROP TABLE partition_vu_prepare_nvarchar_table; +GO + +DROP TABLE partition_vu_prepare_varchar_table; +GO + +DROP TABLE partition_vu_prepare_char_table; +GO + +DROP TABLE partition_vu_prepare_smalldatetime_table; +GO + +DROP TABLE partition_vu_prepare_datetime2_table; +GO + +DROP TABLE partition_vu_prepare_datetime_table; +GO + +DROP TABLE partition_vu_prepare_date_table; +GO + +DROP TABLE partition_vu_prepare_smallmoney_table; +GO + +DROP TABLE partition_vu_prepare_money_table; +GO + +DROP TABLE partition_vu_prepare_numeric_table; +GO + +DROP TABLE partition_vu_prepare_decimal_table; +GO + +DROP TABLE partition_vu_prepare_tinyint_table; +GO + +DROP TABLE partition_vu_prepare_smallint_table; +GO + +DROP TABLE partition_vu_prepare_bigint_table; +GO + +DROP TABLE partition_vu_prepare_int_table; +GO + +DROP TABLE PartitionTableNameGreaterThan64AndLessThan128abcdefghijklmnopqrstuvwxyz +GO + + +DROP TABLE [PARTITION_TABLE 유니코드스키마👻 ] +GO + +SET QUOTED_IDENTIFIER ON; +GO + +DROP TABLE "PARTITION_TABLE 😎$@ #123 🌍rder " +GO + +SET QUOTED_IDENTIFIER OFF; +GO + +DROP TABLE PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.PartitionTableNameGreaterThan128abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyz +GO + +DROP TABLE PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz.PartitionTableNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder +GO + +DROP SCHEMA PartitionSchemaNameGreaterThan64abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz +GO +-------------------------------------------------- +--- DROP Partition Scheme +-------------------------------------------------- +DROP PARTITION SCHEME IntPartitionScheme +GO + +DROP PARTITION SCHEME BigIntPartitionScheme +GO + +DROP PARTITION SCHEME SmallIntPartitionScheme +GO + +DROP PARTITION SCHEME TinyIntPartitionScheme +GO + +DROP PARTITION SCHEME DecimalPartitionScheme +GO + +DROP PARTITION SCHEME NumericPartitionScheme +GO + +DROP PARTITION SCHEME MoneyPartitionScheme +GO + +DROP PARTITION SCHEME SmallMoneyPartitionScheme +GO + +DROP PARTITION SCHEME DatePartitionScheme +GO + +DROP PARTITION SCHEME DateTimePartitionScheme +GO + +DROP PARTITION SCHEME DateTime2PartitionScheme +GO + +DROP PARTITION SCHEME SmallDateTimePartitionScheme +GO + +DROP PARTITION SCHEME CharPartitionScheme +GO + +DROP PARTITION SCHEME VarCharPartitionScheme +GO + +DROP PARTITION SCHEME NVarCharPartitionScheme +GO + +DROP PARTITION SCHEME NCharPartitionScheme +GO + +DROP PARTITION SCHEME BinaryPartitionScheme +GO + +DROP PARTITION SCHEME VarBinaryPartitionScheme +GO + +DROP PARTITION SCHEME UniqueIdentifierPartitionScheme +GO + +DROP PARTITION SCHEME PartitionSchemeNameGreaterThan64AndLessThan128abcdefghijklmnopqrstuvwxyz +GO + +DROP PARTITION SCHEME PARTITION_SCHEMEログインαιώνια +GO + +DROP PARTITION SCHEME [PARTITION_SCHEME 유니코드스키마👻 ] +GO + +SET QUOTED_IDENTIFIER ON; +GO + +DROP PARTITION SCHEME "PARTITION_SCHEME 😎$@ #123 🌍rder " +Go + +SET QUOTED_IDENTIFIER OFF; +GO + +DROP PARTITION SCHEME PartitionSchemeNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder +GO + +------------------------------------------- +--- DROP Partition Function +------------------------------------------- +DROP PARTITION FUNCTION IntPartitionFunction +GO + +DROP PARTITION FUNCTION BigIntPartitionFunction +GO + +DROP PARTITION FUNCTION SmallIntPartitionFunction +GO + +DROP PARTITION FUNCTION TinyIntPartitionFunction +GO + +DROP PARTITION FUNCTION DecimalPartitionFunction +GO + +DROP PARTITION FUNCTION NumericPartitionFunction +GO + +DROP PARTITION FUNCTION MoneyPartitionFunction +GO + +DROP PARTITION FUNCTION SmallMoneyPartitionFunction +GO + +DROP PARTITION FUNCTION DatePartitionFunction +GO + +DROP PARTITION FUNCTION DateTimePartitionFunction +GO + +DROP PARTITION FUNCTION DateTime2PartitionFunction +GO + +DROP PARTITION FUNCTION SmallDateTimePartitionFunction +GO + +DROP PARTITION FUNCTION CharPartitionFunction +GO + +DROP PARTITION FUNCTION VarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NVarCharPartitionFunction +GO + +DROP PARTITION FUNCTION NCharPartitionFunction +GO + +DROP PARTITION FUNCTION BinaryPartitionFunction +GO + +DROP PARTITION FUNCTION VarBinaryPartitionFunction +GO + +DROP PARTITION FUNCTION UniqueIdentifierPartitionFunction +GO + +DROP PARTITION FUNCTION PartitionFunctionNameGreaterThan64AndLessThan128abcdefghijklmnopqrstuvwxyz +GO + +DROP PARTITION FUNCTION PartitionFunctionHavingDifferentCollationInput +GO + +DROP PARTITION FUNCTION PARTITION_FUNCTIONログインαιώνια +GO + +DROP PARTITION FUNCTION [PARTITION_FUNCTION 유니코드스키마👻 ] +GO + +DROP PARTITION FUNCTION PartitionFunctionNameGreaterThan64AndLessThan128HavingEmoji😎$123🌍rder +GO + +SET QUOTED_IDENTIFIER ON; +GO + +DROP PARTITION FUNCTION "PARTITION_FUNCTION 😎$@ #123 🌍rder " +Go + +SET QUOTED_IDENTIFIER OFF; +GO \ No newline at end of file diff --git a/test/dotnet/input/DDLExport/ddl_tables_index.sql b/test/dotnet/input/DDLExport/ddl_tables_index.sql new file mode 100644 index 00000000000..e1831b0b7eb --- /dev/null +++ b/test/dotnet/input/DDLExport/ddl_tables_index.sql @@ -0,0 +1,149 @@ +DROP TABLE IF EXISTS table_check +GO +DROP TABLE IF EXISTS table_foreign +GO +DROP TABLE IF EXISTS table_primary +GO +DROP TABLE IF EXISTS table_unique +GO +DROP TABLE IF EXISTS isc_check_constraints_t1 +GO +DROP TABLE IF EXISTS test_tsql_const +GO +DROP TABLE IF EXISTS test_tsql_cast +GO +DROP TABLE IF EXISTS test_datetime +GO +DROP TABLE IF EXISTS test_functioncall +GO +DROP TABLE IF EXISTS test_tsql_collate +GO +DROP TABLE IF EXISTS test_null +GO +DROP TABLE IF EXISTS test_upper +GO +Create table table_unique (a int NOT NULL UNIQUE) +GO +DROP TABLE IF EXISTS babel_4817_t1, babel_4817_t2, babel_4817_t3, babel_4817_t4, babel_4817_t5; +GO +Create table table_primary (a int NOT NULL , b int NOT NULL,c int, PRIMARY KEY(a) ) +GO +Create table table_foreign (aa int NOT NULL , bb int NOT NULL,a int, PRIMARY KEY(aa) ,FOREIGN KEY (a) REFERENCES table_primary(a)) +GO +Create table table_check (ID int NOT NULL,NAME varchar(10) NOT NULL,AGE int NOT NULL CHECK (AGE >= 18)) +GO +Create table isc_check_constraints_t1( a varchar, check(a = 'provvwstdjtlyzygsx')); +GO +Create table test_tsql_const( + c_int int primary key, + c_bit sys.bit check(c_bit <> cast(1 as sys.bit)), + check(c_int < 10), + c_smallint smallint check(c_smallint < cast(cast(CAST('20' AS smallint) as sql_variant) as smallint)), + c_binary binary(8) check(c_binary > cast(0xfe as binary(8))), + c_varbinary varbinary(8) check(c_varbinary > cast(0xfe as varbinary(8))) +) +GO +Create table test_datetime( + c_time time check(cast(c_time as pg_catalog.time) < cast('09:00:00' as time) and c_time < cast('09:00:00' as time(6))), + c_date date check(c_date < cast('2001-01-01' as date)), + c_datetime datetime check(c_datetime < cast('2020-10-20 09:00:00' as datetime)), + c_datetime2 datetime2 check(c_datetime2 < cast('2020-10-20 09:00:00' as datetime2) and c_datetime2 < cast('2020-10-20 09:00:00' as datetime2(6)) ), + c_datetimeoffset datetimeoffset check(c_datetimeoffset < cast('12-10-25 12:32:10 +01:00' as sys.datetimeoffset) and c_datetimeoffset < cast('12-10-25 12:32:10 +01:00' as datetimeoffset(4))), + c_smalldatetime smalldatetime check(c_smalldatetime < cast('2007-05-08 12:35:29.123' AS smalldatetime)), +) +GO +create table test_tsql_collate( + c_varchar varchar check(c_varchar <> cast('sflkjasdlkfjf' as varchar(12)) COLLATE latin1_general_ci_as), + c_char char check(c_char <> cast('sflkjasdlkfjf' as char(7)) COLLATE japanese_ci_as), + c_nchar nchar check(cast(c_nchar as nchar(7)) <> cast('sflkjasdlkfjf' as nchar(7)) COLLATE bbf_unicode_cp1_ci_as), +) +GO +Create table test_null(a int, b int, check(a IS NOT NULL), CONSTRAINT constraint1 check (a>10)); +GO +Create table test_upper(a char, check (upper(a) in ('A','B'))); +GO +Create index test_index on test_upper(a) +GO +Create index test_comp_index on table_unique(a) +GO + +CREATE TABLE babel_4817_t1 (col1 INT, col2 INT NOT NULL, col3 AS col1*col2, col4 INT, col5 INT, col6 INT, col7 INT, col8 INT NOT NULL, PRIMARY KEY NONCLUSTERED(col3, col7 DESC), UNIQUE (col2 DESC, col8)); +GO +CREATE INDEX babel_4817_t1_idx_1 ON dbo.babel_4817_t1 (col5) INCLUDE (col1); +GO + +CREATE TABLE babel_4817_t2 (col1 INT, col2 INT NOT NULL, col3 AS col1*col2, col4 INT, col5 INT, col6 INT, col7 INT NOT NULL IDENTITY, col8 INT NOT NULL) +GO +ALTER TABLE babel_4817_t2 ADD CONSTRAINT babel_4817_t2_pk PRIMARY KEY NONCLUSTERED (col3, col7); +GO +CREATE UNIQUE NONCLUSTERED INDEX babel_4817_t2_unique_index ON dbo.babel_4817_t2 (col2 DESC, col8) INCLUDE (col4); +GO +CREATE NONCLUSTERED INDEX babel_4817_t2_idx ON dbo.babel_4817_t2 (col5) INCLUDE (col1); +GO +CREATE TABLE babel_4817_t3 (col1 INT IDENTITY, col2 INT, col3 INT, col4 INT, col5 AS col1*col2, col6 VARCHAR(30)) +GO +ALTER TABLE babel_4817_t3 DROP COLUMN col4 +GO +ALTER TABLE babel_4817_t3 ADD col4 INT +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE TABLE [dbo].[babel_4817_t4]( + [id] [int] NULL, + [filename] [varchar](200) NOT NULL, + [commited_dt] [datetime] NOT NULL, + [commited_sql] [ntext] NULL, +PRIMARY KEY CLUSTERED +( + [filename] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO + +CREATE TABLE [dbo].[babel_4817_t5] +( + [id] [int] NOT NULL, + [filename] [varchar](200) NOT NULL, + [commited_dt] [datetime] NOT NULL, + [commited_sql] [ntext] NULL, + PRIMARY KEY CLUSTERED +( + [filename] ASC, [ID] DESC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +GO +CREATE NONCLUSTERED INDEX ix_test ON [dbo].[babel_4817_t5] ([filename]) INCLUDE ([id],[commited_dt]) +GO +ddlexport#!#0 +GO +DROP TABLE IF EXISTS babel_4817_3, babel_4817_4; +GO +DROP TABLE IF EXISTS babel_4817_t1, babel_4817_t2, babel_4817_t3, babel_4817_t4, babel_4817_t5; +GO +DROP TABLE IF EXISTS table_check +GO +DROP TABLE IF EXISTS table_foreign +GO +DROP TABLE IF EXISTS table_primary +GO +DROP TABLE IF EXISTS table_unique +GO +DROP TABLE IF EXISTS isc_check_constraints_t1 +GO +DROP TABLE IF EXISTS test_tsql_const +GO +DROP TABLE IF EXISTS test_tsql_cast +GO +DROP TABLE IF EXISTS test_tsql_collate +GO +DROP TABLE IF EXISTS test_datetime +GO +DROP TABLE IF EXISTS test_functioncall +GO +DROP TABLE IF EXISTS test_null +GO +DROP TABLE IF EXISTS test_upper +GO \ No newline at end of file diff --git a/test/dotnet/input/DDLExport/ddl_triggers.sql b/test/dotnet/input/DDLExport/ddl_triggers.sql new file mode 100644 index 00000000000..3d935c3e11e --- /dev/null +++ b/test/dotnet/input/DDLExport/ddl_triggers.sql @@ -0,0 +1,55 @@ +DROP TRIGGER IF EXISTS babel_1654_vu_prepare_trig_t +GO + +DROP TRIGGER IF EXISTS babel_1654_vu_prepare_updEmployeeDatas +GO + +DROP TABLE IF EXISTS babel_1654_vu_prepare_employeeData +GO + +DROP TABLE IF EXISTS babel_1654_vu_prepare_t +GO + +DROP TABLE IF EXISTS sys_computed_columns_vu_prepare_t1 +GO + + +CREATE TABLE babel_1654_vu_prepare_employeeData( ID INT IDENTITY (1,1) PRIMARY KEY,Emp_First_name VARCHAR (50),Emp_Last_name VARCHAR (50),Emp_Salary INT, +a varchar (50), b varchar(50), c varchar(50), d varchar(50), e varchar(50), f varchar(50)) +GO + +create table babel_1654_vu_prepare_t ( ID INT IDENTITY (1,1) PRIMARY KEY , a varchar(50), b varchar(50)) +GO + +CREATE TRIGGER babel_1654_vu_prepare_trig_t on babel_1654_vu_prepare_t after update as + select COLUMNS_UPDATED(); +GO + +CREATE TRIGGER babel_1654_vu_prepare_updEmployeeDatas ON babel_1654_vu_prepare_employeeData AFTER UPDATE,INSERT AS + select COLUMNS_UPDATED(); + update babel_1654_vu_prepare_t set a = 'sss' , b = 'sss' where id = 1; + select COLUMNS_UPDATED(); +GO + +CREATE TABLE sys_computed_columns_vu_prepare_t1 ( + scc_first_number smallint, + scc_second_number money, + scc_multiplied AS scc_first_number * scc_second_number +) +GO +ddlexport#!#0 +GO +DROP TRIGGER IF EXISTS babel_1654_vu_prepare_trig_t +GO + +DROP TRIGGER IF EXISTS babel_1654_vu_prepare_updEmployeeDatas +GO + +DROP TABLE IF EXISTS babel_1654_vu_prepare_employeeData +GO + +DROP TABLE IF EXISTS babel_1654_vu_prepare_t +GO + +DROP TABLE IF EXISTS sys_computed_columns_vu_prepare_t1 +GO \ No newline at end of file diff --git a/test/dotnet/input/DDLExport/ddl_users.sql b/test/dotnet/input/DDLExport/ddl_users.sql new file mode 100644 index 00000000000..642c66acec5 --- /dev/null +++ b/test/dotnet/input/DDLExport/ddl_users.sql @@ -0,0 +1,35 @@ +DROP USER IF EXISTS test_usr1 +GO +DROP USER IF EXISTS test_usr2 +GO +DROP USER IF EXISTS test_usr3 +GO +CREATE LOGIN test_pwd1 + WITH PASSWORD = '340$Uuxwp7Mcxo7Khy'; +GO +CREATE LOGIN test_pwd2 + WITH PASSWORD = '340$UuxwpMcxo7Khy'; +GO +CREATE LOGIN test_pwd3 + WITH PASSWORD = '340$Uuxwp7Mco7Khy'; +GO +CREATE USER test_usr1 FOR LOGIN test_pwd1; +GO +CREATE USER test_usr2 FOR LOGIN test_pwd2; +GO +CREATE USER test_usr3 FOR LOGIN test_pwd3; +GO +ddlexport#!#0 +GO +DROP LOGIN test_pwd1 +GO +DROP LOGIN test_pwd2 +GO +DROP LOGIN test_pwd3 +GO +DROP USER IF EXISTS test_usr1 +GO +DROP USER IF EXISTS test_usr2 +GO +DROP USER IF EXISTS test_usr3 +GO \ No newline at end of file diff --git a/test/dotnet/input/DDLExport/ddl_views.sql b/test/dotnet/input/DDLExport/ddl_views.sql new file mode 100644 index 00000000000..47552e48831 --- /dev/null +++ b/test/dotnet/input/DDLExport/ddl_views.sql @@ -0,0 +1,30 @@ +DROP VIEW IF EXISTS sys_all_views_select_vu_prepare +GO +DROP VIEW IF EXISTS sys_all_views_select_chk_option_vu_prepare +GO +DROP VIEW IF EXISTS sys_all_views_dep_view_vu_prepare +GO +DROP TABLE IF EXISTS sys_all_views_table_vu_prepare +GO +CREATE TABLE sys_all_views_table_vu_prepare(a int) +GO +CREATE VIEW sys_all_views_select_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare +GO +CREATE VIEW sys_all_views_select_chk_option_vu_prepare AS +SELECT * FROM sys_all_views_table_vu_prepare +WITH CHECK OPTION +GO +CREATE VIEW sys_all_views_dep_view_vu_prepare AS +SELECT name, type, with_check_option FROM sys.all_views where object_id = object_id('sys_all_views_select_vu_prepare') +GO +ddlexport#!#0 +GO +DROP VIEW IF EXISTS sys_all_views_select_vu_prepare +GO +DROP VIEW IF EXISTS sys_all_views_select_chk_option_vu_prepare +GO +DROP VIEW IF EXISTS sys_all_views_dep_view_vu_prepare +GO +DROP TABLE IF EXISTS sys_all_views_table_vu_prepare +GO \ No newline at end of file diff --git a/test/dotnet/input/prepexec_boundary_sql_tests.sql b/test/dotnet/input/prepexec_boundary_sql_tests.sql index a2b44571fc5..5315b173e92 100644 --- a/test/dotnet/input/prepexec_boundary_sql_tests.sql +++ b/test/dotnet/input/prepexec_boundary_sql_tests.sql @@ -36,7 +36,6 @@ EXEC SP_EXECUTE @handle, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100 go - declare @handle int; EXEC SP_PREPEXEC @handle output, N' @@ -75,7 +74,6 @@ Select @p1201, @p1202, @p1203, @p1204, @p1205, @p1206, @p1207, @p1208, @p1209, @ 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100 go - declare @handle int; EXEC sp_prepare @handle output, N' @@ -114,7 +112,6 @@ EXEC SP_EXECUTE @handle, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101 go - declare @handle int; EXEC SP_PREPEXEC @handle output, N' diff --git a/test/dotnet/src/BatchRun.cs b/test/dotnet/src/BatchRun.cs index 767ff93f661..1461857172b 100644 --- a/test/dotnet/src/BatchRun.cs +++ b/test/dotnet/src/BatchRun.cs @@ -283,6 +283,13 @@ bool BatchRunner(DbConnection bblCnn, string queryFilePath, Serilog.Core.Logger var result = strLine.Split("#!#", StringSplitOptions.RemoveEmptyEntries); testUtils.bcp(result[1].Trim(), result[2].Trim(), result[3].Trim(), result[0].Trim(), logger); } + else if(strLine.ToLowerInvariant().StartsWith("ddlexport")) + { + testUtils.PrintToLogsOrConsole("######################################################################", logger, "information"); + testUtils.PrintToLogsOrConsole("############################# DDLEXPORT ##############################", logger, "information"); + testUtils.PrintToLogsOrConsole("######################################################################\n", logger, "information"); + DatabaseScripter.ScriptDatabase(strLine, testName, testUtils, logger); + } else { /* @@ -320,6 +327,18 @@ bool BatchRunner(DbConnection bblCnn, string queryFilePath, Serilog.Core.Logger testUtils.ResultSetWriter(bblCmd, testName, ref stCount); bblCmd.Dispose(); } + else if (isSql) + { + bblCmd?.Dispose(); + bblCmd = testUtils.CreateDbCommand(null, bblCnn); + if (bblTransaction != null) + { + bblCmd.Transaction = bblTransaction; + } + bblCmd.CommandText = query; + + testUtils.ResultSetWriter(bblCmd, testName, ref stCount); + } else { bblCmd?.Dispose(); diff --git a/test/dotnet/src/ScriptDatabase.cs b/test/dotnet/src/ScriptDatabase.cs new file mode 100644 index 00000000000..e18d7a8bdb4 --- /dev/null +++ b/test/dotnet/src/ScriptDatabase.cs @@ -0,0 +1,130 @@ +using System; +using System.Linq; +using Microsoft.SqlServer.Management.Smo; +using Microsoft.SqlServer.Management.Common; +using System.Collections.Specialized; +using Microsoft.SqlServer.Management.Sdk.Sfc; + +namespace BabelfishDotnetFramework +{ +public class DatabaseScripter +{ + public static void ScriptDatabase(string strLine, string testName, TestUtils testUtils, Serilog.Core.Logger logger) + { + string[] result = strLine.Split("#!#", StringSplitOptions.RemoveEmptyEntries); + if (result.Length < 2) throw new ArgumentException("Invalid input string format"); + + string flag = result[1].Trim('\r', '\n'); + + try + { + ServerConnection serverConnection = new ServerConnection(ConfigSetup.BblUrl); + serverConnection.LoginSecure = false; + serverConnection.Login = ConfigSetup.BblUser; + serverConnection.Password = ConfigSetup.BblPasswd; + + // Create a Server object + Server server = new Server(serverConnection); + Database database = server.Databases[ConfigSetup.BblDb]; + if (database == null) + { + testUtils.PrintToLogsOrConsole($"Database '{ConfigSetup.BblDb}' not found.", logger, "information"); + return; + } + + testUtils.PrintToLogsOrConsole($"\nScripting database: {ConfigSetup.BblDb}", logger, "information"); + + Scripter scripter = new Scripter(server) + { + Options = { + DriAll = true, + ScriptSchema = true, + ScriptData = false, + NoCollation = true + } + }; + + ScriptDatabaseObjects(database, scripter, flag, testName, testUtils, logger); + } + catch (Exception ex) + { + testUtils.PrintToLogsOrConsole("An error occurred: " + ex.Message, logger, "information"); + } + } + + private static void ScriptDatabaseObjects(Database database, Scripter scripter, string flag, string testName, TestUtils testUtils, Serilog.Core.Logger logger) + { + const string sys_schema = "sys"; + const string dbo_user = "dbo"; + const string guest_user = "guest"; + const string sysdtb = "sysdatabases"; + + Action scriptObject = obj => + { + testUtils.PrintToLogsOrConsole($"\nScripting {obj.GetType().Name}: {obj.Urn}", logger, "information"); + StringCollection scripts = scripter.Script(new Urn[] { obj.Urn }); + testUtils.ResultSetWriter(scripts, testName); + }; + + Func filterObject = obj => + { + string schema = GetSchema(obj); + return (flag == "0" && schema != sysdtb && schema != null && schema != sys_schema && !IsSystemObject(obj)) || + (flag == "1" && schema != sys_schema && !IsSystemObject(obj)); + }; + + // Script Tables and their child objects + foreach (Table table in database.Tables.Cast().Where(filterObject)) + { + scriptObject(table); + table.Indexes.Cast().Where(idx => !idx.IsSystemObject).ToList().ForEach(scriptObject); + table.Triggers.Cast().Where(trg => !trg.IsSystemObject).ToList().ForEach(scriptObject); + } + + // Script other database objects + database.Views.Cast().Where(filterObject).ToList().ForEach(scriptObject); + database.StoredProcedures.Cast().Where(filterObject).ToList().ForEach(scriptObject); + database.UserDefinedFunctions.Cast().Where(filterObject).ToList().ForEach(scriptObject); + database.UserDefinedDataTypes.Cast().ToList().ForEach(scriptObject); + database.UserDefinedTableTypes.Cast().ToList().ForEach(scriptObject); + database.PartitionFunctions.Cast().ToList().ForEach(scriptObject); + database.PartitionSchemes.Cast().ToList().ForEach(scriptObject); + + if (flag == "0") + { + database.Users.Cast() + .Where(ur => ur.Name != dbo_user && ur.Name != guest_user && !ur.IsSystemObject) + .ToList() + .ForEach(scriptObject); + } + } + + private static string GetSchema(SqlSmoObject obj) + { + return obj switch + { + Table table => table.Schema, + View view => view.Schema, + StoredProcedure sp => sp.Schema, + UserDefinedFunction udf => udf.Schema, + _ => null + }; + } + + private static bool IsSystemObject(SqlSmoObject obj) + { + return obj switch + { + Table table => table.IsSystemObject, + View view => view.IsSystemObject, + StoredProcedure sp => sp.IsSystemObject, + UserDefinedFunction udf => udf.IsSystemObject, + Microsoft.SqlServer.Management.Smo.Index index => index.IsSystemObject, + Trigger trigger => trigger.IsSystemObject, + User user => user.IsSystemObject, + _ => false + }; + } +} + +} \ No newline at end of file diff --git a/test/dotnet/utils/ConfigSetup.cs b/test/dotnet/utils/ConfigSetup.cs index 17880917d8d..d2429127d40 100644 --- a/test/dotnet/utils/ConfigSetup.cs +++ b/test/dotnet/utils/ConfigSetup.cs @@ -13,6 +13,10 @@ public static class ConfigSetup public static readonly string TestName = Dictionary["testName"]; public static readonly bool RunInParallel = bool.Parse(Dictionary["runInParallel"]); public static readonly bool PrintToConsole = bool.Parse(Dictionary["printToConsole"]); + public static readonly string BblUrl = Dictionary["babel_URL"]; + public static readonly string BblDb = Dictionary["babel_databaseName"]; + public static readonly string BblUser = Dictionary["babel_user"]; + public static readonly string BblPasswd = Dictionary["babel_password"]; public static bool RunInRegression; public static string Database; public static string Provider = Dictionary["provider"]; diff --git a/test/dotnet/utils/TestUtils.cs b/test/dotnet/utils/TestUtils.cs index c5d9578e24d..0011db442fd 100644 --- a/test/dotnet/utils/TestUtils.cs +++ b/test/dotnet/utils/TestUtils.cs @@ -13,6 +13,7 @@ using Serilog; using Serilog.Core; using Xunit; +using System.Collections.Specialized; namespace BabelfishDotnetFramework { @@ -222,6 +223,16 @@ public void ResultSetWriter(DbCommand cmd, string fileName, ref int count) rdr?.Close(); } } + public void ResultSetWriter(StringCollection sc, string fileName) + { + using var file = + new StreamWriter(Path.Combine(ConfigSetup.OutputFolder, fileName + ".out"), true); + foreach (string script in sc) + { + file.WriteLine(script); + file.WriteLine("GO"); + } + } string BinaryToString(byte[] a) {