diff --git a/app/migrations/0003_auto_20211101_0411.py b/app/migrations/0003_auto_20211101_0411.py new file mode 100644 index 0000000..cfee8bc --- /dev/null +++ b/app/migrations/0003_auto_20211101_0411.py @@ -0,0 +1,843 @@ +# Generated by Django 3.2.5 on 2021-11-01 04:11 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0002_country_gmba_speciesgroup_language_peoplestatus_rangetype_redlistcategory_source_taxonstatus_taxonun'), + ] + + operations = [ + migrations.CreateModel( + name='GMBA_function', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('gmba_function', models.TextField(blank=True, null=True)), + ], + ), + migrations.CreateModel( + name='GMBA_V2_Centroid', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('gridcode', models.TextField(blank=True, null=True)), + ('area', models.TextField(blank=True, null=True)), + ('latitude', models.TextField(blank=True, null=True)), + ('longitude', models.TextField(blank=True, null=True)), + ], + ), + migrations.CreateModel( + name='Keyword', + fields=[ + ('keyword_id', models.AutoField(primary_key=True, serialize=False)), + ('mother', models.TextField(blank=True, null=True)), + ('keyword', models.TextField(blank=True, null=True)), + ], + ), + migrations.CreateModel( + name='Organization', + fields=[ + ('org_num1', models.AutoField(primary_key=True, serialize=False)), + ('organisation_search', models.TextField(blank=True, null=True)), + ('org_alpha_search', models.TextField(blank=True, null=True)), + ('organisation_english', models.TextField(blank=True, null=True)), + ('organisation_2', models.TextField(blank=True, null=True)), + ('organisation_3', models.TextField(blank=True, null=True)), + ('organisation_original', models.TextField(blank=True, null=True)), + ('acronym', models.TextField(blank=True, null=True)), + ('street', models.TextField(blank=True, null=True)), + ('po_box', models.TextField(blank=True, null=True)), + ('postcode', models.TextField(blank=True, null=True)), + ('city', models.TextField(blank=True, null=True)), + ('region', models.TextField(blank=True, null=True)), + ('search_url', models.TextField(blank=True, null=True)), + ('lat_long', models.TextField(blank=True, null=True)), + ('url', models.TextField(blank=True, null=True)), + ('tel', models.TextField(blank=True, null=True)), + ('email', models.TextField(blank=True, null=True)), + ('country', models.TextField(blank=True, null=True)), + ('tags', models.TextField(blank=True, null=True)), + ('description', models.TextField(blank=True, null=True)), + ('northing', models.TextField(blank=True, null=True)), + ('easting', models.TextField(blank=True, null=True)), + ('category', models.TextField(blank=True, null=True)), + ('subject', models.TextField(blank=True, null=True)), + ], + ), + migrations.CreateModel( + name='Peak', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('point_name', models.TextField(blank=True, null=True)), + ('latitude', models.TextField(blank=True, null=True)), + ('longitude', models.TextField(blank=True, null=True)), + ('type', models.TextField(blank=True, null=True)), + ('elevation', models.TextField(blank=True, null=True)), + ('link', models.TextField(blank=True, null=True)), + ], + ), + migrations.CreateModel( + name='Repository', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('repository_name', models.TextField(blank=True, null=True)), + ('repository_url', models.TextField(blank=True, null=True)), + ], + ), + migrations.CreateModel( + name='Species', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('scientific_name', models.TextField(blank=True, null=True)), + ('_class', models.TextField(blank=True, null=True)), + ('english_name', models.TextField(blank=True, null=True)), + ('url', models.TextField(blank=True, null=True)), + ], + ), + migrations.AddField( + model_name='person', + name='_global', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='algae', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='amphibians', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='angiosperms', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='arachnids', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='assessment', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='biological_field_sampling', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='birds', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='crustaceans', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='data_mining', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='email_2', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='entry_date', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='field_of_expertise', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='field_site', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='fish', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='full_name', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='fungi', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='genetic_analyses', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='geographic_area_of_expertise', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='gis', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='gmba_function', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='gymnosperms', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='insects', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='instagram', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='landscape', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='mammals', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='meta_analysis', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='mobile_number', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='modelling', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='molluscs', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='mountain_range', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='mountain_top', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='mr_mrs', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='national', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='news_letter', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='orcid', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='professional_phone', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='profile_on_web', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='qualitative_ssm', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='regional', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='remote_sensing', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='reptiles', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='search_name', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='skype', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='spatial_analysis', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='statistical_analysis', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='status', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='synthesis', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='transect', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='twitter', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='updated', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='url', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='person', + name='web_of_science', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='GMBA_v1_id', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='area', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='checked', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='color_300', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='color_all', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='color_basic', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='comments', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='elev_avg', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='elev_high', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='elev_low', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='elev_range', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='feature', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='geologic_region', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='gmba_narrow', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='gmba_v2_id', + field=models.TextField(blank=True, null=True, unique=True), + ), + migrations.AddField( + model_name='range', + name='gmba_v2_id_str', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='latitude', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='level', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='level_1', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='level_2', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='level_3', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='level_text', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='longitude', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='map_unit', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='mother_range', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='name_cn', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='name_de', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='name_es', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='name_fr', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='name_pt', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='name_ru', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='name_tr', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='orogeny', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='peak_elevation', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='peak_latitude', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='peak_longitude', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='peak_name', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='perimeter', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='range_alternate_id', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='range_name', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='range_name_ascii', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='range_name_language', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='range_name_map', + field=models.TextField(blank=True, null=True, unique=True), + ), + migrations.AddField( + model_name='range', + name='select_300', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='source', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='wiki_data_id', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='range', + name='wiki_data_url', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='PEGASuS_Assessment_ID', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='PEGASuS_Check_map_with_author', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='PEGASuS_Polygon_comments', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='PEGASuS_polygon_ID', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='WikiDataID', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='author_keywords', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='doi', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='gloria', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='gnomo', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='inventory', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='lat', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='lon', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='lter', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='ltser', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='miren', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='stars', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='team', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='resource', + name='type', + field=models.TextField(blank=True, null=True), + ), + migrations.CreateModel( + name='TaxonRange', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('subrange_or_region', models.TextField(blank=True, null=True)), + ('taxon_status', models.TextField(blank=True, null=True)), + ('distribution', models.TextField(blank=True, null=True)), + ('redlist', models.TextField(blank=True, null=True)), + ('count_unit', models.TextField(blank=True, null=True)), + ('number_of_units', models.TextField(blank=True, null=True)), + ('source', models.TextField(blank=True, null=True)), + ('remarks', models.TextField(blank=True, null=True)), + ('range', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range')), + ('taxon', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.taxon')), + ], + ), + migrations.CreateModel( + name='SpeciesRange', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('endemic', models.TextField(blank=True, null=True)), + ('source_url', models.TextField(blank=True, null=True)), + ('range', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range')), + ('scientific_name', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.species')), + ], + ), + migrations.CreateModel( + name='Search', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('search_string', models.TextField(blank=True, null=True)), + ('search_date', models.TextField(blank=True, null=True)), + ('result', models.TextField(blank=True, null=True)), + ('number_of_records', models.TextField(blank=True, null=True)), + ('stored', models.TextField(blank=True, null=True)), + ('range_name', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range')), + ('repository', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.repository')), + ], + ), + migrations.CreateModel( + name='ResourceRange', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('range_name', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range')), + ('resource_title', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.resource')), + ], + ), + migrations.CreateModel( + name='ResourceKeyword', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('keyword', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.keyword')), + ('resource', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.resource')), + ], + ), + migrations.CreateModel( + name='RangeOnlineInfo', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('info_source', models.TextField(blank=True, null=True)), + ('url', models.TextField(blank=True, null=True)), + ('range_name', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range', to_field='range_name_map')), + ], + ), + migrations.CreateModel( + name='RangeNameTranslation', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('range_name_translation', models.TextField(blank=True, null=True)), + ('language_translation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.language')), + ('range_name', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range')), + ], + ), + migrations.CreateModel( + name='RangeCountry', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('country', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.country')), + ('range', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range')), + ], + ), + migrations.CreateModel( + name='PeopleResource', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('role', models.TextField(blank=True, null=True)), + ('person', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.person')), + ('resource', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.resource')), + ], + ), + migrations.CreateModel( + name='PeopleRange', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('person', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.person')), + ('range', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range')), + ], + ), + migrations.CreateModel( + name='PeopleFunction', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('person', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.person')), + ('scale', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.gmba_function')), + ], + ), + migrations.CreateModel( + name='NamesImport', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('cn', models.TextField(blank=True, null=True)), + ('de', models.TextField(blank=True, null=True)), + ('es', models.TextField(blank=True, null=True)), + ('fr', models.TextField(blank=True, null=True)), + ('pt', models.TextField(blank=True, null=True)), + ('ru', models.TextField(blank=True, null=True)), + ('tr', models.TextField(blank=True, null=True)), + ('gmba_v2_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range', to_field='gmba_v2_id')), + ], + ), + migrations.CreateModel( + name='LanguageLink', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('language_letter_code', models.TextField(blank=True, null=True)), + ('language_number_code', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.language')), + ], + ), + migrations.CreateModel( + name='ImportGeom210915', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('area', models.TextField(blank=True, null=True)), + ('perimeter', models.TextField(blank=True, null=True)), + ('color_all', models.TextField(blank=True, null=True)), + ('color_basic', models.TextField(blank=True, null=True)), + ('gmba_v2_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range', to_field='gmba_v2_id')), + ], + ), + migrations.CreateModel( + name='AddElevation', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('elev_min', models.TextField(blank=True, null=True)), + ('elev_max', models.TextField(blank=True, null=True)), + ('elev_range', models.TextField(blank=True, null=True)), + ('gmba_v2_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.range', to_field='gmba_v2_id')), + ], + ), + migrations.AddField( + model_name='person', + name='organization', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='app.organization'), + ), + ]