From 2bae506a9fa3cd9e1281e73d0c6d616590b921a9 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 20 Jan 2024 14:32:24 +0000 Subject: [PATCH 001/128] improved grating correction --- pypeit/coadd3d.py | 50 ++++++++++++++++++++------------ pypeit/inputfiles.py | 11 ++++++- pypeit/par/pypeitpar.py | 12 ++------ pypeit/scripts/coadd_datacube.py | 5 ++-- 4 files changed, 46 insertions(+), 32 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 770ee8d6f5..647b4c57b6 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -22,6 +22,12 @@ from IPython import embed +# REMOVE THIS TODOLIST BEFORE PR MERGING +#TODO :: tweaked edges (this needs a different algorithm than what is currently implemented) +# :: non-linearity correction +# :: incorporate flat products into spec2d files +# :: specc1d extractions from datacubes + class DataCube(datamodel.DataContainer): """ @@ -331,8 +337,9 @@ class CoAdd3D: """ # Superclass factory method generates the subclass instance @classmethod - def get_instance(cls, spec2dfiles, par, skysub_frame=None, scale_corr=None, ra_offsets=None, dec_offsets=None, - spectrograph=None, det=1, overwrite=False, show=False, debug=False): + def get_instance(cls, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating_corr=None, + ra_offsets=None, dec_offsets=None, spectrograph=None, det=1, + overwrite=False, show=False, debug=False): """ Instantiate the subclass appropriate for the provided spectrograph. @@ -348,11 +355,12 @@ def get_instance(cls, spec2dfiles, par, skysub_frame=None, scale_corr=None, ra_o return next(c for c in cls.__subclasses__() if c.__name__ == (spectrograph.pypeline + 'CoAdd3D'))( - spec2dfiles, par, skysub_frame=skysub_frame, scale_corr=scale_corr, ra_offsets=ra_offsets, - dec_offsets=dec_offsets, spectrograph=spectrograph, det=det, overwrite=overwrite, - show=show, debug=debug) + spec2dfiles, par, skysub_frame=skysub_frame, scale_corr=scale_corr, grating_corr=grating_corr, + ra_offsets=ra_offsets, dec_offsets=dec_offsets, spectrograph=spectrograph, det=det, + overwrite=overwrite, show=show, debug=debug) - def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, ra_offsets=None, dec_offsets=None, + def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating_corr=None, + ra_offsets=None, dec_offsets=None, spectrograph=None, det=None, overwrite=False, show=False, debug=False): """ @@ -371,6 +379,9 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, ra_offs scale_corr (:obj:`list`, optional): If not None, this should be a list of relative scale correction options. It should be the same length as spec2dfiles. + grating_corr (:obj:`list`, optional): + If not None, this should be a list of relative grating tilt correction options. It should be the + same length as spec2dfiles. ra_offsets (:obj:`list`, optional): If not None, this should be a list of relative RA offsets of each frame. It should be the same length as spec2dfiles. The units should be degrees. @@ -410,6 +421,8 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, ra_offs msgs.error("The skysub_frame list should be identical length to the spec2dfiles list") if scale_corr is not None and len(scale_corr) != self.numfiles: msgs.error("The scale_corr list should be identical length to the spec2dfiles list") + if grating_corr is not None and len(grating_corr) != self.numfiles: + msgs.error("The grating_corr list should be identical length to the spec2dfiles list") if ra_offsets is not None and len(ra_offsets) != self.numfiles: msgs.error("The ra_offsets list should be identical length to the spec2dfiles list") if dec_offsets is not None and len(dec_offsets) != self.numfiles: @@ -422,6 +435,7 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, ra_offs # Set the frame specific options self.skysub_frame = skysub_frame self.scale_corr = scale_corr + self.grating_corr = grating_corr self.ra_offsets = list(ra_offsets) if isinstance(ra_offsets, np.ndarray) else ra_offsets self.dec_offsets = list(dec_offsets) if isinstance(dec_offsets, np.ndarray) else dec_offsets # If there is only one frame being "combined" AND there's no reference image, then don't compute the translation. @@ -571,15 +585,16 @@ def make_sensfunc(self): """ self.fluxcal = True # The first standard star cube is used as the reference blaze spline - if self.cubepar['grating_corr']: + if self.grating_corr is not None: # Load the blaze information stdcube = fits.open(self.cubepar['standard_cube']) # If a reference blaze spline has not been set, do that now. self.set_blaze_spline(stdcube['BLAZE_WAVE'].data, stdcube['BLAZE_SPEC'].data) # Generate a spline representation of the sensitivity function + gratcorr = self.grating_corr is not None self.flux_spline = datacube.make_sensfunc(self.cubepar['standard_cube'], self.senspar, blaze_wave=self.blaze_wave, blaze_spline=self.blaze_spline, - grating_corr=self.cubepar['grating_corr']) + grating_corr=gratcorr) def set_default_scalecorr(self): """ @@ -858,11 +873,12 @@ class SlicerIFUCoAdd3D(CoAdd3D): - White light images are also produced, if requested. """ - def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, ra_offsets=None, dec_offsets=None, - spectrograph=None, det=1, overwrite=False, show=False, debug=False): - super().__init__(spec2dfiles, par, skysub_frame=skysub_frame, scale_corr=scale_corr, ra_offsets=ra_offsets, - dec_offsets=dec_offsets, spectrograph=spectrograph, det=det, overwrite=overwrite, - show=show, debug=debug) + def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating_corr=None, + ra_offsets=None, dec_offsets=None, spectrograph=None, det=1, + overwrite=False, show=False, debug=False): + super().__init__(spec2dfiles, par, skysub_frame=skysub_frame, scale_corr=scale_corr, grating_corr=grating_corr, + ra_offsets=ra_offsets, dec_offsets=dec_offsets, spectrograph=spectrograph, det=det, + overwrite=overwrite, show=show, debug=debug) self.mnmx_wv = None # Will be used to store the minimum and maximum wavelengths of every slit and frame. self._spatscale = np.zeros((self.numfiles, 2)) # index 0, 1 = pixel scale, slicer scale self._specscale = np.zeros(self.numfiles) @@ -1094,13 +1110,9 @@ def load(self): # Correct for sensitivity as a function of grating angle # (this assumes the spectrum of the flatfield lamp has the same shape for all setups) gratcorr_sort = 1.0 - if self.cubepar['grating_corr']: - # Load the flatfield file - key = flatfield.FlatImages.calib_type.upper() - if key not in spec2DObj.calibs: - msgs.error('Processed flat calibration file not recorded by spec2d file!') - flatfile = os.path.join(spec2DObj.calibs['DIR'], spec2DObj.calibs[key]) + if self.grating_corr is not None: # Setup the grating correction + flatfile = self.grating_corr[ff] self.add_grating_corr(flatfile, waveimg, slits, spat_flexure=spat_flexure) # Calculate the grating correction gratcorr_sort = datacube.correct_grating_shift(wave_sort, self.flat_splines[flatfile + "_wave"], diff --git a/pypeit/inputfiles.py b/pypeit/inputfiles.py index 332822081f..d57c4bd1f5 100644 --- a/pypeit/inputfiles.py +++ b/pypeit/inputfiles.py @@ -913,7 +913,7 @@ def options(self): Dictionary containing cube options. """ # Define the list of allowed parameters - opts = dict(scale_corr=None, skysub_frame=None, ra_offset=None, dec_offset=None) + opts = dict(scale_corr=None, grating_corr=None, skysub_frame=None, ra_offset=None, dec_offset=None) # Get the scale correction files scale_corr = self.path_and_files('scale_corr', skip_blank=False, check_exists=False) @@ -924,6 +924,15 @@ def options(self): elif len(scale_corr) != 0: opts['scale_corr'] = scale_corr + # Get the grating correction files + grating_corr = self.path_and_files('grating_corr', skip_blank=False, check_exists=False) + if grating_corr is None: + opts['grating_corr'] = [None]*len(self.filenames) + elif len(grating_corr) == 1 and len(self.filenames) > 1: + msgs.error("You cannot specify a single grating correction file for multiple input files.") + elif len(grating_corr) != 0: + opts['grating_corr'] = grating_corr + # Get the skysub files skysub_frame = self.path_and_files('skysub_frame', skip_blank=False, check_exists=False) if skysub_frame is None: diff --git a/pypeit/par/pypeitpar.py b/pypeit/par/pypeitpar.py index 27c0e77753..f37ba2b463 100644 --- a/pypeit/par/pypeitpar.py +++ b/pypeit/par/pypeitpar.py @@ -1568,7 +1568,7 @@ class CubePar(ParSet): def __init__(self, slit_spec=None, weight_method=None, align=None, combine=None, output_filename=None, standard_cube=None, reference_image=None, save_whitelight=None, whitelight_range=None, method=None, ra_min=None, ra_max=None, dec_min=None, dec_max=None, wave_min=None, wave_max=None, - spatial_delta=None, wave_delta=None, astrometric=None, grating_corr=None, scale_corr=None, + spatial_delta=None, wave_delta=None, astrometric=None, scale_corr=None, skysub_frame=None, spec_subpixel=None, spat_subpixel=None, slice_subpixel=None): # Grab the parameter names and values from the function @@ -1753,13 +1753,6 @@ def __init__(self, slit_spec=None, weight_method=None, align=None, combine=None, dtypes['astrometric'] = bool descr['astrometric'] = 'If true, an astrometric correction will be applied using the alignment frames.' - defaults['grating_corr'] = True - dtypes['grating_corr'] = bool - descr['grating_corr'] = 'This option performs a small correction for the relative blaze function of all ' \ - 'input frames that have (even slightly) different grating angles, or if you are ' \ - 'flux calibrating your science data with a standard star that was observed with ' \ - 'a slightly different setup.' - defaults['scale_corr'] = None dtypes['scale_corr'] = str descr['scale_corr'] = 'This option performs a small correction for the relative spectral illumination ' \ @@ -1797,7 +1790,7 @@ def from_dict(cls, cfg): parkeys = ['slit_spec', 'output_filename', 'standard_cube', 'reference_image', 'save_whitelight', 'method', 'spec_subpixel', 'spat_subpixel', 'slice_subpixel', 'ra_min', 'ra_max', 'dec_min', 'dec_max', 'wave_min', 'wave_max', 'spatial_delta', 'wave_delta', 'weight_method', 'align', 'combine', - 'astrometric', 'grating_corr', 'scale_corr', 'skysub_frame', 'whitelight_range'] + 'astrometric', 'scale_corr', 'skysub_frame', 'whitelight_range'] badkeys = np.array([pk not in parkeys for pk in k]) if np.any(badkeys): @@ -1824,7 +1817,6 @@ def validate(self): raise ValueError("'weight_method' must be one of:\n" + ", ".join(allowed_weight_methods)) - class FluxCalibratePar(ParSet): """ A parameter set holding the arguments for how to perform the flux diff --git a/pypeit/scripts/coadd_datacube.py b/pypeit/scripts/coadd_datacube.py index 42e7809561..a7973dee9f 100644 --- a/pypeit/scripts/coadd_datacube.py +++ b/pypeit/scripts/coadd_datacube.py @@ -57,12 +57,13 @@ def main(args): dec_offsets = coadd3dfile.options['dec_offset'] skysub_frame = coadd3dfile.options['skysub_frame'] scale_corr = coadd3dfile.options['scale_corr'] + grating_corr = coadd3dfile.options['grating_corr'] # Instantiate CoAdd3d tstart = time.time() coadd = CoAdd3D.get_instance(coadd3dfile.filenames, parset, skysub_frame=skysub_frame, scale_corr=scale_corr, - ra_offsets=ra_offsets, dec_offsets=dec_offsets, spectrograph=spectrograph, - det=args.det, overwrite=args.overwrite) + grating_corr=grating_corr, ra_offsets=ra_offsets, dec_offsets=dec_offsets, + spectrograph=spectrograph, det=args.det, overwrite=args.overwrite) # Coadd the files coadd.run() From b4a6a14316128bc6c7036dff52fab9f3972e48a6 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 20 Jan 2024 14:37:14 +0000 Subject: [PATCH 002/128] updated grating correction docs --- doc/coadd3d.rst | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/doc/coadd3d.rst b/doc/coadd3d.rst index 03640ca5e5..8c2ff0bbaa 100644 --- a/doc/coadd3d.rst +++ b/doc/coadd3d.rst @@ -196,16 +196,23 @@ but the grating angle of the two nights were slightly different). This is also needed if your standard star observations were taken with a slightly different setup. This correction requires that you have taken calibrations (i.e. flatfields) with the two different -setups. By default, the grating correction will be applied, but it -can be disabled by setting the following keyword argument in your -``coadd3d`` file: +setups. By default, the grating correction will not be applied. If +you want to apply the grating correction, you will need to specify +the relative path+file of the Flat calibration file for each spec2d +file. You will need to specify a ``grating_corr`` file for each +science frame, in the ``spec2d`` block of the ``.coadd3d`` file: .. code-block:: ini - [reduce] - [[cube]] - grating_corr = False + # Read in the data + spec2d read + filename | grating_corr + Science/spec2d_scienceframe_01.fits | Calibrations/Flat_A_0_DET01.fits + Science/spec2d_scienceframe_02.fits | Calibrations/Flat_B_1_DET01.fits + spec2d end +If all spec2d files were reduced with the same Flat calibration file, +then you do not need to specify the grating correction file. Astrometric correction ====================== From d61c5273ad8215de4344da54dce6baf107d11617 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 20 Jan 2024 22:09:02 +0000 Subject: [PATCH 003/128] grating correction fix --- pypeit/coadd3d.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 647b4c57b6..7abb8323b0 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -15,7 +15,7 @@ import numpy as np from pypeit import msgs -from pypeit import alignframe, datamodel, flatfield, io, spec2dobj, utils +from pypeit import alignframe, datamodel, flatfield, io, specobj, spec2dobj, utils from pypeit.core.flexure import calculate_image_phase from pypeit.core import datacube, extract, flux_calib, parse from pypeit.spectrographs.util import load_spectrograph @@ -226,6 +226,30 @@ def wcs(self): self._wcs = wcs.WCS(self.head0) return self._wcs + def extract_spec(self, parset, overwrite=False): + """ + Extract a spectrum from the datacube + + Parameters + ---------- + parset : dict + A dictionary containing the parameters for the extraction. + overwrite : bool, optional + Overwrite any existing files + """ + # Generate a spec1d object to hold the extracted spectrum + spec = specobj.SpecObj(self.spect_meta['pypeline'], 0) + + # Extract the spectrum + spec = datacube.extract_standard_spec(self.wave, self.flux, self.sig, self.ivar, self.bpm, spec) + + # Save the extracted spectrum + spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') + spec.to_file(spec1d_filename, primary_hdr=self.head0, hdr=self.head0, overwrite=overwrite) + + # Return + return + class DARcorrection: """ @@ -1110,7 +1134,7 @@ def load(self): # Correct for sensitivity as a function of grating angle # (this assumes the spectrum of the flatfield lamp has the same shape for all setups) gratcorr_sort = 1.0 - if self.grating_corr is not None: + if self.grating_corr[ff] is not None: # Setup the grating correction flatfile = self.grating_corr[ff] self.add_grating_corr(flatfile, waveimg, slits, spat_flexure=spat_flexure) From 8494164683626a1671ab658f9638bbe66fb01328 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sun, 21 Jan 2024 13:37:31 +0000 Subject: [PATCH 004/128] begin extract spec1d --- pypeit/core/datacube.py | 10 ++--- pypeit/core/extract.py | 2 +- pypeit/scripts/extract_datacube.py | 62 ++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 pypeit/scripts/extract_datacube.py diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 2105e2d0a1..50fc69bc6b 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -187,7 +187,7 @@ def correct_grating_shift(wave_eval, wave_curr, spl_curr, wave_ref, spl_ref, ord return grat_corr -def extract_standard_spec(stdcube, subpixel=20): +def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20): """ Extract a spectrum of a standard star from a datacube @@ -216,10 +216,10 @@ def extract_standard_spec(stdcube, subpixel=20): numwave = flxcube.shape[2] # Setup the WCS - stdwcs = wcs.WCS(stdcube['FLUX'].header) + wcscube = wcs.WCS(stdcube['FLUX'].header) - wcs_scale = (1.0 * stdwcs.spectral.wcs.cunit[0]).to(units.Angstrom).value # Ensures the WCS is in Angstroms - wave = wcs_scale * stdwcs.spectral.wcs_pix2world(np.arange(numwave), 0)[0] + wcs_scale = (1.0 * wcscube.spectral.wcs.cunit[0]).to(units.Angstrom).value # Ensures the WCS is in Angstroms + wave = wcs_scale * wcscube.spectral.wcs_pix2world(np.arange(numwave), 0)[0] # Generate a whitelight image, and fit a 2D Gaussian to estimate centroid and width wl_img = make_whitelight_fromcube(flxcube) @@ -278,7 +278,7 @@ def extract_standard_spec(stdcube, subpixel=20): ret_flux, ret_var, ret_gpm = box_flux, box_var, box_gpm # Convert from counts/s/Ang/arcsec**2 to counts/s/Ang - arcsecSQ = 3600.0*3600.0*(stdwcs.wcs.cdelt[0]*stdwcs.wcs.cdelt[1]) + arcsecSQ = 3600.0*3600.0*(wcscube.wcs.cdelt[0]*wcscube.wcs.cdelt[1]) ret_flux *= arcsecSQ ret_var *= arcsecSQ**2 # Return the box extraction results diff --git a/pypeit/core/extract.py b/pypeit/core/extract.py index a618028af5..f6039fb9e9 100644 --- a/pypeit/core/extract.py +++ b/pypeit/core/extract.py @@ -440,7 +440,7 @@ def extract_boxcar(sciimg, ivar, mask, waveimg, skyimg, spec, fwhmimg=None, base spec.BOX_WAVE = wave_box spec.BOX_COUNTS = flux_box*mask_box spec.BOX_COUNTS_IVAR = ivar_box*mask_box*np.logical_not(bad_box) - spec.BOX_COUNTS_SIG = np.sqrt(utils.inverse( spec.BOX_COUNTS_IVAR)) + spec.BOX_COUNTS_SIG = np.sqrt(utils.inverse(spec.BOX_COUNTS_IVAR)) spec.BOX_COUNTS_NIVAR = None if nivar_box is None else nivar_box*mask_box*np.logical_not(bad_box) spec.BOX_MASK = mask_box*np.logical_not(bad_box) spec.BOX_FWHM = fwhm_box # Spectral FWHM (in Angstroms) for the boxcar extracted spectrum diff --git a/pypeit/scripts/extract_datacube.py b/pypeit/scripts/extract_datacube.py new file mode 100644 index 0000000000..5e09801cfb --- /dev/null +++ b/pypeit/scripts/extract_datacube.py @@ -0,0 +1,62 @@ +""" +This script allows the user to read a spec3D FITS file (DataCube) +from IFU instruments, and extract a 1D spectrum of the brightest +object. This script is primarily used to extract a spectrum of a +point source from a DataCube, and save it as a spec1d file. A +common usage is to extract a spectrum of a standard star from a +DataCube, and use it to flux calibrate the science DataCubes. + +.. include common links, assuming primary doc root is up one directory +.. include:: ../include/links.rst +""" +import time +from pypeit import msgs +from pypeit import par +from pypeit import inputfiles +from pypeit import utils +from pypeit.spectrographs.util import load_spectrograph +from pypeit.scripts import scriptbase +from pypeit.coadd3d import DataCube + + +class ExtractDataCube(scriptbase.ScriptBase): + + @classmethod + def get_parser(cls, width=None): + parser = super().get_parser(description='Read in a datacube, extract a spectrum of a point source,' + 'and save it as a spec1d file.', width=width) + parser.add_argument('file', type = str, default=None, help='spec3d.fits DataCube file') + parser.add_argument('-o', '--overwrite', default=False, action='store_true', + help='Overwrite any existing files/directories') + parser.add_argument('-v', '--verbosity', type=int, default=1, + help='Verbosity level between 0 [none] and 2 [all]. Default: 1. ' + 'Level 2 writes a log with filename extract_datacube_YYYYMMDD-HHMM.log') + return parser + + @staticmethod + def main(args): + # Set the verbosity, and create a logfile if verbosity == 2 + msgs.set_logfile_and_verbosity('extract_datacube', args.verbosity) + + # Check that a file has been provided + if args.file is None: + msgs.error('You must input a spec3d (i.e. PypeIt DataCube) fits file') + + # Read in the relevant information from the .extract file + ext3dfile = inputfiles.ExtractFile.from_file(args.file) + spectrograph = load_spectrograph(ext3dfile.config['rdx']['spectrograph']) + + # Parameters + spectrograph_def_par = spectrograph.default_pypeit_par() + parset = par.PypeItPar.from_cfg_lines(cfg_lines=spectrograph_def_par.to_config(), + merge_with=(ext3dfile.cfg_lines,)) + + # Load the DataCube + tstart = time.time() + extcube = DataCube.from_file(args.file) + + # Extract the spectrum + extcube.extract_spec(parset['reduce']['extraction'], overwrite=args.overwrite) + + # Report the extraction time + msgs.info(utils.get_time_string(time.time()-tstart)) From 5072c721563d233b10f2f317410dbae0e319983f Mon Sep 17 00:00:00 2001 From: rcooke Date: Sun, 21 Jan 2024 13:49:09 +0000 Subject: [PATCH 005/128] switch to sensfunc --- pypeit/par/pypeitpar.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pypeit/par/pypeitpar.py b/pypeit/par/pypeitpar.py index f37ba2b463..03a7da2da1 100644 --- a/pypeit/par/pypeitpar.py +++ b/pypeit/par/pypeitpar.py @@ -1566,7 +1566,7 @@ class CubePar(ParSet): """ def __init__(self, slit_spec=None, weight_method=None, align=None, combine=None, output_filename=None, - standard_cube=None, reference_image=None, save_whitelight=None, whitelight_range=None, method=None, + sensfunc=None, reference_image=None, save_whitelight=None, whitelight_range=None, method=None, ra_min=None, ra_max=None, dec_min=None, dec_max=None, wave_min=None, wave_max=None, spatial_delta=None, wave_delta=None, astrometric=None, scale_corr=None, skysub_frame=None, spec_subpixel=None, spat_subpixel=None, slice_subpixel=None): @@ -1635,11 +1635,11 @@ def __init__(self, slit_spec=None, weight_method=None, align=None, combine=None, 'the combined datacube. If combine=False, the output filenames will be ' \ 'prefixed with ``spec3d_*``' - defaults['standard_cube'] = None - dtypes['standard_cube'] = str - descr['standard_cube'] = 'Filename of a standard star datacube. This cube will be used to correct ' \ - 'the relative scales of the slits, and to flux calibrate the science ' \ - 'datacube.' + defaults['sensfunc'] = None + dtypes['sensfunc'] = str + descr['sensfunc'] = 'Filename of a sensitivity function to use to flux calibrate your datacube. ' \ + 'The sensitivity function file will also be used to correct the relative scales ' \ + 'of the slits.' defaults['reference_image'] = None dtypes['reference_image'] = str @@ -1787,7 +1787,7 @@ def from_dict(cls, cfg): k = np.array([*cfg.keys()]) # Basic keywords - parkeys = ['slit_spec', 'output_filename', 'standard_cube', 'reference_image', 'save_whitelight', + parkeys = ['slit_spec', 'output_filename', 'sensfunc', 'reference_image', 'save_whitelight', 'method', 'spec_subpixel', 'spat_subpixel', 'slice_subpixel', 'ra_min', 'ra_max', 'dec_min', 'dec_max', 'wave_min', 'wave_max', 'spatial_delta', 'wave_delta', 'weight_method', 'align', 'combine', 'astrometric', 'scale_corr', 'skysub_frame', 'whitelight_range'] From 40085046d9c694ccc377d9c880b6fdaaa741196b Mon Sep 17 00:00:00 2001 From: rcooke Date: Sun, 21 Jan 2024 13:49:19 +0000 Subject: [PATCH 006/128] switch to sensfunc in docs --- doc/coadd3d.rst | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/coadd3d.rst b/doc/coadd3d.rst index 8c2ff0bbaa..6f0de64cc9 100644 --- a/doc/coadd3d.rst +++ b/doc/coadd3d.rst @@ -139,15 +139,18 @@ Flux calibration ================ If you would like to flux calibrate your datacube, you need to -produce your standard star datacube first, and when generating -the datacube of the science frame you must pass in the name of -the standard star cube in your ``coadd3d`` file as follows: +produce your standard star datacube first. Then extract the spectrum +of the standard star using the ``pypeit_extract_datacube`` script. This +will produce a ``spec1d`` file that you will need to use to generate a +sensitivity function in the usual way (see :doc:`_sensitivity_function`). +Then, when generating the datacube of the science frame you must include +the name of the sensitivity function in your ``coadd3d`` file as follows: .. code-block:: ini [reduce] [[cube]] - standard_cube = standard_star_cube.fits + sensfunc = my_sensfunc.fits Sky Subtraction From 10511f947634c6b96d14359b857485ab2ebda7fb Mon Sep 17 00:00:00 2001 From: rcooke Date: Sun, 21 Jan 2024 13:55:05 +0000 Subject: [PATCH 007/128] add extract_datacube --- pypeit/scripts/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pypeit/scripts/__init__.py b/pypeit/scripts/__init__.py index e08966dc63..9bbd31853a 100644 --- a/pypeit/scripts/__init__.py +++ b/pypeit/scripts/__init__.py @@ -20,6 +20,7 @@ from pypeit.scripts import collate_1d from pypeit.scripts import compare_sky from pypeit.scripts import edge_inspector +from pypeit.scripts import extract_datacube from pypeit.scripts import flux_calib from pypeit.scripts import flux_setup from pypeit.scripts import identify From 04ccac318490fd294927db94a8f8c2ca0384842b Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 22 Jan 2024 11:50:45 +0000 Subject: [PATCH 008/128] correct nonlinear --- pypeit/core/procimg.py | 49 +++++++++++++++++++++++++++++++ pypeit/images/rawimage.py | 32 +++++++++++++++++++- pypeit/par/pypeitpar.py | 13 ++++++-- pypeit/spectrographs/keck_kcwi.py | 4 +++ 4 files changed, 95 insertions(+), 3 deletions(-) diff --git a/pypeit/core/procimg.py b/pypeit/core/procimg.py index 9133bd6eac..de8c739319 100644 --- a/pypeit/core/procimg.py +++ b/pypeit/core/procimg.py @@ -1372,3 +1372,52 @@ def variance_model(base, counts=None, count_scale=None, noise_floor=None): return var +def nonlinear_counts(counts, ampimage, nonlinearity_coeffs): + r""" + Apply a nonlinearity correction to the provided counts. + + The nonlinearity correction is applied to the provided counts using the + hard-coded parameters in the provided ``nonlinearity_coeffs``. The + correction is applied to the provided ``counts`` using the following + equation: + + .. math:: + + C_{\rm corr} = C \left[ 1 + a_i C \right] + + where :math:`C` is the provided counts, :math:`C_{\rm corr}` is the corrected counts + :math:`a_i` are the provided coefficients (one for each amplifier). + + Parameters + ---------- + counts : `numpy.ndarray`_ + Array with the counts to correct. + ampimage : `numpy.ndarray`_ + Array with the amplifier image. This is used to determine the + amplifier-dependent nonlinearity correction coefficients. + nonlinearity_coeffs : `numpy.ndarray`_ + Array with the nonlinearity correction coefficients. The shape of the + array must be :math:`(N_{\rm amp})`, where :math:`N_{\rm amp}` is the + number of amplifiers. The coefficients are applied to the counts using + the equation above. + + Returns + ------- + corr_counts : + Array with the corrected counts. + """ + msgs.info('Applying a non-linearity correction to the counts.') + # Check the input + if counts.shape != ampimage.shape: + msgs.error('Counts and amplifier image have different shapes.') + if isinstance(nonlinearity_coeffs, list): + nonlinearity_coeffs = np.array(nonlinearity_coeffs) + # Setup the output array + corr_counts = counts.copy() + unqamp = np.unique(ampimage) + for uu in range(unqamp.size): + thisamp = unqamp[uu] + indx = (ampimage == thisamp) + corr_counts[indx] = counts[indx] * (1. + nonlinearity_coeffs[thisamp]*counts[indx]) + # Apply the correction + return corr_counts diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index 8108c4b828..42b73d302f 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -177,6 +177,7 @@ def __init__(self, ifile, spectrograph, det): self.steps = dict(apply_gain=False, subtract_pattern=False, subtract_overscan=False, + correct_nonlinear=False, subtract_continuum=False, subtract_scattlight=False, trim=False, @@ -304,6 +305,28 @@ def build_ivar(self): noise_floor=self.par['noise_floor']) return utils.inverse(var) + def correct_nonlinear(self): + """ + Apply a non-linear correction to the image. + + This is a simple wrapper for :func:`~pypeit.core.procimg.nonlinear_counts`. + + """ + step = inspect.stack()[0][3] + if self.steps[step]: + # Already applied + msgs.warn('Non-linear correction was already applied.') + return + + inim = self.image.copy() + for ii in range(self.nimg): + # Correct the image for non-linearity. Note that the variance image is not changed here. + self.image[ii, ...] = procimg.nonlinear_counts(self.image[ii, ...], self.datasec_img[ii, ...]-1, + self.par['correct_nonlinear']) + embed() + + self.steps[step] = True + def estimate_readnoise(self): """ Estimate the readnoise (in electrons) based on the overscan regions of the image. @@ -612,7 +635,12 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl self.subtract_bias(bias) # TODO: Checking for count (well-depth) saturation should be done here. - # TODO :: Non-linearity correction should be done here. + + # - Perform a non-linearity correction. This is done before the + # flat-field and dark correction because the flat-field modifies + # the counts. + if self.par['correct_nonlinear'] is not None: + self.correct_nonlinear() # - Create the dark current image(s). The dark-current image *always* # includes the tabulated dark current and the call below ensures @@ -653,6 +681,8 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl flat_bpm = self.flatfield(flatimages, slits=slits, debug=debug) if self.use_flat else None # Calculate the inverse variance + # TODO :: I think the IVAR should technically be calculated before the flat-fielding. + # This is because the flat-fielding is done in counts, and the IVAR is in counts^2. self.ivar = self.build_ivar() # - Subtract continuum level diff --git a/pypeit/par/pypeitpar.py b/pypeit/par/pypeitpar.py index 03a7da2da1..208519aef8 100644 --- a/pypeit/par/pypeitpar.py +++ b/pypeit/par/pypeitpar.py @@ -216,7 +216,7 @@ def __init__(self, trim=None, apply_gain=None, orient=None, # calib_setup_and_bit=None, rmcompact=None, sigclip=None, sigfrac=None, objlim=None, use_biasimage=None, use_overscan=None, use_darkimage=None, - dark_expscale=None, + dark_expscale=None, correct_nonlinear=None, empirical_rn=None, shot_noise=None, noise_floor=None, use_pixelflat=None, use_illumflat=None, use_specillum=None, use_pattern=None, subtract_scattlight=None, scattlight=None, subtract_continuum=None, @@ -273,6 +273,15 @@ def __init__(self, trim=None, apply_gain=None, orient=None, 'for \'savgol\', set overscan_par = order, window size ; ' \ 'for \'median\', set overscan_par = None or omit the keyword.' + defaults['correct_nonlinear'] = None + dtypes['correct_nonlinear'] = list + descr['correct_nonlinear'] = 'Correct for non-linear response of the detector. If None, ' \ + 'no correction is performed. If a list, then the list should be ' \ + 'the non-linear correction parameter (alpha), where the functional ' \ + 'form is given by Ct = Cm (1 + alpha x Cm), with Ct and Cm the true ' \ + 'and measured counts. This parameter is usually ' \ + 'hard-coded for a given spectrograph, and should otherwise be left as None.' \ + defaults['use_darkimage'] = False dtypes['use_darkimage'] = bool descr['use_darkimage'] = 'Subtract off a dark image. If True, one or more darks must ' \ @@ -443,7 +452,7 @@ def from_dict(cls, cfg): parkeys = ['trim', 'apply_gain', 'orient', 'use_biasimage', 'subtract_continuum', 'subtract_scattlight', 'scattlight', 'use_pattern', 'use_overscan', 'overscan_method', 'overscan_par', 'use_darkimage', 'dark_expscale', 'spat_flexure_correct', 'use_illumflat', 'use_specillum', - 'empirical_rn', 'shot_noise', 'noise_floor', 'use_pixelflat', 'combine', + 'empirical_rn', 'shot_noise', 'noise_floor', 'use_pixelflat', 'combine', 'correct_nonlinear', 'satpix', #'calib_setup_and_bit', 'n_lohi', 'mask_cr', 'lamaxiter', 'grow', 'clip', 'comb_sigrej', 'rmcompact', 'sigclip', diff --git a/pypeit/spectrographs/keck_kcwi.py b/pypeit/spectrographs/keck_kcwi.py index 5743eaa6eb..f8edd1dec2 100644 --- a/pypeit/spectrographs/keck_kcwi.py +++ b/pypeit/spectrographs/keck_kcwi.py @@ -926,6 +926,10 @@ def default_pypeit_par(cls): par['scienceframe']['process']['scattlight']['finecorr_order'] = 2 # par['scienceframe']['process']['scattlight']['finecorr_mask'] = 12 # Mask the middle inter-slit region. It contains a strange scattered light feature that doesn't appear to affect any other inter-slit regions + # Correct for non-linear behaviour in the detector response + # TODO :: Ideally, need to set this for all frames + par['scienceframe']['process']['correct_nonlinear'] = [-1.4E-7, -1.4E-7, -1.2E-7, -1.8E-7] # AMPID=0,1,2,3 respectively + # Correct the illumflat for pixel-to-pixel sensitivity variations par['calibrations']['illumflatframe']['process']['use_pixelflat'] = True From c59f4d08be36f08d71a0d963f9c6306156b3ba74 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 22 Jan 2024 11:51:08 +0000 Subject: [PATCH 009/128] correct nonlinear --- pypeit/images/rawimage.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index 42b73d302f..ef3115eb82 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -323,7 +323,6 @@ def correct_nonlinear(self): # Correct the image for non-linearity. Note that the variance image is not changed here. self.image[ii, ...] = procimg.nonlinear_counts(self.image[ii, ...], self.datasec_img[ii, ...]-1, self.par['correct_nonlinear']) - embed() self.steps[step] = True From 397e35cfec560afad29958fcbf12c4916fba15ab Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 22 Jan 2024 12:07:11 +0000 Subject: [PATCH 010/128] add extract to config --- pypeit/scripts/__init__.py | 2 -- setup.cfg | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pypeit/scripts/__init__.py b/pypeit/scripts/__init__.py index 9bbd31853a..feb156ac4c 100644 --- a/pypeit/scripts/__init__.py +++ b/pypeit/scripts/__init__.py @@ -61,5 +61,3 @@ def script_classes(): return dict([ (n,c) for n,c in zip(scr_n[srt],scr_c[srt])]) pypeit_scripts = list(script_classes().keys()) - - diff --git a/setup.cfg b/setup.cfg index 969670b068..c0b61fa028 100644 --- a/setup.cfg +++ b/setup.cfg @@ -106,6 +106,7 @@ console_scripts = pypeit_coadd_datacube = pypeit.scripts.coadd_datacube:CoAddDataCube.entry_point pypeit_collate_1d = pypeit.scripts.collate_1d:Collate1D.entry_point pypeit_edge_inspector = pypeit.scripts.edge_inspector:EdgeInspector.entry_point + pypeit_extract_datacube = pypeit.scripts.extract_datacube:ExtractDataCube.entry_point pypeit_flux_calib = pypeit.scripts.flux_calib:FluxCalib.entry_point pypeit_flux_setup = pypeit.scripts.flux_setup:FluxSetup.entry_point pypeit_install_extinctfile = pypeit.scripts.install_extinctfile:InstallExtinctfile.entry_point From 30c8d6ba0de9c4ee96e32205943ba158ba901e82 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 22 Jan 2024 21:42:26 +0000 Subject: [PATCH 011/128] extractions working --- pypeit/coadd3d.py | 14 ++++---- pypeit/core/datacube.py | 58 ++++++++++++++++++------------ pypeit/scripts/extract_datacube.py | 19 +++++----- 3 files changed, 52 insertions(+), 39 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 7abb8323b0..43506b9721 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -15,7 +15,7 @@ import numpy as np from pypeit import msgs -from pypeit import alignframe, datamodel, flatfield, io, specobj, spec2dobj, utils +from pypeit import alignframe, datamodel, flatfield, io, spec2dobj, utils from pypeit.core.flexure import calculate_image_phase from pypeit.core import datacube, extract, flux_calib, parse from pypeit.spectrographs.util import load_spectrograph @@ -237,15 +237,13 @@ def extract_spec(self, parset, overwrite=False): overwrite : bool, optional Overwrite any existing files """ - # Generate a spec1d object to hold the extracted spectrum - spec = specobj.SpecObj(self.spect_meta['pypeline'], 0) - # Extract the spectrum - spec = datacube.extract_standard_spec(self.wave, self.flux, self.sig, self.ivar, self.bpm, spec) + # TODO :: Avoid transposing these large cubes + sobj = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, pypeline=self.spectrograph.pypeline) # Save the extracted spectrum spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') - spec.to_file(spec1d_filename, primary_hdr=self.head0, hdr=self.head0, overwrite=overwrite) + sobj.to_file(spec1d_filename, primary_hdr=self.head0, hdr=self.head0, overwrite=overwrite) # Return return @@ -535,8 +533,8 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating self.blaze_wave, self.blaze_spec = None, None self.blaze_spline, self.flux_spline = None, None self.flat_splines = dict() # A dictionary containing the splines of the flatfield - if self.cubepar['standard_cube'] is not None: - self.make_sensfunc() + # if self.cubepar['standard_cube'] is not None: + # self.make_sensfunc() # If a reference image has been set, check that it exists if self.cubepar['reference_image'] is not None: diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 50fc69bc6b..8a9dccd473 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -14,8 +14,7 @@ from scipy.interpolate import interp1d import numpy as np -from pypeit import msgs -from pypeit import utils +from pypeit import msgs, utils, specobj from pypeit.core import coadd, flux_calib # Use a fast histogram for speed! @@ -35,13 +34,13 @@ def gaussian2D(tup, intflux, xo, yo, sigma_x, sigma_y, theta, offset): intflux (float): The Integrated flux of the 2D Gaussian xo (float): - The centre of the Gaussian along the x-coordinate when z=0 + The centre of the Gaussian along the x-coordinate when z=0 (units of pixels) yo (float): - The centre of the Gaussian along the y-coordinate when z=0 + The centre of the Gaussian along the y-coordinate when z=0 (units of pixels) sigma_x (float): - The standard deviation in the x-direction + The standard deviation in the x-direction (units of pixels) sigma_y (float): - The standard deviation in the y-direction + The standard deviation in the y-direction (units of pixels) theta (float): The orientation angle of the 2D Gaussian offset (float): @@ -187,14 +186,13 @@ def correct_grating_shift(wave_eval, wave_curr, spl_curr, wave_ref, spl_ref, ord return grat_corr -def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20): +def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20, pypeline="SlicerIFU"): """ Extract a spectrum of a standard star from a datacube Parameters ---------- - std_cube : `astropy.io.fits.HDUList`_ - An HDU list of fits files + TODO: Fill this in subpixel : int Number of pixels to subpixelate spectrum when creating mask @@ -210,18 +208,13 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 good pixel mask for Nlam_star """ # Extract some information from the HDU list - flxcube = stdcube['FLUX'].data.T.copy() - varcube = stdcube['SIG'].data.T.copy()**2 - bpmcube = stdcube['BPM'].data.T.copy() + varcube = utils.inverse(ivarcube) + # flxcube = stdcube['FLUX'].data.T.copy() + # bpmcube = stdcube['BPM'].data.T.copy() numwave = flxcube.shape[2] - # Setup the WCS - wcscube = wcs.WCS(stdcube['FLUX'].header) - - wcs_scale = (1.0 * wcscube.spectral.wcs.cunit[0]).to(units.Angstrom).value # Ensures the WCS is in Angstroms - wave = wcs_scale * wcscube.spectral.wcs_pix2world(np.arange(numwave), 0)[0] - # Generate a whitelight image, and fit a 2D Gaussian to estimate centroid and width + msgs.info("Making whitelight image") wl_img = make_whitelight_fromcube(flxcube) popt, pcov = fitGaussian2D(wl_img, norm=True) wid = max(popt[3], popt[4]) @@ -232,6 +225,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 xx, yy = np.meshgrid(x, y, indexing='ij') # Generate a mask + msgs.info("Generating an object mask") newshape = (flxcube.shape[0] * subpixel, flxcube.shape[1] * subpixel) mask = np.zeros(newshape) nsig = 4 # 4 sigma should be far enough... Note: percentage enclosed for 2D Gaussian = 1-np.exp(-0.5 * nsig**2) @@ -240,6 +234,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 mask = utils.rebinND(mask, (flxcube.shape[0], flxcube.shape[1])).reshape(flxcube.shape[0], flxcube.shape[1], 1) # Generate a sky mask + msgs.info("Generating a sky mask") newshape = (flxcube.shape[0] * subpixel, flxcube.shape[1] * subpixel) smask = np.zeros(newshape) nsig = 8 # 8 sigma should be far enough @@ -248,15 +243,15 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 smask = utils.rebinND(smask, (flxcube.shape[0], flxcube.shape[1])).reshape(flxcube.shape[0], flxcube.shape[1], 1) smask -= mask - # Subtract the residual sky + msgs.info("Subtracting the residual sky") + # Subtract the residual sky from the datacube skymask = np.logical_not(bpmcube) * smask skycube = flxcube * skymask skyspec = skycube.sum(0).sum(0) nrmsky = skymask.sum(0).sum(0) skyspec *= utils.inverse(nrmsky) flxcube -= skyspec.reshape((1, 1, numwave)) - - # Subtract the residual sky from the whitelight image + # Now subtract the residual sky from the whitelight image sky_val = np.sum(wl_img[:, :, np.newaxis] * smask) / np.sum(smask) wl_img -= sky_val @@ -281,8 +276,25 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 arcsecSQ = 3600.0*3600.0*(wcscube.wcs.cdelt[0]*wcscube.wcs.cdelt[1]) ret_flux *= arcsecSQ ret_var *= arcsecSQ**2 - # Return the box extraction results - return wave, ret_flux, utils.inverse(ret_var), ret_gpm + + # Generate a spec1d object to hold the extracted spectrum + msgs.info("Initialising a PypeIt SpecObj spec1d file") + sobj = specobj.SpecObj(pypeline, "det01", SLITID=0) + sobj.RA = wcscube.wcs.crval[0] + sobj.DEC = wcscube.wcs.crval[1] + # sobj.NAME = stdname + sobj.SLITID = 0 + # sobj.setup_crmask(numwave) + sobj.BOX_RADIUS = wid + sobj.BOX_WAVE = wave.astype(float) + sobj.BOX_COUNTS = ret_flux + sobj.BOX_COUNTS_IVAR = utils.inverse(ret_var) + sobj.BOX_MASK = ret_gpm + sobj.BOX_COUNTS_SKY = skyspec # This is not the real sky, it is the residual sky. The datacube is presumed to be sky subtracted + sobj.S2N = np.median(ret_flux * np.sqrt(utils.inverse(ret_var))) + + # Return the specobj object + return sobj def make_sensfunc(ss_file, senspar, blaze_wave=None, blaze_spline=None, grating_corr=False): diff --git a/pypeit/scripts/extract_datacube.py b/pypeit/scripts/extract_datacube.py index 5e09801cfb..50ee7be3d0 100644 --- a/pypeit/scripts/extract_datacube.py +++ b/pypeit/scripts/extract_datacube.py @@ -23,6 +23,7 @@ class ExtractDataCube(scriptbase.ScriptBase): @classmethod def get_parser(cls, width=None): + # TODO :: May consider adding another optional file that allows the user to pass in some extract parameters? parser = super().get_parser(description='Read in a datacube, extract a spectrum of a point source,' 'and save it as a spec1d file.', width=width) parser.add_argument('file', type = str, default=None, help='spec3d.fits DataCube file') @@ -42,21 +43,23 @@ def main(args): if args.file is None: msgs.error('You must input a spec3d (i.e. PypeIt DataCube) fits file') - # Read in the relevant information from the .extract file - ext3dfile = inputfiles.ExtractFile.from_file(args.file) - spectrograph = load_spectrograph(ext3dfile.config['rdx']['spectrograph']) + if False: + # Read in the relevant information from the .extract file + ext3dfile = inputfiles.ExtractFile.from_file(args.file) + spectrograph = load_spectrograph(ext3dfile.config['rdx']['spectrograph']) - # Parameters - spectrograph_def_par = spectrograph.default_pypeit_par() - parset = par.PypeItPar.from_cfg_lines(cfg_lines=spectrograph_def_par.to_config(), - merge_with=(ext3dfile.cfg_lines,)) + # Parameters + spectrograph_def_par = spectrograph.default_pypeit_par() + parset = par.PypeItPar.from_cfg_lines(cfg_lines=spectrograph_def_par.to_config(), + merge_with=(ext3dfile.cfg_lines,)) # Load the DataCube tstart = time.time() extcube = DataCube.from_file(args.file) # Extract the spectrum - extcube.extract_spec(parset['reduce']['extraction'], overwrite=args.overwrite) + # extcube.extract_spec(parset['reduce']['extraction'], overwrite=args.overwrite) + extcube.extract_spec(None, overwrite=args.overwrite) # Report the extraction time msgs.info(utils.get_time_string(time.time()-tstart)) From de88b2bc287102eacc4e4e55b1f75dda37c0f565 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jan 2024 09:55:20 +0000 Subject: [PATCH 012/128] extract to specobjs --- pypeit/coadd3d.py | 4 ++-- pypeit/core/datacube.py | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 43506b9721..b3b53e554e 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -239,11 +239,11 @@ def extract_spec(self, parset, overwrite=False): """ # Extract the spectrum # TODO :: Avoid transposing these large cubes - sobj = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, pypeline=self.spectrograph.pypeline) + sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, pypeline=self.spectrograph.pypeline) # Save the extracted spectrum spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') - sobj.to_file(spec1d_filename, primary_hdr=self.head0, hdr=self.head0, overwrite=overwrite) + sobjs.write_to_fits(self.head0, spec1d_filename, overwrite=overwrite) # Return return diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 8a9dccd473..055c1a359d 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -14,7 +14,7 @@ from scipy.interpolate import interp1d import numpy as np -from pypeit import msgs, utils, specobj +from pypeit import msgs, utils, specobj, specobjs from pypeit.core import coadd, flux_calib # Use a fast histogram for speed! @@ -293,8 +293,11 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 sobj.BOX_COUNTS_SKY = skyspec # This is not the real sky, it is the residual sky. The datacube is presumed to be sky subtracted sobj.S2N = np.median(ret_flux * np.sqrt(utils.inverse(ret_var))) + # Make a specobjs object + sobjs = specobjs.SpecObjs() + sobjs.add_sobj(sobj) # Return the specobj object - return sobj + return sobjs def make_sensfunc(ss_file, senspar, blaze_wave=None, blaze_spline=None, grating_corr=False): @@ -318,6 +321,9 @@ def make_sensfunc(ss_file, senspar, blaze_wave=None, blaze_spline=None, grating_ Returns: `numpy.ndarray`_: A mask of the good sky pixels (True = good) """ + # TODO :: This routine has not been updated to the new spec1d plan of passing in a sensfunc object + # :: Probably, this routine should be removed and the functionality moved to the sensfunc object + msgs.error("coding error - make_sensfunc is not currently supported. Please contact the developers") # Check if the standard star datacube exists if not os.path.exists(ss_file): msgs.error("Standard cube does not exist:" + msgs.newline() + ss_file) From 284c33a5fd09389c1a952f4c7d5c633cf170f99f Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jan 2024 09:55:34 +0000 Subject: [PATCH 013/128] code cleanup --- pypeit/core/flux_calib.py | 12 +++--------- pypeit/sensfunc.py | 6 +----- pypeit/specobjs.py | 15 +++++++++++---- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/pypeit/core/flux_calib.py b/pypeit/core/flux_calib.py index bee3a66872..9086f4c99b 100644 --- a/pypeit/core/flux_calib.py +++ b/pypeit/core/flux_calib.py @@ -665,15 +665,9 @@ def sensfunc(wave, counts, counts_ivar, counts_mask, exptime, airmass, std_dict, If you have significant telluric absorption you should be using telluric.sensnfunc_telluric. default = 0.9 Returns: - Tuple: Returns: - - Returns - ------- - meta_table: `astropy.table.Table`_ - Table containing meta data for the sensitivity function - out_table: `astropy.table.Table`_ - Table containing the sensitivity function - + tuple: Returns the following: + - meta_table: `astropy.table.Table`_ Table containing meta data for the sensitivity function + - out_table: `astropy.table.Table`_ Table containing the sensitivity function """ wave_arr, counts_arr, ivar_arr, mask_arr, log10_blaze_func, nspec, norders = utils.spec_atleast_2d(wave, counts, counts_ivar, counts_mask) diff --git a/pypeit/sensfunc.py b/pypeit/sensfunc.py index 1719545160..3787762691 100644 --- a/pypeit/sensfunc.py +++ b/pypeit/sensfunc.py @@ -219,7 +219,7 @@ def __init__(self, spec1dfile, sensfile, par, par_fluxcalib=None, debug=False): # TODO: This line is necessary until we figure out a way to instantiate # spectrograph objects with configuration specific information from # spec1d files. - self.spectrograph.dispname = header['DISPNAME'] + # self.spectrograph.dispname = header['DISPNAME'] self.par_fluxcalib = self.spectrograph.default_pypeit_par()['fluxcalib'] if par_fluxcalib is None else par_fluxcalib # Set the algorithm in the datamodel @@ -294,7 +294,6 @@ def compute_blaze(self, wave, trace_spec, trace_spat, flatfile, box_radius=10.0, if norddet > 1, else shape = (nspec,) """ - flatImages = flatfield.FlatImages.from_file(flatfile) pixelflat_raw = flatImages.pixelflat_raw @@ -327,7 +326,6 @@ def compute_blaze(self, wave, trace_spec, trace_spat, flatfile, box_radius=10.0, # to get rid of this .squeeze() return log10_blaze_function.squeeze() - def _bundle(self): """ Bundle the object for writing using @@ -473,8 +471,6 @@ def flux_std(self): self.sens['SENS_FLUXED_STD_FLAM_IVAR'] = flam_ivar.T self.sens['SENS_FLUXED_STD_MASK'] = flam_mask.T - - def eval_zeropoint(self, wave, iorddet): """ Dummy method, overloaded by subclasses diff --git a/pypeit/specobjs.py b/pypeit/specobjs.py index 3037a652c6..fe93d516df 100644 --- a/pypeit/specobjs.py +++ b/pypeit/specobjs.py @@ -717,16 +717,23 @@ def write_to_fits(self, subheader, outfile, overwrite=True, update_det=None, Args: subheader (:obj:`dict`): + Dictionary with header keywords and values to be added to the + primary header of the output file. outfile (str): + Name of the output file overwrite (bool, optional): + Overwrite the output file if it exists? + update_det (int or list, optional): + If provided, do not clobber the existing file but only update + the indicated detectors. Useful for re-running on a subset of detectors slitspatnum (:obj:`str` or :obj:`list`, optional): Restricted set of slits for reduction. If provided, do not clobber the existing file but only update the indicated slits. Useful for re-running on a subset of slits - update_det (int or list, optional): - If provided, do not clobber the existing file but only update - the indicated detectors. Useful for re-running on a subset of detectors - + history (:obj:`str`, optional): + String to be added to the header HISTORY keyword. + debug (:obj:`bool`, optional): + If True, run in debug mode. """ if os.path.isfile(outfile) and not overwrite: msgs.warn(f'{outfile} exits. Set overwrite=True to overwrite it.') From a48b180f0da72380451ee58fac1a675dceff8076 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jan 2024 11:53:15 +0000 Subject: [PATCH 014/128] optimal extract --- pypeit/core/datacube.py | 51 +++++++++++++++++++++++++++++++++-------- pypeit/specobjs.py | 3 ++- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 055c1a359d..9b84a47e78 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -15,7 +15,7 @@ import numpy as np from pypeit import msgs, utils, specobj, specobjs -from pypeit.core import coadd, flux_calib +from pypeit.core import coadd, extract, flux_calib # Use a fast histogram for speed! from fast_histogram import histogramdd @@ -207,6 +207,13 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 gpm_star : `numpy.ndarray`_ good pixel mask for Nlam_star """ + # Generate a spec1d object to hold the extracted spectrum + msgs.info("Initialising a PypeIt SpecObj spec1d file") + sobj = specobj.SpecObj(pypeline, "DET01", SLITID=0) + sobj.RA = wcscube.wcs.crval[0] + sobj.DEC = wcscube.wcs.crval[1] + sobj.SLITID = 0 + # Extract some information from the HDU list varcube = utils.inverse(ivarcube) # flxcube = stdcube['FLUX'].data.T.copy() @@ -277,14 +284,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 ret_flux *= arcsecSQ ret_var *= arcsecSQ**2 - # Generate a spec1d object to hold the extracted spectrum - msgs.info("Initialising a PypeIt SpecObj spec1d file") - sobj = specobj.SpecObj(pypeline, "det01", SLITID=0) - sobj.RA = wcscube.wcs.crval[0] - sobj.DEC = wcscube.wcs.crval[1] - # sobj.NAME = stdname - sobj.SLITID = 0 - # sobj.setup_crmask(numwave) + # Store the BOXCAR extraction information sobj.BOX_RADIUS = wid sobj.BOX_WAVE = wave.astype(float) sobj.BOX_COUNTS = ret_flux @@ -293,6 +293,39 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 sobj.BOX_COUNTS_SKY = skyspec # This is not the real sky, it is the residual sky. The datacube is presumed to be sky subtracted sobj.S2N = np.median(ret_flux * np.sqrt(utils.inverse(ret_var))) + # Now do the OPTIMAL extraction + msgs.info("Extracting an optimal spectrum of datacube") + # First, we need to rearrange the datacube and inverse variance cube into a 2D array. + # The 3D -> 2D conversion is done so that there is a spectral and spatial dimension online, + # and the brightest white light pixel is transformed to be at the centre column of the 2D + # array. Then, the second brightest white light pixel is transformed to be next to the centre + # column of the 2D array, and so on. This is done so that the optimal extraction algorithm + # can be applied. + # TODO :: The wl_img_masked should be replaced with a 2D model fit to the white light image. + wl_img_masked = wl_img * mask[:,:,0] + asrt = np.argsort(wl_img_masked, axis=None) + tmp = asrt.reshape((asrt.size//2,2)) + objprof_idx = np.append(tmp[:,0], tmp[::-1,1]) + objprof = wl_img_masked[np.unravel_index(objprof_idx, wl_img.shape)] # TODO :: Does this need to be normalized? + # Now slice the datacube and inverse variance cube into a 2D array + spat, spec = np.meshgrid(objprof_idx, np.arange(numwave), indexing='ij') + spatspl = np.apply_along_axis(np.unravel_index, 1, spat, wl_img.shape) + # Now slice the datacube and corresponding cubes/vectors into a series of 2D arrays + numspat = objprof_idx.size + flxslice = (spatspl[:,0,:], spatspl[:,1,:], spec) + flxcube2d = flxcube[flxslice].T * arcsecSQ + ivarcube2d = ivarcube[flxslice].T / arcsecSQ**2 + gpmcube2d = np.logical_not(bpmcube[flxslice].T) + waveimg = wave.reshape((numwave,1)).repeat(numspat, axis=1) + skyimg = skyspec.reshape((numwave,1)).repeat(numspat, axis=1) * arcsecSQ + oprof = objprof.reshape((1,numspat)).repeat(numwave, axis=0) + thismask = np.ones_like(flxcube2d, dtype=bool) + + # Now do the optimal extraction + # TODO :: Perhaps add support for pypeitpar parameters + extract.extract_optimal(flxcube2d, ivarcube2d, gpmcube2d, waveimg, skyimg, thismask, oprof, + sobj, min_frac_use=0.05, fwhmimg=None, base_var=None, count_scale=None, noise_floor=None) + # Make a specobjs object sobjs = specobjs.SpecObjs() sobjs.add_sobj(sobj) diff --git a/pypeit/specobjs.py b/pypeit/specobjs.py index fe93d516df..b199ed6fec 100644 --- a/pypeit/specobjs.py +++ b/pypeit/specobjs.py @@ -235,6 +235,7 @@ def unpack_object(self, ret_flam=False, extract_type='OPT'): ech_orders = np.zeros(norddet, dtype=int) # TODO make the extraction that is desired OPT vs BOX an optional input variable. + # This TODO is already so, right? for iorddet in range(norddet): wave[:, iorddet] = getattr(self, wave_key)[iorddet] flux_gpm[:, iorddet] = getattr(self, '{}_MASK'.format(extract_type))[iorddet] @@ -242,7 +243,7 @@ def unpack_object(self, ret_flam=False, extract_type='OPT'): if self[0].PYPELINE == 'Echelle': ech_orders[iorddet] = self[iorddet].ECH_ORDER flux[:, iorddet] = getattr(self, flux_key)[iorddet] - flux_ivar[:, iorddet] = getattr(self, flux_key+'_IVAR')[iorddet] #OPT_FLAM_IVAR + flux_ivar[:, iorddet] = getattr(self, flux_key+'_IVAR')[iorddet] trace_spat[:, iorddet] = self[iorddet].TRACE_SPAT trace_spec[:, iorddet] = self[iorddet].trace_spec From 2c04bc46181eecb4335017648a444eee74dc451e Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jan 2024 14:28:37 +0000 Subject: [PATCH 015/128] revert --- pypeit/sensfunc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/sensfunc.py b/pypeit/sensfunc.py index 3787762691..c476224b3d 100644 --- a/pypeit/sensfunc.py +++ b/pypeit/sensfunc.py @@ -219,7 +219,7 @@ def __init__(self, spec1dfile, sensfile, par, par_fluxcalib=None, debug=False): # TODO: This line is necessary until we figure out a way to instantiate # spectrograph objects with configuration specific information from # spec1d files. - # self.spectrograph.dispname = header['DISPNAME'] + self.spectrograph.dispname = header['DISPNAME'] self.par_fluxcalib = self.spectrograph.default_pypeit_par()['fluxcalib'] if par_fluxcalib is None else par_fluxcalib # Set the algorithm in the datamodel From 308f134c956136e8dcb5c6afbaa106e07ff4e47e Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jan 2024 20:19:41 +0000 Subject: [PATCH 016/128] reorganise imports --- pypeit/scripts/coadd_datacube.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pypeit/scripts/coadd_datacube.py b/pypeit/scripts/coadd_datacube.py index a7973dee9f..6aaf02db51 100644 --- a/pypeit/scripts/coadd_datacube.py +++ b/pypeit/scripts/coadd_datacube.py @@ -5,13 +5,6 @@ .. include common links, assuming primary doc root is up one directory .. include:: ../include/links.rst """ -import time -from pypeit import msgs -from pypeit import par -from pypeit import inputfiles -from pypeit import utils -from pypeit.coadd3d import CoAdd3D -from pypeit.spectrographs.util import load_spectrograph from pypeit.scripts import scriptbase from IPython import embed @@ -32,6 +25,15 @@ def get_parser(cls, width=None): @staticmethod def main(args): + import time + + from pypeit import msgs + from pypeit import par + from pypeit import inputfiles + from pypeit import utils + from pypeit.coadd3d import CoAdd3D + from pypeit.spectrographs.util import load_spectrograph + # Set the verbosity, and create a logfile if verbosity == 2 msgs.set_logfile_and_verbosity('coadd_datacube', args.verbosity) From 52c1102660e5205f7ae8823d6316d782b3a26775 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jan 2024 20:20:30 +0000 Subject: [PATCH 017/128] extraction working --- pypeit/coadd3d.py | 25 +++++++++---- pypeit/core/datacube.py | 57 ++++++++++++++++++------------ pypeit/scripts/extract_datacube.py | 17 +++++---- 3 files changed, 63 insertions(+), 36 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index b3b53e554e..a9406985ab 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -95,6 +95,7 @@ class DataCube(datamodel.DataContainer): 'fluxed': dict(otype=bool, descr='Boolean indicating if the datacube is fluxed.')} internals = ['head0', + 'headwcs', 'filename', 'spectrograph', 'spect_meta', @@ -112,6 +113,8 @@ def __init__(self, flux, sig, bpm, wave, PYP_SPEC, blaze_wave, blaze_spec, sensf # Initialise the internals self._ivar = None self._wcs = None + self.head0 = None # This contains the primary header of the spec2d used to make the datacube + self.headwcs = None # This contains the WCS of the datacube def _bundle(self): """ @@ -188,7 +191,8 @@ def from_file(cls, ifile): self = super().from_hdu(hdu) # Internals self.filename = ifile - self.head0 = hdu[1].header # Actually use the first extension here, since it contains the WCS + self.head0 = hdu[0].header + self.headwcs = hdu[1].header # Meta self.spectrograph = load_spectrograph(self.PYP_SPEC) self.spect_meta = self.spectrograph.parse_spec_header(hdu[0].header) @@ -223,7 +227,10 @@ def wcs(self): not be accessed directly, and you should only call self.wcs """ if self._wcs is None: - self._wcs = wcs.WCS(self.head0) + if self.headwcs is None: + msgs.error('No WCS information stored in the DataCube') + else: + self._wcs = wcs.WCS(self.headwcs) return self._wcs def extract_spec(self, parset, overwrite=False): @@ -239,7 +246,9 @@ def extract_spec(self, parset, overwrite=False): """ # Extract the spectrum # TODO :: Avoid transposing these large cubes - sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, pypeline=self.spectrograph.pypeline) + # TODO :: Pass in the parset parameters here + sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, + pypeline=self.spectrograph.pypeline) # Save the extracted spectrum spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') @@ -495,7 +504,7 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating self.ifu_ra, self.ifu_dec = np.array([]), np.array([]) # The RA and Dec at the centre of the IFU, as stored in the header self.all_sci, self.all_ivar, self.all_wave, self.all_slitid, self.all_wghts = [], [], [], [], [] - self.all_tilts, self.all_slits, self.all_align = [], [], [] + self.all_tilts, self.all_slits, self.all_align, self.all_header = [], [], [], [] self.all_wcs, self.all_ra, self.all_dec, self.all_dar = [], [], [], [] self.weights = np.ones(self.numfiles) # Weights to use when combining cubes @@ -996,6 +1005,7 @@ def load(self): # Load the header hdr0 = spec2DObj.head0 + self.all_header.append(hdr0) self.ifu_ra = np.append(self.ifu_ra, self.spec.compound_meta([hdr0], 'ra')) self.ifu_dec = np.append(self.ifu_dec, self.spec.compound_meta([hdr0], 'dec')) @@ -1205,7 +1215,7 @@ def load(self): msgs.info("Saving datacube as: {0:s}".format(outfile)) final_cube = DataCube(flxcube, sigcube, bpmcube, wave, self.specname, self.blaze_wave, self.blaze_spec, sensfunc=None, fluxed=self.fluxcal) - final_cube.to_file(outfile, hdr=hdr, overwrite=self.overwrite) + final_cube.to_file(outfile, primary_hdr=self.all_header[ff], hdr=hdr, overwrite=self.overwrite) # No need to proceed and store arrays - we are writing individual datacubes continue @@ -1411,7 +1421,8 @@ def run(self): msgs.info("Saving datacube as: {0:s}".format(outfile)) final_cube = DataCube(flxcube, sigcube, bpmcube, wave, self.specname, self.blaze_wave, self.blaze_spec, sensfunc=sensfunc, fluxed=self.fluxcal) - final_cube.to_file(outfile, hdr=hdr, overwrite=self.overwrite) + # Note, we only store in the primary header the first spec2d file + final_cube.to_file(outfile, primary_hdr=self.all_header[0], hdr=hdr, overwrite=self.overwrite) else: for ff in range(self.numfiles): outfile = datacube.get_output_filename("", self.cubepar['output_filename'], False, ff) @@ -1436,4 +1447,4 @@ def run(self): msgs.info("Saving datacube as: {0:s}".format(outfile)) final_cube = DataCube(flxcube, sigcube, bpmcube, wave, self.specname, self.blaze_wave, self.blaze_spec, sensfunc=sensfunc, fluxed=self.fluxcal) - final_cube.to_file(outfile, hdr=hdr, overwrite=self.overwrite) + final_cube.to_file(outfile, primary_hdr=self.all_header[ff], hdr=hdr, overwrite=self.overwrite) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 9b84a47e78..6054652a12 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -97,15 +97,19 @@ def fitGaussian2D(image, norm=False): y = np.linspace(0, image.shape[1] - 1, image.shape[1]) xx, yy = np.meshgrid(x, y, indexing='ij') # Setup the fitting params - idx_max = [image.shape[0]/2, image.shape[1]/2] # Just use the centre of the image as the best guess - #idx_max = np.unravel_index(np.argmax(image), image.shape) + med_filt_image = signal.medfilt2d(image, kernel_size=3) + # idx_max = [image.shape[0]/2, image.shape[1]/2] # Just use the centre of the image as the best guess + idx_max = np.unravel_index(np.argmax(med_filt_image), image.shape) initial_guess = (1, idx_max[0], idx_max[1], 2, 2, 0, 0) bounds = ([0, 0, 0, 0.5, 0.5, -np.pi, -np.inf], [np.inf, image.shape[0], image.shape[1], image.shape[0], image.shape[1], np.pi, np.inf]) # Perform the fit + # TODO :: May want to generate the image on a finer pixel scale first popt, pcov = opt.curve_fit(gaussian2D, (xx, yy), image.ravel() / wlscl, bounds=bounds, p0=initial_guess) + # Generate a best fit model + model = gaussian2D((xx, yy), *popt).reshape(image.shape) * wlscl # Return the fitting results - return popt, pcov + return popt, pcov, model def dar_fitfunc(radec, coord_ra, coord_dec, datfit, wave, obstime, location, pressure, @@ -192,20 +196,25 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 Parameters ---------- - TODO: Fill this in + wave : `numpy.ndarray`_ + Wavelength array for the datacube + flxcube : `numpy.ndarray`_ + Datacube of the flux + ivarcube : `numpy.ndarray`_ + Datacube of the inverse variance + bpmcube : `numpy.ndarray`_ + Datacube of the bad pixel mask + wcscube : `astropy.wcs.WCS`_ + WCS of the datacube subpixel : int Number of pixels to subpixelate spectrum when creating mask + pypeline : str + PypeIt pipeline used to reduce the datacube Returns ------- - wave : `numpy.ndarray`_ - Wavelength of the star. - Nlam_star : `numpy.ndarray`_ - counts/second/Angstrom - Nlam_ivar_star : `numpy.ndarray`_ - inverse variance of Nlam_star - gpm_star : `numpy.ndarray`_ - good pixel mask for Nlam_star + sobjs : `pypeit.specobjs.SpecObjs`_ + SpecObjs object containing the extracted spectrum """ # Generate a spec1d object to hold the extracted spectrum msgs.info("Initialising a PypeIt SpecObj spec1d file") @@ -223,7 +232,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 # Generate a whitelight image, and fit a 2D Gaussian to estimate centroid and width msgs.info("Making whitelight image") wl_img = make_whitelight_fromcube(flxcube) - popt, pcov = fitGaussian2D(wl_img, norm=True) + popt, pcov, model = fitGaussian2D(wl_img, norm=True) wid = max(popt[3], popt[4]) # Setup the coordinates of the mask @@ -280,9 +289,11 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 ret_flux, ret_var, ret_gpm = box_flux, box_var, box_gpm # Convert from counts/s/Ang/arcsec**2 to counts/s/Ang - arcsecSQ = 3600.0*3600.0*(wcscube.wcs.cdelt[0]*wcscube.wcs.cdelt[1]) - ret_flux *= arcsecSQ - ret_var *= arcsecSQ**2 + # TODO :: Need to think whether or not this is needed, for extended objects this is probably needed, + # but probably this should be done in the flux calibration step for datacubes. + # arcsecSQ = 3600.0*3600.0*(wcscube.wcs.cdelt[0]*wcscube.wcs.cdelt[1]) + # ret_flux *= arcsecSQ + # ret_var *= arcsecSQ**2 # Store the BOXCAR extraction information sobj.BOX_RADIUS = wid @@ -301,28 +312,30 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 # array. Then, the second brightest white light pixel is transformed to be next to the centre # column of the 2D array, and so on. This is done so that the optimal extraction algorithm # can be applied. - # TODO :: The wl_img_masked should be replaced with a 2D model fit to the white light image. wl_img_masked = wl_img * mask[:,:,0] + # Normalise the white light image + wl_img_masked /= np.sum(wl_img_masked) asrt = np.argsort(wl_img_masked, axis=None) tmp = asrt.reshape((asrt.size//2,2)) objprof_idx = np.append(tmp[:,0], tmp[::-1,1]) - objprof = wl_img_masked[np.unravel_index(objprof_idx, wl_img.shape)] # TODO :: Does this need to be normalized? + objprof = wl_img_masked[np.unravel_index(objprof_idx, wl_img.shape)] + # Now slice the datacube and inverse variance cube into a 2D array spat, spec = np.meshgrid(objprof_idx, np.arange(numwave), indexing='ij') spatspl = np.apply_along_axis(np.unravel_index, 1, spat, wl_img.shape) # Now slice the datacube and corresponding cubes/vectors into a series of 2D arrays numspat = objprof_idx.size flxslice = (spatspl[:,0,:], spatspl[:,1,:], spec) - flxcube2d = flxcube[flxslice].T * arcsecSQ - ivarcube2d = ivarcube[flxslice].T / arcsecSQ**2 + flxcube2d = flxcube[flxslice].T + ivarcube2d = ivarcube[flxslice].T gpmcube2d = np.logical_not(bpmcube[flxslice].T) waveimg = wave.reshape((numwave,1)).repeat(numspat, axis=1) - skyimg = skyspec.reshape((numwave,1)).repeat(numspat, axis=1) * arcsecSQ + skyimg = skyspec.reshape((numwave,1)).repeat(numspat, axis=1) oprof = objprof.reshape((1,numspat)).repeat(numwave, axis=0) thismask = np.ones_like(flxcube2d, dtype=bool) # Now do the optimal extraction - # TODO :: Perhaps add support for pypeitpar parameters + # TODO :: Perhaps add support for pypeitpar extraction parameters extract.extract_optimal(flxcube2d, ivarcube2d, gpmcube2d, waveimg, skyimg, thismask, oprof, sobj, min_frac_use=0.05, fwhmimg=None, base_var=None, count_scale=None, noise_floor=None) diff --git a/pypeit/scripts/extract_datacube.py b/pypeit/scripts/extract_datacube.py index 50ee7be3d0..ca83e3ef5b 100644 --- a/pypeit/scripts/extract_datacube.py +++ b/pypeit/scripts/extract_datacube.py @@ -9,14 +9,7 @@ .. include common links, assuming primary doc root is up one directory .. include:: ../include/links.rst """ -import time -from pypeit import msgs -from pypeit import par -from pypeit import inputfiles -from pypeit import utils -from pypeit.spectrographs.util import load_spectrograph from pypeit.scripts import scriptbase -from pypeit.coadd3d import DataCube class ExtractDataCube(scriptbase.ScriptBase): @@ -36,6 +29,15 @@ def get_parser(cls, width=None): @staticmethod def main(args): + import time + + from pypeit import msgs + from pypeit import par + from pypeit import inputfiles + from pypeit import utils + from pypeit.spectrographs.util import load_spectrograph + from pypeit.coadd3d import DataCube + # Set the verbosity, and create a logfile if verbosity == 2 msgs.set_logfile_and_verbosity('extract_datacube', args.verbosity) @@ -43,6 +45,7 @@ def main(args): if args.file is None: msgs.error('You must input a spec3d (i.e. PypeIt DataCube) fits file') + # TODO :: May consider adding another optional file that allows the user to pass in some extract parameters? if False: # Read in the relevant information from the .extract file ext3dfile = inputfiles.ExtractFile.from_file(args.file) From 6403e023861a2dc0f29cb1998cf8472dc0d0b570 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jan 2024 21:17:36 +0000 Subject: [PATCH 018/128] extraction working --- pypeit/core/datacube.py | 5 +++-- pypeit/core/flux_calib.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 6054652a12..5314eccc19 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -231,6 +231,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 # Generate a whitelight image, and fit a 2D Gaussian to estimate centroid and width msgs.info("Making whitelight image") + # TODO :: Probably should set minimum and maximum wavelength to use for whitelight image wl_img = make_whitelight_fromcube(flxcube) popt, pcov, model = fitGaussian2D(wl_img, norm=True) wid = max(popt[3], popt[4]) @@ -267,7 +268,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 nrmsky = skymask.sum(0).sum(0) skyspec *= utils.inverse(nrmsky) flxcube -= skyspec.reshape((1, 1, numwave)) - # Now subtract the residual sky from the whitelight image + # Now subtract the residual sky from the white light image sky_val = np.sum(wl_img[:, :, np.newaxis] * smask) / np.sum(smask) wl_img -= sky_val @@ -312,7 +313,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 # array. Then, the second brightest white light pixel is transformed to be next to the centre # column of the 2D array, and so on. This is done so that the optimal extraction algorithm # can be applied. - wl_img_masked = wl_img * mask[:,:,0] + wl_img_masked = wl_img# * mask[:,:,0] # Normalise the white light image wl_img_masked /= np.sum(wl_img_masked) asrt = np.argsort(wl_img_masked, axis=None) diff --git a/pypeit/core/flux_calib.py b/pypeit/core/flux_calib.py index 9086f4c99b..92ede9019f 100644 --- a/pypeit/core/flux_calib.py +++ b/pypeit/core/flux_calib.py @@ -1351,7 +1351,7 @@ def zeropoint_to_throughput(wave, zeropoint, eff_aperture): """ eff_aperture_m2 = eff_aperture*units.m**2 - S_lam_units = 1e-17*units.erg/units.cm**2 + S_lam_units = PYPEIT_FLUX_SCALE*units.erg/units.cm**2 # Set the throughput to be -1 in places where it is not defined. throughput = np.full_like(zeropoint, -1.0) zeropoint_gpm = (zeropoint > 5.0) & (zeropoint < 30.0) & (wave > 1.0) From 52b4c2dc3ff9aaa8fe314589a3d97cfbf98bdec8 Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 24 Jan 2024 11:53:28 +0000 Subject: [PATCH 019/128] add sensfunc option for coadd3d file --- pypeit/inputfiles.py | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/pypeit/inputfiles.py b/pypeit/inputfiles.py index d57c4bd1f5..ea5f6c7359 100644 --- a/pypeit/inputfiles.py +++ b/pypeit/inputfiles.py @@ -887,6 +887,18 @@ def options(self): Parse the options associated with a cube block. Here is a description of the available options: + - ``sensfunc``: The name of an a sensitivity function file that is used + for the flux calibration. The file provided here should be generated by + (or of the same format as the output of) the command :ref:`pypeit_sensfunc`. + This parameter can also be set for all frames + with the default command: + + .. code-block:: ini + + [reduce] + [[cube]] + sensfunc = sensfunc.fits + - ``scale_corr``: The name of an alternative spec2d file that is used for the relative spectral scale correction. This parameter can also be set for all frames with the default command: @@ -897,6 +909,16 @@ def options(self): [[cube]] scale_corr = spec2d_alternative.fits + - ``grating_corr``: The name of a Flat calibrations file that is used + for the grating tilt correction. This parameter can also be set for all frames + with the default command: + + .. code-block:: ini + + [reduce] + [[cube]] + grating_corr = Flat_A_0_DET01.fits + - ``skysub_frame``: The name of an alternative spec2d file that is used for the sky subtraction. This parameter can also be set for all frames with the default command: @@ -907,20 +929,35 @@ def options(self): [[cube]] skysub_frame = spec2d_alternative.fits + - ``ra_offset``: The RA offset to apply to the WCS of the cube. + + - ``dec_offset``: The DEC offset to apply to the WCS of the cube. + + Returns ------- opts: dict Dictionary containing cube options. """ # Define the list of allowed parameters - opts = dict(scale_corr=None, grating_corr=None, skysub_frame=None, ra_offset=None, dec_offset=None) + opts = dict(sensfunc=None, scale_corr=None, grating_corr=None, skysub_frame=None, + ra_offset=None, dec_offset=None) + + # Get the sensfunc files + sensfile = self.path_and_files('sensfunc', skip_blank=False, check_exists=False) + if sensfile is None: + opts['sensfunc'] = [None]*len(self.filenames) + elif len(sensfile) == 1 and len(self.filenames) > 1: + opts['sensfunc'] = sensfile*len(self.filenames) + elif len(sensfile) != 0: + opts['sensfunc'] = sensfile # Get the scale correction files scale_corr = self.path_and_files('scale_corr', skip_blank=False, check_exists=False) if scale_corr is None: opts['scale_corr'] = [None]*len(self.filenames) elif len(scale_corr) == 1 and len(self.filenames) > 1: - opts['scale_corr'] = scale_corr.lower()*len(self.filenames) + opts['scale_corr'] = scale_corr.lower()*len(self.filenames) # TODO :: Why is this .lower()? elif len(scale_corr) != 0: opts['scale_corr'] = scale_corr From 4b210bf6dad0ad435d75beed4313ea310832bc40 Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 24 Jan 2024 12:01:24 +0000 Subject: [PATCH 020/128] add sensfunc option --- pypeit/coadd3d.py | 18 ++++++++++++------ pypeit/inputfiles.py | 12 ++++++------ pypeit/par/pypeitpar.py | 10 +++++----- pypeit/scripts/coadd_datacube.py | 6 ++++-- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index a9406985ab..8b267e8a1f 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -368,7 +368,7 @@ class CoAdd3D: """ # Superclass factory method generates the subclass instance @classmethod - def get_instance(cls, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating_corr=None, + def get_instance(cls, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_corr=None, grating_corr=None, ra_offsets=None, dec_offsets=None, spectrograph=None, det=1, overwrite=False, show=False, debug=False): """ @@ -386,11 +386,11 @@ def get_instance(cls, spec2dfiles, par, skysub_frame=None, scale_corr=None, grat return next(c for c in cls.__subclasses__() if c.__name__ == (spectrograph.pypeline + 'CoAdd3D'))( - spec2dfiles, par, skysub_frame=skysub_frame, scale_corr=scale_corr, grating_corr=grating_corr, - ra_offsets=ra_offsets, dec_offsets=dec_offsets, spectrograph=spectrograph, det=det, - overwrite=overwrite, show=show, debug=debug) + spec2dfiles, par, skysub_frame=skysub_frame, sensfile=sensfile, scale_corr=scale_corr, + grating_corr=grating_corr, ra_offsets=ra_offsets, dec_offsets=dec_offsets, + spectrograph=spectrograph, det=det, overwrite=overwrite, show=show, debug=debug) - def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating_corr=None, + def __init__(self, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_corr=None, grating_corr=None, ra_offsets=None, dec_offsets=None, spectrograph=None, det=None, overwrite=False, show=False, debug=False): """ @@ -407,6 +407,9 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating skysub_frame (:obj:`list`, optional): If not None, this should be a list of frames to use for the sky subtraction of each individual entry of spec2dfiles. It should be the same length as spec2dfiles. + sensfile (:obj:`list`, optional): + If not None, this should be a list of frames to use for the sensitivity function of each individual + entry of spec2dfiles. It should be the same length as spec2dfiles. scale_corr (:obj:`list`, optional): If not None, this should be a list of relative scale correction options. It should be the same length as spec2dfiles. @@ -450,6 +453,8 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating # Do some quick checks on the input options if skysub_frame is not None and len(skysub_frame) != self.numfiles: msgs.error("The skysub_frame list should be identical length to the spec2dfiles list") + if sensfile is not None and len(sensfile) != self.numfiles: + msgs.error("The sensfile list should be identical length to the spec2dfiles list") if scale_corr is not None and len(scale_corr) != self.numfiles: msgs.error("The scale_corr list should be identical length to the spec2dfiles list") if grating_corr is not None and len(grating_corr) != self.numfiles: @@ -465,6 +470,7 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating msgs.error("If you provide ra_offsets, you must also provide dec_offsets") # Set the frame specific options self.skysub_frame = skysub_frame + self.sensfile = sensfile if sensfile is not None else self.cubepar['sensfile'] self.scale_corr = scale_corr self.grating_corr = grating_corr self.ra_offsets = list(ra_offsets) if isinstance(ra_offsets, np.ndarray) else ra_offsets @@ -542,7 +548,7 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating self.blaze_wave, self.blaze_spec = None, None self.blaze_spline, self.flux_spline = None, None self.flat_splines = dict() # A dictionary containing the splines of the flatfield - # if self.cubepar['standard_cube'] is not None: + # if self.cubepar['sensfunc'] is not None: # self.make_sensfunc() # If a reference image has been set, check that it exists diff --git a/pypeit/inputfiles.py b/pypeit/inputfiles.py index ea5f6c7359..53e3852c74 100644 --- a/pypeit/inputfiles.py +++ b/pypeit/inputfiles.py @@ -897,7 +897,7 @@ def options(self): [reduce] [[cube]] - sensfunc = sensfunc.fits + sensfile = sens.fits - ``scale_corr``: The name of an alternative spec2d file that is used for the relative spectral scale correction. This parameter can also be set @@ -940,17 +940,17 @@ def options(self): Dictionary containing cube options. """ # Define the list of allowed parameters - opts = dict(sensfunc=None, scale_corr=None, grating_corr=None, skysub_frame=None, + opts = dict(sensfile=None, scale_corr=None, grating_corr=None, skysub_frame=None, ra_offset=None, dec_offset=None) # Get the sensfunc files - sensfile = self.path_and_files('sensfunc', skip_blank=False, check_exists=False) + sensfile = self.path_and_files('sensfile', skip_blank=False, check_exists=False) if sensfile is None: - opts['sensfunc'] = [None]*len(self.filenames) + opts['sensfile'] = [None]*len(self.filenames) elif len(sensfile) == 1 and len(self.filenames) > 1: - opts['sensfunc'] = sensfile*len(self.filenames) + opts['sensfile'] = sensfile*len(self.filenames) elif len(sensfile) != 0: - opts['sensfunc'] = sensfile + opts['sensfile'] = sensfile # Get the scale correction files scale_corr = self.path_and_files('scale_corr', skip_blank=False, check_exists=False) diff --git a/pypeit/par/pypeitpar.py b/pypeit/par/pypeitpar.py index 208519aef8..d23aa5635c 100644 --- a/pypeit/par/pypeitpar.py +++ b/pypeit/par/pypeitpar.py @@ -1575,7 +1575,7 @@ class CubePar(ParSet): """ def __init__(self, slit_spec=None, weight_method=None, align=None, combine=None, output_filename=None, - sensfunc=None, reference_image=None, save_whitelight=None, whitelight_range=None, method=None, + sensfile=None, reference_image=None, save_whitelight=None, whitelight_range=None, method=None, ra_min=None, ra_max=None, dec_min=None, dec_max=None, wave_min=None, wave_max=None, spatial_delta=None, wave_delta=None, astrometric=None, scale_corr=None, skysub_frame=None, spec_subpixel=None, spat_subpixel=None, slice_subpixel=None): @@ -1644,9 +1644,9 @@ def __init__(self, slit_spec=None, weight_method=None, align=None, combine=None, 'the combined datacube. If combine=False, the output filenames will be ' \ 'prefixed with ``spec3d_*``' - defaults['sensfunc'] = None - dtypes['sensfunc'] = str - descr['sensfunc'] = 'Filename of a sensitivity function to use to flux calibrate your datacube. ' \ + defaults['sensfile'] = None + dtypes['sensfile'] = str + descr['sensfile'] = 'Filename of a sensitivity function to use to flux calibrate your datacube. ' \ 'The sensitivity function file will also be used to correct the relative scales ' \ 'of the slits.' @@ -1796,7 +1796,7 @@ def from_dict(cls, cfg): k = np.array([*cfg.keys()]) # Basic keywords - parkeys = ['slit_spec', 'output_filename', 'sensfunc', 'reference_image', 'save_whitelight', + parkeys = ['slit_spec', 'output_filename', 'sensfile', 'reference_image', 'save_whitelight', 'method', 'spec_subpixel', 'spat_subpixel', 'slice_subpixel', 'ra_min', 'ra_max', 'dec_min', 'dec_max', 'wave_min', 'wave_max', 'spatial_delta', 'wave_delta', 'weight_method', 'align', 'combine', 'astrometric', 'scale_corr', 'skysub_frame', 'whitelight_range'] diff --git a/pypeit/scripts/coadd_datacube.py b/pypeit/scripts/coadd_datacube.py index 6aaf02db51..7fb8903a64 100644 --- a/pypeit/scripts/coadd_datacube.py +++ b/pypeit/scripts/coadd_datacube.py @@ -59,12 +59,14 @@ def main(args): dec_offsets = coadd3dfile.options['dec_offset'] skysub_frame = coadd3dfile.options['skysub_frame'] scale_corr = coadd3dfile.options['scale_corr'] + sensfile = coadd3dfile.options['sensfile'] grating_corr = coadd3dfile.options['grating_corr'] # Instantiate CoAdd3d tstart = time.time() - coadd = CoAdd3D.get_instance(coadd3dfile.filenames, parset, skysub_frame=skysub_frame, scale_corr=scale_corr, - grating_corr=grating_corr, ra_offsets=ra_offsets, dec_offsets=dec_offsets, + coadd = CoAdd3D.get_instance(coadd3dfile.filenames, parset, skysub_frame=skysub_frame, sensfile=sensfile, + scale_corr=scale_corr, grating_corr=grating_corr, + ra_offsets=ra_offsets, dec_offsets=dec_offsets, spectrograph=spectrograph, det=args.det, overwrite=args.overwrite) # Coadd the files From d2983e1ddbc4e2af9f76463ec94a017d6c9cee7b Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 24 Jan 2024 12:04:58 +0000 Subject: [PATCH 021/128] deprecate --- pypeit/core/datacube.py | 69 ----------------------------------- pypeit/deprecated/datacube.py | 68 ++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 69 deletions(-) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 5314eccc19..bec409aece 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -347,75 +347,6 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 return sobjs -def make_sensfunc(ss_file, senspar, blaze_wave=None, blaze_spline=None, grating_corr=False): - """ - Generate the sensitivity function from a standard star DataCube. - - Args: - ss_file (:obj:`str`): - The relative path and filename of the standard star datacube. It - should be fits format, and for full functionality, should ideally of - the form :class:`~pypeit.coadd3d.DataCube`. - senspar (:class:`~pypeit.par.pypeitpar.SensFuncPar`): - The parameters required for the sensitivity function computation. - blaze_wave (`numpy.ndarray`_, optional): - Wavelength array used to construct blaze_spline - blaze_spline (`scipy.interpolate.interp1d`_, optional): - Spline representation of the reference blaze function (based on the illumflat). - grating_corr (:obj:`bool`, optional): - If a grating correction should be performed, set this variable to True. - - Returns: - `numpy.ndarray`_: A mask of the good sky pixels (True = good) - """ - # TODO :: This routine has not been updated to the new spec1d plan of passing in a sensfunc object - # :: Probably, this routine should be removed and the functionality moved to the sensfunc object - msgs.error("coding error - make_sensfunc is not currently supported. Please contact the developers") - # Check if the standard star datacube exists - if not os.path.exists(ss_file): - msgs.error("Standard cube does not exist:" + msgs.newline() + ss_file) - msgs.info(f"Loading standard star cube: {ss_file:s}") - # Load the standard star cube and retrieve its RA + DEC - stdcube = fits.open(ss_file) - star_ra, star_dec = stdcube[1].header['CRVAL1'], stdcube[1].header['CRVAL2'] - - # Extract a spectrum of the standard star - wave, Nlam_star, Nlam_ivar_star, gpm_star = extract_standard_spec(stdcube) - - # Extract the information about the blaze - if grating_corr: - blaze_wave_curr, blaze_spec_curr = stdcube['BLAZE_WAVE'].data, stdcube['BLAZE_SPEC'].data - blaze_spline_curr = interp1d(blaze_wave_curr, blaze_spec_curr, - kind='linear', bounds_error=False, fill_value="extrapolate") - # Perform a grating correction - grat_corr = correct_grating_shift(wave, blaze_wave_curr, blaze_spline_curr, blaze_wave, blaze_spline) - # Apply the grating correction to the standard star spectrum - Nlam_star /= grat_corr - Nlam_ivar_star *= grat_corr ** 2 - - # Read in some information above the standard star - std_dict = flux_calib.get_standard_spectrum(star_type=senspar['star_type'], - star_mag=senspar['star_mag'], - ra=star_ra, dec=star_dec) - # Calculate the sensitivity curve - # TODO :: This needs to be addressed... unify flux calibration into the main PypeIt routines. - msgs.warn("Datacubes are currently flux-calibrated using the UVIS algorithm... this will be deprecated soon") - zeropoint_data, zeropoint_data_gpm, zeropoint_fit, zeropoint_fit_gpm = \ - flux_calib.fit_zeropoint(wave, Nlam_star, Nlam_ivar_star, gpm_star, std_dict, - mask_hydrogen_lines=senspar['mask_hydrogen_lines'], - mask_helium_lines=senspar['mask_helium_lines'], - hydrogen_mask_wid=senspar['hydrogen_mask_wid'], - nresln=senspar['UVIS']['nresln'], - resolution=senspar['UVIS']['resolution'], - trans_thresh=senspar['UVIS']['trans_thresh'], - polyorder=senspar['polyorder'], - polycorrect=senspar['UVIS']['polycorrect'], - polyfunc=senspar['UVIS']['polyfunc']) - wgd = np.where(zeropoint_fit_gpm) - sens = np.power(10.0, -0.4 * (zeropoint_fit[wgd] - flux_calib.ZP_UNIT_CONST)) / np.square(wave[wgd]) - return interp1d(wave[wgd], sens, kind='linear', bounds_error=False, fill_value="extrapolate") - - def make_good_skymask(slitimg, tilts): """ Mask the spectral edges of each slit (i.e. the pixels near the ends of the diff --git a/pypeit/deprecated/datacube.py b/pypeit/deprecated/datacube.py index abeb9a1e4c..83e339e87b 100644 --- a/pypeit/deprecated/datacube.py +++ b/pypeit/deprecated/datacube.py @@ -443,3 +443,71 @@ def make_whitelight_frompixels(all_ra, all_dec, all_wave, all_sci, all_wghts, al whitelight_ivar[:, :, ff] = ivar_img.copy() return whitelight_Imgs, whitelight_ivar, whitelightWCS + +def make_sensfunc(ss_file, senspar, blaze_wave=None, blaze_spline=None, grating_corr=False): + """ + Generate the sensitivity function from a standard star DataCube. + + Args: + ss_file (:obj:`str`): + The relative path and filename of the standard star datacube. It + should be fits format, and for full functionality, should ideally of + the form :class:`~pypeit.coadd3d.DataCube`. + senspar (:class:`~pypeit.par.pypeitpar.SensFuncPar`): + The parameters required for the sensitivity function computation. + blaze_wave (`numpy.ndarray`_, optional): + Wavelength array used to construct blaze_spline + blaze_spline (`scipy.interpolate.interp1d`_, optional): + Spline representation of the reference blaze function (based on the illumflat). + grating_corr (:obj:`bool`, optional): + If a grating correction should be performed, set this variable to True. + + Returns: + `numpy.ndarray`_: A mask of the good sky pixels (True = good) + """ + # TODO :: This routine has not been updated to the new spec1d plan of passing in a sensfunc object + # :: Probably, this routine should be removed and the functionality moved to the sensfunc object + msgs.error("coding error - make_sensfunc is not currently supported. Please contact the developers") + # Check if the standard star datacube exists + if not os.path.exists(ss_file): + msgs.error("Standard cube does not exist:" + msgs.newline() + ss_file) + msgs.info(f"Loading standard star cube: {ss_file:s}") + # Load the standard star cube and retrieve its RA + DEC + stdcube = fits.open(ss_file) + star_ra, star_dec = stdcube[1].header['CRVAL1'], stdcube[1].header['CRVAL2'] + + # Extract a spectrum of the standard star + wave, Nlam_star, Nlam_ivar_star, gpm_star = extract_standard_spec(stdcube) + + # Extract the information about the blaze + if grating_corr: + blaze_wave_curr, blaze_spec_curr = stdcube['BLAZE_WAVE'].data, stdcube['BLAZE_SPEC'].data + blaze_spline_curr = interp1d(blaze_wave_curr, blaze_spec_curr, + kind='linear', bounds_error=False, fill_value="extrapolate") + # Perform a grating correction + grat_corr = correct_grating_shift(wave, blaze_wave_curr, blaze_spline_curr, blaze_wave, blaze_spline) + # Apply the grating correction to the standard star spectrum + Nlam_star /= grat_corr + Nlam_ivar_star *= grat_corr ** 2 + + # Read in some information above the standard star + std_dict = flux_calib.get_standard_spectrum(star_type=senspar['star_type'], + star_mag=senspar['star_mag'], + ra=star_ra, dec=star_dec) + # Calculate the sensitivity curve + # TODO :: This needs to be addressed... unify flux calibration into the main PypeIt routines. + msgs.warn("Datacubes are currently flux-calibrated using the UVIS algorithm... this will be deprecated soon") + zeropoint_data, zeropoint_data_gpm, zeropoint_fit, zeropoint_fit_gpm = \ + flux_calib.fit_zeropoint(wave, Nlam_star, Nlam_ivar_star, gpm_star, std_dict, + mask_hydrogen_lines=senspar['mask_hydrogen_lines'], + mask_helium_lines=senspar['mask_helium_lines'], + hydrogen_mask_wid=senspar['hydrogen_mask_wid'], + nresln=senspar['UVIS']['nresln'], + resolution=senspar['UVIS']['resolution'], + trans_thresh=senspar['UVIS']['trans_thresh'], + polyorder=senspar['polyorder'], + polycorrect=senspar['UVIS']['polycorrect'], + polyfunc=senspar['UVIS']['polyfunc']) + wgd = np.where(zeropoint_fit_gpm) + sens = np.power(10.0, -0.4 * (zeropoint_fit[wgd] - flux_calib.ZP_UNIT_CONST)) / np.square(wave[wgd]) + return interp1d(wave[wgd], sens, kind='linear', bounds_error=False, fill_value="extrapolate") From bd694d3ef65d7e738658788d551a432d9b15327b Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 24 Jan 2024 13:14:14 +0000 Subject: [PATCH 022/128] sensfunc applied --- pypeit/coadd3d.py | 44 +++++++++++++++------------------------ pypeit/core/flux_calib.py | 22 +++++++++++--------- pypeit/specobj.py | 5 +++-- 3 files changed, 32 insertions(+), 39 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 8b267e8a1f..91ff8002d7 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -15,7 +15,7 @@ import numpy as np from pypeit import msgs -from pypeit import alignframe, datamodel, flatfield, io, spec2dobj, utils +from pypeit import alignframe, datamodel, flatfield, io, sensfunc, spec2dobj, utils from pypeit.core.flexure import calculate_image_phase from pypeit.core import datacube, extract, flux_calib, parse from pypeit.spectrographs.util import load_spectrograph @@ -470,7 +470,7 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_cor msgs.error("If you provide ra_offsets, you must also provide dec_offsets") # Set the frame specific options self.skysub_frame = skysub_frame - self.sensfile = sensfile if sensfile is not None else self.cubepar['sensfile'] + self.sensfile = sensfile if sensfile is not None else self.numfiles*[self.cubepar['sensfile']] self.scale_corr = scale_corr self.grating_corr = grating_corr self.ra_offsets = list(ra_offsets) if isinstance(ra_offsets, np.ndarray) else ra_offsets @@ -544,12 +544,10 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_cor self.check_outputs() # Check the reference cube and image exist, if requested - self.fluxcal = False + self.fluxcal = False if self.sensfile is None else True self.blaze_wave, self.blaze_spec = None, None self.blaze_spline, self.flux_spline = None, None self.flat_splines = dict() # A dictionary containing the splines of the flatfield - # if self.cubepar['sensfunc'] is not None: - # self.make_sensfunc() # If a reference image has been set, check that it exists if self.cubepar['reference_image'] is not None: @@ -616,23 +614,6 @@ def set_blaze_spline(self, wave_spl, spec_spl): self.blaze_spline = interp1d(wave_spl, spec_spl, kind='linear', bounds_error=False, fill_value="extrapolate") - def make_sensfunc(self): - """ - Generate the sensitivity function to be used for the flux calibration. - """ - self.fluxcal = True - # The first standard star cube is used as the reference blaze spline - if self.grating_corr is not None: - # Load the blaze information - stdcube = fits.open(self.cubepar['standard_cube']) - # If a reference blaze spline has not been set, do that now. - self.set_blaze_spline(stdcube['BLAZE_WAVE'].data, stdcube['BLAZE_SPEC'].data) - # Generate a spline representation of the sensitivity function - gratcorr = self.grating_corr is not None - self.flux_spline = datacube.make_sensfunc(self.cubepar['standard_cube'], self.senspar, - blaze_wave=self.blaze_wave, blaze_spline=self.blaze_spline, - grating_corr=gratcorr) - def set_default_scalecorr(self): """ Set the default mode to use for relative spectral scale correction. @@ -1139,6 +1120,7 @@ def load(self): # Compute the extinction correction msgs.info("Applying extinction correction") + # TODO :: Should the extinct_file be part of the IR algorithm? extinct = flux_calib.load_extinction_data(self.spec.telescope['longitude'], self.spec.telescope['latitude'], self.senspar['UVIS']['extinct_file']) @@ -1156,13 +1138,21 @@ def load(self): gratcorr_sort = datacube.correct_grating_shift(wave_sort, self.flat_splines[flatfile + "_wave"], self.flat_splines[flatfile], self.blaze_wave, self.blaze_spline) - # Sensitivity function - sensfunc_sort = 1.0 + # Sensitivity function - note that the sensitivity function factors in the exposure time, so if the + # flux calibration will not be applied, the sens_factor needs to be scaled by the exposure time + sens_factor = 1.0/exptime # If no sensitivity function is provided + # TODO :: Need to think about exposure time some more... Does the pypeit_sensfunc algorithm expect counts/s as input, or counts? This could affect the throughput calculation, perhaps? + # :: More generally, should we be adding the counts when we make the datacube, or should we be averaging the counts/s with the appropriate weights? if self.fluxcal: msgs.info("Calculating the sensitivity function") - sensfunc_sort = self.flux_spline(wave_sort) - # Convert the flux_sav to counts/s, correct for the relative sensitivity of different setups - extcorr_sort *= sensfunc_sort / (exptime * gratcorr_sort) + # Load the sensitivity function + sens = sensfunc.SensFunc.from_file(self.sensfile[ff], chk_version=self.par['rdx']['chk_version']) + # Interpolate the sensitivity function onto the wavelength grid of the data + sens_factor = flux_calib.get_sensfunc_factor( + wave_sort, sens.wave[:, 0], sens.zeropoint[:, 0], exptime, extinct_correct=False, + extrap_sens=self.par['fluxcalib']['extrap_sens']) + # Convert the flux units to counts/s, and correct for the relative sensitivity of different setups + extcorr_sort *= sens_factor / gratcorr_sort # Correct for extinction sciImg[onslit_gpm] *= extcorr_sort[resrt] ivar[onslit_gpm] /= extcorr_sort[resrt] ** 2 diff --git a/pypeit/core/flux_calib.py b/pypeit/core/flux_calib.py index 92ede9019f..8b71b65f5b 100644 --- a/pypeit/core/flux_calib.py +++ b/pypeit/core/flux_calib.py @@ -718,6 +718,7 @@ def sensfunc(wave, counts, counts_ivar, counts_mask, exptime, airmass, std_dict, return meta_table, out_table + def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, extinct_correct=False, airmass=None, longitude=None, latitude=None, extinctfilepar=None, extrap_sens=False): """ @@ -728,27 +729,28 @@ def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, extin Args: wave (float `numpy.ndarray`_): shape = (nspec,) - Senstivity + Wavelength vector for the spectrum to be flux calibrated wave_zp (float `numpy.ndarray`_): - Zerooint wavelength vector shape = (nsens,) + Zeropoint wavelength vector shape = (nsens,) zeropoint (float `numpy.ndarray`_): shape = (nsens,) - Zeropoint, i.e. sensitivity function + Zeropoint, i.e. sensitivity function exptime (float): - tellmodel (float `numpy.ndarray`_, optional): shape = (nspec,) - Apply telluric correction if it is passed it. Note this is deprecated. + Exposure time in seconds + tellmodel (float, `numpy.ndarray`_, optional): + Apply telluric correction if it is passed it (shape = (nspec,)). Note this is deprecated. extinct_correct (bool, optional) - If True perform an extinction correction. Deafult = False + If True perform an extinction correction. Default = False airmass (float, optional): - Airmass used if extinct_correct=True. This is required if extinct_correct=True + Airmass used if extinct_correct=True. This is required if extinct_correct=True longitude (float, optional): longitude in degree for observatory Required for extinction correction latitude: latitude in degree for observatory - Required for extinction correction + Required for extinction correction extinctfilepar (str): - [sensfunc][UVIS][extinct_file] parameter - Used for extinction correction + [sensfunc][UVIS][extinct_file] parameter + Used for extinction correction extrap_sens (bool, optional): Extrapolate the sensitivity function (instead of crashing out) diff --git a/pypeit/specobj.py b/pypeit/specobj.py index 4644f11d2a..9773676d70 100644 --- a/pypeit/specobj.py +++ b/pypeit/specobj.py @@ -486,6 +486,7 @@ def update_flex_shift(self, shift, flex_type='local'): self.FLEX_SHIFT_TOTAL += shift # TODO This should be a wrapper calling a core algorithm. + # It is, right? Can this be TODO be removed? def apply_flux_calib(self, wave_zp, zeropoint, exptime, tellmodel=None, extinct_correct=False, airmass=None, longitude=None, latitude=None, extinctfilepar=None, extrap_sens=False): @@ -502,8 +503,8 @@ def apply_flux_calib(self, wave_zp, zeropoint, exptime, tellmodel=None, extinct_ exptime (float): Exposure time tellmodel (?): - Telluric correction - extinct_correct (?): + Telluric correction. Note: This is deprecated and will be removed in a future version. + extinct_correct (bool, optional): If True, extinction correct airmass (float, optional): Airmass From 1eff61037ae49a3f46d781584d03ef0246c89b5b Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 25 Jan 2024 10:26:13 +0000 Subject: [PATCH 023/128] typo --- pypeit/spectrographs/spectrograph.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pypeit/spectrographs/spectrograph.py b/pypeit/spectrographs/spectrograph.py index 382473274c..4fb9389066 100644 --- a/pypeit/spectrographs/spectrograph.py +++ b/pypeit/spectrographs/spectrograph.py @@ -1793,13 +1793,12 @@ def spec1d_match_spectra(self, sobjs): """ msgs.error(f'Method to match slits across detectors not defined for {self.name}') - def tweak_standard(self, wave_in, counts_in, counts_ivar_in, gpm_in, meta_table, log10_blaze_function=None): """ This routine is for performing instrument/disperser specific tweaks to standard stars so that sensitivity function fits will be well behaved. For example, masking second order light. For instruments that don't - require such tweaks it will just return the inputs, but for isntruments that do this function is overloaded + require such tweaks it will just return the inputs, but for instruments that do this function is overloaded with a method that performs the tweaks. Parameters From bcfce866f781ff2e262880aa341641f3e010fdd8 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 25 Jan 2024 10:59:45 +0000 Subject: [PATCH 024/128] fix sensfile --- pypeit/coadd3d.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 91ff8002d7..478d6a8ffd 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -247,7 +247,7 @@ def extract_spec(self, parset, overwrite=False): # Extract the spectrum # TODO :: Avoid transposing these large cubes # TODO :: Pass in the parset parameters here - sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, + sobjs = datacube.extract_standard_spec(self.wave, 1200.0*self.flux.T, self.ivar.T/1200.0**2, self.bpm.T, self.wcs, pypeline=self.spectrograph.pypeline) # Save the extracted spectrum @@ -891,10 +891,11 @@ class SlicerIFUCoAdd3D(CoAdd3D): - White light images are also produced, if requested. """ - def __init__(self, spec2dfiles, par, skysub_frame=None, scale_corr=None, grating_corr=None, + def __init__(self, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_corr=None, grating_corr=None, ra_offsets=None, dec_offsets=None, spectrograph=None, det=1, overwrite=False, show=False, debug=False): - super().__init__(spec2dfiles, par, skysub_frame=skysub_frame, scale_corr=scale_corr, grating_corr=grating_corr, + super().__init__(spec2dfiles, par, skysub_frame=skysub_frame, sensfile=sensfile, + scale_corr=scale_corr, grating_corr=grating_corr, ra_offsets=ra_offsets, dec_offsets=dec_offsets, spectrograph=spectrograph, det=det, overwrite=overwrite, show=show, debug=debug) self.mnmx_wv = None # Will be used to store the minimum and maximum wavelengths of every slit and frame. @@ -1162,6 +1163,7 @@ def load(self): sl_deg = np.sqrt(self.all_wcs[ff].wcs.cd[0, 0] ** 2 + self.all_wcs[ff].wcs.cd[1, 0] ** 2) px_deg = np.sqrt(self.all_wcs[ff].wcs.cd[1, 1] ** 2 + self.all_wcs[ff].wcs.cd[0, 1] ** 2) scl_units = dwav_sort * (3600.0 * sl_deg) * (3600.0 * px_deg) + print(np.median(scl_units)) sciImg[onslit_gpm] /= scl_units[resrt] ivar[onslit_gpm] *= scl_units[resrt] ** 2 From eb6da38a07429638b31fac10aab6ae8e75a2ed09 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 25 Jan 2024 11:43:57 +0000 Subject: [PATCH 025/128] fix units --- pypeit/coadd3d.py | 10 +++--- pypeit/core/datacube.py | 67 ++++++++++++++++++++--------------------- 2 files changed, 38 insertions(+), 39 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 478d6a8ffd..e653669ce0 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -246,9 +246,10 @@ def extract_spec(self, parset, overwrite=False): """ # Extract the spectrum # TODO :: Avoid transposing these large cubes - # TODO :: Pass in the parset parameters here - sobjs = datacube.extract_standard_spec(self.wave, 1200.0*self.flux.T, self.ivar.T/1200.0**2, self.bpm.T, self.wcs, - pypeline=self.spectrograph.pypeline) + # TODO :: Pass in the extraction parset parameters here + exptime = self.spectrograph.compound_meta([self.head0], 'exptime') + sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, + exptime=exptime, pypeline=self.spectrograph.pypeline) # Save the extracted spectrum spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') @@ -1144,7 +1145,7 @@ def load(self): sens_factor = 1.0/exptime # If no sensitivity function is provided # TODO :: Need to think about exposure time some more... Does the pypeit_sensfunc algorithm expect counts/s as input, or counts? This could affect the throughput calculation, perhaps? # :: More generally, should we be adding the counts when we make the datacube, or should we be averaging the counts/s with the appropriate weights? - if self.fluxcal: + if self.fluxcal and False: msgs.info("Calculating the sensitivity function") # Load the sensitivity function sens = sensfunc.SensFunc.from_file(self.sensfile[ff], chk_version=self.par['rdx']['chk_version']) @@ -1163,7 +1164,6 @@ def load(self): sl_deg = np.sqrt(self.all_wcs[ff].wcs.cd[0, 0] ** 2 + self.all_wcs[ff].wcs.cd[1, 0] ** 2) px_deg = np.sqrt(self.all_wcs[ff].wcs.cd[1, 1] ** 2 + self.all_wcs[ff].wcs.cd[0, 1] ** 2) scl_units = dwav_sort * (3600.0 * sl_deg) * (3600.0 * px_deg) - print(np.median(scl_units)) sciImg[onslit_gpm] /= scl_units[resrt] ivar[onslit_gpm] *= scl_units[resrt] ** 2 diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index bec409aece..95701b92cc 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -190,7 +190,7 @@ def correct_grating_shift(wave_eval, wave_curr, spl_curr, wave_ref, spl_ref, ord return grat_corr -def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20, pypeline="SlicerIFU"): +def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, subpixel=20, pypeline="SlicerIFU"): """ Extract a spectrum of a standard star from a datacube @@ -206,9 +206,11 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 Datacube of the bad pixel mask wcscube : `astropy.wcs.WCS`_ WCS of the datacube - subpixel : int + exptime : float + Exposure time listed in the header of the datacube + subpixel : int, optional Number of pixels to subpixelate spectrum when creating mask - pypeline : str + pypeline : str, optional PypeIt pipeline used to reduce the datacube Returns @@ -223,51 +225,57 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 sobj.DEC = wcscube.wcs.crval[1] sobj.SLITID = 0 - # Extract some information from the HDU list - varcube = utils.inverse(ivarcube) - # flxcube = stdcube['FLUX'].data.T.copy() - # bpmcube = stdcube['BPM'].data.T.copy() - numwave = flxcube.shape[2] + # Convert from counts/s/Ang/arcsec**2 to counts. The sensitivity function expects counts as input + numxx, numyy, numwave = flxcube.shape + arcsecSQ = (wcscube.wcs.cdelt[0]*wcscube.wcs.cunit[0].to(units.arcsec)) * \ + (wcscube.wcs.cdelt[1]*wcscube.wcs.cunit[1].to(units.arcsec)) + deltawave = wcscube.wcs.cdelt[2]*wcscube.wcs.cunit[2].to(units.Angstrom) + unitscale = exptime * deltawave * arcsecSQ + + # Scale the flux and ivar cubes to be in units of counts + _flxcube = flxcube * unitscale + _ivarcube = ivarcube / unitscale**2 + _varcube = utils.inverse(_ivarcube) # Generate a whitelight image, and fit a 2D Gaussian to estimate centroid and width msgs.info("Making whitelight image") # TODO :: Probably should set minimum and maximum wavelength to use for whitelight image - wl_img = make_whitelight_fromcube(flxcube) + wl_img = make_whitelight_fromcube(_flxcube) popt, pcov, model = fitGaussian2D(wl_img, norm=True) wid = max(popt[3], popt[4]) # Setup the coordinates of the mask - x = np.linspace(0, flxcube.shape[0] - 1, flxcube.shape[0] * subpixel) - y = np.linspace(0, flxcube.shape[1] - 1, flxcube.shape[1] * subpixel) + x = np.linspace(0, numxx - 1, numxx * subpixel) + y = np.linspace(0, numyy - 1, numyy * subpixel) xx, yy = np.meshgrid(x, y, indexing='ij') # Generate a mask msgs.info("Generating an object mask") - newshape = (flxcube.shape[0] * subpixel, flxcube.shape[1] * subpixel) + newshape = (numxx * subpixel, numyy * subpixel) mask = np.zeros(newshape) nsig = 4 # 4 sigma should be far enough... Note: percentage enclosed for 2D Gaussian = 1-np.exp(-0.5 * nsig**2) ww = np.where((np.sqrt((xx - popt[1]) ** 2 + (yy - popt[2]) ** 2) < nsig * wid)) mask[ww] = 1 - mask = utils.rebinND(mask, (flxcube.shape[0], flxcube.shape[1])).reshape(flxcube.shape[0], flxcube.shape[1], 1) + mask = utils.rebinND(mask, (numxx, numyy)).reshape(numxx, numyy, 1) # Generate a sky mask msgs.info("Generating a sky mask") - newshape = (flxcube.shape[0] * subpixel, flxcube.shape[1] * subpixel) + newshape = (numxx * subpixel, numyy * subpixel) smask = np.zeros(newshape) nsig = 8 # 8 sigma should be far enough ww = np.where((np.sqrt((xx - popt[1]) ** 2 + (yy - popt[2]) ** 2) < nsig * wid)) smask[ww] = 1 - smask = utils.rebinND(smask, (flxcube.shape[0], flxcube.shape[1])).reshape(flxcube.shape[0], flxcube.shape[1], 1) + smask = utils.rebinND(smask, (numxx, numyy)).reshape(numxx, numyy, 1) smask -= mask msgs.info("Subtracting the residual sky") # Subtract the residual sky from the datacube skymask = np.logical_not(bpmcube) * smask - skycube = flxcube * skymask + skycube = _flxcube * skymask skyspec = skycube.sum(0).sum(0) nrmsky = skymask.sum(0).sum(0) skyspec *= utils.inverse(nrmsky) - flxcube -= skyspec.reshape((1, 1, numwave)) + _flxcube -= skyspec.reshape((1, 1, numwave)) # Now subtract the residual sky from the white light image sky_val = np.sum(wl_img[:, :, np.newaxis] * smask) / np.sum(smask) wl_img -= sky_val @@ -280,30 +288,21 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 # Extract boxcar cntmask = np.logical_not(bpmcube) * mask # Good pixels within the masked region around the standard star flxscl = (norm_flux * cntmask).sum(0).sum(0) # This accounts for the flux that is missing due to masked pixels - scimask = flxcube * cntmask - varmask = varcube * cntmask**2 + scimask = _flxcube * cntmask + varmask = _varcube * cntmask**2 nrmcnt = utils.inverse(flxscl) box_flux = scimask.sum(0).sum(0) * nrmcnt box_var = varmask.sum(0).sum(0) * nrmcnt**2 box_gpm = flxscl > 1/3 # Good pixels are those where at least one-third of the standard star flux is measured - # Setup the return values - ret_flux, ret_var, ret_gpm = box_flux, box_var, box_gpm - - # Convert from counts/s/Ang/arcsec**2 to counts/s/Ang - # TODO :: Need to think whether or not this is needed, for extended objects this is probably needed, - # but probably this should be done in the flux calibration step for datacubes. - # arcsecSQ = 3600.0*3600.0*(wcscube.wcs.cdelt[0]*wcscube.wcs.cdelt[1]) - # ret_flux *= arcsecSQ - # ret_var *= arcsecSQ**2 # Store the BOXCAR extraction information sobj.BOX_RADIUS = wid sobj.BOX_WAVE = wave.astype(float) - sobj.BOX_COUNTS = ret_flux - sobj.BOX_COUNTS_IVAR = utils.inverse(ret_var) - sobj.BOX_MASK = ret_gpm + sobj.BOX_COUNTS = box_flux + sobj.BOX_COUNTS_IVAR = utils.inverse(box_var) + sobj.BOX_MASK = box_gpm sobj.BOX_COUNTS_SKY = skyspec # This is not the real sky, it is the residual sky. The datacube is presumed to be sky subtracted - sobj.S2N = np.median(ret_flux * np.sqrt(utils.inverse(ret_var))) + sobj.S2N = np.median(box_flux * np.sqrt(utils.inverse(box_var))) # Now do the OPTIMAL extraction msgs.info("Extracting an optimal spectrum of datacube") @@ -327,8 +326,8 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, subpixel=20 # Now slice the datacube and corresponding cubes/vectors into a series of 2D arrays numspat = objprof_idx.size flxslice = (spatspl[:,0,:], spatspl[:,1,:], spec) - flxcube2d = flxcube[flxslice].T - ivarcube2d = ivarcube[flxslice].T + flxcube2d = _flxcube[flxslice].T + ivarcube2d = _ivarcube[flxslice].T gpmcube2d = np.logical_not(bpmcube[flxslice].T) waveimg = wave.reshape((numwave,1)).repeat(numspat, axis=1) skyimg = skyspec.reshape((numwave,1)).repeat(numspat, axis=1) From a40832a5595e47b5463cb7ad803c40eaffc9f959 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 25 Jan 2024 12:23:59 +0000 Subject: [PATCH 026/128] fix sensfile input --- pypeit/inputfiles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/inputfiles.py b/pypeit/inputfiles.py index 53e3852c74..2fd5fb11d2 100644 --- a/pypeit/inputfiles.py +++ b/pypeit/inputfiles.py @@ -946,7 +946,7 @@ def options(self): # Get the sensfunc files sensfile = self.path_and_files('sensfile', skip_blank=False, check_exists=False) if sensfile is None: - opts['sensfile'] = [None]*len(self.filenames) + opts['sensfile'] = None elif len(sensfile) == 1 and len(self.filenames) > 1: opts['sensfile'] = sensfile*len(self.filenames) elif len(sensfile) != 0: From c409efeda8dc70bb23e3fc74bb98edeae6a00fca Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 25 Jan 2024 12:24:12 +0000 Subject: [PATCH 027/128] allow delta_wave as input --- pypeit/core/flux_calib.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pypeit/core/flux_calib.py b/pypeit/core/flux_calib.py index 8b71b65f5b..31f7d3ab40 100644 --- a/pypeit/core/flux_calib.py +++ b/pypeit/core/flux_calib.py @@ -719,7 +719,7 @@ def sensfunc(wave, counts, counts_ivar, counts_mask, exptime, airmass, std_dict, return meta_table, out_table -def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, extinct_correct=False, +def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, delta_wave=None, extinct_correct=False, airmass=None, longitude=None, latitude=None, extinctfilepar=None, extrap_sens=False): """ Get the final sensitivity function factor that will be multiplied into a spectrum in units of counts to flux calibrate it. @@ -738,6 +738,8 @@ def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, extin Exposure time in seconds tellmodel (float, `numpy.ndarray`_, optional): Apply telluric correction if it is passed it (shape = (nspec,)). Note this is deprecated. + delta_wave (float, `numpy.ndarray`_, optional): + The wavelength sampling of the spectrum to be flux calibrated. extinct_correct (bool, optional) If True perform an extinction correction. Default = False airmass (float, optional): @@ -760,10 +762,17 @@ def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, extin This quantity is defined to be sensfunc_interp/exptime/delta_wave. shape = (nspec,) """ - + # Initialise some variables zeropoint_obs = np.zeros_like(wave) wave_mask = wave > 1.0 # filter out masked regions or bad wavelengths - delta_wave = wvutils.get_delta_wave(wave, wave_mask) + if delta_wave is not None: + # Check that the delta_wave is the same size as the wave vector + if wave.size != delta_wave.size: + msgs.error('The wavelength vector and delta_wave vector must be the same size') + _delta_wave = delta_wave + else: + # If delta_wave is not passed in, then we will use the native wavelength sampling of the spectrum + _delta_wave = wvutils.get_delta_wave(wave, wave_mask) # print(f'get_sensfunc_factor: {np.amin(wave_zp):.1f}, {np.amax(wave_zp):.1f}, ' # f'{np.amin(wave[wave_mask]):.1f}, {np.amax(wave[wave_mask]):.1f}') @@ -811,7 +820,7 @@ def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, extin # senstot is the conversion from N_lam to F_lam, and the division by exptime and delta_wave are to convert # the spectrum in counts/pixel into units of N_lam = counts/sec/angstrom - return senstot/exptime/delta_wave + return senstot/exptime/_delta_wave def counts2Nlam(wave, counts, counts_ivar, counts_mask, exptime, airmass, longitude, latitude, extinctfilepar): From e3186c0931c5d1df2dbc719faae80f01d79f2ac9 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 25 Jan 2024 12:30:27 +0000 Subject: [PATCH 028/128] support extraction of fluxed cubes --- pypeit/coadd3d.py | 36 ++++++++++++++++++++++++------------ pypeit/core/datacube.py | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 56 insertions(+), 21 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index e653669ce0..0610fdfaf7 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -249,7 +249,8 @@ def extract_spec(self, parset, overwrite=False): # TODO :: Pass in the extraction parset parameters here exptime = self.spectrograph.compound_meta([self.head0], 'exptime') sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, - exptime=exptime, pypeline=self.spectrograph.pypeline) + exptime=exptime, pypeline=self.spectrograph.pypeline, + fluxed=self.fluxed) # Save the extracted spectrum spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') @@ -470,8 +471,16 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_cor if ra_offsets is not None and dec_offsets is None: msgs.error("If you provide ra_offsets, you must also provide dec_offsets") # Set the frame specific options + self.sensfile = None + if sensfile is None: + # User didn't provide a sensfile for each frame. Check if they provided a single one. + if self.cubepar['sensfile'] is not None: + # User provided a single sensfile. Use this for all frames. + self.sensfile = self.numfiles*[self.cubepar['sensfile']] + else: + # User provided a sensfile for each frame. Use these. + self.sensfile = sensfile self.skysub_frame = skysub_frame - self.sensfile = sensfile if sensfile is not None else self.numfiles*[self.cubepar['sensfile']] self.scale_corr = scale_corr self.grating_corr = grating_corr self.ra_offsets = list(ra_offsets) if isinstance(ra_offsets, np.ndarray) else ra_offsets @@ -1140,19 +1149,21 @@ def load(self): gratcorr_sort = datacube.correct_grating_shift(wave_sort, self.flat_splines[flatfile + "_wave"], self.flat_splines[flatfile], self.blaze_wave, self.blaze_spline) - # Sensitivity function - note that the sensitivity function factors in the exposure time, so if the - # flux calibration will not be applied, the sens_factor needs to be scaled by the exposure time - sens_factor = 1.0/exptime # If no sensitivity function is provided + # Sensitivity function - note that the sensitivity function factors in the exposure time and the + # wavelength sampling, so if the flux calibration will not be applied, the sens_factor needs to be + # scaled by the exposure time and the wavelength sampling + sens_factor = 1.0/(exptime * dwav_sort) # If no sensitivity function is provided # TODO :: Need to think about exposure time some more... Does the pypeit_sensfunc algorithm expect counts/s as input, or counts? This could affect the throughput calculation, perhaps? # :: More generally, should we be adding the counts when we make the datacube, or should we be averaging the counts/s with the appropriate weights? - if self.fluxcal and False: + if self.fluxcal: msgs.info("Calculating the sensitivity function") # Load the sensitivity function - sens = sensfunc.SensFunc.from_file(self.sensfile[ff], chk_version=self.par['rdx']['chk_version']) + # TODO :: reinstate this chk_version once Kyle's PR is merged + sens = sensfunc.SensFunc.from_file(self.sensfile[ff], chk_version=True)#self.par['rdx']['chk_version']) # Interpolate the sensitivity function onto the wavelength grid of the data sens_factor = flux_calib.get_sensfunc_factor( - wave_sort, sens.wave[:, 0], sens.zeropoint[:, 0], exptime, extinct_correct=False, - extrap_sens=self.par['fluxcalib']['extrap_sens']) + wave_sort, sens.wave[:, 0], sens.zeropoint[:, 0], exptime, delta_wave=dwav_sort, + extinct_correct=False, extrap_sens=self.par['fluxcalib']['extrap_sens']) # Convert the flux units to counts/s, and correct for the relative sensitivity of different setups extcorr_sort *= sens_factor / gratcorr_sort # Correct for extinction @@ -1161,11 +1172,12 @@ def load(self): # Convert units to Counts/s/Ang/arcsec2 # Slicer sampling * spatial pixel sampling + unitscale = self.all_wcs[ff].wcs.cunit[0].to(units.arcsec) * self.all_wcs[ff].wcs.cunit[1].to(units.arcsec) sl_deg = np.sqrt(self.all_wcs[ff].wcs.cd[0, 0] ** 2 + self.all_wcs[ff].wcs.cd[1, 0] ** 2) px_deg = np.sqrt(self.all_wcs[ff].wcs.cd[1, 1] ** 2 + self.all_wcs[ff].wcs.cd[0, 1] ** 2) - scl_units = dwav_sort * (3600.0 * sl_deg) * (3600.0 * px_deg) - sciImg[onslit_gpm] /= scl_units[resrt] - ivar[onslit_gpm] *= scl_units[resrt] ** 2 + scl_units = unitscale * sl_deg * px_deg + sciImg[onslit_gpm] /= scl_units + ivar[onslit_gpm] *= scl_units ** 2 # Calculate the weights relative to the zeroth cube self.weights[ff] = 1.0 # exptime #np.median(flux_sav[resrt]*np.sqrt(ivar_sav[resrt]))**2 diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 95701b92cc..f95d645f90 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -190,7 +190,8 @@ def correct_grating_shift(wave_eval, wave_curr, spl_curr, wave_ref, spl_ref, ord return grat_corr -def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, subpixel=20, pypeline="SlicerIFU"): +def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, + subpixel=20, pypeline="SlicerIFU", fluxed=False): """ Extract a spectrum of a standard star from a datacube @@ -212,6 +213,8 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, su Number of pixels to subpixelate spectrum when creating mask pypeline : str, optional PypeIt pipeline used to reduce the datacube + fluxed : bool, optional + Is the datacube fluxed? Returns ------- @@ -227,14 +230,22 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, su # Convert from counts/s/Ang/arcsec**2 to counts. The sensitivity function expects counts as input numxx, numyy, numwave = flxcube.shape - arcsecSQ = (wcscube.wcs.cdelt[0]*wcscube.wcs.cunit[0].to(units.arcsec)) * \ - (wcscube.wcs.cdelt[1]*wcscube.wcs.cunit[1].to(units.arcsec)) - deltawave = wcscube.wcs.cdelt[2]*wcscube.wcs.cunit[2].to(units.Angstrom) - unitscale = exptime * deltawave * arcsecSQ + arcsecSQ = (wcscube.wcs.cdelt[0] * wcscube.wcs.cunit[0].to(units.arcsec)) * \ + (wcscube.wcs.cdelt[1] * wcscube.wcs.cunit[1].to(units.arcsec)) + if fluxed: + # The datacube is flux calibrated, in units of erg/s/cm**2/Ang/arcsec**2 + # Scale the flux and ivar cubes to be in units of erg/s/cm**2/Ang + unitscale = arcsecSQ + else: + # Scale the flux and ivar cubes to be in units of counts + deltawave = wcscube.wcs.cdelt[2]*wcscube.wcs.cunit[2].to(units.Angstrom) + unitscale = exptime * deltawave * arcsecSQ - # Scale the flux and ivar cubes to be in units of counts + # Apply the relevant scaling _flxcube = flxcube * unitscale _ivarcube = ivarcube / unitscale**2 + + # Calculate the variance cube _varcube = utils.inverse(_ivarcube) # Generate a whitelight image, and fit a 2D Gaussian to estimate centroid and width @@ -298,10 +309,16 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, su # Store the BOXCAR extraction information sobj.BOX_RADIUS = wid sobj.BOX_WAVE = wave.astype(float) - sobj.BOX_COUNTS = box_flux - sobj.BOX_COUNTS_IVAR = utils.inverse(box_var) + if fluxed: + sobj.BOX_FLAM = box_flux + sobj.BOX_FLAM_SIG = np.sqrt(box_var) + sobj.BOX_FLAM_IVAR = utils.inverse(box_var) + else: + sobj.BOX_COUNTS = box_flux + sobj.BOX_COUNTS_SIG = np.sqrt(box_var) + sobj.BOX_COUNTS_IVAR = utils.inverse(box_var) + sobj.BOX_COUNTS_SKY = skyspec # This is not the real sky, it is the residual sky. The datacube is presumed to be sky subtracted sobj.BOX_MASK = box_gpm - sobj.BOX_COUNTS_SKY = skyspec # This is not the real sky, it is the residual sky. The datacube is presumed to be sky subtracted sobj.S2N = np.median(box_flux * np.sqrt(utils.inverse(box_var))) # Now do the OPTIMAL extraction @@ -339,6 +356,12 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, su extract.extract_optimal(flxcube2d, ivarcube2d, gpmcube2d, waveimg, skyimg, thismask, oprof, sobj, min_frac_use=0.05, fwhmimg=None, base_var=None, count_scale=None, noise_floor=None) + # Fudge factor to include the fluxed extraction in the specobjs object + if fluxed: + sobj.OPT_FLAM = sobj.OPT_COUNTS + sobj.OPT_FLAM_SIG = sobj.OPT_COUNTS_SIG + sobj.OPT_FLAM_IVAR = sobj.OPT_COUNTS_IVAR + # Make a specobjs object sobjs = specobjs.SpecObjs() sobjs.add_sobj(sobj) From de5fd643a37649bc9a1fd9ec9174b95dec0082e5 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 25 Jan 2024 13:36:46 +0000 Subject: [PATCH 029/128] typo --- pypeit/core/datacube.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index f95d645f90..cf1d425a95 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -233,7 +233,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, arcsecSQ = (wcscube.wcs.cdelt[0] * wcscube.wcs.cunit[0].to(units.arcsec)) * \ (wcscube.wcs.cdelt[1] * wcscube.wcs.cunit[1].to(units.arcsec)) if fluxed: - # The datacube is flux calibrated, in units of erg/s/cm**2/Ang/arcsec**2 + # The datacube is flux calibrated, in units of 10^-17 erg/s/cm**2/Ang/arcsec**2 # Scale the flux and ivar cubes to be in units of erg/s/cm**2/Ang unitscale = arcsecSQ else: From 71ca01498f1e72e4763ea9d36952db490d7a4239 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 25 Jan 2024 17:16:56 +0000 Subject: [PATCH 030/128] minor fix --- pypeit/coadd3d.py | 2 +- pypeit/core/flux_calib.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 0610fdfaf7..1ed40f9bf7 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -1162,7 +1162,7 @@ def load(self): sens = sensfunc.SensFunc.from_file(self.sensfile[ff], chk_version=True)#self.par['rdx']['chk_version']) # Interpolate the sensitivity function onto the wavelength grid of the data sens_factor = flux_calib.get_sensfunc_factor( - wave_sort, sens.wave[:, 0], sens.zeropoint[:, 0], exptime, delta_wave=dwav_sort, + wave_sort, sens.wave[:, 0], sens.zeropoint[:, 0], exptime, delta_wave=cd_wv, extinct_correct=False, extrap_sens=self.par['fluxcalib']['extrap_sens']) # Convert the flux units to counts/s, and correct for the relative sensitivity of different setups extcorr_sort *= sens_factor / gratcorr_sort diff --git a/pypeit/core/flux_calib.py b/pypeit/core/flux_calib.py index 31f7d3ab40..3095751d83 100644 --- a/pypeit/core/flux_calib.py +++ b/pypeit/core/flux_calib.py @@ -805,7 +805,6 @@ def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, delta msgs.info('Applying telluric correction') sensfunc_obs = sensfunc_obs * (tellmodel > 1e-10) / (tellmodel + (tellmodel < 1e-10)) - if extinct_correct: if longitude is None or latitude is None: msgs.error('You must specify longitude and latitude if we are extinction correcting') From 5f9751d64a03abf40499c0011de483989c863ee1 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 3 Feb 2024 09:24:47 +0000 Subject: [PATCH 031/128] grating_corr fix --- pypeit/coadd3d.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 96fbab738a..e6487f63ac 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -400,7 +400,7 @@ def get_instance(cls, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_ grating_corr=grating_corr, ra_offsets=ra_offsets, dec_offsets=dec_offsets, spectrograph=spectrograph, det=det, overwrite=overwrite, show=show, debug=debug) - def __init__(self, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_corr=None, + def __init__(self, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_corr=None, grating_corr=None, ra_offsets=None, dec_offsets=None, spectrograph=None, det=None, overwrite=False, show=False, debug=False): """ From 40cebd119b746fa647c7c75e0549696d6fe716a2 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 10:29:53 +0000 Subject: [PATCH 032/128] docs --- doc/releases/1.15.1dev.rst | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 doc/releases/1.15.1dev.rst diff --git a/doc/releases/1.15.1dev.rst b/doc/releases/1.15.1dev.rst new file mode 100644 index 0000000000..c16b8ab09a --- /dev/null +++ b/doc/releases/1.15.1dev.rst @@ -0,0 +1,34 @@ + +Version 1.15.1dev +================= + +Installation Changes +-------------------- + +Dependency Changes +------------------ + +Functionality/Performance Improvements and Additions +---------------------------------------------------- + +Instrument-specific Updates +--------------------------- + +Script Changes +-------------- + +- A new script allows spec1d files to be extracted from datacubes. This + script is called `pypeit_extract_datacube`, and can be used to extract + 1D spectra from a datacube. +- The sensitivity function is now generated outside of datacube generation. +- The `grating_corr` column is now used to select the correct grating + correction file for each spec2d file when generating the datacube. + +Datamodel Changes +----------------- + +Under-the-hood Improvements +--------------------------- + +Bug Fixes +--------- From 29aa617e64b230cba9e50970afc0936e9de9e2c5 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 12:19:19 +0000 Subject: [PATCH 033/128] add extractfile class --- pypeit/inputfiles.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pypeit/inputfiles.py b/pypeit/inputfiles.py index 2fd5fb11d2..5e945e0ad1 100644 --- a/pypeit/inputfiles.py +++ b/pypeit/inputfiles.py @@ -727,6 +727,16 @@ class SensFile(InputFile): datablock_required = False setup_required = False + +class ExtractFile(InputFile): + """Child class for the Extraction input file + """ + data_block = 'extract' # Defines naming of data block + flavor = 'Extract' # Defines naming of file + setup_required = False + datablock_required = False + + class FluxFile(InputFile): """Child class for the Fluxing input file """ @@ -957,7 +967,7 @@ def options(self): if scale_corr is None: opts['scale_corr'] = [None]*len(self.filenames) elif len(scale_corr) == 1 and len(self.filenames) > 1: - opts['scale_corr'] = scale_corr.lower()*len(self.filenames) # TODO :: Why is this .lower()? + opts['scale_corr'] = scale_corr*len(self.filenames) elif len(scale_corr) != 0: opts['scale_corr'] = scale_corr From 390afaec6163925dca17bf0d280b7a703088df9c Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 12:19:32 +0000 Subject: [PATCH 034/128] typo --- pypeit/specobj.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/specobj.py b/pypeit/specobj.py index 9773676d70..675f65db0d 100644 --- a/pypeit/specobj.py +++ b/pypeit/specobj.py @@ -486,7 +486,7 @@ def update_flex_shift(self, shift, flex_type='local'): self.FLEX_SHIFT_TOTAL += shift # TODO This should be a wrapper calling a core algorithm. - # It is, right? Can this be TODO be removed? + # It is, right? Can this TODO be removed? def apply_flux_calib(self, wave_zp, zeropoint, exptime, tellmodel=None, extinct_correct=False, airmass=None, longitude=None, latitude=None, extinctfilepar=None, extrap_sens=False): From acfa8555fef917864508dbfba988312d4a0b3652 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 12:19:44 +0000 Subject: [PATCH 035/128] apply nonlinear --- pypeit/spectrographs/keck_kcwi.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pypeit/spectrographs/keck_kcwi.py b/pypeit/spectrographs/keck_kcwi.py index f8edd1dec2..2a32a4080b 100644 --- a/pypeit/spectrographs/keck_kcwi.py +++ b/pypeit/spectrographs/keck_kcwi.py @@ -927,8 +927,13 @@ def default_pypeit_par(cls): # par['scienceframe']['process']['scattlight']['finecorr_mask'] = 12 # Mask the middle inter-slit region. It contains a strange scattered light feature that doesn't appear to affect any other inter-slit regions # Correct for non-linear behaviour in the detector response - # TODO :: Ideally, need to set this for all frames - par['scienceframe']['process']['correct_nonlinear'] = [-1.4E-7, -1.4E-7, -1.2E-7, -1.8E-7] # AMPID=0,1,2,3 respectively + nonlin_array = np.array([-1.4E-7, -1.4E-7, -1.2E-7, -1.8E-7]) # AMPID=0,1,2,3 respectively + par['calibrations']['arcframe']['process']['correct_nonlinear'] = nonlin_array + par['calibrations']['tiltframe']['process']['correct_nonlinear'] = nonlin_array + par['calibrations']['pixelflatframe']['process']['correct_nonlinear'] = nonlin_array + par['calibrations']['illumflatframe']['process']['correct_nonlinear'] = nonlin_array + par['calibrations']['standardframe']['process']['correct_nonlinear'] = nonlin_array + par['scienceframe']['process']['correct_nonlinear'] = nonlin_array # Correct the illumflat for pixel-to-pixel sensitivity variations par['calibrations']['illumflatframe']['process']['use_pixelflat'] = True From fcc9805bb6537e0b8354d26f62f8d0ee62b7a5e8 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 13:40:08 +0000 Subject: [PATCH 036/128] add extraction pars --- pypeit/coadd3d.py | 10 +++--- pypeit/core/datacube.py | 57 ++++++++++++++++++++++-------- pypeit/scripts/extract_datacube.py | 18 +++++----- 3 files changed, 58 insertions(+), 27 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index e6487f63ac..5e7d5c2477 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -249,17 +249,19 @@ def extract_spec(self, parset, overwrite=False): Parameters ---------- parset : dict - A dictionary containing the parameters for the extraction. + A dictionary containing the 'Reduce' PypeItPar parameters. overwrite : bool, optional Overwrite any existing files """ # Extract the spectrum - # TODO :: Avoid transposing these large cubes - # TODO :: Pass in the extraction parset parameters here + fwhm = parset['findobj']['find_fwhm'] if parset['extraction']['use_user_fwhm'] else None + exptime = self.spectrograph.compound_meta([self.head0], 'exptime') + # TODO :: Avoid transposing these large cubes sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, exptime=exptime, pypeline=self.spectrograph.pypeline, - fluxed=self.fluxed) + fluxed=self.fluxed, boxcar_width=parset['extraction']['boxcar_radius'], + optfwhm=fwhm) # Save the extracted spectrum spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index cf1d425a95..c7925fe112 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -191,7 +191,8 @@ def correct_grating_shift(wave_eval, wave_curr, spl_curr, wave_ref, spl_ref, ord def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, - subpixel=20, pypeline="SlicerIFU", fluxed=False): + subpixel=20, boxcar_width=None, optfwhm=None, + pypeline="SlicerIFU", fluxed=False): """ Extract a spectrum of a standard star from a datacube @@ -211,6 +212,11 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, Exposure time listed in the header of the datacube subpixel : int, optional Number of pixels to subpixelate spectrum when creating mask + boxcar_width : float, optional + Width of the boxcar (in arcseconds) to use for the extraction + optfwhm : float, optional + FWHM of the PSF in pixels that is used to generate a Gaussian profile + for the optimal extraction. pypeline : str, optional PypeIt pipeline used to reduce the datacube fluxed : bool, optional @@ -249,11 +255,18 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, _varcube = utils.inverse(_ivarcube) # Generate a whitelight image, and fit a 2D Gaussian to estimate centroid and width - msgs.info("Making whitelight image") + msgs.info("Making white light image") # TODO :: Probably should set minimum and maximum wavelength to use for whitelight image wl_img = make_whitelight_fromcube(_flxcube) popt, pcov, model = fitGaussian2D(wl_img, norm=True) - wid = max(popt[3], popt[4]) + if boxcar_width is None: + nsig = 4 # 4 sigma should be far enough... Note: percentage enclosed for 2D Gaussian = 1-np.exp(-0.5 * nsig**2) + wid = nsig * max(popt[3], popt[4]) + else: + # Set the user-defined width + wid = boxcar_width/np.sqrt(arcsecSQ) + # Set the width of the extraction boxcar for the sky determination + widsky = 2 * wid # Setup the coordinates of the mask x = np.linspace(0, numxx - 1, numxx * subpixel) @@ -264,8 +277,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, msgs.info("Generating an object mask") newshape = (numxx * subpixel, numyy * subpixel) mask = np.zeros(newshape) - nsig = 4 # 4 sigma should be far enough... Note: percentage enclosed for 2D Gaussian = 1-np.exp(-0.5 * nsig**2) - ww = np.where((np.sqrt((xx - popt[1]) ** 2 + (yy - popt[2]) ** 2) < nsig * wid)) + ww = np.where((np.sqrt((xx - popt[1]) ** 2 + (yy - popt[2]) ** 2) < wid)) mask[ww] = 1 mask = utils.rebinND(mask, (numxx, numyy)).reshape(numxx, numyy, 1) @@ -273,10 +285,10 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, msgs.info("Generating a sky mask") newshape = (numxx * subpixel, numyy * subpixel) smask = np.zeros(newshape) - nsig = 8 # 8 sigma should be far enough - ww = np.where((np.sqrt((xx - popt[1]) ** 2 + (yy - popt[2]) ** 2) < nsig * wid)) + ww = np.where((np.sqrt((xx - popt[1]) ** 2 + (yy - popt[2]) ** 2) < widsky)) smask[ww] = 1 smask = utils.rebinND(smask, (numxx, numyy)).reshape(numxx, numyy, 1) + # Subtract off the object mask region, so that we just have an annulus around the object smask -= mask msgs.info("Subtracting the residual sky") @@ -307,7 +319,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, box_gpm = flxscl > 1/3 # Good pixels are those where at least one-third of the standard star flux is measured # Store the BOXCAR extraction information - sobj.BOX_RADIUS = wid + sobj.BOX_RADIUS = wid # Size of boxcar radius in pixels sobj.BOX_WAVE = wave.astype(float) if fluxed: sobj.BOX_FLAM = box_flux @@ -324,22 +336,38 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, # Now do the OPTIMAL extraction msgs.info("Extracting an optimal spectrum of datacube") # First, we need to rearrange the datacube and inverse variance cube into a 2D array. - # The 3D -> 2D conversion is done so that there is a spectral and spatial dimension online, + # The 3D -> 2D conversion is done so that there is a spectral and spatial dimension, # and the brightest white light pixel is transformed to be at the centre column of the 2D # array. Then, the second brightest white light pixel is transformed to be next to the centre # column of the 2D array, and so on. This is done so that the optimal extraction algorithm # can be applied. - wl_img_masked = wl_img# * mask[:,:,0] + optkern = wl_img + if optfwhm is not None: + msgs.info("Generating a 2D Gaussian kernel for the optimal extraction, with FWHM = {:.2f} pixels".format(optfwhm)) + x = np.linspace(0, wl_img.shape[0] - 1, wl_img.shape[0]) + y = np.linspace(0, wl_img.shape[1] - 1, wl_img.shape[1]) + xx, yy = np.meshgrid(x, y, indexing='ij') + # Generate a Gaussian kernel + intflux = 1 + xo, yo = popt[1], popt[2] + fwhm2sigma = 1.0 / (2 * np.sqrt(2 * np.log(2))) + sigma_x, sigma_y = optfwhm*fwhm2sigma, optfwhm*fwhm2sigma + theta, offset, = 0.0, 0.0 + optkern = gaussian2D((xx, yy), intflux, xo, yo, sigma_x, sigma_y, theta, offset).reshape(wl_img.shape) + # Normalise the kernel + optkern /= np.sum(optkern) + + optkern_masked = optkern# * mask[:,:,0] # Normalise the white light image - wl_img_masked /= np.sum(wl_img_masked) - asrt = np.argsort(wl_img_masked, axis=None) + optkern_masked /= np.sum(optkern_masked) + asrt = np.argsort(optkern_masked, axis=None) tmp = asrt.reshape((asrt.size//2,2)) objprof_idx = np.append(tmp[:,0], tmp[::-1,1]) - objprof = wl_img_masked[np.unravel_index(objprof_idx, wl_img.shape)] + objprof = optkern_masked[np.unravel_index(objprof_idx, optkern.shape)] # Now slice the datacube and inverse variance cube into a 2D array spat, spec = np.meshgrid(objprof_idx, np.arange(numwave), indexing='ij') - spatspl = np.apply_along_axis(np.unravel_index, 1, spat, wl_img.shape) + spatspl = np.apply_along_axis(np.unravel_index, 1, spat, optkern.shape) # Now slice the datacube and corresponding cubes/vectors into a series of 2D arrays numspat = objprof_idx.size flxslice = (spatspl[:,0,:], spatspl[:,1,:], spec) @@ -352,7 +380,6 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, thismask = np.ones_like(flxcube2d, dtype=bool) # Now do the optimal extraction - # TODO :: Perhaps add support for pypeitpar extraction parameters extract.extract_optimal(flxcube2d, ivarcube2d, gpmcube2d, waveimg, skyimg, thismask, oprof, sobj, min_frac_use=0.05, fwhmimg=None, base_var=None, count_scale=None, noise_floor=None) diff --git a/pypeit/scripts/extract_datacube.py b/pypeit/scripts/extract_datacube.py index ca83e3ef5b..62bde64db5 100644 --- a/pypeit/scripts/extract_datacube.py +++ b/pypeit/scripts/extract_datacube.py @@ -10,7 +10,7 @@ .. include:: ../include/links.rst """ from pypeit.scripts import scriptbase - +from IPython import embed class ExtractDataCube(scriptbase.ScriptBase): @@ -20,6 +20,8 @@ def get_parser(cls, width=None): parser = super().get_parser(description='Read in a datacube, extract a spectrum of a point source,' 'and save it as a spec1d file.', width=width) parser.add_argument('file', type = str, default=None, help='spec3d.fits DataCube file') + parser.add_argument("-s", "--ext_file", type=str, + help='Configuration file with extraction parameters') parser.add_argument('-o', '--overwrite', default=False, action='store_true', help='Overwrite any existing files/directories') parser.add_argument('-v', '--verbosity', type=int, default=1, @@ -44,12 +46,14 @@ def main(args): # Check that a file has been provided if args.file is None: msgs.error('You must input a spec3d (i.e. PypeIt DataCube) fits file') + extcube = DataCube.from_file(args.file) + spectrograph = load_spectrograph(extcube.PYP_SPEC) - # TODO :: May consider adding another optional file that allows the user to pass in some extract parameters? - if False: + if args.ext_file is None: + parset = spectrograph.default_pypeit_par() + else: # Read in the relevant information from the .extract file - ext3dfile = inputfiles.ExtractFile.from_file(args.file) - spectrograph = load_spectrograph(ext3dfile.config['rdx']['spectrograph']) + ext3dfile = inputfiles.ExtractFile.from_file(args.ext_file) # Parameters spectrograph_def_par = spectrograph.default_pypeit_par() @@ -58,11 +62,9 @@ def main(args): # Load the DataCube tstart = time.time() - extcube = DataCube.from_file(args.file) # Extract the spectrum - # extcube.extract_spec(parset['reduce']['extraction'], overwrite=args.overwrite) - extcube.extract_spec(None, overwrite=args.overwrite) + extcube.extract_spec(parset['reduce'], overwrite=args.overwrite) # Report the extraction time msgs.info(utils.get_time_string(time.time()-tstart)) From 2243b1bc156fab777fa8a8e5e7fcb1f3c086b67d Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 13:40:30 +0000 Subject: [PATCH 037/128] rm embed --- pypeit/scripts/extract_datacube.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/scripts/extract_datacube.py b/pypeit/scripts/extract_datacube.py index 62bde64db5..aa49b8d27a 100644 --- a/pypeit/scripts/extract_datacube.py +++ b/pypeit/scripts/extract_datacube.py @@ -10,7 +10,7 @@ .. include:: ../include/links.rst """ from pypeit.scripts import scriptbase -from IPython import embed + class ExtractDataCube(scriptbase.ScriptBase): From c830ef4c84aa55947d1742db567eb7d3675a7a19 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 13:40:56 +0000 Subject: [PATCH 038/128] extfile --- pypeit/scripts/extract_datacube.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pypeit/scripts/extract_datacube.py b/pypeit/scripts/extract_datacube.py index aa49b8d27a..f36fbdefee 100644 --- a/pypeit/scripts/extract_datacube.py +++ b/pypeit/scripts/extract_datacube.py @@ -16,11 +16,10 @@ class ExtractDataCube(scriptbase.ScriptBase): @classmethod def get_parser(cls, width=None): - # TODO :: May consider adding another optional file that allows the user to pass in some extract parameters? parser = super().get_parser(description='Read in a datacube, extract a spectrum of a point source,' 'and save it as a spec1d file.', width=width) parser.add_argument('file', type = str, default=None, help='spec3d.fits DataCube file') - parser.add_argument("-s", "--ext_file", type=str, + parser.add_argument("-e", "--ext_file", type=str, help='Configuration file with extraction parameters') parser.add_argument('-o', '--overwrite', default=False, action='store_true', help='Overwrite any existing files/directories') From b71d38b47dc530ba2f8c82667f333a4d92525a83 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 13:52:36 +0000 Subject: [PATCH 039/128] support wl range --- pypeit/coadd3d.py | 13 +++---------- pypeit/core/datacube.py | 8 +++++--- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 5e7d5c2477..08f0303c11 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -22,12 +22,6 @@ from IPython import embed -# REMOVE THIS TODOLIST BEFORE PR MERGING -#TODO :: tweaked edges (this needs a different algorithm than what is currently implemented) -# :: non-linearity correction -# :: incorporate flat products into spec2d files -# :: specc1d extractions from datacubes - class DataCube(datamodel.DataContainer): """ @@ -261,7 +255,7 @@ def extract_spec(self, parset, overwrite=False): sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, exptime=exptime, pypeline=self.spectrograph.pypeline, fluxed=self.fluxed, boxcar_width=parset['extraction']['boxcar_radius'], - optfwhm=fwhm) + optfwhm=fwhm, whitelight_range=parset['cube']['whitelight_range']) # Save the extracted spectrum spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') @@ -1148,7 +1142,7 @@ def load(self): # Compute the extinction correction msgs.info("Applying extinction correction") - # TODO :: Should the extinct_file be part of the IR algorithm? + # TODO :: Change the ['UVIS']['extinct_file'] here when the sensitivity function calculation is unified. extinct = flux_calib.load_extinction_data(self.spec.telescope['longitude'], self.spec.telescope['latitude'], self.senspar['UVIS']['extinct_file']) @@ -1175,8 +1169,7 @@ def load(self): if self.fluxcal: msgs.info("Calculating the sensitivity function") # Load the sensitivity function - # TODO :: reinstate this chk_version once Kyle's PR is merged - sens = sensfunc.SensFunc.from_file(self.sensfile[ff], chk_version=True)#self.par['rdx']['chk_version']) + sens = sensfunc.SensFunc.from_file(self.sensfile[ff], chk_version=self.par['rdx']['chk_version']) # Interpolate the sensitivity function onto the wavelength grid of the data sens_factor = flux_calib.get_sensfunc_factor( wave_sort, sens.wave[:, 0], sens.zeropoint[:, 0], exptime, delta_wave=cd_wv, diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index c7925fe112..ce30834622 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -191,7 +191,7 @@ def correct_grating_shift(wave_eval, wave_curr, spl_curr, wave_ref, spl_ref, ord def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, - subpixel=20, boxcar_width=None, optfwhm=None, + subpixel=20, boxcar_width=None, optfwhm=None, whitelight_range=None, pypeline="SlicerIFU", fluxed=False): """ Extract a spectrum of a standard star from a datacube @@ -227,6 +227,9 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, sobjs : `pypeit.specobjs.SpecObjs`_ SpecObjs object containing the extracted spectrum """ + if whitelight_range is None: + whitelight_range = [np.min(wave), np.max(wave)] + # Generate a spec1d object to hold the extracted spectrum msgs.info("Initialising a PypeIt SpecObj spec1d file") sobj = specobj.SpecObj(pypeline, "DET01", SLITID=0) @@ -256,8 +259,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, # Generate a whitelight image, and fit a 2D Gaussian to estimate centroid and width msgs.info("Making white light image") - # TODO :: Probably should set minimum and maximum wavelength to use for whitelight image - wl_img = make_whitelight_fromcube(_flxcube) + wl_img = make_whitelight_fromcube(_flxcube, wavemin=whitelight_range[0], wavemax=whitelight_range[1]) popt, pcov, model = fitGaussian2D(wl_img, norm=True) if boxcar_width is None: nsig = 4 # 4 sigma should be far enough... Note: percentage enclosed for 2D Gaussian = 1-np.exp(-0.5 * nsig**2) From 0be7fbe226c0438aca0366a8bcd64e59f44459bb Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 14:19:58 +0000 Subject: [PATCH 040/128] fix nonlinear keys --- pypeit/spectrographs/keck_kcwi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/spectrographs/keck_kcwi.py b/pypeit/spectrographs/keck_kcwi.py index 2a32a4080b..74f2a7cff9 100644 --- a/pypeit/spectrographs/keck_kcwi.py +++ b/pypeit/spectrographs/keck_kcwi.py @@ -927,7 +927,7 @@ def default_pypeit_par(cls): # par['scienceframe']['process']['scattlight']['finecorr_mask'] = 12 # Mask the middle inter-slit region. It contains a strange scattered light feature that doesn't appear to affect any other inter-slit regions # Correct for non-linear behaviour in the detector response - nonlin_array = np.array([-1.4E-7, -1.4E-7, -1.2E-7, -1.8E-7]) # AMPID=0,1,2,3 respectively + nonlin_array = [-1.4E-7, -1.4E-7, -1.2E-7, -1.8E-7] # AMPID=0,1,2,3 respectively par['calibrations']['arcframe']['process']['correct_nonlinear'] = nonlin_array par['calibrations']['tiltframe']['process']['correct_nonlinear'] = nonlin_array par['calibrations']['pixelflatframe']['process']['correct_nonlinear'] = nonlin_array From a447465af97e2ed128ca6d15f7729c9b34a865b8 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 14:20:14 +0000 Subject: [PATCH 041/128] 1s exptime --- pypeit/coadd3d.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 08f0303c11..b169662b03 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -250,7 +250,8 @@ def extract_spec(self, parset, overwrite=False): # Extract the spectrum fwhm = parset['findobj']['find_fwhm'] if parset['extraction']['use_user_fwhm'] else None - exptime = self.spectrograph.compound_meta([self.head0], 'exptime') + # exptime = self.spectrograph.compound_meta([self.head0], 'exptime') + exptime = 1.0 # All DataCubes are stored in counts/second # TODO :: Avoid transposing these large cubes sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, exptime=exptime, pypeline=self.spectrograph.pypeline, From a3ad55a630e11658aecf880228f446dd360f81df Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 21:26:44 +0000 Subject: [PATCH 042/128] 1s exptime --- pypeit/coadd3d.py | 13 +++++++++---- pypeit/core/datacube.py | 5 ++++- pypeit/core/flux_calib.py | 12 +++++++++--- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index b169662b03..197a344c8b 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -165,9 +165,12 @@ def to_file(self, ofile, primary_hdr=None, hdr=None, **kwargs): subheader = spectrograph.subheader_for_spec(self.head0, self.head0) else: subheader = {} - # Add em in + # Add them in for key in subheader: primary_hdr[key] = subheader[key] + # Set the exposure time to 1, since datacubes are counts/second. + # This is needed for the sensitivity function calculation + primary_hdr['EXPTIME'] = 1.0 # Do it super(DataCube, self).to_file(ofile, primary_hdr=primary_hdr, hdr=hdr, **kwargs) @@ -250,8 +253,10 @@ def extract_spec(self, parset, overwrite=False): # Extract the spectrum fwhm = parset['findobj']['find_fwhm'] if parset['extraction']['use_user_fwhm'] else None - # exptime = self.spectrograph.compound_meta([self.head0], 'exptime') - exptime = 1.0 # All DataCubes are stored in counts/second + exptime = self.spectrograph.compound_meta([self.head0], 'exptime') + if exptime != 1.0: + msgs.error("The exposure time is not 1.0, which is required for the datacube extraction.") + # TODO :: Avoid transposing these large cubes sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, exptime=exptime, pypeline=self.spectrograph.pypeline, @@ -1007,7 +1012,7 @@ def load(self): # Load all spec2d files and prepare the data for making a datacube for ff, fil in enumerate(self.spec2d): # Load it up - msgs.info("Loading PypeIt spec2d frame:" + msgs.newline() + fil) + msgs.info(f"Loading PypeIt spec2d frame ({ff+1}/{len(self.spec2d)}):" + msgs.newline() + fil) spec2DObj = spec2dobj.Spec2DObj.from_file(fil, self.detname, chk_version=self.chk_version) detector = spec2DObj.detector diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index ce30834622..75a724d47a 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -268,6 +268,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, # Set the user-defined width wid = boxcar_width/np.sqrt(arcsecSQ) # Set the width of the extraction boxcar for the sky determination + msgs.info("Using a boxcar width of {:0.2f} arcsec".format(wid*np.sqrt(arcsecSQ))) widsky = 2 * wid # Setup the coordinates of the mask @@ -385,7 +386,9 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, extract.extract_optimal(flxcube2d, ivarcube2d, gpmcube2d, waveimg, skyimg, thismask, oprof, sobj, min_frac_use=0.05, fwhmimg=None, base_var=None, count_scale=None, noise_floor=None) - # Fudge factor to include the fluxed extraction in the specobjs object + # Note that extract.extract_optimal() stores the optimal extraction in the + # sobj.OPT_COUNTS, sobj.OPT_COUNTS_SIG, and sobj.OPT_COUNTS_IVAR attributes. + # We need to store the fluxed extraction into the FLAM attributes (a slight fudge). if fluxed: sobj.OPT_FLAM = sobj.OPT_COUNTS sobj.OPT_FLAM_SIG = sobj.OPT_COUNTS_SIG diff --git a/pypeit/core/flux_calib.py b/pypeit/core/flux_calib.py index 3095751d83..e1f2a2164b 100644 --- a/pypeit/core/flux_calib.py +++ b/pypeit/core/flux_calib.py @@ -767,9 +767,15 @@ def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, delta wave_mask = wave > 1.0 # filter out masked regions or bad wavelengths if delta_wave is not None: # Check that the delta_wave is the same size as the wave vector - if wave.size != delta_wave.size: - msgs.error('The wavelength vector and delta_wave vector must be the same size') - _delta_wave = delta_wave + if isinstance(delta_wave, float): + _delta_wave = delta_wave + elif isinstance(delta_wave, np.ndarray): + if wave.size != delta_wave.size: + msgs.error('The wavelength vector and delta_wave vector must be the same size') + _delta_wave = delta_wave + else: + msgs.warn('Invalid type for delta_wave - using a default value') + _delta_wave = wvutils.get_delta_wave(wave, wave_mask) else: # If delta_wave is not passed in, then we will use the native wavelength sampling of the spectrum _delta_wave = wvutils.get_delta_wave(wave, wave_mask) From daa1739b5e684742ab3fcde35ad3221ddf25b399 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Feb 2024 21:41:22 +0000 Subject: [PATCH 043/128] 1s exptime --- pypeit/coadd3d.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 197a344c8b..c9465d05bf 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -253,10 +253,10 @@ def extract_spec(self, parset, overwrite=False): # Extract the spectrum fwhm = parset['findobj']['find_fwhm'] if parset['extraction']['use_user_fwhm'] else None - exptime = self.spectrograph.compound_meta([self.head0], 'exptime') - if exptime != 1.0: - msgs.error("The exposure time is not 1.0, which is required for the datacube extraction.") - + # exptime = self.spectrograph.compound_meta([self.head0], 'exptime') + # if exptime != 1.0: + # msgs.error("The exposure time is not 1.0, which is required for the datacube extraction.") + exptime = 1.0 # TODO :: Avoid transposing these large cubes sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, exptime=exptime, pypeline=self.spectrograph.pypeline, From 45781ccef6e8a877742005944f74411ace879dff Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 13 Feb 2024 17:09:23 +0000 Subject: [PATCH 044/128] rm duplicate WL creation --- pypeit/core/datacube.py | 43 ++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 75a724d47a..315cbfefa3 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -1164,7 +1164,7 @@ def compute_weights_frompix(raImg, decImg, waveImg, sciImg, ivarImg, slitidImg, # Compute the weights return compute_weights(raImg, decImg, waveImg, sciImg, ivarImg, slitidImg, all_wcs, all_tilts, all_slits, all_align, all_dar, ra_offsets, dec_offsets, - wl_full[:, :, 0], dspat, dwv, + wl_full, dspat, dwv, ra_min=ra_min, ra_max=ra_max, dec_min=dec_min, dec_max=dec_max, wave_min=wave_min, sn_smooth_npix=sn_smooth_npix, weight_method=weight_method) @@ -1407,34 +1407,37 @@ def generate_image_subpixel(image_wcs, bins, sciImg, ivarImg, waveImg, slitid_im output. Otherwise, individual images will be generated. Returns: - `numpy.ndarray`_: The white light images for all frames + `numpy.ndarray`_: The white light images for all frames. If combine=True, + this will be a single 2D image. Otherwise, it will be a 3D array with + dimensions (numra, numdec, numframes). """ # Perform some checks on the input -- note, more complete checks are performed in subpixellate() _sciImg, _ivarImg, _waveImg, _slitid_img_gpm, _wghtImg, _all_wcs, _tilts, _slits, _astrom_trans, _all_dar, _ra_offset, _dec_offset = \ check_inputs([sciImg, ivarImg, waveImg, slitid_img_gpm, wghtImg, all_wcs, tilts, slits, astrom_trans, all_dar, ra_offset, dec_offset]) - numframes = len(_sciImg) - - # Prepare the array of white light images to be stored - numra = bins[0].size-1 - numdec = bins[1].size-1 - all_wl_imgs = np.zeros((numra, numdec, numframes)) - # Loop through all frames and generate white light images - for fr in range(numframes): - msgs.info(f"Creating image {fr+1}/{numframes}") - if combine: - # Subpixellate - img, _, _ = subpixellate(image_wcs, bins, _sciImg, _ivarImg, _waveImg, _slitid_img_gpm, _wghtImg, - _all_wcs, _tilts, _slits, _astrom_trans, _all_dar, _ra_offset, _dec_offset, - spec_subpixel=spec_subpixel, spat_subpixel=spat_subpixel, slice_subpixel=slice_subpixel) - else: + # Generate the white light images + if combine: + # Subpixellate + img, _, _ = subpixellate(image_wcs, bins, _sciImg, _ivarImg, _waveImg, _slitid_img_gpm, _wghtImg, + _all_wcs, _tilts, _slits, _astrom_trans, _all_dar, _ra_offset, _dec_offset, + spec_subpixel=spec_subpixel, spat_subpixel=spat_subpixel, slice_subpixel=slice_subpixel) + return img[:, :, 0] + else: + # Prepare the array of white light images to be stored + numframes = len(_sciImg) + numra = bins[0].size - 1 + numdec = bins[1].size - 1 + all_wl_imgs = np.zeros((numra, numdec, numframes)) + # Loop through all frames and generate white light images + for fr in range(numframes): + msgs.info(f"Creating image {fr + 1}/{numframes}") # Subpixellate img, _, _ = subpixellate(image_wcs, bins, _sciImg[fr], _ivarImg[fr], _waveImg[fr], _slitid_img_gpm[fr], _wghtImg[fr], _all_wcs[fr], _tilts[fr], _slits[fr], _astrom_trans[fr], _all_dar[fr], _ra_offset[fr], _dec_offset[fr], spec_subpixel=spec_subpixel, spat_subpixel=spat_subpixel, slice_subpixel=slice_subpixel) - all_wl_imgs[:, :, fr] = img[:, :, 0] - # Return the constructed white light images - return all_wl_imgs + all_wl_imgs[:, :, fr] = img[:, :, 0] + # Return the constructed white light images + return all_wl_imgs def generate_cube_subpixel(output_wcs, bins, sciImg, ivarImg, waveImg, slitid_img_gpm, wghtImg, From 6a6d71f68e3035b8400682ca3adc03604395ff3b Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 13 Feb 2024 21:01:21 +0000 Subject: [PATCH 045/128] mask optimal kernel rm double skysub --- pypeit/core/datacube.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 315cbfefa3..86fe27b492 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -6,6 +6,7 @@ import os +import matplotlib.pyplot as plt from astropy import wcs, units from astropy.coordinates import AltAz, SkyCoord from astropy.io import fits @@ -360,7 +361,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, # Normalise the kernel optkern /= np.sum(optkern) - optkern_masked = optkern# * mask[:,:,0] + optkern_masked = optkern * mask[:,:,0] # Normalise the white light image optkern_masked /= np.sum(optkern_masked) asrt = np.argsort(optkern_masked, axis=None) @@ -378,7 +379,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, ivarcube2d = _ivarcube[flxslice].T gpmcube2d = np.logical_not(bpmcube[flxslice].T) waveimg = wave.reshape((numwave,1)).repeat(numspat, axis=1) - skyimg = skyspec.reshape((numwave,1)).repeat(numspat, axis=1) + skyimg = np.zeros((numwave, numspat)) # Note, the residual sky has already been subtracted off _flxcube oprof = objprof.reshape((1,numspat)).repeat(numwave, axis=0) thismask = np.ones_like(flxcube2d, dtype=bool) From 3bc3fe4698e6178af3c68bf1dcd941e3d112e29f Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 13 Feb 2024 21:20:02 +0000 Subject: [PATCH 046/128] add todo about dar fix --- pypeit/core/datacube.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 86fe27b492..f76cba50b4 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -387,6 +387,10 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, extract.extract_optimal(flxcube2d, ivarcube2d, gpmcube2d, waveimg, skyimg, thismask, oprof, sobj, min_frac_use=0.05, fwhmimg=None, base_var=None, count_scale=None, noise_floor=None) + # TODO :: The optimal extraction may suffer from residual DAR correction issues. This is because the + # :: object profile assumes that the white light image represents the true spatial profile of the + # :: object. One possibility is to fit a (linear?) model to the ratio of box/optimal extraction + # :: and then apply this model to the optimal extraction. This is a bit of a fudge. # Note that extract.extract_optimal() stores the optimal extraction in the # sobj.OPT_COUNTS, sobj.OPT_COUNTS_SIG, and sobj.OPT_COUNTS_IVAR attributes. # We need to store the fluxed extraction into the FLAM attributes (a slight fudge). From d6db0ee4819b2e2e8859f66dc50fb38d45038cba Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 14 Feb 2024 16:46:27 +0000 Subject: [PATCH 047/128] add output filename --- pypeit/coadd3d.py | 60 +++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index c9465d05bf..8656e3eb74 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -239,7 +239,7 @@ def wcs(self): self._wcs = wcs.WCS(self.headwcs) return self._wcs - def extract_spec(self, parset, overwrite=False): + def extract_spec(self, parset, outname=None, overwrite=False): """ Extract a spectrum from the datacube @@ -247,15 +247,16 @@ def extract_spec(self, parset, overwrite=False): ---------- parset : dict A dictionary containing the 'Reduce' PypeItPar parameters. + outname : str, optional + Name of the output file overwrite : bool, optional Overwrite any existing files """ # Extract the spectrum + # TODO :: should we set the boxcar_width argument to None so the automated algorithm is used by default? At the moment, the user needs to set the boxcar_width to None in the parset to use the automated algorithm fwhm = parset['findobj']['find_fwhm'] if parset['extraction']['use_user_fwhm'] else None - # exptime = self.spectrograph.compound_meta([self.head0], 'exptime') - # if exptime != 1.0: - # msgs.error("The exposure time is not 1.0, which is required for the datacube extraction.") + # Datacube's are counts/second, so set the exposure time to 1 exptime = 1.0 # TODO :: Avoid transposing these large cubes sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, @@ -264,12 +265,9 @@ def extract_spec(self, parset, overwrite=False): optfwhm=fwhm, whitelight_range=parset['cube']['whitelight_range']) # Save the extracted spectrum - spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') + spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') if outname is None else outname sobjs.write_to_fits(self.head0, spec1d_filename, overwrite=overwrite) - # Return - return - class DARcorrection: """ @@ -1146,14 +1144,25 @@ def load(self): humidity = self.spec.get_meta_value([spec2DObj.head0], 'humidity') # Expressed as a percentage (not a fraction!) darcorr = DARcorrection(airmass, parangle, pressure, temperature, humidity, cosdec) - # Compute the extinction correction - msgs.info("Applying extinction correction") - # TODO :: Change the ['UVIS']['extinct_file'] here when the sensitivity function calculation is unified. - extinct = flux_calib.load_extinction_data(self.spec.telescope['longitude'], - self.spec.telescope['latitude'], - self.senspar['UVIS']['extinct_file']) - # extinction_correction requires the wavelength is sorted - extcorr_sort = flux_calib.extinction_correction(wave_sort * units.AA, airmass, extinct) + # TODO :: Need to make a note somewhere that the extinction correction cannot currently be done + # in the datacube because the sensitivity function algorithms correct the standard star + # for extinction when generating the sensitivity function. Including the extinction correction + # in the datacube would result in a double correction of the standard star for extinction. + # This could be wrong when combining multiple standard star exposures if the airmass of the + # standard star exposures is significantly different. For now, to stay consistent with the + # current pipeline, the extinction correction is done in the sensitivity function algorithms, + # with the caveat that the standard star exposures are assumed to have similar airmasses. + # For now, comment out the extinction correction, and reapply this later when the sensitivity + # function algorithms are unified. + if False: + # Compute the extinction correction + msgs.info("Applying extinction correction") + # TODO :: Change the ['UVIS']['extinct_file'] here when the sensitivity function calculation is unified. + extinct = flux_calib.load_extinction_data(self.spec.telescope['longitude'], + self.spec.telescope['latitude'], + self.senspar['UVIS']['extinct_file']) + # extinction_correction requires the wavelength is sorted + extcorr_sort = flux_calib.extinction_correction(wave_sort * units.AA, airmass, extinct) # Correct for sensitivity as a function of grating angle # (this assumes the spectrum of the flatfield lamp has the same shape for all setups) @@ -1169,22 +1178,23 @@ def load(self): # Sensitivity function - note that the sensitivity function factors in the exposure time and the # wavelength sampling, so if the flux calibration will not be applied, the sens_factor needs to be # scaled by the exposure time and the wavelength sampling - sens_factor = 1.0/(exptime * dwav_sort) # If no sensitivity function is provided - # TODO :: Need to think about exposure time some more... Does the pypeit_sensfunc algorithm expect counts/s as input, or counts? This could affect the throughput calculation, perhaps? - # :: More generally, should we be adding the counts when we make the datacube, or should we be averaging the counts/s with the appropriate weights? + sens_sort = 1.0/(exptime * dwav_sort) # If no sensitivity function is provided if self.fluxcal: msgs.info("Calculating the sensitivity function") # Load the sensitivity function sens = sensfunc.SensFunc.from_file(self.sensfile[ff], chk_version=self.par['rdx']['chk_version']) # Interpolate the sensitivity function onto the wavelength grid of the data - sens_factor = flux_calib.get_sensfunc_factor( - wave_sort, sens.wave[:, 0], sens.zeropoint[:, 0], exptime, delta_wave=cd_wv, - extinct_correct=False, extrap_sens=self.par['fluxcalib']['extrap_sens']) + # TODO :: Change the ['UVIS']['extinct_file'] here when the sensitivity function calculation is unified. + sens_sort = flux_calib.get_sensfunc_factor( + wave_sort, sens.wave[:, 0], sens.zeropoint[:, 0], exptime, delta_wave=dwav_sort, + extinct_correct=True, longitude=self.spec.telescope['longitude'], + latitude=self.spec.telescope['latitude'], extinctfilepar=self.senspar['UVIS']['extinct_file'], + airmass=airmass, extrap_sens=self.par['fluxcalib']['extrap_sens']) # Convert the flux units to counts/s, and correct for the relative sensitivity of different setups - extcorr_sort *= sens_factor / gratcorr_sort + sens_sort /= gratcorr_sort # Correct for extinction - sciImg[onslit_gpm] *= extcorr_sort[resrt] - ivar[onslit_gpm] /= extcorr_sort[resrt] ** 2 + sciImg[onslit_gpm] *= sens_sort[resrt] + ivar[onslit_gpm] /= sens_sort[resrt] ** 2 # Convert units to Counts/s/Ang/arcsec2 # Slicer sampling * spatial pixel sampling From c0b1a34bd04cdf2d40990e6b566c2090ae07e54f Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 14 Feb 2024 16:47:34 +0000 Subject: [PATCH 048/128] logging msg --- pypeit/core/flux_calib.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pypeit/core/flux_calib.py b/pypeit/core/flux_calib.py index e1f2a2164b..a28aa1912e 100644 --- a/pypeit/core/flux_calib.py +++ b/pypeit/core/flux_calib.py @@ -808,6 +808,7 @@ def get_sensfunc_factor(wave, wave_zp, zeropoint, exptime, tellmodel=None, delta # Did the user request a telluric correction? if tellmodel is not None: # This assumes there is a separate telluric key in this dict. + msgs.warn("Telluric corrections via this method are deprecated") msgs.info('Applying telluric correction') sensfunc_obs = sensfunc_obs * (tellmodel > 1e-10) / (tellmodel + (tellmodel < 1e-10)) @@ -1279,6 +1280,7 @@ def Nlam_to_Flam(wave, zeropoint, zp_min=5.0, zp_max=30.0): factor[gpm] = np.power(10.0, -0.4*(zeropoint[gpm] - ZP_UNIT_CONST))/np.square(wave[gpm]) return factor + def Flam_to_Nlam(wave, zeropoint, zp_min=5.0, zp_max=30.0): r""" The factor that when multiplied into F_lam converts to N_lam, From cc0d737013c2fec9f3eaee9f6da97f2ca88e0e36 Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 14 Feb 2024 16:58:47 +0000 Subject: [PATCH 049/128] TYPE=DC --- .../standards/blackbody/blackbody_info.txt | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pypeit/data/standards/blackbody/blackbody_info.txt b/pypeit/data/standards/blackbody/blackbody_info.txt index d0cc2e4237..060f9e49b3 100644 --- a/pypeit/data/standards/blackbody/blackbody_info.txt +++ b/pypeit/data/standards/blackbody/blackbody_info.txt @@ -7,20 +7,20 @@ # NOTE: The flux is generated at runtime, so there are no # "Files". The first column is just a placeholder. File Name RA_2000 DEC_2000 g_MAG TYPE T_K a_x10m23 -J0027m0017.fits J0027m0017 00:27:39.497 -00:17:41.93 18.90 DB 10662 0.435 -J0048p0017.fits J0048p0017 00:48:30.324 +00:17:52.80 18.14 DB 10639 0.876 -J0146m0051.fits J0146m0051 01:46:18.898 -00:51:50.51 18.17 DB 11770 0.672 -J0229m0041.fits J0229m0041 02:29:36.715 -00:41:13.63 19.07 DB 8901 0.640 -J0832p3709.fits J0832p3709 08:32:26.568 +37:09:55.48 18.98 DB 7952 1.137 -J0837p5427.fits J0837p5427 08:37:36.557 +54:27:58.64 18.73 DB 7533 1.703 -J1004p1215.fits J1004p1215 10:04:49.541 +12:15:59.65 19.18 DB 9773 0.440 -J1045p0157.fits J1045p0157 10:45:23.866 +01:57:21.96 19.09 DB 8956 0.666 -J1117p4059.fits J1117p4059 11:17:20.801 +40:59:54.67 18.08 DB 10992 0.844 -J1147p1713.fits J1147p1713 11:47:22.608 +17:13:25.21 18.65 DB 9962 0.669 -J1245p4238.fits J1245p4238 12:45:35.626 +42:38:24.58 17.14 DB 9912 2.817 -J1255p1924.fits J1255p1924 12:55:07.082 +19:24:59.00 18.53 DB 8882 1.157 -J1343p2706.fits J1343p2706 13:43:05.302 +27:06:23.98 18.93 DB 10678 0.427 -J1417p4941.fits J1417p4941 14:17:24.329 +49:41:27.85 17.25 DB 10461 2.192 -J1518p0028.fits J1518p0028 15:18:59.717 +00:28:39.58 19.44 DB 9072 0.458 -J1617p1813.fits J1617p1813 16:17:04.078 +18:13:11.96 18.78 DB 8568 0.996 -J2302m0030.fits J2302m0030 23:02:40.032 -00:30:21.60 17.80 DB 10478 1.241 +J0027m0017.fits J0027m0017 00:27:39.497 -00:17:41.93 18.90 DC 10662 0.435 +J0048p0017.fits J0048p0017 00:48:30.324 +00:17:52.80 18.14 DC 10639 0.876 +J0146m0051.fits J0146m0051 01:46:18.898 -00:51:50.51 18.17 DC 11770 0.672 +J0229m0041.fits J0229m0041 02:29:36.715 -00:41:13.63 19.07 DC 8901 0.640 +J0832p3709.fits J0832p3709 08:32:26.568 +37:09:55.48 18.98 DC 7952 1.137 +J0837p5427.fits J0837p5427 08:37:36.557 +54:27:58.64 18.73 DC 7533 1.703 +J1004p1215.fits J1004p1215 10:04:49.541 +12:15:59.65 19.18 DC 9773 0.440 +J1045p0157.fits J1045p0157 10:45:23.866 +01:57:21.96 19.09 DC 8956 0.666 +J1117p4059.fits J1117p4059 11:17:20.801 +40:59:54.67 18.08 DC 10992 0.844 +J1147p1713.fits J1147p1713 11:47:22.608 +17:13:25.21 18.65 DC 9962 0.669 +J1245p4238.fits J1245p4238 12:45:35.626 +42:38:24.58 17.14 DC 9912 2.817 +J1255p1924.fits J1255p1924 12:55:07.082 +19:24:59.00 18.53 DC 8882 1.157 +J1343p2706.fits J1343p2706 13:43:05.302 +27:06:23.98 18.93 DC 10678 0.427 +J1417p4941.fits J1417p4941 14:17:24.329 +49:41:27.85 17.25 DC 10461 2.192 +J1518p0028.fits J1518p0028 15:18:59.717 +00:28:39.58 19.44 DC 9072 0.458 +J1617p1813.fits J1617p1813 16:17:04.078 +18:13:11.96 18.78 DC 8568 0.996 +J2302m0030.fits J2302m0030 23:02:40.032 -00:30:21.60 17.80 DC 10478 1.241 From 988692f4ec78256f1846efffc3b590862a9cbd01 Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 14 Feb 2024 19:04:37 +0000 Subject: [PATCH 050/128] even object profile --- pypeit/core/datacube.py | 8 +++++++- pypeit/scripts/extract_datacube.py | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index f76cba50b4..98e536e880 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -365,7 +365,13 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, # Normalise the white light image optkern_masked /= np.sum(optkern_masked) asrt = np.argsort(optkern_masked, axis=None) - tmp = asrt.reshape((asrt.size//2,2)) + # Need to ensure that the number of pixels in the object profile is even + if asrt.size % 2 != 0: + # Remove the pixel with the lowest kernel weight. + # It should be a zero value (given the mask), so it doesn't matter if we remove it + asrt = asrt[1:] + # Now sort the indices of the pixels in the object profile + tmp = asrt.reshape((asrt.size//2, 2)) objprof_idx = np.append(tmp[:,0], tmp[::-1,1]) objprof = optkern_masked[np.unravel_index(objprof_idx, optkern.shape)] diff --git a/pypeit/scripts/extract_datacube.py b/pypeit/scripts/extract_datacube.py index f36fbdefee..1d1d00e45c 100644 --- a/pypeit/scripts/extract_datacube.py +++ b/pypeit/scripts/extract_datacube.py @@ -21,6 +21,8 @@ def get_parser(cls, width=None): parser.add_argument('file', type = str, default=None, help='spec3d.fits DataCube file') parser.add_argument("-e", "--ext_file", type=str, help='Configuration file with extraction parameters') + parser.add_argument("-s", "--save", type=str, + help='Output spec1d filename') parser.add_argument('-o', '--overwrite', default=False, action='store_true', help='Overwrite any existing files/directories') parser.add_argument('-v', '--verbosity', type=int, default=1, @@ -59,11 +61,14 @@ def main(args): parset = par.PypeItPar.from_cfg_lines(cfg_lines=spectrograph_def_par.to_config(), merge_with=(ext3dfile.cfg_lines,)) + # Set the output name + outname = None if args.save is None else args.save + # Load the DataCube tstart = time.time() # Extract the spectrum - extcube.extract_spec(parset['reduce'], overwrite=args.overwrite) + extcube.extract_spec(parset['reduce'], outname=outname, overwrite=args.overwrite) # Report the extraction time msgs.info(utils.get_time_string(time.time()-tstart)) From 6edf8976971329e7b43c46ada5da26e792cf09a6 Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 14 Feb 2024 21:17:59 +0000 Subject: [PATCH 051/128] update datacube docs --- doc/coadd3d.rst | 132 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 106 insertions(+), 26 deletions(-) diff --git a/doc/coadd3d.rst b/doc/coadd3d.rst index 6f0de64cc9..247a4f0df6 100644 --- a/doc/coadd3d.rst +++ b/doc/coadd3d.rst @@ -57,6 +57,7 @@ saved as ``BB1245p4238.coadd3d``: [reduce] [[cube]] combine = True + align = True output_filename = BB1245p4238_datacube.fits save_whitelight = True @@ -74,18 +75,39 @@ If you want to combine all exposures into a single datacube, you need to set ``c as in the above example, and provide an ``output_filename``. This is very useful if you want to combine several standard star exposures into a single datacube for flux calibration, for example. -The spec2d block provides a list of :doc:`out_spec2D` files. You can also specify an optional scale correction -as part of the spec2d block. This relative scale correction ensures that the relative spectral sensitivity of the -datacube is constant across the field of view. The spec2d file used for the ``scale_corr`` column should either be a -twilight or dome flat reduced as a ``science`` frame (see :doc:`spectrographs/keck_kcwi` for a description of what you need to do). -In order to use this functionality, you should not reduce your science data with a spectral illumination correction. -In other words, in your :doc:`pypeit_file` file, set the following when you execute :ref:`run-pypeit`: - -.. code-block:: ini - - [scienceframe] - [[process]] - use_specillum = False +The spec2d block provides a list of :doc:`out_spec2D` files. You can also specify several optional +corrections as part of the spec2d block, including: + +* ``scale_corr``: A relative scale correction file that is used to correct the relative + spectral sensitivity of the datacube. This relative scale correction ensures that the + relative spectral sensitivity of the datacube is constant across the field of view. + The spec2d file used for the ``scale_corr`` column should either be a twilight or dome flat + reduced as a ``science`` frame (see :doc:`spectrographs/keck_kcwi` for a description of what + you need to do). In order to use this functionality, you should not reduce your science data + with a spectral illumination correction. In other words, in your :doc:`pypeit_file` file, set + the following when you execute :ref:`run-pypeit`: + + .. code-block:: ini + + [scienceframe] + [[process]] + use_specillum = False + +* ``grating_corr``: A grating correction file that is used to correct the grating relative sensitivity + of individual spec2d files. It is unlikely that you will require this correction. This is only required + if you are combining spec2d files that have very slightly different wavelength solutions *and* you only + have a sensitivity function for one of these setups. Otherwise, if you have a sensitivity function for + each setup, you should use the ``sensfile`` option to specify the sensitivity function for each wavelength + setup. For further details, see :ref:`coadd3d_gratcorr`. +* ``skysub_frame``: A sky subtraction frame that is used to remove the sky background of the datacube. + For further details, see :ref:`coadd3d_skysub`. +* ``ra_offset``: A right ascension offset that is used to correct the pointing of the datacube. + For further details, see :ref:`coadd3d_offsets`. +* ``dec_offset``: A declination offset that is used to correct the pointing of the datacube. + For further details, see :ref:`coadd3d_offsets`. +* ``sensfile``: A sensitivity function file that is used to correct the absolute sensitivity of the datacube. + The required input file is the sensitivity function, which is generated with the ``pypeit_sensfunc`` script. + For further details, see :ref:`coadd3d_fluxing`. run --- @@ -96,10 +118,50 @@ Then run the script: pypeit_coadd_datacube BB1245p4238.coadd3d -o +There are several recommended steps of the coadd3d process that can be run separately. These are: + +#. Step 1 - Create a datacube of your standard star exposures. It is worthwhile noting that the + standard star exposures should be reduced with the same setup as the science exposures. The + datacube is then used to flux calibrate the science exposures. + The datacube is created by running the following command: + + .. code-block:: console + + pypeit_coadd_datacube StandardStarName.coadd3d -o + +#. Step 2 - Extract the 1D spectra from the datacube. This is done by running the following command, + assuming that the output datacube from the previous step was called ``StandardStarName.fits``. + The ``pypeit_extract_datacube`` script will produce an output file called + ``StandardStarName_spec1d.fits``: + + .. code-block:: console + + pypeit_extract_datacube StandardStarName.fits -o + +#. Step 3 - Generate a sensitivity function from the 1D spectra. This is done by running the following + command, assuming that the output 1D spectra from the previous step was called + ``StandardStarName_spec1d.fits``. The ``pypeit_sensfunc`` script will produce an output file called + ``StandardStarName_sens.fits``: + + .. code-block:: console + + pypeit_sensfunc StandardStarName_spec1d.fits -o StandardStarName_sens.fits + + For further details, see :doc:`_sensitivity_function`. + +#. Step 4 - Generate a datacube of the science exposures. This is done by running the following command: + + .. code-block:: console + + pypeit_coadd_datacube ScienceName.coadd3d -o + + Note that you will need to specify the sensitivity function file using the ``sensfile`` option in the + :doc:`coadd3d_file` file. For further details, see :ref:`coadd3d_fluxing`. + Combination options =================== -PypeIt currently supports two different methods to convert an spec2d frame into a datacube; +PypeIt currently supports two different methods to convert a spec2d frame into a datacube; these options are called ``subpixel`` (default) and ``NGP`` (which is short for, nearest grid point), and can be set using the following keyword arguments: @@ -114,20 +176,22 @@ into many subpixels, and assigns each subpixel to a voxel of the datacube. Flux but voxels are correlated, and the error spectrum does not account for covariance between adjacent voxels. The subpixellation scale can be separately set in the spatial and spectral direction on the 2D detector. If you would like to change the subpixellation factors from -the default values (5), you can set the ``spec_subpixel`` and ``spat_subpixel`` keywords -as follows: +the default values (5), you can optionally set (one or all of) the ``spec_subpixel``, +``spat_subpixel``, and ``slice_subpixel`` parameters as follows: .. code-block:: ini [reduce] [[cube]] method = subpixel - spec_subpixel = 8 - spat_subpixel = 10 + spec_subpixel = 3 + spat_subpixel = 7 + slice_subpixel = 10 The total number of subpixels generated for each detector pixel on the spec2d frame is -spec_subpixel x spat_subpixel. The default values (5) divide each spec2d pixel into 25 subpixels -during datacube creation. As an alternative, you can convert the spec2d frames into a datacube +spec_subpixel x spat_subpixel x slice_subpixel. The default values (5) divide each spec2d pixel +into 125 subpixels during datacube creation. +As an alternative, you can convert the spec2d frames into a datacube with the ``NGP`` method. This algorithm is effectively a 3D histogram. This approach is faster than ``subpixel``, flux is conserved, and voxels are not correlated. However, this option suffers the same downsides as any histogram; the choice of bin sizes can change how the datacube appears. @@ -135,6 +199,8 @@ This algorithm takes each pixel on the spec2d frame and puts the flux of this pi in the datacube. Depending on the binning used, some voxels may be empty (zero flux) while a neighbouring voxel might contain the flux from two spec2d pixels. +.. _coadd3d_fluxing: + Flux calibration ================ @@ -153,6 +219,8 @@ the name of the sensitivity function in your ``coadd3d`` file as follows: sensfunc = my_sensfunc.fits +.. _coadd3d_skysub: + Sky Subtraction =============== @@ -175,19 +243,20 @@ then you can specify the ``skysub_frame`` in the ``spec2d`` block of the above. If you have dedicated sky frames, then it is generally recommended to reduce these frames as if they are regular science frames, but add the following keyword arguments at the top of your -:doc:`pypeit_file`: +:doc:`coadd3d_file`: .. code-block:: ini [reduce] [[skysub]] - joint_fit = True - user_regions = : + user_regions = 5:95 [flexure] spec_method = slitcen -This ensures that all pixels in the slit are used to generate a -complete model of the sky. +This ensures that the innermost 90 percent of pixels in each slit are +used to generate a model of the sky. + +.. _coadd3d_gratcorr: Grating correction ================== @@ -215,7 +284,11 @@ science frame, in the ``spec2d`` block of the ``.coadd3d`` file: spec2d end If all spec2d files were reduced with the same Flat calibration file, -then you do not need to specify the grating correction file. +then you do not need to specify the grating correction file. Also, if you +generate a sensitivity function for each spec2d file, then you do not need +to specify the grating correction file. The grating correction file is only +needed if you have one sensitivity function for all spec2d files, even though +the spec2d files were acquired with different grating angles. Astrometric correction ====================== @@ -234,12 +307,16 @@ file: [[cube]] astrometric = False +If a :doc:`calibrations/align` frame is not available, then the astrometric +correction will be based on the slit edges. White light image ================= A white light image can be generated for the combined frame, or -for each individual frame if ``combine=False``, by setting the following +for each individual frame if ``combine=False``, by setting the +``save_whitelight`` keyword argument. You can set the wavelength +range of the white light image by setting the ``whitelight_range`` keyword argument: .. code-block:: ini @@ -247,10 +324,13 @@ keyword argument: [reduce] [[cube]] save_whitelight = True + whitelight_range = 5000,6000 White light images are not produced by default. The output filename for the white light images are given the suffix ``_whitelight.fits``. +.. _coadd3d_offsets: + Spatial alignment with different setups ======================================= From a2de445861e6d20c674802a03f8cb5565972e1a3 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 15 Feb 2024 09:20:34 +0000 Subject: [PATCH 052/128] fix tests --- pypeit/spectrographs/gemini_gnirs.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pypeit/spectrographs/gemini_gnirs.py b/pypeit/spectrographs/gemini_gnirs.py index 148464d7d1..dd56f426c3 100644 --- a/pypeit/spectrographs/gemini_gnirs.py +++ b/pypeit/spectrographs/gemini_gnirs.py @@ -624,7 +624,6 @@ def default_pypeit_par(cls): # Make sure that this is reduced as a slit (as opposed to fiber) spectrograph par['reduce']['cube']['slit_spec'] = True - par['reduce']['cube']['grating_corr'] = False par['reduce']['cube']['combine'] = False # Make separate spec3d files from the input spec2d files # Sky subtraction parameters From f90c6fac6fdbb62b393b557b517f1ef970c7cf22 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 15 Feb 2024 14:10:51 +0000 Subject: [PATCH 053/128] add docs --- pypeit/coadd3d.py | 3 ++- pypeit/scripts/sensfunc.py | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 8656e3eb74..97179824eb 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -1154,6 +1154,7 @@ def load(self): # with the caveat that the standard star exposures are assumed to have similar airmasses. # For now, comment out the extinction correction, and reapply this later when the sensitivity # function algorithms are unified. + extcorr_sort = 1.0 if False: # Compute the extinction correction msgs.info("Applying extinction correction") @@ -1191,7 +1192,7 @@ def load(self): latitude=self.spec.telescope['latitude'], extinctfilepar=self.senspar['UVIS']['extinct_file'], airmass=airmass, extrap_sens=self.par['fluxcalib']['extrap_sens']) # Convert the flux units to counts/s, and correct for the relative sensitivity of different setups - sens_sort /= gratcorr_sort + sens_sort *= extcorr_sort/gratcorr_sort # Correct for extinction sciImg[onslit_gpm] *= sens_sort[resrt] ivar[onslit_gpm] /= sens_sort[resrt] ** 2 diff --git a/pypeit/scripts/sensfunc.py b/pypeit/scripts/sensfunc.py index bc4406711c..524983c4dc 100644 --- a/pypeit/scripts/sensfunc.py +++ b/pypeit/scripts/sensfunc.py @@ -58,8 +58,9 @@ def get_parser(cls, width=None): parser.add_argument("-s", "--sens_file", type=str, help='Configuration file with sensitivity function parameters') parser.add_argument("-f", "--flatfile", type=str, - help="R|Use the flat file for computing the sensitivity " - "function. Note that it is not possible to set --flatfile and " + help="R|Use a flat calibration file to compute the blaze function when generating " + "the sensitivity function. This is helpful to account for small scale undulations " + "in the sensitivity function. Note that it is not possible to set --flatfile and " "simultaneously use a .sens file with the --sens_file option. If " "you are using a .sens file, set the flatfile there via e.g.:\n\n" "F| [sensfunc]\n" From b23aba2a7e0e8f2c328149e0096e40d991d40aae Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 15 Feb 2024 14:47:17 +0000 Subject: [PATCH 054/128] begin tweak_method --- pypeit/core/flat.py | 77 ++++++++++++++++++++++++++++++++++++++++- pypeit/flatfield.py | 68 +++++++++++++++++++++++++++++++++++- pypeit/par/pypeitpar.py | 17 +++++++++ 3 files changed, 160 insertions(+), 2 deletions(-) diff --git a/pypeit/core/flat.py b/pypeit/core/flat.py index 1c104d1d96..2113f04282 100644 --- a/pypeit/core/flat.py +++ b/pypeit/core/flat.py @@ -505,10 +505,85 @@ def poly_map(rawimg, rawivar, waveimg, slitmask, slitmask_trim, modelimg, deg=3, return modelmap, relscale +def tweak_slit_edges(left, right, spat_coo, norm_flat, method='threshold', thresh=0.93, maxfrac=0.1, debug=False): + """ + Tweak the slit edges based on the normalized slit illumination profile. + + Args: + left (`numpy.ndarray`_): + Array with the left slit edge for a single slit. Shape is + :math:`(N_{\rm spec},)`. + right (`numpy.ndarray`_): + Array with the right slit edge for a single slit. Shape + is :math:`(N_{\rm spec},)`. + spat_coo (`numpy.ndarray`_): + Spatial pixel coordinates in fractions of the slit width + at each spectral row for the provided normalized flat + data. Coordinates are relative to the left edge (with the + left edge at 0.). Shape is :math:`(N_{\rm flat},)`. + Function assumes the coordinate array is sorted. + norm_flat (`numpy.ndarray`_) + Normalized flat data that provide the slit illumination + profile. Shape is :math:`(N_{\rm flat},)`. + method (:obj:`str`, optional): + Method to use for tweaking the slit edges. Options are: + - 'threshold': Use the threshold to set the slit edge + and then shift it to the left or right based on the + illumination profile. + - 'gradient': Use the gradient of the illumination + profile to set the slit edge and then shift it to + the left or right based on the illumination profile. + thresh (:obj:`float`, optional): + Threshold of the normalized flat profile at which to + place the two slit edges. + maxfrac (:obj:`float`, optional): + The maximum fraction of the slit width that the slit edge + can be adjusted by this algorithm. If ``maxfrac = 0.1``, + this means the maximum change in the slit width (either + narrowing or broadening) is 20% (i.e., 10% for either + edge). + debug (:obj:`bool`, optional): + Show flow interrupting plots that show illumination + profile in the case of a failure and the placement of the + tweaked edge for each side of the slit regardless. + + Returns: + tuple: Returns six objects: + + - The threshold used to set the left edge + - The fraction of the slit that the left edge is shifted to + the right + - The adjusted left edge + - The threshold used to set the right edge + - The fraction of the slit that the right edge is shifted to + the left + - The adjusted right edge + """ + # TODO :: Since this is just a wrapper, and not really "core", maybe it should be moved to pypeit.flatfield? + # Tweak the edges via the specified method + if method == "threshold": + return tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=thresh, maxfrac=maxfrac, debug=debug) + elif method == "gradient": + return tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, maxfrac=maxfrac, debug=debug) + else: + msgs.error("Method for tweaking slit edges not recognized: {0}".format(method)) + + +def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, maxfrac=0.1, debug=False): + """ + + """ + # Check input + nspec = len(left) + if len(right) != nspec: + msgs.error('Input left and right traces must have the same length!') + embed() + + # TODO: See pypeit/deprecated/flat.py for the previous version. We need # to continue to vet this algorithm to make sure there are no # unforeseen corner cases that cause errors. -def tweak_slit_edges(left, right, spat_coo, norm_flat, thresh=0.93, maxfrac=0.1, debug=False): +def tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=0.93, maxfrac=0.1, debug=False): r""" Adjust slit edges based on the normalized slit illumination profile. diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index e73f8462ae..003b9a50c1 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -803,6 +803,7 @@ def fit(self, spat_illum_only=False, doqa=True, debug=False): # Set parameters (for convenience; spec_samp_fine = self.flatpar['spec_samp_fine'] spec_samp_coarse = self.flatpar['spec_samp_coarse'] + tweak_method = self.flatpar['tweak_method'] tweak_slits = self.flatpar['tweak_slits'] tweak_slits_thresh = self.flatpar['tweak_slits_thresh'] tweak_slits_maxfrac = self.flatpar['tweak_slits_maxfrac'] @@ -1089,7 +1090,7 @@ def fit(self, spat_illum_only=False, doqa=True, debug=False): # TODO: Will this break if left_thresh, left_shift, self.slits.left_tweak[:,slit_idx], right_thresh, \ right_shift, self.slits.right_tweak[:,slit_idx] \ - = flat.tweak_slit_edges(self.slits.left_init[:,slit_idx], + = self.tweak_slit_edges(self.slits.left_init[:,slit_idx], self.slits.right_init[:,slit_idx], spat_coo_data, spat_flat_data, thresh=tweak_slits_thresh, @@ -1576,6 +1577,71 @@ def spectral_illumination(self, gpm=None, debug=False): flexure=self.wavetilts.spat_flexure, smooth_npix=self.flatpar['slit_illum_smooth_npix']) + def tweak_slit_edges(self, left, right, spat_coo, norm_flat, method='threshold', thresh=0.93, maxfrac=0.1, debug=False): + """ + Tweak the slit edges based on the normalized slit illumination profile. + + Args: + left (`numpy.ndarray`_): + Array with the left slit edge for a single slit. Shape is + :math:`(N_{\rm spec},)`. + right (`numpy.ndarray`_): + Array with the right slit edge for a single slit. Shape + is :math:`(N_{\rm spec},)`. + spat_coo (`numpy.ndarray`_): + Spatial pixel coordinates in fractions of the slit width + at each spectral row for the provided normalized flat + data. Coordinates are relative to the left edge (with the + left edge at 0.). Shape is :math:`(N_{\rm flat},)`. + Function assumes the coordinate array is sorted. + norm_flat (`numpy.ndarray`_) + Normalized flat data that provide the slit illumination + profile. Shape is :math:`(N_{\rm flat},)`. + method (:obj:`str`, optional): + Method to use for tweaking the slit edges. Options are: + - 'threshold': Use the threshold to set the slit edge + and then shift it to the left or right based on the + illumination profile. + - 'gradient': Use the gradient of the illumination + profile to set the slit edge and then shift it to + the left or right based on the illumination profile. + thresh (:obj:`float`, optional): + Threshold of the normalized flat profile at which to + place the two slit edges. + maxfrac (:obj:`float`, optional): + The maximum fraction of the slit width that the slit edge + can be adjusted by this algorithm. If ``maxfrac = 0.1``, + this means the maximum change in the slit width (either + narrowing or broadening) is 20% (i.e., 10% for either + edge). + debug (:obj:`bool`, optional): + Show flow interrupting plots that show illumination + profile in the case of a failure and the placement of the + tweaked edge for each side of the slit regardless. + + Returns: + tuple: Returns six objects: + + - The threshold used to set the left edge + - The fraction of the slit that the left edge is shifted to + the right + - The adjusted left edge + - The threshold used to set the right edge + - The fraction of the slit that the right edge is shifted to + the left + - The adjusted right edge + """ + # TODO :: Since this is just a wrapper, and not really "core", maybe it should be moved to pypeit.flatfield? + # Tweak the edges via the specified method + if method == "threshold": + return flat.tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, + thresh=thresh, maxfrac=maxfrac, debug=debug) + elif method == "gradient": + return flat.tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, + maxfrac=maxfrac, debug=debug) + else: + msgs.error("Method for tweaking slit edges not recognized: {0}".format(method)) + def spatillum_finecorr_qa(normed, finecorr, left, right, ypos, cut, outfile=None, title=None, half_slen=50): """ diff --git a/pypeit/par/pypeitpar.py b/pypeit/par/pypeitpar.py index 1bb09e62a4..a1854fc73c 100644 --- a/pypeit/par/pypeitpar.py +++ b/pypeit/par/pypeitpar.py @@ -649,6 +649,16 @@ def __init__(self, method=None, pixelflat_file=None, spec_samp_fine=None, descr['tweak_slits'] = 'Use the illumination flat field to tweak the slit edges. ' \ 'This will work even if illumflatten is set to False ' + defaults['tweak_method'] = 'threshold' + options['tweak_method'] = FlatFieldPar.valid_tweak_methods() + dtypes['tweak_method'] = str + descr['tweak_method'] = 'Method used to tweak the slit edges (when "tweak_slits" is set to True). ' \ + 'Options include: {0:s}. '.format(', '.join(options['tweak_method'])) + \ + 'The "threshold" method determines when the left and right slit edges ' \ + 'fall below a threshold relative to the peak illumination. ' \ + 'The "gradient" method determines where the gradient is the highest at ' \ + 'the left and right slit edges.' \ + defaults['tweak_slits_thresh'] = 0.93 dtypes['tweak_slits_thresh'] = float descr['tweak_slits_thresh'] = 'If tweak_slits is True, this sets the illumination function threshold used to ' \ @@ -787,6 +797,13 @@ def valid_methods(): """ return ['bspline', 'skip'] # [ 'PolyScan', 'bspline' ]. Same here. Not sure what PolyScan is + @staticmethod + def valid_tweak_methods(): + """ + Return the valid options for tweaking slits. + """ + return ['threshold', 'gradient'] + @staticmethod def valid_saturated_slits_methods(): """ From b5648378f84051b5f19c4e92a1a220c0ea999e2c Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 15 Feb 2024 21:14:12 +0000 Subject: [PATCH 055/128] tweaked by gradient --- pypeit/core/flat.py | 113 +++++++++--------------------- pypeit/flatfield.py | 4 +- pypeit/par/pypeitpar.py | 7 +- pypeit/spectrographs/keck_kcwi.py | 85 +++++++++------------- pypeit/utils.py | 32 +++++++++ 5 files changed, 104 insertions(+), 137 deletions(-) diff --git a/pypeit/core/flat.py b/pypeit/core/flat.py index 2113f04282..80d1be08cd 100644 --- a/pypeit/core/flat.py +++ b/pypeit/core/flat.py @@ -12,48 +12,13 @@ import scipy.interpolate import scipy.ndimage import matplotlib.pyplot as plt +from astropy import convolution from IPython import embed from pypeit import msgs -from pypeit.core import parse -from pypeit.core import pixels -from pypeit.core import tracewave from pypeit.core import coadd from pypeit import utils -from pypeit.core import pydl - -# TODO: Put this in utils -def linear_interpolate(x1, y1, x2, y2, x): - r""" - Interplate or extrapolate between two points. - - Given a line defined two points, :math:`(x_1,y_1)` and - :math:`(x_2,y_2)`, return the :math:`y` value of a new point on - the line at coordinate :math:`x`. - - This function is meant for speed. No type checking is performed and - the only check is that the two provided ordinate coordinates are not - numerically identical. By definition, the function will extrapolate - without any warning. - - Args: - x1 (:obj:`float`): - First abscissa position - y1 (:obj:`float`): - First ordinate position - x2 (:obj:`float`): - Second abscissa position - y3 (:obj:`float`): - Second ordinate position - x (:obj:`float`): - Abcissa for new value - - Returns: - :obj:`float`: Interpolated/extrapolated value of ordinate at - :math:`x`. - """ - return y1 if np.isclose(x1,x2) else y1 + (x-x1)*(y2-y1)/(x2-x1) # TODO: Make this function more general and put it in utils. @@ -505,9 +470,9 @@ def poly_map(rawimg, rawivar, waveimg, slitmask, slitmask_trim, modelimg, deg=3, return modelmap, relscale -def tweak_slit_edges(left, right, spat_coo, norm_flat, method='threshold', thresh=0.93, maxfrac=0.1, debug=False): - """ - Tweak the slit edges based on the normalized slit illumination profile. +def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat): + r""" Adjust slit edges based on the gradient of the normalized + flat-field illumination profile. Args: left (`numpy.ndarray`_): @@ -525,27 +490,6 @@ def tweak_slit_edges(left, right, spat_coo, norm_flat, method='threshold', thres norm_flat (`numpy.ndarray`_) Normalized flat data that provide the slit illumination profile. Shape is :math:`(N_{\rm flat},)`. - method (:obj:`str`, optional): - Method to use for tweaking the slit edges. Options are: - - 'threshold': Use the threshold to set the slit edge - and then shift it to the left or right based on the - illumination profile. - - 'gradient': Use the gradient of the illumination - profile to set the slit edge and then shift it to - the left or right based on the illumination profile. - thresh (:obj:`float`, optional): - Threshold of the normalized flat profile at which to - place the two slit edges. - maxfrac (:obj:`float`, optional): - The maximum fraction of the slit width that the slit edge - can be adjusted by this algorithm. If ``maxfrac = 0.1``, - this means the maximum change in the slit width (either - narrowing or broadening) is 20% (i.e., 10% for either - edge). - debug (:obj:`bool`, optional): - Show flow interrupting plots that show illumination - profile in the case of a failure and the placement of the - tweaked edge for each side of the slit regardless. Returns: tuple: Returns six objects: @@ -558,26 +502,35 @@ def tweak_slit_edges(left, right, spat_coo, norm_flat, method='threshold', thres - The fraction of the slit that the right edge is shifted to the left - The adjusted right edge - """ - # TODO :: Since this is just a wrapper, and not really "core", maybe it should be moved to pypeit.flatfield? - # Tweak the edges via the specified method - if method == "threshold": - return tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=thresh, maxfrac=maxfrac, debug=debug) - elif method == "gradient": - return tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, maxfrac=maxfrac, debug=debug) - else: - msgs.error("Method for tweaking slit edges not recognized: {0}".format(method)) - - -def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, maxfrac=0.1, debug=False): - """ - """ # Check input nspec = len(left) if len(right) != nspec: msgs.error('Input left and right traces must have the same length!') - embed() + + # Median slit width + slitwidth = np.median(right - left) + + # Calculate the gradient of the normalized flat profile + grad_norm_flat = np.gradient(norm_flat) + # Smooth with a Gaussian kernel + sig_res = norm_flat.size / slitwidth + gauss_kernel = convolution.Gaussian1DKernel(sig_res) + grad_norm_flat_smooth = convolution.convolve(grad_norm_flat, gauss_kernel, boundary='extend') + + # Find the location of the minimum/maximum gradient - this is the amount of shift required + left_shift = spat_coo[np.argmax(grad_norm_flat_smooth)] + right_shift = spat_coo[np.argmin(grad_norm_flat_smooth)]-1.0 + + # Calculate the tweak for the left edge + new_left = np.copy(left) + left_shift * slitwidth + new_right = np.copy(right) + right_shift * slitwidth + + # Calculate the value of the threshold at the new slit edges + left_thresh = np.interp(left_shift, spat_coo, norm_flat) + right_thresh = np.interp(1+right_shift, spat_coo, norm_flat) + + return left_thresh, left_shift, new_left, right_thresh, right_shift, new_right # TODO: See pypeit/deprecated/flat.py for the previous version. We need @@ -689,8 +642,8 @@ def tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=0.93, ma 100*maxfrac)) left_shift = maxfrac else: - left_shift = linear_interpolate(norm_flat[i], spat_coo[i], norm_flat[i+1], - spat_coo[i+1], left_thresh) + left_shift = utils.linear_interpolate(norm_flat[i], spat_coo[i], norm_flat[i+1], + spat_coo[i+1], left_thresh) msgs.info('Tweaking left slit boundary by {0:.1f}%'.format(100*left_shift) + ' % ({0:.2f} pixels)'.format(left_shift*slitwidth)) new_left += left_shift * slitwidth @@ -743,15 +696,15 @@ def tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=0.93, ma 100*maxfrac)) right_shift = maxfrac else: - right_shift = 1-linear_interpolate(norm_flat[i-1], spat_coo[i-1], norm_flat[i], - spat_coo[i], right_thresh) + right_shift = 1-utils.linear_interpolate(norm_flat[i-1], spat_coo[i-1], norm_flat[i], + spat_coo[i], right_thresh) msgs.info('Tweaking right slit boundary by {0:.1f}%'.format(100*right_shift) + ' % ({0:.2f} pixels)'.format(right_shift*slitwidth)) new_right -= right_shift * slitwidth return left_thresh, left_shift, new_left, right_thresh, right_shift, new_right -#def flatfield(sciframe, flatframe, bpm=None, illum_flat=None, snframe=None, varframe=None): + def flatfield(sciframe, flatframe, varframe=None): r""" Field flatten the input image. diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index 003b9a50c1..1196fdae31 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -1093,6 +1093,7 @@ def fit(self, spat_illum_only=False, doqa=True, debug=False): = self.tweak_slit_edges(self.slits.left_init[:,slit_idx], self.slits.right_init[:,slit_idx], spat_coo_data, spat_flat_data, + method=tweak_method, thresh=tweak_slits_thresh, maxfrac=tweak_slits_maxfrac, debug=debug) # TODO: Because the padding doesn't consider adjacent @@ -1637,8 +1638,7 @@ def tweak_slit_edges(self, left, right, spat_coo, norm_flat, method='threshold', return flat.tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=thresh, maxfrac=maxfrac, debug=debug) elif method == "gradient": - return flat.tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, - maxfrac=maxfrac, debug=debug) + return flat.tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, debug=debug) else: msgs.error("Method for tweaking slit edges not recognized: {0}".format(method)) diff --git a/pypeit/par/pypeitpar.py b/pypeit/par/pypeitpar.py index a1854fc73c..b46b9e81b4 100644 --- a/pypeit/par/pypeitpar.py +++ b/pypeit/par/pypeitpar.py @@ -583,7 +583,7 @@ class FlatFieldPar(ParSet): see :ref:`parameters`. """ def __init__(self, method=None, pixelflat_file=None, spec_samp_fine=None, - spec_samp_coarse=None, spat_samp=None, tweak_slits=None, tweak_slits_thresh=None, + spec_samp_coarse=None, spat_samp=None, tweak_slits=None, tweak_method=None, tweak_slits_thresh=None, tweak_slits_maxfrac=None, rej_sticky=None, slit_trim=None, slit_illum_pad=None, illum_iter=None, illum_rej=None, twod_fit_npoly=None, saturated_slits=None, slit_illum_relative=None, slit_illum_ref_idx=None, slit_illum_smooth_npix=None, @@ -657,7 +657,8 @@ def __init__(self, method=None, pixelflat_file=None, spec_samp_fine=None, 'The "threshold" method determines when the left and right slit edges ' \ 'fall below a threshold relative to the peak illumination. ' \ 'The "gradient" method determines where the gradient is the highest at ' \ - 'the left and right slit edges.' \ + 'the left and right slit edges. This method performs better when there is ' \ + 'systematic vignetting in the spatial direction. ' \ defaults['tweak_slits_thresh'] = 0.93 dtypes['tweak_slits_thresh'] = float @@ -776,7 +777,7 @@ def from_dict(cls, cfg): k = np.array([*cfg.keys()]) parkeys = ['method', 'pixelflat_file', 'spec_samp_fine', 'spec_samp_coarse', 'spat_samp', 'pixelflat_min_wave', 'pixelflat_max_wave', - 'tweak_slits', 'tweak_slits_thresh', 'tweak_slits_maxfrac', + 'tweak_slits', 'tweak_method', 'tweak_slits_thresh', 'tweak_slits_maxfrac', 'rej_sticky', 'slit_trim', 'slit_illum_pad', 'slit_illum_relative', 'illum_iter', 'illum_rej', 'twod_fit_npoly', 'saturated_slits', 'slit_illum_ref_idx', 'slit_illum_smooth_npix', 'slit_illum_finecorr', 'fit_2d_det_response'] diff --git a/pypeit/spectrographs/keck_kcwi.py b/pypeit/spectrographs/keck_kcwi.py index 74f2a7cff9..4859ce29ae 100644 --- a/pypeit/spectrographs/keck_kcwi.py +++ b/pypeit/spectrographs/keck_kcwi.py @@ -283,6 +283,34 @@ def default_pypeit_par(cls): # Set the number of alignments in the align frames par['calibrations']['alignment']['locations'] = [0.1, 0.3, 0.5, 0.7, 0.9] # TODO:: Check this - is this accurate enough? + # Correct the illumflat for pixel-to-pixel sensitivity variations + par['calibrations']['illumflatframe']['process']['use_pixelflat'] = True + + # Make sure the overscan is subtracted from the dark + par['calibrations']['darkframe']['process']['use_overscan'] = True + + # Set the slit edge parameters + par['calibrations']['slitedges']['fit_order'] = 4 + par['calibrations']['slitedges']['pad'] = 2 # Need to pad out the tilts for the astrometric transform when creating a datacube. + par['calibrations']['slitedges']['edge_thresh'] = 5 # 5 works well with a range of setups tested by RJC (mostly 1x1 binning) + + # KCWI has non-uniform spectral resolution across the field-of-view + par['calibrations']['wavelengths']['fwhm_spec_order'] = 1 + par['calibrations']['wavelengths']['fwhm_spat_order'] = 2 + + # Alter the method used to combine pixel flats + par['calibrations']['pixelflatframe']['process']['combine'] = 'median' + par['calibrations']['flatfield']['spec_samp_coarse'] = 20.0 + par['calibrations']['flatfield']['tweak_slits'] = True # Tweak the slit edges + par['calibrations']['flatfield']['tweak_method'] = 'gradient' # The gradient method is better for SlicerIFU. + par['calibrations']['flatfield']['tweak_slits_thresh'] = 0.0 # Make sure the full slit is used (i.e. when the illumination fraction is > 0.5) + par['calibrations']['flatfield']['tweak_slits_maxfrac'] = 0.0 # Make sure the full slit is used (i.e. no padding) + par['calibrations']['flatfield']['slit_trim'] = 3 # Trim the slit edges + # Relative illumination correction + par['calibrations']['flatfield']['slit_illum_relative'] = True # Calculate the relative slit illumination + par['calibrations']['flatfield']['slit_illum_ref_idx'] = 14 # The reference index - this should probably be the same for the science frame + par['calibrations']['flatfield']['slit_illum_smooth_npix'] = 5 # Sufficiently small value so less structure in relative weights + # LACosmics parameters par['scienceframe']['process']['sigclip'] = 4.0 par['scienceframe']['process']['objlim'] = 1.5 @@ -935,33 +963,11 @@ def default_pypeit_par(cls): par['calibrations']['standardframe']['process']['correct_nonlinear'] = nonlin_array par['scienceframe']['process']['correct_nonlinear'] = nonlin_array - # Correct the illumflat for pixel-to-pixel sensitivity variations - par['calibrations']['illumflatframe']['process']['use_pixelflat'] = True - - # Make sure the overscan is subtracted from the dark - par['calibrations']['darkframe']['process']['use_overscan'] = True - - # Set the slit edge parameters - par['calibrations']['slitedges']['fit_order'] = 4 - par['calibrations']['slitedges']['pad'] = 2 # Need to pad out the tilts for the astrometric transform when creating a datacube. - par['calibrations']['slitedges']['edge_thresh'] = 5 # 5 works well with a range of setups tested by RJC (mostly 1x1 binning) - - # KCWI has non-uniform spectral resolution across the field-of-view - par['calibrations']['wavelengths']['fwhm_spec_order'] = 1 - par['calibrations']['wavelengths']['fwhm_spat_order'] = 2 - # Alter the method used to combine pixel flats - par['calibrations']['pixelflatframe']['process']['combine'] = 'median' - par['calibrations']['flatfield']['spec_samp_coarse'] = 20.0 + par['calibrations']['pixelflatframe']['process']['combine'] = 'mean' par['calibrations']['flatfield']['spat_samp'] = 1.0 # This should give 1% accuracy in the spatial illumination correction for 2x2 binning, and <0.5% accuracy for 1x1 binning - #par['calibrations']['flatfield']['tweak_slits'] = False # Do not tweak the slit edges (we want to use the full slit) - par['calibrations']['flatfield']['tweak_slits_thresh'] = 0.0 # Make sure the full slit is used (i.e. when the illumination fraction is > 0.5) - par['calibrations']['flatfield']['tweak_slits_maxfrac'] = 0.0 # Make sure the full slit is used (i.e. no padding) - par['calibrations']['flatfield']['slit_trim'] = 3 # Trim the slit edges - # Relative illumination correction - par['calibrations']['flatfield']['slit_illum_relative'] = True # Calculate the relative slit illumination - par['calibrations']['flatfield']['slit_illum_ref_idx'] = 14 # The reference index - this should probably be the same for the science frame - par['calibrations']['flatfield']['slit_illum_smooth_npix'] = 5 # Sufficiently small value so less structure in relative weights + + # Need to fit sinusoidal sensitivity pattern, and include in the relative pixel response par['calibrations']['flatfield']['fit_2d_det_response'] = True # Include the 2D detector response in the pixelflat. return par @@ -1351,33 +1357,8 @@ def default_pypeit_par(cls): par['calibrations']['standardframe']['process']['use_pattern'] = False par['scienceframe']['process']['use_pattern'] = False - # Correct the illumflat for pixel-to-pixel sensitivity variations - par['calibrations']['illumflatframe']['process']['use_pixelflat'] = True - - # Make sure the overscan is subtracted from the dark - par['calibrations']['darkframe']['process']['use_overscan'] = True - - # Set the slit edge parameters - par['calibrations']['slitedges']['fit_order'] = 4 - par['calibrations']['slitedges']['pad'] = 2 # Need to pad out the tilts for the astrometric transform when creating a datacube. - par['calibrations']['slitedges']['edge_thresh'] = 5 # 5 works well with a range of setups tested by RJC (mostly 1x1 binning) - - # KCWI has non-uniform spectral resolution across the field-of-view - par['calibrations']['wavelengths']['fwhm_spec_order'] = 1 - par['calibrations']['wavelengths']['fwhm_spat_order'] = 2 - - # Alter the method used to combine pixel flats - par['calibrations']['pixelflatframe']['process']['combine'] = 'median' - par['calibrations']['flatfield']['spec_samp_coarse'] = 20.0 - #par['calibrations']['flatfield']['tweak_slits'] = False # Do not tweak the slit edges (we want to use the full slit) - par['calibrations']['flatfield']['tweak_slits_thresh'] = 0.0 # Make sure the full slit is used (i.e. when the illumination fraction is > 0.5) - par['calibrations']['flatfield']['tweak_slits_maxfrac'] = 0.0 # Make sure the full slit is used (i.e. no padding) - par['calibrations']['flatfield']['slit_trim'] = 3 # Trim the slit edges - # Relative illumination correction - par['calibrations']['flatfield']['slit_illum_relative'] = True # Calculate the relative slit illumination - par['calibrations']['flatfield']['slit_illum_ref_idx'] = 14 # The reference index - this should probably be the same for the science frame - par['calibrations']['flatfield']['slit_illum_smooth_npix'] = 5 # Sufficiently small value so less structure in relative weights - par['calibrations']['flatfield']['fit_2d_det_response'] = True # Include the 2D detector response in the pixelflat. + # This is probably not necessary for KCRM + par['calibrations']['flatfield']['fit_2d_det_response'] = False # Include the 2D detector response in the pixelflat. # Sky subtraction parameters par['reduce']['skysub']['bspline_spacing'] = 0.4 diff --git a/pypeit/utils.py b/pypeit/utils.py index 8e7c759c56..0787c76d0e 100644 --- a/pypeit/utils.py +++ b/pypeit/utils.py @@ -1360,6 +1360,38 @@ def find_nearest(array, values): return idxs +def linear_interpolate(x1, y1, x2, y2, x): + r""" + Interplate or extrapolate between two points. + + Given a line defined two points, :math:`(x_1,y_1)` and + :math:`(x_2,y_2)`, return the :math:`y` value of a new point on + the line at coordinate :math:`x`. + + This function is meant for speed. No type checking is performed and + the only check is that the two provided ordinate coordinates are not + numerically identical. By definition, the function will extrapolate + without any warning. + + Args: + x1 (:obj:`float`): + First abscissa position + y1 (:obj:`float`): + First ordinate position + x2 (:obj:`float`): + Second abscissa position + y3 (:obj:`float`): + Second ordinate position + x (:obj:`float`): + Abcissa for new value + + Returns: + :obj:`float`: Interpolated/extrapolated value of ordinate at + :math:`x`. + """ + return y1 if np.isclose(x1,x2) else y1 + (x-x1)*(y2-y1)/(x2-x1) + + def replace_bad(frame, bpm): """ Find all bad pixels, and replace the bad pixels with the nearest good pixel From a7ced6c61727643cedc116c0e2574a5779ae2598 Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 16 Feb 2024 14:20:28 +0000 Subject: [PATCH 056/128] cleanup --- pypeit/core/flat.py | 31 ++++++++++++++++++++++++++++--- pypeit/flatfield.py | 2 +- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/pypeit/core/flat.py b/pypeit/core/flat.py index 80d1be08cd..3c15dd5aaf 100644 --- a/pypeit/core/flat.py +++ b/pypeit/core/flat.py @@ -470,7 +470,7 @@ def poly_map(rawimg, rawivar, waveimg, slitmask, slitmask_trim, modelimg, deg=3, return modelmap, relscale -def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat): +def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, debug=False): r""" Adjust slit edges based on the gradient of the normalized flat-field illumination profile. @@ -490,6 +490,9 @@ def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat): norm_flat (`numpy.ndarray`_) Normalized flat data that provide the slit illumination profile. Shape is :math:`(N_{\rm flat},)`. + debug (:obj:`bool`, optional): + If True, the function will output plots to test if the + fitting is working correctly. Returns: tuple: Returns six objects: @@ -521,6 +524,10 @@ def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat): # Find the location of the minimum/maximum gradient - this is the amount of shift required left_shift = spat_coo[np.argmax(grad_norm_flat_smooth)] right_shift = spat_coo[np.argmin(grad_norm_flat_smooth)]-1.0 + msgs.info('Tweaking left slit boundary by {0:.1f}%'.format(100 * left_shift) + + ' ({0:.2f} pixels)'.format(left_shift * slitwidth)) + msgs.info('Tweaking right slit boundary by {0:.1f}%'.format(100 * right_shift) + + ' ({0:.2f} pixels)'.format(right_shift * slitwidth)) # Calculate the tweak for the left edge new_left = np.copy(left) + left_shift * slitwidth @@ -530,6 +537,24 @@ def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat): left_thresh = np.interp(left_shift, spat_coo, norm_flat) right_thresh = np.interp(1+right_shift, spat_coo, norm_flat) + if debug: + plt.subplot(211) + plt.plot(spat_coo, norm_flat, 'k-') + plt.axvline(0.0, color='b', linestyle='-', label='initial') + plt.axvline(1.0, color='b', linestyle='-') + plt.axvline(left_shift, color='g', linestyle='-', label='tweak (gradient)') + plt.axvline(1+right_shift, color='g', linestyle='-') + plt.axhline(left_thresh, xmax=0.5, color='lightgreen', linewidth=3.0, zorder=10) + plt.axhline(right_thresh, xmin=0.5, color='lightgreen', linewidth=3.0, zorder=10) + plt.legend() + plt.subplot(212) + plt.plot(spat_coo, grad_norm_flat, 'k-') + plt.plot(spat_coo, grad_norm_flat_smooth, 'm-') + plt.axvline(0.0, color='b', linestyle='-') + plt.axvline(1.0, color='b', linestyle='-') + plt.axvline(left_shift, color='g', linestyle='-') + plt.axvline(1+right_shift, color='g', linestyle='-') + plt.show() return left_thresh, left_shift, new_left, right_thresh, right_shift, new_right @@ -645,7 +670,7 @@ def tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=0.93, ma left_shift = utils.linear_interpolate(norm_flat[i], spat_coo[i], norm_flat[i+1], spat_coo[i+1], left_thresh) msgs.info('Tweaking left slit boundary by {0:.1f}%'.format(100*left_shift) + - ' % ({0:.2f} pixels)'.format(left_shift*slitwidth)) + ' ({0:.2f} pixels)'.format(left_shift*slitwidth)) new_left += left_shift * slitwidth # ------------------------------------------------------------------ @@ -699,7 +724,7 @@ def tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=0.93, ma right_shift = 1-utils.linear_interpolate(norm_flat[i-1], spat_coo[i-1], norm_flat[i], spat_coo[i], right_thresh) msgs.info('Tweaking right slit boundary by {0:.1f}%'.format(100*right_shift) + - ' % ({0:.2f} pixels)'.format(right_shift*slitwidth)) + ' ({0:.2f} pixels)'.format(right_shift*slitwidth)) new_right -= right_shift * slitwidth return left_thresh, left_shift, new_left, right_thresh, right_shift, new_right diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index 1196fdae31..ac9c551884 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -1638,7 +1638,7 @@ def tweak_slit_edges(self, left, right, spat_coo, norm_flat, method='threshold', return flat.tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=thresh, maxfrac=maxfrac, debug=debug) elif method == "gradient": - return flat.tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, debug=debug) + return flat.tweak_slit_edges_gradient(left, right, spat_coo, norm_flat) else: msgs.error("Method for tweaking slit edges not recognized: {0}".format(method)) From 53734ec194d4c66ba54c79bf1672c1a29fb488b2 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 22 Feb 2024 14:22:49 +0000 Subject: [PATCH 057/128] code cleanup after PR comments --- doc/coadd3d.rst | 38 +++++++++++++++++--------- doc/releases/1.15.1dev.rst | 5 ++-- pypeit/coadd3d.py | 43 +++++++++--------------------- pypeit/core/datacube.py | 33 +++++++++++------------ pypeit/core/procimg.py | 5 ++-- pypeit/images/rawimage.py | 2 -- pypeit/scripts/extract_datacube.py | 7 ++++- pypeit/specobj.py | 2 -- pypeit/specobjs.py | 2 -- 9 files changed, 64 insertions(+), 73 deletions(-) diff --git a/doc/coadd3d.rst b/doc/coadd3d.rst index 247a4f0df6..e960dd9591 100644 --- a/doc/coadd3d.rst +++ b/doc/coadd3d.rst @@ -132,20 +132,28 @@ There are several recommended steps of the coadd3d process that can be run separ #. Step 2 - Extract the 1D spectra from the datacube. This is done by running the following command, assuming that the output datacube from the previous step was called ``StandardStarName.fits``. The ``pypeit_extract_datacube`` script will produce an output file called - ``StandardStarName_spec1d.fits``: + ``spec1d_StandardStarName.fits``: .. code-block:: console pypeit_extract_datacube StandardStarName.fits -o + This script is only designed for point sources. Both a boxcar and an optimal extraction are calculated. + The boxcar extraction uses a circular aperture with a radius set by the ``boxcar_radius`` parameter. + The optimal extraction uses the white light image as the object profile. Also note that the extraction + if performed on the sky-subtracted datacube. Therefore, the ``spec1d`` file contains the 1D spectra + including a ``BOX_COUNTS_SKY`` and ``OPT_COUNTS_SKY`` columns. These columns do not contain the sky + counts, but rather the residual level of the sky aperture. This is useful for checking the quality of + the sky subtraction. + #. Step 3 - Generate a sensitivity function from the 1D spectra. This is done by running the following command, assuming that the output 1D spectra from the previous step was called - ``StandardStarName_spec1d.fits``. The ``pypeit_sensfunc`` script will produce an output file called - ``StandardStarName_sens.fits``: + ``spec1d_StandardStarName.fits``. The ``pypeit_sensfunc`` script will produce an output file called + ``sens_StandardStarName.fits``: .. code-block:: console - pypeit_sensfunc StandardStarName_spec1d.fits -o StandardStarName_sens.fits + pypeit_sensfunc spec1d_StandardStarName.fits -o sens_StandardStarName.fits For further details, see :doc:`_sensitivity_function`. @@ -190,7 +198,10 @@ the default values (5), you can optionally set (one or all of) the ``spec_subpix The total number of subpixels generated for each detector pixel on the spec2d frame is spec_subpixel x spat_subpixel x slice_subpixel. The default values (5) divide each spec2d pixel -into 125 subpixels during datacube creation. +into 5x5x5=125 subpixels during datacube creation. ``spat_subpixel`` is the number of subpixels in the +spatial direction (i.e. detector rows), ``spec_subpixel`` is the number of subpixels in the spectral +direction (i.e. detector columns), and ``slice_subpixel`` is the number of times to divide each of the +slices that comprise the slicer (i.e. in the slice direction). As an alternative, you can convert the spec2d frames into a datacube with the ``NGP`` method. This algorithm is effectively a 3D histogram. This approach is faster than ``subpixel``, flux is conserved, and voxels are not correlated. However, this option suffers @@ -265,14 +276,17 @@ The grating correction is needed if any of the data are recorded with even a very slightly different setup (e.g. data taken on two different nights with the same *intended* wavelength coverage, but the grating angle of the two nights were slightly different). -This is also needed if your standard star observations were taken -with a slightly different setup. This correction requires that you +You can avoid this correction if you generate a sensitivity function +for each of the setups. However, if you have not done this, then +the grating correction is needed. This correction requires that you have taken calibrations (i.e. flatfields) with the two different -setups. By default, the grating correction will not be applied. If -you want to apply the grating correction, you will need to specify -the relative path+file of the Flat calibration file for each spec2d -file. You will need to specify a ``grating_corr`` file for each -science frame, in the ``spec2d`` block of the ``.coadd3d`` file: +setups, and uses the relative sensitivity of the two flatfields to +estimate the sensitivity correction. By default, the grating correction +will not be applied. If you want to apply the grating correction, you +will need to specify the relative path+file of the Flat calibration +file for each spec2d file. You will need to specify a ``grating_corr`` +file for each science frame, in the ``spec2d`` block of the +``.coadd3d`` file: .. code-block:: ini diff --git a/doc/releases/1.15.1dev.rst b/doc/releases/1.15.1dev.rst index 75c1a6778d..ed96ac93ab 100644 --- a/doc/releases/1.15.1dev.rst +++ b/doc/releases/1.15.1dev.rst @@ -19,9 +19,8 @@ Instrument-specific Updates Script Changes -------------- -- A new script allows spec1d files to be extracted from datacubes. This - script is called `pypeit_extract_datacube`, and can be used to extract - 1D spectra from a datacube. +- A new script, called `pypeit_extract_datacube`, allows 1D spectra of point + sources to be extracted from datacubes. - The sensitivity function is now generated outside of datacube generation. - The `grating_corr` column is now used to select the correct grating correction file for each spec2d file when generating the datacube. diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 97179824eb..16899f1576 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -89,7 +89,6 @@ class DataCube(datamodel.DataContainer): 'fluxed': dict(otype=bool, descr='Boolean indicating if the datacube is fluxed.')} internals = ['head0', - 'headwcs', 'filename', 'spectrograph', 'spect_meta', @@ -108,7 +107,6 @@ def __init__(self, flux, sig, bpm, wave, PYP_SPEC, blaze_wave, blaze_spec, sensf self._ivar = None self._wcs = None self.head0 = None # This contains the primary header of the spec2d used to make the datacube - self.headwcs = None # This contains the WCS of the datacube def _bundle(self): """ @@ -198,12 +196,11 @@ def from_file(cls, ifile, verbose=True, chk_version=True, **kwargs): # Internals self.filename = ifile self.head0 = hdu[0].header - self.headwcs = hdu[1].header # Meta self.spectrograph = load_spectrograph(self.PYP_SPEC) self.spect_meta = self.spectrograph.parse_spec_header(hdu[0].header) self._ivar = None - self._wcs = None + self.wcs = wcs.WCS(hdu[1].header) return self @property @@ -221,51 +218,34 @@ def ivar(self): self._ivar = utils.inverse(self.sig**2) return self._ivar - @property - def wcs(self): - """ - Utility function to provide the world coordinate system of the datacube - - Returns - ------- - self._wcs : `astropy.wcs.WCS`_ - The WCS based on the stored header information. Note that self._wcs should - not be accessed directly, and you should only call self.wcs - """ - if self._wcs is None: - if self.headwcs is None: - msgs.error('No WCS information stored in the DataCube') - else: - self._wcs = wcs.WCS(self.headwcs) - return self._wcs - - def extract_spec(self, parset, outname=None, overwrite=False): + def extract_spec(self, parset, outname=None, boxcar_radius=None, overwrite=False): """ Extract a spectrum from the datacube Parameters ---------- parset : dict - A dictionary containing the 'Reduce' PypeItPar parameters. + A dictionary containing the :class:`~pypeit.par.pypeitpar.ReducePar` parameters. outname : str, optional Name of the output file + boxcar_radius : float, optional + Radius of the circular boxcar (in arcseconds) to use for the extraction overwrite : bool, optional Overwrite any existing files """ # Extract the spectrum - # TODO :: should we set the boxcar_width argument to None so the automated algorithm is used by default? At the moment, the user needs to set the boxcar_width to None in the parset to use the automated algorithm fwhm = parset['findobj']['find_fwhm'] if parset['extraction']['use_user_fwhm'] else None # Datacube's are counts/second, so set the exposure time to 1 exptime = 1.0 # TODO :: Avoid transposing these large cubes - sobjs = datacube.extract_standard_spec(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, - exptime=exptime, pypeline=self.spectrograph.pypeline, - fluxed=self.fluxed, boxcar_width=parset['extraction']['boxcar_radius'], - optfwhm=fwhm, whitelight_range=parset['cube']['whitelight_range']) + sobjs = datacube.extract_point_source(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, + exptime=exptime, pypeline=self.spectrograph.pypeline, + fluxed=self.fluxed, boxcar_radius=boxcar_radius, + optfwhm=fwhm, whitelight_range=parset['cube']['whitelight_range']) # Save the extracted spectrum - spec1d_filename = self.filename.replace('.fits', '_spec1d.fits') if outname is None else outname + spec1d_filename = 'spec1d_' + self.filename if outname is None else outname sobjs.write_to_fits(self.head0, spec1d_filename, overwrite=overwrite) @@ -424,7 +404,8 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_cor If not None, this should be a list of relative scale correction options. It should be the same length as spec2dfiles. grating_corr (:obj:`list`, optional): - If not None, this should be a list of relative grating tilt correction options. It should be the + If not None, this should be a list of `str`, where each element is the relative path to the + Flat calibration file that was used to reduce each spec2d file. It should be the same length as spec2dfiles. ra_offsets (:obj:`list`, optional): If not None, this should be a list of relative RA offsets of each frame. It should be the diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 98e536e880..2ab1356fc4 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -97,9 +97,8 @@ def fitGaussian2D(image, norm=False): x = np.linspace(0, image.shape[0] - 1, image.shape[0]) y = np.linspace(0, image.shape[1] - 1, image.shape[1]) xx, yy = np.meshgrid(x, y, indexing='ij') - # Setup the fitting params + # Setup the fitting params - Estimate a starting point for the fit using a median filter med_filt_image = signal.medfilt2d(image, kernel_size=3) - # idx_max = [image.shape[0]/2, image.shape[1]/2] # Just use the centre of the image as the best guess idx_max = np.unravel_index(np.argmax(med_filt_image), image.shape) initial_guess = (1, idx_max[0], idx_max[1], 2, 2, 0, 0) bounds = ([0, 0, 0, 0.5, 0.5, -np.pi, -np.inf], @@ -191,9 +190,9 @@ def correct_grating_shift(wave_eval, wave_curr, spl_curr, wave_ref, spl_ref, ord return grat_corr -def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, - subpixel=20, boxcar_width=None, optfwhm=None, whitelight_range=None, - pypeline="SlicerIFU", fluxed=False): +def extract_point_source(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, + subpixel=20, boxcar_radius=None, optfwhm=None, whitelight_range=None, + pypeline="SlicerIFU", fluxed=False): """ Extract a spectrum of a standard star from a datacube @@ -213,8 +212,8 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, Exposure time listed in the header of the datacube subpixel : int, optional Number of pixels to subpixelate spectrum when creating mask - boxcar_width : float, optional - Width of the boxcar (in arcseconds) to use for the extraction + boxcar_radius : float, optional + Radius of the circular boxcar (in arcseconds) to use for the extraction optfwhm : float, optional FWHM of the PSF in pixels that is used to generate a Gaussian profile for the optimal extraction. @@ -247,7 +246,7 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, # Scale the flux and ivar cubes to be in units of erg/s/cm**2/Ang unitscale = arcsecSQ else: - # Scale the flux and ivar cubes to be in units of counts + # Scale the flux and ivar cubes to be in units of counts. pypeit_sensfunc expects counts as input deltawave = wcscube.wcs.cdelt[2]*wcscube.wcs.cunit[2].to(units.Angstrom) unitscale = exptime * deltawave * arcsecSQ @@ -262,13 +261,13 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, msgs.info("Making white light image") wl_img = make_whitelight_fromcube(_flxcube, wavemin=whitelight_range[0], wavemax=whitelight_range[1]) popt, pcov, model = fitGaussian2D(wl_img, norm=True) - if boxcar_width is None: + if boxcar_radius is None: nsig = 4 # 4 sigma should be far enough... Note: percentage enclosed for 2D Gaussian = 1-np.exp(-0.5 * nsig**2) wid = nsig * max(popt[3], popt[4]) else: - # Set the user-defined width - wid = boxcar_width/np.sqrt(arcsecSQ) - # Set the width of the extraction boxcar for the sky determination + # Set the user-defined radius + wid = boxcar_radius / np.sqrt(arcsecSQ) + # Set the radius of the extraction boxcar for the sky determination msgs.info("Using a boxcar width of {:0.2f} arcsec".format(wid*np.sqrt(arcsecSQ))) widsky = 2 * wid @@ -299,8 +298,8 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, # Subtract the residual sky from the datacube skymask = np.logical_not(bpmcube) * smask skycube = _flxcube * skymask - skyspec = skycube.sum(0).sum(0) - nrmsky = skymask.sum(0).sum(0) + skyspec = skycube.sum(axis=(0,1)) + nrmsky = skymask.sum(axis=(0,1)) skyspec *= utils.inverse(nrmsky) _flxcube -= skyspec.reshape((1, 1, numwave)) # Now subtract the residual sky from the white light image @@ -314,12 +313,12 @@ def extract_standard_spec(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, norm_flux /= np.sum(norm_flux) # Extract boxcar cntmask = np.logical_not(bpmcube) * mask # Good pixels within the masked region around the standard star - flxscl = (norm_flux * cntmask).sum(0).sum(0) # This accounts for the flux that is missing due to masked pixels + flxscl = (norm_flux * cntmask).sum(axis=(0,1)) # This accounts for the flux that is missing due to masked pixels scimask = _flxcube * cntmask varmask = _varcube * cntmask**2 nrmcnt = utils.inverse(flxscl) - box_flux = scimask.sum(0).sum(0) * nrmcnt - box_var = varmask.sum(0).sum(0) * nrmcnt**2 + box_flux = scimask.sum(axis=(0,1)) * nrmcnt + box_var = varmask.sum(axis=(0,1)) * nrmcnt**2 box_gpm = flxscl > 1/3 # Good pixels are those where at least one-third of the standard star flux is measured # Store the BOXCAR extraction information diff --git a/pypeit/core/procimg.py b/pypeit/core/procimg.py index de8c739319..1ce8b977b4 100644 --- a/pypeit/core/procimg.py +++ b/pypeit/core/procimg.py @@ -1410,14 +1410,13 @@ def nonlinear_counts(counts, ampimage, nonlinearity_coeffs): # Check the input if counts.shape != ampimage.shape: msgs.error('Counts and amplifier image have different shapes.') - if isinstance(nonlinearity_coeffs, list): - nonlinearity_coeffs = np.array(nonlinearity_coeffs) + _nonlinearity_coeffs = np.asarray(nonlinearity_coeffs) # Setup the output array corr_counts = counts.copy() unqamp = np.unique(ampimage) for uu in range(unqamp.size): thisamp = unqamp[uu] indx = (ampimage == thisamp) - corr_counts[indx] = counts[indx] * (1. + nonlinearity_coeffs[thisamp]*counts[indx]) + corr_counts[indx] = counts[indx] * (1. + _nonlinearity_coeffs[thisamp]*counts[indx]) # Apply the correction return corr_counts diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index ef3115eb82..a7cb4d7c34 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -680,8 +680,6 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl flat_bpm = self.flatfield(flatimages, slits=slits, debug=debug) if self.use_flat else None # Calculate the inverse variance - # TODO :: I think the IVAR should technically be calculated before the flat-fielding. - # This is because the flat-fielding is done in counts, and the IVAR is in counts^2. self.ivar = self.build_ivar() # - Subtract continuum level diff --git a/pypeit/scripts/extract_datacube.py b/pypeit/scripts/extract_datacube.py index 1d1d00e45c..f819c4aad6 100644 --- a/pypeit/scripts/extract_datacube.py +++ b/pypeit/scripts/extract_datacube.py @@ -25,6 +25,8 @@ def get_parser(cls, width=None): help='Output spec1d filename') parser.add_argument('-o', '--overwrite', default=False, action='store_true', help='Overwrite any existing files/directories') + parser.add_argument('-b', '--boxcar_radius', type=float, default=None, + help='Radius of the circular boxcar (in arcseconds) to use for the extraction.') parser.add_argument('-v', '--verbosity', type=int, default=1, help='Verbosity level between 0 [none] and 2 [all]. Default: 1. ' 'Level 2 writes a log with filename extract_datacube_YYYYMMDD-HHMM.log') @@ -61,6 +63,9 @@ def main(args): parset = par.PypeItPar.from_cfg_lines(cfg_lines=spectrograph_def_par.to_config(), merge_with=(ext3dfile.cfg_lines,)) + # Set the boxcar radius + boxcar_radius = args.boxcar_radius + # Set the output name outname = None if args.save is None else args.save @@ -68,7 +73,7 @@ def main(args): tstart = time.time() # Extract the spectrum - extcube.extract_spec(parset['reduce'], outname=outname, overwrite=args.overwrite) + extcube.extract_spec(parset['reduce'], outname=outname, boxcar_radius=boxcar_radius, overwrite=args.overwrite) # Report the extraction time msgs.info(utils.get_time_string(time.time()-tstart)) diff --git a/pypeit/specobj.py b/pypeit/specobj.py index 675f65db0d..51ea1a72b8 100644 --- a/pypeit/specobj.py +++ b/pypeit/specobj.py @@ -485,8 +485,6 @@ def update_flex_shift(self, shift, flex_type='local'): # Now update the total flexure self.FLEX_SHIFT_TOTAL += shift - # TODO This should be a wrapper calling a core algorithm. - # It is, right? Can this TODO be removed? def apply_flux_calib(self, wave_zp, zeropoint, exptime, tellmodel=None, extinct_correct=False, airmass=None, longitude=None, latitude=None, extinctfilepar=None, extrap_sens=False): diff --git a/pypeit/specobjs.py b/pypeit/specobjs.py index d38e3067ad..d6713d0732 100644 --- a/pypeit/specobjs.py +++ b/pypeit/specobjs.py @@ -237,8 +237,6 @@ def unpack_object(self, ret_flam=False, extract_type='OPT'): detector = [None]*norddet ech_orders = np.zeros(norddet, dtype=int) - # TODO make the extraction that is desired OPT vs BOX an optional input variable. - # This TODO is already so, right? for iorddet in range(norddet): wave[:, iorddet] = getattr(self, wave_key)[iorddet] flux_gpm[:, iorddet] = getattr(self, '{}_MASK'.format(extract_type))[iorddet] From 2f38d6a7ebdb7012dd6c0ef841c79cde3993dd14 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 22 Feb 2024 18:47:10 +0000 Subject: [PATCH 058/128] doc combination update --- doc/coadd3d.rst | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/doc/coadd3d.rst b/doc/coadd3d.rst index e960dd9591..ac512c267d 100644 --- a/doc/coadd3d.rst +++ b/doc/coadd3d.rst @@ -198,10 +198,16 @@ the default values (5), you can optionally set (one or all of) the ``spec_subpix The total number of subpixels generated for each detector pixel on the spec2d frame is spec_subpixel x spat_subpixel x slice_subpixel. The default values (5) divide each spec2d pixel -into 5x5x5=125 subpixels during datacube creation. ``spat_subpixel`` is the number of subpixels in the -spatial direction (i.e. detector rows), ``spec_subpixel`` is the number of subpixels in the spectral -direction (i.e. detector columns), and ``slice_subpixel`` is the number of times to divide each of the -slices that comprise the slicer (i.e. in the slice direction). +into 5x5x5=125 subpixels during datacube creation. +``spec_subpixel`` is the number of subpixels in the spectral +direction (i.e. predominantly detector columns), +``spat_subpixel`` is the number of subpixels in the +spatial direction (i.e. the long axis of each slice; predominantly along detector rows), and +``slice_subpixel`` is the number of times to divide each of the +slices (i.e. the short axis of each slice). Note that all three of these ``subpixel`` +definitions are perpendicular to each other in the datacube. Each of these parameters +governs the number of subpixels in the corresponding dimensions of the datacube. + As an alternative, you can convert the spec2d frames into a datacube with the ``NGP`` method. This algorithm is effectively a 3D histogram. This approach is faster than ``subpixel``, flux is conserved, and voxels are not correlated. However, this option suffers From b16aef2291537d8d32d97616aaa71bf96108e63c Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 22 Feb 2024 20:29:33 +0000 Subject: [PATCH 059/128] extinction correction --- doc/coadd3d.rst | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/coadd3d.rst b/doc/coadd3d.rst index ac512c267d..73b5b7822f 100644 --- a/doc/coadd3d.rst +++ b/doc/coadd3d.rst @@ -236,6 +236,21 @@ the name of the sensitivity function in your ``coadd3d`` file as follows: sensfunc = my_sensfunc.fits +Also, an important note for users that wish to combine multiple standard star exposures +into a single datacube: PypeIt currently performs an extinction correction when +generating the sensitivity function; this is perfectly fine for single exposures. +However, if you are combining multiple standard star exposures into a single datacube, +you should note that the extinction correction will be applied at the airmass of the +first standard star exposure listed in the ``coadd3d`` file. This is because the +extinction correction is currently not applied to each individual frame in the datacube. +This control flow will be changed in a future release of PypeIt, but for now, to stay +consistent with the current pipeline, the extinction correction is done in the sensitivity +function algorithms, with the caveat that the standard star exposures are assumed to have +similar airmasses. If you have standard star exposures with significantly different +airmasses, then you should use just one of these exposures to generate the sensitivity +function. + + .. _coadd3d_skysub: Sky Subtraction From 0c8e925acbb61d1011c6f09b1b5da0408286623d Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 22 Feb 2024 21:32:00 +0000 Subject: [PATCH 060/128] added non-linear documentation --- doc/calibrations/calibrations.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/calibrations/calibrations.rst b/doc/calibrations/calibrations.rst index 94c5285fd8..33b40837ad 100644 --- a/doc/calibrations/calibrations.rst +++ b/doc/calibrations/calibrations.rst @@ -127,6 +127,7 @@ The primary calibration procedures are, in the order they're performed: flexure wave_calib Slit Alignment (IFU only) + non-linear correction flat_fielding scattlight From 35814fcd0bcbfa33b9c537bb8f8140eaefff151e Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 22 Feb 2024 21:33:37 +0000 Subject: [PATCH 061/128] added non-linear documentation --- doc/figures/nonlinear_lamp_decay.png | Bin 0 -> 1313059 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/figures/nonlinear_lamp_decay.png diff --git a/doc/figures/nonlinear_lamp_decay.png b/doc/figures/nonlinear_lamp_decay.png new file mode 100644 index 0000000000000000000000000000000000000000..430b4327f4fde19bbc8b3b1f3f46c2c61008ebef GIT binary patch literal 1313059 zcmeFZcUV*1+9!;HASlvQI-w|tC{=oi6saN#D4<{{(xms!76Ae2B7#yC1q;$aq=nuE zl@bAIQUU}F5CSA5*|Xzwp7WlWdFT7*`@Xr}nd`7FlFi=ty4TvP-1WCexPDEKnTdyq zhK7dOKwrm{hK9kOhUN&@QF`c3D2zRshUQR!tG4!aH*Gy_FLy6rGjBTwM;%u`Z+E+p z>vA+S=h6exnvFWHpX@UEVER=h{scdtY=ZXaccwre7m1Tsq|J|fFnbZn=n;NK+|-A| zLVO=)*=FTk5pVA8-`b5qI}TB<$JcK}(H)rwNFyoml#9L=w$~+74`1llF<|4U>coA0 zX~!<>b5wIJt=8=g#pJ`!sba1$2a*82WH~RMTRzbVhf@q$PAp~_nXY0zAmWk=Ev&&LC@84rd(TP5R7dw8)uF%Cg7f`Wo1gXAQ=e4V9al$DjGq-CXKWiLV$7yUv!{q2G;disg{#pG{3I*xu0zOLT> zu3nykRK9lhUIG5u{-Y&Nzkj?I^ny~9dG4XYEggQ*^mWGVlp9cQBd;ifrH7XaC>#o6$?v^^P9*&-Vf9fbH zORGu!r;q;As#gC}RZjZSzgGR1NB^j*CPf{oe;K*IrsdCFXkIj!)TI77#~MtRHwDaT zXfD$j=xCY;A6jn?8FjX>5^X>lzLAX+6moiN_#lZc?Ss&R!v?JBf$_8_zHVH;z7yyN z)^FT@ifIt`x$WUF+u}CSejDY<=vrHTR5qc8Hu?GGC&8zVFs3~)rHzt4$}Q+H77<5o zI*1rnMwUO3GPrpbpZj`9RXq&rmyi1$R4^M9*)b_FG5Oe-)-67kjY(MIY??~@3x7Ip zW}2gVHw~4NuAdKXJIubIMSt>vxA~ixj-ziLa$XRWk-T^L(7y@(Jr4g~5C1jy1#6FJ z!26G?8SnQl3ba3N?nxRojd+Cl=>N3u(JqnomZJVAx>@qLY2b*!*SlMMvzBSowq1m^ z(sbbLTX$Qg5QbI3`DB8#xg~vHnX{?)QOal=!TCb3XT`7ZfN>@8X<=2A_@Jsj1EW_i zpd0I$wjL^aByP@xKNskJxK1xIWZ|5QGhsZ>o88_N?Vq;U{eKOs)Lp`-x*0M1Xtttr zj>+!~rwY&CQ4y109n7LF>L~ljdvzt|nEc5O$HavUU>Sxk7>lvyGQHvxFm0Cmx-8X4DR^Wb8Z0Yi5ImV$mdfZ2$Ndj?qxBs zhmLj?VH^$*k~scfcUr@C+baVozPT5=qAuReVAE(pcJPZZNexj=e6becNOE~zF}WGv^3}Ue$NSO=CsmRzwx0xE?uU?cIpWHFqT{{aAZXnpy_3G z^kv4-rbC=XAN&;jQ4q~&2SMzN=yt28uMfp)&6^V9DX1ND(kw!9DO{#O#aTP(i_eU% zdM==4FU+zo%84#`bK?I@MrsYqv!VrRvT-D%Y>)FlLUu2op^-hze1>1`bi96{x^e~` z%yAJ<0waL-?(o+9Wh zn8#%~Cw_E+*nyA3q)M~OoiQ(iCvb@KIrOoC()E;c+<7cz@Lq0xG5XWNOzrg)Z}R*f z+VU?C)lLP2Y#$zdZ9ho$893W?yrVwq%K^*c@iSO>P4NTf#XfyO3VHT3rSp$Y=V}%C2$){u&fjqq?aPz+G zeJ1udRCcAv=tOI;Gg*cY@Fn-ykB`H~5f@vwk=HoK5mG!w{2g#2oH9 zqS=qH><&3g$Bu7pQY?DYz)Xm)T(qcI@J2&Pj>r&EwSJQjtBzsGzTS5L%4XOel`BPR zJtCFk;_;{teQ(9}pZ;E5j<2SikgOR>N`}~O>Ayqf?4+sp;ATv80Dr3@Gt665v zjXReV)~!Pr=)YJ&;!e7fD)Md!392i)r(UW|<7xtNweN9Uv(ybVVZW5}Lz2zQ zM9`)q1Vm?uIHmeIgnhkdW>YDB8X_^6t*g=#s>+cI-0+~j*FkRl#3j*d_1!zGxO2i~_sUmufl~Mjo@Yi+*hHcR z`-ls;;z~*t<#t;V_c!#_s_d2sLFDFfO5eJBFM?_>FVp4CU z@27Fg6`PdRsI-L-+#Rt3tN?lW3(03hbPqq5t4hT0J@|mk@%Gu7+$l0U>ybip4KW+z z`B?sVxW9vp-r8N{Bf&IN>F|*t)&1_R%sAV()vxTmU9Lqvkh8eYTkY>$`0W`<4iq+1 z0^QHAhId%olW!ObYpcM|>oUufTyA|XQJZYlAotZ}fY?Fgc-~HQFiXJ4;W=xcVp6Xq zyk(7ue9Pq)uYBb25VT80GUXtSXPAH2Q+&zESLcatZ(=Y~C`9R5YXI$*VDhB$QTD|v zbh$p{Jil(dh0;8k0gEivPnv8yFqr|iDI*r<5gnyoP2gb;h66H6beQpCMnk~u$7%6D zWD@9VAC>2Brq$+7KedYfrZ9PD)()S$xId&X)PhKEd&yx;c@C(XsL4YnPLzSo)wwkQ(D$>tY+Nk;F%bi3a2w;jhK&mbN$Q^;f6QF{gX zY)xQ|{cRU6`Oae(vG8E<8%L*EG^SkE_GwZ;EC60N)!jJiB&yam3j|^(s(X?yKOFo0 zHLh$wzWNcdm@IynopM3X-9@>q;fmAz;@tjX0YNcOK?eK%s#SuO*E3&A-_DElY`(wD z0SPyw7vd5!rSK0{RlOH-|9`y8aD|+%sJN2(JI94+t`HF~z?LNrAC#%3Rc9GgKP2$@ zfszI!+B1W$JSEIyFRhkkX51IZ4%7Yg(uYz>si63gC9a6R?;u5nI^KBBu$(_CWlr7q ze--o2^CegO?=yr#H4dwtJhX-9L;!z2l3%6OxUxN;Jd_93p<%gl`LEY5g%_PW<8fQ3 zIPfw$>a$p@HXAF3zo+EmqZGmUed1Caz1f}BxiB>jC`A7@hhp`QKNvf z67LvWWKKnB7T5NYqS)(mf%a)djaCqBH|Y;IBY zVMmcI{4Tx zW={^0xa|ULZH;X!&@*41nRt2GEp77LRYjc0QPsombw*-*VcoHpYCgS{Oo5%bW#0?O zNqwm(O_`u){_dQ;o^F)JQ<02AnhKxp{cvaqzHnqwe>;Z9u>Mg=N9);p!y3uAvMgP! zX{S>Kdsy-xvER1ui*-QCO#bMUL>_rY#Z~n__%6Ywnaw^M* zf3Zv$Ix`L{muqk)-#D!sNGJA-XF|?@e3lWR$$xSjA>Bq)bz)VrBdgbs7wq4+H$Gx? z_(o0qa*Xr3?h)U&0b$bY1=mAJA(m~s5 ziB_`9cj~n?I~dLs)t<`*s3lt?!YMo6s+|yr*Eq*`q*Gmx`{NZmGPShrtjcxh46;*a zvG36Hv+3+F1$_k4lEzdrJ+fyXEAcB^)u7 z5Qi`Ei!%5Tq5wI?$|E6cFMgsGP{1N{Fn3Z{j2tH#VgCr<^IexK-Sv{wGnGcihj{13 zLEF9v&uU2HJ~%X-m@ZR_%;PSK!I<SeeNeT2!VjrJ<%3X^5!!rGb z)hNW01wqC$RMra<&;3wP@|R_?(cWge9cL?L{I%cOP2@M_K1dd@4}+70I{J8=&QTIAmY1E? z5^VfC@Kj^F*f4j~dEL1(!NLBvHtr%F_@ZW@wI|G_fxY~L%+F~+EN>)U0Zm*>c$!k!C5;A45Akd{84^JV{Cq6XoOfi&LlyfAViNDp1XII@2u0l z@d9~PyBP|VO*G%Jk`FCuB#rWOikMoI8-qXG3r5mMPgf>;kfqOk9+yhU;^Z4X4k?p1!^fyo5+c9uk++U> zmzwLUz1Y>wUAF`{#I+rv0dXXMk=H@fqhKFcZ{5>-V?4NHaaTajJ>=qY{z~*7wC?ID z#Rf9w)D`#{@{RD13o-9Jn?PxvU{L5?>w#1rOU84^3HrdE&#Pb&463gcbI7{PV^~@! zbC}dRagfd2h~e@3p_AY#&Ar}>pXu-g!$L^dRu21g<8tMEKz;4l*YF2VVsI6^J1czP zvpb%y*vR3=DXEs-+6~o~1=Y!|9+*^?7FQM^g-to8Y!18!a_jH=ls66b8UBlMU_u&VZ6fyQHO927kf(;#31?9!6?q^RolTTN4q7z95aF z@L>YVuP4K0v!u?nlURQBM>kQ`n8lcN9A`mrhx?(Vof#oSSfnTj5mvHeg7B0;n4B8pJFaOXGWbDl3zqkM5 zdlBx4Zfnt!TB*!9Z0RXp&o>IsFcO9D>3@VeG2K`!ccdZgw--5mHh%izYOH6?^ED#J zQpbn9gHydq_=M@4!Z)D-eqmR>3eiuBV9)c2yv))A_qVPYy}Uka`Nr9EG_hVsAf;u? zIICmbJ&ISJ`QkQZ3qYfOyTf-n;G;9--$7xBP;N8MoNi1CKH6f~d=^Foh%yphLAb-9$N_eLNQgeJs0Psn? zm4qgtXW{#MERAT?;|lOMd`Z#%An}+weZ()XoY1lPxaITqYd4!k8dUY7yshIt_*JcX zGhp`Hvc5J2Ox5ka;*4y>N$mjZgp`EX#W_l(^mBIgzv3ce3B?{cyALhmbo!j zPWfC%NYkDy8xAjy*b4%JrfS_v9D8?&7z_0YQ7srH|KMp!jdMOYs1MdTkMwU9NolUP zcm;)Rv5*SYV{Qrna}0NXQhLH>Ml{Z`I086DpgPaHopGbA5qlp_9s%7BaPWibpEY~f zU$#SV#|LO&a~yUTSpGBIZJ}V-pW&tsISP@mW+a!#TK5G3j&a_2ynq41CzwNL6ysXn@%!z__~vKTW`Uh1mM3fi zCmfA?#CcC#QqIgN2qp|{@ZBZ!ThyVzaf}gV+JD4&qX{?U_Gu>6O%*p-J*nrl&k%CG zNf~e3fv?d}!g+n|$2pT7$cWm`D=#mM74g2K_>f2X0Z?%qwn+`?4G`xlJF6 zNPV&e5V9f-G}MVU8<-^__gwhXxJ?pbuK~1eTJ1n7lE!%_g>p{F_{xlKZBM-~KM3d{ z;j+Nb_nE3e`6`1c0UhC z49U0x%d5_H7UV{YKCgzmE-ZHP_blL&ffl>I6yz3fc{S-PLl3y67}?=Vhb~gj_37r` zKm!!C$0Dy6Nhb_FHS5|SZ~A~l+X9Q~VV?7eoltn-2{+vK${lZ027@W;$O!ttBIo9# z%RtG!GfZftY%8(kOt9o@Jc}zkuA42Oyp6&VOtn9BC3n`@zSV{oK`|8qN-X{85PX=? zKydN;VlosOjV8l3sV0{QXXtMH%B229D_6mn2 z?@mn}P|ycS7|xc>*zHrjC6=>=+$7|F7yN6A`mW_?LAMPLFW|tP6x6(6voUki+Hbb{t@qS z%9E_7*Ze+<>62gGPmO2vlKLh;K|4?Y!8J=8kxF~VIUGr_(g4*WS2^i>3T%Mu4o^s` z{Da8bcElY8-+IbX=2E!w*=K7=lh=Lukb7)#U*g&G7uruGjzT^xQ$~V4WEy>(c*)Uo z?BmhrDs~NW8`J={72xo^&vDEN3aCk)wg%i{za+HdEqr6j0bj$;hXeSmJ=kqcH{W36 zF?B3580@01{E5VxSXszMD$hKar&Mdik7-RSlIxp1)=UFp2B(XPRWA!JpR{ETObVPo z6jSoatnRx1r3!^I1tqR-R7On@-|;emK>|VyNgIZ?3F0Z@yc_(|zjhFOb}_Eb8GbOK zyB)Bt`eE;BB4#fIR=v#=q@I@d8h1>&Ih63qg!D7D*(3qwjyeweYKKgT5xo zD{i_R9J4@-&AV*~D~rvBlX3yEezD|XHOz%$2){4#q86#CoGT* zF_^|~20i)k!d~>b$_HV2m zVU6?V?_qi@N}3Hp+iY~eC}C~owLJx!!65VPw)567F<$H0WkJr-Fj|&1vj-%joL347 zBW3Vz(_?dE&qU z%e$jZpeZ}a$<*!5n9)h&%!Vz>Nc=oG==EXKN9FJs_B_#WvXB|HK|;VUC|Ec-_JHAC zqQRId7!O9t$CW^Nb4tu^%}tFPX2^RiX-r;TYVf@R=9z4ObJlI9Oyo ze!1DGAfmKc9kk*Bh@?K1lrBkiv+c`p21SL1ot>JRWMmm1!y@hdudD_QEaloF?nif+ zRxPJ7b$U)yFZks>zlUKN@cYe2?;P%zP%83FfLk*-noh>M<}Y>|&!%ilojUWNw$1~i zfO153g72oT;o}~BpGwJ7o%(F@jG?kwa6OITxysP^$2+yvD|-0V{X1_8%1Ir1lPUZv zyWh7=x>J9XNX>AcG9{2-HE`GAhe%JgheC@0-w=?)UmkiJvZE|iF&9F-C8oX;rtEsN zxqyNcO1A9VW6FQmh^g<_FoJG%?ZMztUfH?pIxpV) zb@tRy2Ax$`xnz^s*0hqSkdJ~dta-D!z}*W;kLPF~>zh$CoS!KxFNX0bEU>=Z>ous$ zhBtk(`&MM4>i{+b64YgiGo0ca4PPHSnO;ntM{4%kr2Lp@!w?E-sxAgN#4nxZi`8Be zM3K8RV>N* z_UDnJ@rJjUXpN;UxSz|*n%;+_^f)wPdTPsPBjB2=$5>I#M*W zH90Z@(9MO-8nm0QmcO%T-R`xT+A7@ARBzdSPfEPhE}#Z}>i6oL6txiu*|{FtgqluKxzO6j3 zZTR=Hk_;y%oXPT0Gz^nENN0X)96?p>9zH93LXZco5JNu$yfh5G*6HDVuKy$!o_Asb zN6FcnRk^uXFwBJtc(yO9+)m9e8p;+{ZBsJ#3Yx&3wH39Ue({HUh_~!R20sI1Uo~w} z23FG`ZA0qT{{Ck8)oYisqk2ssY(#%NkH;tWxz#MfJZHKFgmzYAm+|=+&5jE5~JE)w10dJ<^)DFkO8;<_G#W1 ze`VD>zA`(yubrcnr`KAJP_V=oB#qL#j30J)PS8%zyxh&)hr18#$M5DL4qn)Kld(-0 z$!eC&*(cLe`*Hk{*)~1U;#i|?pr|~^H<*!bA*KPu%vSR2Nhf77ud}_eIJor!nS?zl zDd0j`t*>*{UY$)Xhh<*a4*oQVN8Ls3D7psFH1aUD_3dntcaM@?f2J)<8wZBHHpwGS zhJX6u)AXxi1UKVY?qz$qt<&N~FfE3Pi87{}&IWElk=UAZJ73nKZ!-C1i>g9#u0PXJ ztF}prrY>kc%vmfFf9pGzd!HCxj@*X?6LQ0Z%ans8apjG|CKh&AXahfHsk(#p3McoW z3e-i`y<|xT1+zxy#ESb;0AOwww!g3Nlse!37D8g|xnm%J?=g~F z^S@pBi(sZ3d<54FFYLQW&t6_6)C{%czkpA^b_)!giI zs-rM!nEbBHh2^&D#Pi(t!N{FdEK0{9EvJr~jaL=yIFV)YnW<}X)+T6H-R>3xH)%Fv zFSs>iKb^8_c}eM4MaLxnw)gJuMyw`>8^+=%%V`uS5aA**EgivUA%i0T!vFF2*~W`c-etL7x_bl5xNV z{ldGz3v#?DSHqU&3LMiomOlBIq?c>z9vozWlQlt)qHgt5ab#|p7gMBArjn0*o+Lcq zYWxR=tQRSrHepMVfo8@M_zQjZ{sV@dLuFozxyyUP{!b{}j$HX7?U?rabEWY9)`rD1 zb?gxO?0DA2{~piw>u)@p9hr?@miKSBoAk_$;VZO`U9qR5SGqKJcw^(yM0#t2I60&~P_0yNZ9nwAuhTX-`8#q_NFk7t zs;t}c!XhDE1N*g{H{W9=$fR*0MV0T|4~LX>#OlFj_X9OA7Gn9Hwzy}dD_v8rb4Xq79pAyEZaEA%Wc!ejlc^S}W92gW zUMoSzo`G};rytE^KbLT#lh3Bl+dp-v#1_sRI*V=iaF9cm_Q!p&?zlb7N zll)gcKU8DOfN&xRqv+d~kGiPp<0GeQ+w-@r$qyk{9CF5cP!lp%(k4H#)sE)YUCfD) ziT!DLpttB9Js(EOiItj=X2B3SVsEe2kkE2o;4soS(z*c^{cTlH_QdI#Uu$-NivsIP z`+=d2C9(x4^Q366Yinb`NX3=t&(F)nD`1`2j05^_5%NZ6+Jw775;m~CuNt(X^f51RlB9Smt4Gf(@QoyF=Np^9L6iq6T*xC zy+PtHI&h?r=g6c}Hx>C-HhsgF9+E^7o&&Oa;if;%v?UpoWrG5=T64vrl8#LQ=AnO8 zd;$o`q%#C&B$D>5eIeMMk}=-8Kb*Vi6L*7K3Ql3oj>4FbpjMG%JqS1Ap8FyJ=u{=EUv&9!- zEH8w{oraT{4qbVfE`Sg2BizZ{-vvLuT@IlDvw?r2`~HZrR=r0Rl)&@#f1w4R@olk0 zV^W`dBg_$_bEEw2ZKFyAlc)fzGI;yt!L;k2DQB*|_D(vhN9vd(7X4?aLMkm%;n=qM z99gfFN9!0C-hDA^Q}*}*y#f}VCYQ!CLXL}=x6cJ1zF2_EMf?9G zqGt2k`m^p&sj@8|)w`Cw^|8oP1FbxKY9v{rtf4CPM(pw|)mz<7F!|{cg|^CJ{K#H; z#H>MfTrmxd7UAVuvz{ z)ZmmiIWx4-?K~Dv8nXY1D7+p>#W3!{q7$2Dwke5w2xV9>c=J4C5;+pA9S?+E#(<*6 z+-Om(disu@v-}IA-#i+%6L$!*<9lzfj%RYs91{H2&d1&@-zU;hA_BX*kQ(&uK_>%1 z>EVko4{JMi*H)1S8-Wd*D$AqPwwY08DRrOv#H_r``lk|+;K9|k6C?ylopT`CKEz3i z6K(9(RNCY7h7=qC77s{%N^GceH9HV+^#jV_L#NrBm$&>Vc@fJK8$ZPk#QbNsmp|2% zN8ALa#)sZwJHIZ3k2r4DVGmlc7W#`hha4{_Ey-e;1t13=Mv&sdbfo^=E!$1$vZVwG z+dRO=Jpy)gDVa9QFnw0ncWs0o;zDhkSkK$NQn-pDJuGBN`)2J6`<*R{R|uKGEZ?Cn zC=-Iup*TfmKv(WnMX{op3X0*&H1LKd1ZXVzvIgbnF;b^b_iEQFsoi&X1UA2b#(neqIYmHFiWM1kVQFQxh=v_gS7|hO6Mk^M z2-6aV^(ZIJ-kk`X4Jx>Ln7faDY6Oa2N!3^&iDQpK)_qc4%Y(ZluA=z6;j5h)lc}VY z)ZT`wamxBI*wl>w2;9pKZ}N&5xN~N=M4>H`qz9Ddo%47Vt#Rv~1rI#vwRnMI68sAk zmVRF#|0Anqr)#$wzUNnz7)dE;Sk2g&1&QTT%K4Gqs~ZQ1QWksI8VOg85*Y`aE^fk4 z{C+8bOm(I84&N>}P$~ci;Y(Mn=17TaDj$*8Qhi>Zue*s?{B>Q&mmRIW}cp3w`y~?IlBJp;Q*UCP?RRf|ammJ*iqkE;5td;SFKZ>1nbo8ji2D`@9A)=ij^~q9Jyni^EQVKetHmZWX9`xD ztc59=&0+Vnkn4_FO27yXCC6Ei7la)+F5+r(FpdV?!upI5lQSd+;45X{277;Yx1F=D zfbaPSiLxKsgNe9@0{!-K$YL8rj5jD%WH$czQ!qlm zl&)eqkxh!1aoX(LuQ`w{%`1o|ePI!kou84UCor!pD4xIZVh=HL7bGh7V#g!P$U72| z@A-p%`fM~{%Ds?83FLQAa{otP7q<;KxD0s4^1 zayVhnWAS=oDP--7A#;1P-+%Hje8>gzZWfK#LqHUs z9>|*G&3uUeWWh88`jEFWvoT&)LhED+=1*^1DluupOV4+I z`?a}a;44NW#_mja{2on%!?#D(1Lp-Y7ZAREXE(M7q&Q74rSHUGig$>#VX0Vg6YLSG z2a0`S_6W*$)}0O%<(J#k8>GMMhR(&PnGkf|21Dd#*M>Sa-K4ZTwmsX;xW%BJnqB-M z*}PNBj*3b=dNAo$o>@*HYaEboY7W+w!?!wjhk}}l)G=1WJe4z?d?rd8j2k1nb3sX1 zTAF#&VK9W#`bSyQug6?)*7h#Wmi?~XyjeotMrg=pLygCTugk&5+0cjs@sP`ICuuJ! z3&1Uu8cXecNO_HcwH{M-R^_UJ>n?XpCT{mw1*y?pnY3gH4k~$Y%3puQ)N5C!z7bi zN|VdiV5$x3~dPL|P^UFeg zf8{Og&&p~KRlK>Ia{d&}DAZln9q|WoN}$53D%<)(g@P_Jqmq|{+bH7J&IP4FU)Io4 z$2;|mvPnU*g&aRM)hSPN+Dw6?A5yqSp3z0$iPDFwOPR7Xzv(;y|5dRo25jf=9w5Q6 zjj1J$O0nF{{lJx%afVu+Zs0b8JP`P044V~Kkrk>p+3^@t&SD8tI$)m2&11-~`P-u< zbw#Pl4bD1T@8TROb|MuC~>_~Mn3H_ciX#$R#d_od(kRIjx;%YJc3nmAl*9lpv5*V_yhdG>) zkFahnFuGravO@Cw+SfWv&=Ykr9Ndl}h~;uICgh&No3PdSkaNlnOM%{$H0X515lB>T zN>2ki#Zl<>IpQ!OuF00tHJDv$)&#OS1%o3aMPdwCFo^}x@Fwu;auTId=;leZ=i_fR z-{XURWmm-Y5yY&$DfpNbgHD2T`2Hw#@|?_#|IQH&p^t_yiHX)_TLZClGk_q6nkJDQ zql?5V#s7vE4;P$xdN3?cc)j%2_0>jtPT^AO$}Z-))a$xIg|f2D2RxRH$qF;@9x*UA zhBWorY{p8cAb#w^Y)dsDtl%4xzu{-{AWm3t8IA+f)4*pn5*bviwC-eFH#PB1#m+zT zI#14YZ24$yWxfnSqTdfe2g?2~y2gW(HSyOrT8C)=;?qKba12oDT~XN~bdXY7=WF@} zda}lO9ty0nV1Zz;;{f(QfwC!ad+;VOWdAp?{y90E<_7l7I!EQ5rJSpk8$ARugyDy? z_Ng2A;7g37W(w+;10KNs0$6u)?9N=f&3TSq`kiVDi(xM)au!r8+Gtp1AulHrVD7

I`}FA z-jc7cvika0{mJ>bA1vnl4Q-d+H74gG1E10x-`|00+gC4RZltveOef%&f1WxmFymRcP z4^L-tQBQ=r$7?Hizfoy_DXN!}b0=sJNgb7}KckWj7+$y2=BtX57-Ksjuk8EtXM+Rf z$f7zf19c+n2tuJkF1kdV5`=^(=M3WtI#6r$NmIG-Im{ zNeZ2H@kvnsLBd6nzR**eEY%MRfQT4#-(C~*=BoMi=_lmHyemxl_l{gW^}j+1gDt&q zZf#e@2)8lC;n|BSseNZMH*{d3hcs~9o5IMe`>>k*{y8@O{F%dkjIzN?WRo{K7t$;s zoUm=n$qoi)Q&$E42+e;*?b=efr34u`j7D7c3pI5o&ROOD{l5TCT5H{JRai#+#bNNj z3lp%SaMeBAdm85oq0jQ=pMT%x4kdFnM+l$pnaEIg4hk~X z(Uk@l`XB#N!LXo_*PiDyi(2m`)BtFtK-L#qZY1G$7W9p^zq%p@^vWfbY2l2iQ+jkSUtIkb%>FTAt$MY^ z?q~{JNXL(UF*u%Np|N|1f?uq?I#UD-#`5}FUyajwmRJO9G*||tqmB9rvl&NYyrC{9 z{{b79hp&Gk&N`p(=}|#3LZ<{j-!FT+Z4E*gV&D&k*tHD&gCT}=&|eth^8W`6u@8BJ z%ACAJRQ1)&h{kv=MPsDKC+@0Lbi0&gOT52;LU?!l2avfyM{v>35{PyfG~s6NxNXWWs?dfc4-nqZ^DPkL z8pe;Q??+9X#lVB@$-}q=JVNw1NO|j+2>?svxTUBiEtlH6*Bq>Y$}-!wjXg2x#zo?> z{QDX{$R<|f=92Ev_+n?wJ9h?I%WI2|~H;phbRHSzA&7WAu zl+R`cjP!W1%@^=2ldz2aMCa8z%aRyy?lrp{sn`dalTtpHWcQlz0yKMNFJVGwipbxx+k zi-#J2)MqV&+qM@!f(|{>or>lygW&PH@!sG3?rj!@EL_8lJ=jvVrY2H)>7m0AY*$K# zFV^Y}<~4z-vJS%@^l+{5$WnNYbiGYyaQ*#fG2U13-ZxF^-ZkJ#`r};&>VMq-v8;5H z-029jDSpN`ySf&(o%%EW-s)hyhtROZH0`?w5m|r=4-QbLz(W=|C#A?R;AiA+CNN6b zPofn`#KasJ-km^KIbr+rQxc&Z|++odRZ| z5YuJh*yI-LJ_{wUCx|zZL_$do8kkbv;2oNpJaI#BRv;OT7<$L0gb{MK3)sPCu-u$y zxJ*ecx{HuNn)qqp$W(8=~4>3d^%3e5C$UE4s zsY11ICbNNm;jEnMIQY|T02g;WW=h%`(bD3pkr+L9V zs`cfOI!CHTE0lOtGsvk1{)T*B?qQEzG(KxKzH75zN@IDtS+~C0^WEF`&nJsNebAE1 z@c6w;>4$x7Zlv)cT`QE&`I*QDzCXjZ*q%_iQk=f`s}o&QU<{66aGzFU;kG3}NI2f*iQ< zjJxYw(mA$Usy<-hU8;Z}EwLehiKjBMxojP8c41h`ZiZSawf72DHump zjb+G|$@L<7qFNO&==bDUU0;c9reuV3m-uSlspjbB$9k%uY8~iz@DW9J zJQy63GP>J0u@>aCLo)T-lZGHG>hEkeJ)CQCNJ34W2xU_(@yA`LV`ATX7q!CJkQXzMyCL%0E=6)SIRCZVi<>8yKR+4L@n~ zeSOBTM6dHdI!Qo76)yZ2ukg^RAbwhO_TKqQ6YLMWVejL01vnFd&fm|lqIY=-aP@us z&@JScCDOu5C$w93!|t2F^qQP&3JmYuKQ4HmhwXbGNa;t~Y>#!`an!=pIW(%pPcO4L zqB&hB}vZ0)x8+cY?bH2|B?E z?gV#tcP2>C;0}So-5tixu=jrDR^4;zd+)uc&R2DJJ%7#g)9dM8-K)Eo{n`umdgJ6i zDkSz%8=}{PkM+51#z*zP5GFtf7B#HX2$A;~C&$41a~INhOZ5XrOx0uce!f~XW7S4L zD^sk@tEXyoPZ1t5SLCsu{+$pY5V4tW+}>izm@n_5W3#OD89L2Cpe|-BswdPn-8%!Ke=2SZUGg!%LKNutA!@ zZrS>xI4e)B_c?lDBYor?9nJiA1cn&AvSrZmHOy+d{ZTcuf&ntY`FKNHk%aq~Ae$;`1F#b6>1dogdp^=Y?+~q)tF`I7|nfi;^wI*pAer~nbV~&6b zpPa*MpVxjDYD2`_*8d8B$b(SwR*&wvGw!($SBs&m(L{3D*@$TVUX;z_B8 z1GfrC@eg&4#+87FJb4(;g385w@i3VeOH!SH*SK>ke?|Hkv`!Yjod zJ8-q0;Mx%Y#n$Zs_80r@2LZI>+npQ;SLkHYf$srE1=OT<{mOIWwxokq9D!1Ftnkrn z!vJBuf{YKXGZ(!6cJ_L{c0tQLGlV<4ki24q0WB|O5K_tXiXj43Ul z+^Oc`f~_F+Rn!B;uwS|<^>xbs-VRPrGxN|sz}ZE1h;h}fz(U!#yuz*%3(G+Ym*xpC zmK(cx++&-+oAfuA{tLqL-(@ac*Fhh&AoqyS*N4dU!CCEJtATR&rLYZOEQ+vixWaa* zs5;tqOtJY~wy0=XW+h8xcD~?+}BbR+fqswa}O11~Rsk@ z=v!S6>+IR4gE{#((42KH(VVLz8jvFTliYj3%1Wo#pAsWAr)6 z--`2leYCE&PqEotlBYsa@Mlm(j9Ucm&JgFBt@V1h#M}*~%h#t@o2*Ngg*+YKFhDQX zw}Jfy@`vP^_2qgOw&sn60uK(646zol_M`#US4lP7u!7*Tle-9>&*quId0QuMUQ81THTKAkjZQOiwS2sH9${T zMFXT`$(0QLT1&uq{%+T@{jQ~ta-Jm~9P7Q@m@%zzb7#zesZLWaesHyUdu$Kq?NEzr zx+*!jLmK)pL^OWA!=fg+489$ON>+$C!9T+Ra}ZE}zW(l~Rx!1JG%?&92ml$53QmC` z!{U)AOC%B;NHAKiO5?FQy-D*1m>Lpl*@!cAjoX~TLcbFDi}^m#<|r$8S3XqN>g~ofEtWogV3}zZR~z``8Omyr3|26n z3_7c(kdbcxSJY>bCGid<*{Uag=nTDqPhR~$eW7B?}bSM)`=oO=)p6gn&-F4nyo} zf@>PRt{NJ2l1B8I^S{iCgbH5F-!+3Blp!<38Iv6!si1a(&T)Yb%hB&AU?cz>)~akV z?oxt#*xQxA;eY>zLH_?e9CS%|bYOpCNACRAWS1UGt! zEv`|y@4=eoyRXt7g*yvqKZD1WQ!l5-lPqi2Z%Q*|2`l)ke@emw+rHQ|`0OF!P*kQl z<^`gm=Wgn0R^@KUESn6cP`Mp%9v=$s3^S^%Sp)(;%(Pff4XtzFU%vH#VoBCxXPo!A zjt838J*NWxf~^?{HiHFyx{(Huv+19+z!mC60XML@{lQq}cpXMgk#9(UeY%F$5*GoII04r>A%K-kCnH z`Bt{ASY+#=qT(sF8dmbS#7Nga@)`A7E4#Qk7_YLdF-E2fXk9+8nOewD`FS6;bf2`m zFoGuNIc1-M1iZLkaJSiCY)K))(4Of6ojWf0?m<|PHoEvA2rZ-yFVC`upJc`W@^VsT z)6HyYt9qn&`zhyke3urgKejbtEM=xuFaibV&-_lVlRau|3zkU0!Ah>n+}jLF~Q zKUP%Sqw((VDclkqG}zwJ%rIWOX3KVbj)Z$aEZTueVfz{#^-FG zf_=o@t5wNI7FqA)`UHO2FDSO>#%1QpfCT&{d8g9`_i>MilaniO?p=8MouW8SNi_LV z3_bvwc`y{6^73_|svh_EDlB5FS3yHWNVJeXBpOWZpLrI4b^)2RF+*)gQ``9mBaxtv zoV3J2svq@`)yDp+_76CiKf!+uVILpOykM+O_(z__Jx&o4V^Y39Q25Qy5lW<1bVs9} z@$6vkbhn`%DDU`&3)^as0h!B@SspQ!2`8`4B}d}xVkG<%Uw1`66l0;z@X@<}q4rW3 z6ot4EezR+1j!x3kqLvdm-?=0CR84?eXW9Ma)4vdcxxHX+0~*gE{&NDz6W6f|I6Nx2 zV_hzbl4l(VPh4Es1YOS_+5_rJm)t5Th;ficck1DapQ4lWQF9X+u;Ida(fL|MKnEvm zZ>{cDtC@ZuaZ$|Lzy#m!TQq=eGA?R>Jfhl4`ylm3MGoFHlfi<}kl{nE(FDb{!9o*7 z!1?JFf9LY-&Ul?+FW$eQ`#L)kT}Kd*F2IYQP-Rv97r_e z;eWvy-x9ykL`eQ0ha&!u@sla!Zjr{Ogv|IUdC3M)x#B#e)E`UUHb6fJR^fEmK z4A>9&UwZIngNa-H-iDBvKpx0RCWBDe6lf&hbYRw9|vb{eatT z816AbIS`XGUiY1HL~_%x7`arRDpTYAqIUmC6Vgp7IdwksPB1VG5%!q0YR1JI0U#d` zhp5QY7m6g~8n=W&BzfHBiI8WjNMT-w%CaMc>ns58zf{GYVFdI?l%fud@x|$M4^L+P zHa=tzI(xMf#k%GmC`kRy)(O)v2*1Br8SlnlTrwex1Qu3&=#JH=s7jR6`{5f_T-NjY z1_p%wJE{ff&~aJOb3VN{$t0L-Q+F)E!Xdcb)2a9>_S)8{*H5Z`eOL$iV)@y#xh?+>A@zzwR|DCX5+4quhlA_RH{zP^rhh8B zFAUhm30BsZqnU5@M16@Re2)z4D5udv+;yM&%=`BZuD$Yn4qORV#@j%w76JVanmvD(hmorE!uYF+}U1p>J z$_x-9R`xmWy19aAYvWkz6_eyXE;{~%X@iJNrTYo_; z=pHK_k>}zt=gL>g(|vI1c1^w>7bD2}%`HKxEs?69D)wbB=#cF=_uDI>X8Ulyx^S*` zu5Tw(PZv#>C7*x%>I5cnu^_eeu*F|3CP!i)N4?BJ*%S=7$_x=uLk9K*ngq-3l%L^U z&soJK*!?)`KM~I*T;F#ze2HT-yOpl_=?~(cqyD5Fvrp<0}ActSk47gLQvx&y+!|L#^~<`{=c2&e{=A^F9*x) z5Yp0!h`GbF-)5;F8VBe{Q`JY2E7g0H_=Shd1Igj+>`h)W@|$ZxZk9>3lQb0t-l6mF z%%U);jh|s%Fs^oU&+>GDWW%6^l98|bbmbugo=xYYpp+X`?~K`oA-9Ok9581GE;3Cu zcI5XZj04Un=phT)M4T%gKwY$tm)nYACsFCM9g2da*7odg`!*%vBW^HJ2-+=dZuq)? z7F||%k@EAz`$JiS4wVNJ3N`v^)>mBOKZ{sILc5-4p12(PVJp~=CScU|QPqlfdI}&| zy>}yBFClhT8g19>huCL}_4)9NQ(N6}?t#M3pw(0bJL3LA6VNVc;Xt98%R^G#MrW4$ zUXhO32v}Iors`1htgf9)E!V=aY$d?H+=xrQe5PZM<`JXs!~5WGGR5V;F|XUCG9t4q7N2h8{#_~62$Kwoe7!y z)`r-CaUX-+5w_PDyPQF#mYGIK><$wWYK)nE)(?&2*1WKnlQ4G#w-5b{6jL&X0868J z^udm-x~n*=C2!c5SFoHH{0s8&qzwE#9n8teu~|{jzC*E-=Ywb?Am|_Gf3Q||Iz<^2 z1hECqERR4SNOLk2iTy)va6t>N_%2K$kbJYqCh_78(d59X+=~WH=;r? zpj|Oqxo8uS1l@5zY&C$^x%xv#4(|0$;AN*`W9w0TQ_v>cE?9ml`dFEGDcrT6Hg&=M z?8n6|amIWG{3&BtIj#xeIimKO%E5^5TVFE;z&SrC`4;9nIug!4M0V;l`e?|&^1Q%Xs^6}#p6Pn*MOm*Y zwUXGTX%EVzOp#>e;}jMC*sW!@pdi&NeBKz`pz>O#>)Td`JP5EI&M3g`oQ!hgV|p?M zauV_ld69QhcmukECf!l@s*tcfkXlz1FT8XMEJQE;ZBSH~pFMQuN%AW0SbjdKDr#L|TKQK& z_g@7*7i6@#y8)u4wnaYCPrp7U_xp;o9m_f$rB83dk?!y+_vtil%>!iE_Or27-Lw3= zaqEEag6BA6E+eFR)LX=C zPUx&YCJh(ge~OVbjf`eN2}VPXLdgB_0p-XGgA(d?iGB;dRV4}X5^58)m4M72ywy>H zbqdfEgXi3Cud)YfgC_^&F~qYN)hpGnc12nZmL>D&xHKEk9|bqE`5+`;CST#D1AyPu zX-QkZ>?$yr;|}pK2g)Z!Z+Z$_N5^lzi2EHbD8OWKm4?RwawT|5`g;=m-I^xJ%Mx-~ zF`6c*I7ECLt5);WGm2l3BB0hp3&WmpdF*@T`}Idkhs+w|9A!P_J0YeuBW)+ThJSYW z44zy-rp?amDgH;Jv&e#Ivbvi$WG{1PF-heaDF**y^W6V7HUs(}2?ahC77G46khCXR ziN}_rz!N_nw1+W|f(+ru+;L#JRfg?wibzai1+)FdajyScj%RiK-T41xg8$9=Kj-}4 z)8;=~7yk>>#>iV=NW*`FY4Rp~j#h12#4Yx10w^bARrjg5P@os(Lw#(G>@wqgqB#Zlc&Toq1-rx@iJwp?NG!|ZL;TLZjVWJqZ&dN#L65$mG3Y_;;$PU$v{*^z;8 z<)E2l)KOTiiR5@0X?L;gHqQLE(S~NCo>NJ^-Rwv0iwiF8`m)H8%+`mLP#5gj8ho?q zRWgljmQ9Z5I`pHW%C2)EK0F3Qwi=|2_(LDsUsZ@1n3swyUcpzTThdcPGAQEO<(+>hq& zf$VO_i2491NYXgf6K=1D!1h%*O?r>tMTK%WNdwJ5rpbzn=#9BLOx)nEIvziL8e3Vb zMnWX~Is!C>n7m0^&7$94I)M>B@*qR(!h+pQQoZ?ykx;{m=fD&Mo-fxnCQS1QYK9Vl zMowjIf@2OBP4r#nLs5ES>VQZ3#(^y>+m!V5kETMAR6~)C=uTV)T0--0B_%{j$R3Od zukHV%yKd9a$+?dLi=U$OOtDztEboN1xc@Cd^{{OHf?M(jYZJ;)?RweO3OSOtwAzFu>6q@aa7Lf zItHDg_Fx8klGs8(s>WJ{Pe&w?;r?2>4z4u+W-tyIC&AnR>a8bG#yt!&eY^CISQ>0c z7}yYKL}9`JO(&{)+W8x#riS&ePT_=73)DpV+|7CLF1mF}zVtf;dVHZoL?JN0T?fxh z1Rpmg3OW%pPOTHROT2QT%!5y-XL~%uhvyFMm5Bd~%sp@Px8V_aDNkHB#9zG=ph-h* zpk+Yp-WI|$skv6Ksm$`~UayYhgjx92787|cJhx8)Vi#yo(rOc9=G`Lu zx`TGq7-D;ke?Jbi_eV!>>}~MNR?hdXY~^BfSJ$i8)TiN^8PekjQ=O3m`=80{EbM{- z(S2$oa>6oJDyryB3UC$Z`!^VqBzY=*Fc_oghIhs@=_E&+}`W| zwHZ8V&N3EC=rY&xh5K;9dkRs8<*R<>cktG^`ysXy_<>%rE0=op2)QuYog3~;c9hao z`0SKJ8WEs1BEz6AP9ePw^W{UEI1==c=9NgwL5sbzY*o)m5;AT>nw?djT3@Wa4q21st5?I-{RSAi@9hA(9LSLhgrf^X|ko#K;%K0J|&< z03P<%V0j`(`{LpbQ|Q$tVhRDq0)s4}^r*Htdm<9FFK{3z`KOu4MA~!79pc9u{2!?_ zn&~KO<;SzoXfBcBuZ-wcWSP&@>v}eToAY70V8y!ajh_M;5UBxx5xd)&7x#L=B&4r{ z2rUf=-a6$%Ux#R%aoI9w`L{P(!-eS@0_`!5e|&Fx)daB2x=mLh2j(li#Tii_$;nav z90Nrv8MSu?#*>0J@&_X!wndV3Gu<8R!JTU@Ev{cyd$m^eW)R$56uH(VkN}7$R8o@^ zGDfztv(&HI5~JXZw}^f&qe+XzWQR9PHaxg8T(f${s9;W0&HMb@WQX2+;h^YHfq}1g z4l~?sZ%R#)m@9Kt3R$E&RDBZtXvb9$P#?5ItFp*VwVGMQ@@xgdHq@j6+iTEPSd!)8 zf`>LTA7i1e150wUD}+IN-nXdL6Q!T!5zc|aXL~C7&vtF09;>6~E@mgwG!o3+l^b-Uwglum?ByJa$5Y_^~L}2M!CX!!;@L<6c zuHpM7^fam0;C?8^-D$iLC;YVDhpARXv2++C0P^U2`=<|jU4G*U*5tcufkQVeE0!^hZ&^A^v;#mGvV5@Iu>0! za1Q$!hZN5Ils9kq#5`BSP|wCJJAR9>w*Qt2OFYQAl=`m!XyiGmj(MCeX1L$}V}=0p z;iBvX_gu?5JzpkxJ3e;Ge*fxZ-9|NhK>KB@oPGYwm)G0yVoPPr=h zYnyz6j$9Jnz5JT}DR$gXWawrVsvNQt=zh~Nj6ZKd`pr>dDOSNtk}^aJ@N>MXn6oxI zhE>d^cW5MEpIu8ypEg$aOM)dBYdPQJe61*P0&3wo_e56{{Xl86UIP`Ms@-(~+g`cz z2ohh#)#nzkjq!RMbWW?fVqJ#`FYh5j!=9HX4GvkX3aIR=Rw`V~RW^KltzMm&ZtZ#( zod60KrLoQ9NnglD8}Uk44pgh@-btzUFM9G#fu2BQ^vCJ?_U1_G2vhzkD7 zTwIp#Kjg6mxeo;-T=vO+Cr*5-y5f{#sO)ZTV^Ju-SZ>a>7_V&LdwJ95I!w-Fmm>yU{}Ml!;3BYll3c1%CSK5Fu5ILrP_@Kf6t3m@v?3yTi;^V5FyQm^+q`PT+zJe>Z?yegvC z;sReJb+x1wSw!$7$DU65%X@{Ja55UXi`xjea+Z&1a+1--F^4*YMT`B_3Xp;-8$%2! zWh;Z<(T|V1IfuB(MrY$(qUv2;ZxWzGuI14DkkT&!%FxBTXci(?Vrk~`fIxag{Tg^` zF5rP)1jbiT*$;d-*wEwpyn1b>GGwXRS^6}BT2D<9mw7p|H%W<9J;JpZAiX)`pjIiRnz#nq!VxR9_E45ZRHRYo<0?|g2vnh;#3p!JfIBC1ww+S!Q0koU z2_HrhR5Bedwqh^6YY(z(Gvraj*`uX)rU`b;!7~MV1s$yA^IQHr_uTn4A9fP#?7+0} zGA>mos&q6(I_{;KQNjUcijy8^EU3k$n%w$8l=aeat%p~;`k^$quyL}Z;Q7%yzTErc zW3Xvb%p(cUUPTI#b2|$0Ne3c3$+R$Xo$|zHpZ!cgrIOFhs>>?;I5wgBdC#mrXjvkP zd09BK&Hb$luPf0afwAdZp0uyFEUfuM7TfXFXcqM9?~~Zj+}!!qyD|8NanT)IeB3H z%zRx{13r=Z00*MrUL&!DyPON3lG6QU$L8lEn9&9o{Pl@zdk;jx^>OPVZ1Jnu!Ps8* zjhTJ^qq30lSi)+1#0{>_^WXxM{xpnifLVx8beGNMs?g)FBPRAGI14DTK!_|iHEFR( zyfPHL1)rS@*kFR!_-WYB%o>Z^Tt52{2d$I=-#o)qB>KT$j{wwI;R-;zlZy72<212` zzA3n|Z+mErn&IQKU~HmpJ;O-C;HM zgB)HAHyLArH}!*R?8Qv}SS$PHP^+M87YZ)4n7KHy#n$t8t*l#Mi*HgfBC*wTW}4H- z+C0e;@?>HLH#3hdTE$M68pHDiMrX&FtjU&w#x0bB6-=FXMcAiwp~p?;Z0U!S2~-|r zrN&ygvB2}>c@9HOJ5!q&E&}>Meh4!d_#P}L3-`{HJw=p9A~lpyNty@{2OOFH|A#Aq z2m}lr72JhoZh`Mdcos%;vIxCp8V3BNkG_B5kJBtP>^leIu34x+2EZ;uXeK@T@x-(7 z7i$HH{WjrSG^ta?(nFt`tnPhR0M9%IM$^(aOEW#IBPeZ@FaU$m(#_Lh%g;Q- zQX6Cyw|HDDCJ{k?%8)#n-nhpmA*6Xis1M1THmKu5sKr^-Um87@Nnc}?&YwNfBW0l{ z6KUlaHf5)!%AmzLS-^C*7K8*`T0H8$MLS}kEXgO7EI90f#d$T_#3 zP|t)}ZATVp@su`5UMt8s5pRSJ1GY!>@)Cyj95N2L7V0lUdPLDpBmG#lHus00kWXuj z#HPRZWN>khFmbBT!VfWm&zHqgs+;UBedO8%M4SeqW5l*&AGr0?buI zZ-z>?K6SmYI_{B~W0&gUbH5RO1hFg2)8nxx$WVN@SODykIv=%XL)_R+R%~akMeUqI z1Kc}Dp9rR9=LVl_`J!SyTRymvMGllAa=QWjq0qDg56Bx<4y}?=iKX(c?eE|}XeJ!v zec)06pk6TuxQfMgum7qb+%lgY>2!L%fAz}c?v@?~jq!nx9lzu^qR?%dq9tgeX^Zng zOgG^+r@T2Z2`xPdpYv)VqRS6M)et6TBy__vQ3x?7y7p7~h)U zL{eycERO^B{CpbY_od*bkF{J5JW-)~&*Ao(TzhO219CHQB$d|z5T%OMxAXDJyz0HKS4_t4F|X~t z7m@ev-pvIwPW-|WEuvQ++=3uV8Ar#@h_5Er2t6(A*RhhJrmsRQBN+|STmx~vzFmpc zTm)H8a{y;B$@G_GEyUMx>2(^Y^2DVEE3})FzD&Pee1_=s1?pv2Z%W-Mr0dGppG%I5 zDO}OrT2~sK+W(j@4XeI9J`Z!7NLCqswmsc7@)8U%U=|`hnyU`4=-XS?E|Y1u`YmJ` z)T{CkoO6np>@&y?u4Yr$egJYaLQa5?`EJ0MZ+w&h42_i^8X9SVo~K4(aiY2{Muf)^ znJLn^g00gpe$w7b*SV~=jaRr+09ly>9PSx}uXkkHnoUWF0AW0BexZXpK-`c6$ zach}(24)`$PlJoQhnM)g=UP6sX_}E}7-r?4_Th~=SWqIZPpmtNf9?R8zsjs){7#LM z4fU~}N36doafy~aR}}s*`KR~M#EdYEAe?yU$+^sTiwS7=Kk73h>;GxOVy`U`f7}~p z8sz>$jw7WAb3qHZ7JPcx+I({WqFBnqF+XOxbQ(obm%iE53vq3&fydTLSU zCT`<1<-uZ+;_j-zI(e{ z-UM_tvkm>6PiUyAe3rQkfMQU4&HKd?b1K^h(tc)Q2E4t%u8zlDXrdMY-vbAu+FG?XtQh!b!mwAB}t2I%b z!7#NG=`U_^a;Zq>%WxRblq>H4+%T~#tXEtwi;<)mm@gicZV}mTs#V>pt8(ckU;-`;6)Xdnz%L zUB3VrIBCemrJqHoBQ=srp!?B=;9TU*r*$v)^y*y5}RLw~cr}i;}gCP~EgQX^YW1O=%*%NG6hcMY+gjdT= z-*{si=Bt(N;Kw83daTUrNv$IQ=9Br|sTcMIgwhKN&SXt=U^UWO?aiLge zGq23&a6)r=w3J$r&hhQ2{n)4Fd?b)g^%r2V8J7(VVOi^bska*b80Q)1_D~bLi;D|~ z&76{?vvRe`gG4Jy#5$;~sMkQf3gI!I()8vxZR&J<>gTOjI9!|dD`0e952I4DRjFa+ zaC3}~KsaL6z(;yNb3t+v@Gc&{0#EIRflnjMcMo_OF1{qcfgdjvqj@86t#|V&gDnU4 z+AmNW_7A@tP^2HL2`71+mnhn?lLeI!s;IoqcsePeZs@WTPnHs#XH#iMNJocD`k^C& z-JE6OjMLL{cd)(AW%i?@sg7532+!QlZ*lqTh3ZE8YpWb)CIIIL32Lt`PJ6)iFGpQ z5@K;$ySTGC{j_Jxas3G1=~f8#dx`ZaXW6@T;x~C^jyrc`0o=dkz35S-?H(nMJyKQD znlO+Hx+)aBCP|lon*5@{Nw0P}+pJC6XpM(u_CB6d;1t*u>2}=ncqVOG7n+QHoGv$P z`XwW(BEdHQIQp~Cd``ogMY^lR<~GDtIAEK>!>CouK5`qXHCIP-EBWqO0G)Sc?$ivF z2`@gnrAdZFSnf2bKM&68-Ff+x91kN^nGYv)3L&RN_q`Xa1A&p#?`KaTo`rD0C!o3Z zM+caH1P!f?inD3u_}_GN6+z|BQW4OYdn5LIa-ZQ}QAN&nQseB)}^YiBK+?0s(?a@ifMzDh7hts^zMLyno zp$UEl$ZHLE!VK*zi#>q2MCd}0Jc0`}oBh^{rQX4kh@z~>2~k0up?cRcdxTt83K z8!aZm`v&k!g9!ug+sf#p)jaiQPk&$#z0H!OhCEPn-s`~;8eK+sUxOvV$jeAy;LLzp zDJ=;O&K^tT=()67&Q%#!43)5&5i~!ZTWc8ukgq=&W-^)wy)+8@{-lwS1)IWz^YL8e zDxh?pE3rCR__535Ir}kS_kifd_2}C|@6>N46)#)7?|4$Qcq6Hh76vfnQvD5Yl#Kv& ze&}JaPIbz89JhhEn>@8JQ)Vo#YjTMc;&U*^R3*)ce`cur&Mzh zTO%YA_3XhPfed_`TGi@D@X=3;%i9`LwjN?AXbi3M@VnjSq}OdEQ#yY_NcVq!H}^_ADhVA7(jD7&>udTZy3?yuk@I>M zH~$PrvrBv9jBLd8kz<#g_<^k7yVfV>8;R$GrZZnb?EWpE$k!@HXip-8N0n#0)52XE zC;iU7bsQ>~!3YCb6 zb_MP<;}8Uhu93+{FD47wq_RaG@LvMLIkEiY(tWh$?_Hi71BJV?61tCilH3vXB8Z9uT1InN{5p=;eqhtC(1=iKN7PU#mRt} z8f3tZ(Y#X)o-YeoCcUbUUaP+PG&B}R7Xb)hiU5GkCvKQ1KG-U;8Ncx-ctcQSx+5La zOWk#8M*@s(j6rvv8z4Z2Hv9^mYdpVQ51%8-tXYfP<)fU9z3IPD+bpJ-{f_rx-bt+s zamUyHPT;ffH;uUFc+$^PgRNlTjVxOLO9Ck>)Jz5BWLbn|YHlHE0rs!dpV6TKd*Q3OK;6AuRIukx+PNPAB zC@7FfVKaS0*|Rt8#4rWliGqjNwc7fAs6j$J_`%`i;H*U1BnuSv`3k+(#30qP<;9NS zf?WjM9wCtlf9v&?%c@7}u8SC9pTc8EcevOXg}lxe2B@AKW4uVD?B%#t!JZnv^gdys5CHuuQ}y3%2K@qU-gYAeUUp7N&M9L1)_vwXiq&5m+i9?9leuv8$a9Yu7A8%Uk!eR ztD=z}^y9&f-*i2Dba+}+-obS4qi0TSt84wn^#I!ipAe$TIZ@U!>%4Q~=x1hp@Ncia zLeDebxzga*h+5ulknJfO#-Zx59^NbxW-h^)-gKvMdy;M*Vy4=I6 zLPnbu=9Z`Pxwnc#TZQV!h-|LgHf9%he-e7`(v8d}2>T{4)Mp5sY)WWeAEjGtL1UcP zy zhO^zyF5?*!_~i7ckt?%8KHc*c`iPmtXUcx=Oq9zR_By0vg;9hthi8)I*XQ7cxvvM^5{(j zfShnvhl4Bp{V${_@txQ>^RVGuPko3(zd;p<04z>&C|N@1ivmVsmw_wU&0ygrA|T&#L68w|kgMMp;UOfE ziPur_3}JA4mSj0tXXz{ee=2t7WWPjZbIOnUz~bjs+w}z6oXB^7+V_JGL;W`@xcUbZ zJ$7SXa8x#^ub^vM-aWT@t*gGJK3WY&9>$_SrPB@7d0y^`w(h%rtkiG+;W(2o=7@k@ zkE69cCbac9sFvJyEvs_DH%jq2@uwa`qWIJH!>+-KVE9!dWp{jEHRag}Uia?J={iSU zL6E*!R|62_qk!7WVqlkz3)~RBxLJ?Fw#8ZyG(Xb4P9n)R$YQ?EW(Gs3rhoJ<3wVYH zb7L%A4GmX$oUAt~n>|dA>V27pw;xvtO(INg?*)HiXEP&R-G6##J{~Uke0d{b9Pt!} zusBrkaNgvy6h8ln-|_`(K!QO;c7*2JD=o(=HXPY6wk2f&%*S%h+rQsCL+Zwz5Kz*V z)?FTEk80n}g(aUpr1kQp#FB8Y#T@*XweQWe!;}w=7zAHrMUz+vOn5 z868Mxz0TA1=lH!hqOq(j&FLvp$otbB?1gfY;%ew6FXPISv=ofGU5;)uc|ZHAGcPgg z5FgLGgun2jaJT!!dK5Q(OGD{|4u5#jTQ9!~ zPaQh-s#^Ho7;e`IuuBSa#*#;t!WZ<7yw=lQv3_<}SvAeITQ|pBzQ7h3*FGyFJeu94ro27!GkUnxI?fjeV z7IMkgmjJMa?r}8RAAw1RR0 z@O6M|M{~eRrzl2@MVVO61zY=d`*FSjY)>OHGYkQ2xm5SqD=u6ujZYyguYK_1+pXK{34$bkql zROKCGaGwTjxWoA!*C<9l1TAgyp9Vi=)CCdhEPv`1XHt8*D}KK9q>q|BJWsH_g{0y^ z#2%GRaN9%kfeOu<)R9#=4ZBnv9N(LlRmW_I1WR=FC57O_h19;WqW3Vo1fGyD{A|@o}gte%ZyknsIZGI-uS&)_D<=WurOXaZ(!bW6c?B_&>k7=;?~pilgS%ca6Ebeo8S6<$^wB;iM>_)_Vj80s_N5D z-5bvn=;@FbPCdwL%3%K|3pL`cK6Jc&=5ySPUx3A%W;tu zykeAmuD?z;w^ldR89XyR?kx9IKMG6YP#4%OIdl~0Hv!!w4z4YB#2gmQUGY_slI9 zq79vkisKV)t>~ON-I7hsj#T<%nqg=jt_8f$nRW~IONz{d+$x3Uw40LE+rrh#t@kav zBk3zzzYg(H;5JHdNEAH8nvvFcnsuuZmc|%{(I;vNIijz_-0rB*Tof{o{!L)}ZbMGJ zdS8mqO^-7tsw}qMa6xHrh7%0**2w~qOHYc+x=n;`Uymi%CQZdov0bjhFVTN2#vAZk zVor}x3#(L=_kL{Q`AjH6mo)wmb&=RHazBje8tK|}U1-=vIara%`T>YLf3tq0{Q#qE zutZ-Kd15l3jm$AmI>?cv>XgwuMy$K(OH%8;^YwwA@ZAjCN({M=FXVLwP1HRHhq zggc179ccU(HNFEdajkI&mjh?+LeA@b5J>mLHnGGwvBe!sGBxG_QX6*cbJQ3=io1WY zuN4C6ww2fQe?Jx~X7g*YN%-{Y64Au@zOko~ezFMF;{o@Zl8zaLsrbljn{t1lpij@x zN^BB0-oLOa@5*+4Vrrdk>^bG|w5UcawlBV@{&Dca`}lIs+822IUID+*uGhlnFsN>D zihLUC{Fc@4>)qWUuf@wvwQG^)=(wt{97kTmZf?ZR_|i*%_wHhHRLMQqiO+NEiHlG< z{J0rH<#CdYA#MkTqj8Wh=}iYc6KDW}ebS!ti%DItP<1frkn&?GT)FPg1hN?NPhPiO z3ph1c&pg`r;JbLY4LsfUI~Vv>nO-T6XIvxCHZoQ&OgCdIe?T~$H8WEGno@LL8^iZW zC(R?(`Fp4ADU;DY`QB!lfi18|jb~~kI%Sft@2Y5(Ov$vCA?o!NYxqFGj$YUJZTa#mZ+Pk2qG#0s|gQp(*&n6 zE;>}N`QZEldbjGc?uwJWZ(e3EeF?SI=D7i<3i5m&nw&?ur|D5 z$+xtag=%&0Xs0C)ZokCv?>+e$Ru$HBYQ!MKZCL*~11z3)#OYry%L0@R&VP4u+q3*;(?hLBU&NtD zx$zGjxLC!N!^B^7U^%?&F5JmBZ&059Ry(!(sv*FPeD9a6Q`a>`gI~w*R==YT_qTfd zRjoQ$rB2!yLyviaYU#-KkDG--Ef|w9=aD6x?=cN{b$FD5&T>1N{0L_O9u=*JeNPp>kj@ zi+i>rZh;O5fY?p_qV{%DbCL~1DSUMoj_gve^X#Ms>Mql-H$%T|=oNmPY2T2`A&3++ zq}||xVy?10epi~hI~0r`ts$-_Pi1{ByEWQr+bkmxac5s<4)XK)urGTC&Z?(4uV|Hr z2CMwRHCjq{RM2!^J0)QkHVddLpNg9m_fx5yq{=9*0q^cwD@19wCZzXRwG5$G?L>HJ z$;WZ{SdHXK_0(6J6vVH2X`LXDu$N0t)6C4r!?HE5R*G%5w3|wX`s+61Er%QT>)+%$ z%{F8ho{kg_Vfv+3(VvDV^o+a4^7_rjdqDS?C>jw7 z-#d5GGytuL7@>Hk?&M-Fz7h@hHv`Y?F8(;t@BX)Y`=z@<-HU!XA%2mLenWhWCSBii zB3PW!CbMMro7WpWeM80rpuc6Fm+_W}-r_D%OO)fvTLJe$EnIuz2du4sJW}1Og;v6U zOp9b#b!S_mHu>_dRJ_pt`LMq{Ts0(L1LrKBV+^D|Gi3a&`b+eMy5W{1jmA0ud<@Bl zN1r2O+JWyrj>9@`2S+AvmB*Se>!q_es~&ER-EBh`x}$fTT;qkcgiQpOP*3#lwydUV zl$_n*l7CCFM_kALHZ3uv0(ViI3%BFvNv7Bloda7pz*6fQfI!6P>XK}91az}@__jv0 zisja-n@)KT?+PyXBRqkSI3%Ugt)~M*B=;PouC6{vqP93?mF}?20_D3vc@A89Fq&-M zFE_Ri*wGlgsjfsKtV^sdCfF)pooK-Io0u2AspmRjl~b$}%JQ&R!!jEXuGDz#7c|4j zmUD_&jae_xo72r@LTI(H$F~g6+iztDnD%T)cHzqa8OYSB;_;2hiXPhf*L1gmQfh28 z8msI{eT>l``9t)Kk@vi{gWKNpVMx{dI2h2pmC()QDh||Had{F)v-N-xOBayz@vK*M zFSzG$2Zn(~xx)Y%}ECyPGt z>$52X-oSzgDp>|r@3F_}4PNN)q35Sj60(g)`D8paopZG#4q?l`oa2Q+74kcep?t_) z=Y?J7Yu=n{<|zya#vfN&L|EAvRJp8mc++(i5d&(WG|2CT!Lv63N7)<9fOT?b)5X`w zXP3$ut)ePIH31pd7X)%WP%vlw)~cd*J;NhknZ1=tHsAAZl3fPc=0~7Kho3J1%TlEd zmxm7-L-`*@ey(qQrImiCx|Csh3eSdD<`%25Lgd|^qehM1IZeyzSa1LF?nbx%av!{q z*j#~_np@1(2!7dLXTVXu5xhdK@S+cP!_RX=W+qf<^i^i`H03q}yhoi|2nGAA+^^V8 zEsPH>ZYRxY^Cy08-hIViYIe;6`1;WZH-BN)fUXmAt*%TxxcM~B;i<e4dmMA)i>Zn{kMzqzj$gXH82dCwg9KV}^kqN0C zC;ZJBaBhDI9^QqwRJs}Oc8{kl)x!ABmV<99^$@qly^#)%kx!klqbMoAevw85MbrEY z%C&J=FZ`)ve)6WXfBbYh-DgH%6aOmgGP=mIkx#i*y*RK!3t>X_di?FtRO7nB259e( zoXVT*qosB2wBGfVa_g&AG*>-SJxawmhz+=1VX{$&bl=^BIt%+g!sRxXoOif=t})6f zb+^9vhb$O7drJW{9h^p9!`bK@Q$MYAT*0Chyh$8i*Z74SL!2fo`KpscCJQl z+)H}TbE!SYMT1O!-y%SoC|(Bt2G<3;nJa}o_vK0bP~>>5OZ z?`frAYy+?2OGRGgk~~Ll-<@Vo>=XNY;1-7z4ZBXyYORMYL<73yx@9oh&!T!A-EIS| z>zC$~yZ+1u*>bs6>o3?$%oVA`NjI-4NqY3imJ@2RcyIr)lSpy`G#)Zm)!EUy%U02J)N4WhCUQqzuUM;z=aCu>s+LJLr znq1kK#kGGgl`8lphE=MUQd*EgZ4V<4zipcY+1MV+QhcAPBBrU#*}6O56{l@Q>gXJg zh1NzcAodSy-8N~`*~2#nY*OzqWwwzN-Dd;_VhWRzOOWl;AOrC3^i^bj(3$iEjAli) z5Y~8RyUEfuw>y!vgHf?4;sYJHS9nh5I$I|b;~<)Za3zx9%OJCNv!9Bv@St^9nOmT! z2Po%VOV5KvZmh>r;zf>sib4a6smo{2R8D3ZEp0cFZdWKh(M{R9Z~f*8)zBN9DSerl zDT)o4TOf+E9Ft+M82)8l06>7Vz?gQ>_?6);YBT0lrAjNu_!Y4K{@71VbI4VpWSC)5 z<3E}9xoN*k_&Kt8L)w~Gt zC?t|DvO>xlOyKCHMRX<2SZ0Cpp$ecvjGl;yMdIk_edWo)58#_l^5XPij$+YyLN=g+ z|4>#^LKR)Jq_Du~!~(%60ykhstsyE2v>&so|J_+v({5R1J4S1>r^wq?{%1a)>m@M~ zuT(x$r!DEx`H{GDMR8u*&+9UpQSg=ur8MvQO3cPK#FjG_44B>!nv1LIVw1laFn(I% z{d@AeaJ-@Tdrx7M>)vPS50%9^IyPN`j$c6MU}Dz(u!&;XQRUvSNsM$86TR5%+K{yR znKnE@2==jz9Se;czEcLkZZ@ef zDK^EvZrPnJeF^wMY5#8ck{>kOTgpdyWgguj4wP8;IN0&yazA>L%J2Nr=XiEBI2kJgn?e;HED;7KUr_3CtNJ}k~L>i-}flWbC;68+Z zdBF{#MDu5tEazFT)D848!+st+KAB?Hh?ak=-w+)IaPYOUK7KlyEg#+DU2oP5ijww1 zoglC5GSId#cZWT6F}e^V*~E}uPZWP=YGIg0j#Voiw=8erPah1m@qfb_Jz)^KL7Ba| zCr)ts-Eys{B=av_@-H8LSLo*!Ezr9DkrV8q1l}?v2<}t415X#D z^HIzJuOops90Vjd%|UST-8(}6(VOlI(s<%@E_A8^@twksb`!Yoi|UW@yWEMiz`$@Iz-N3==FU3Qz}9CipQ~tWI;`r7wLyJ5f%+62!Pdna#gUe z?g7%8c)E8m;dX)G=nn`vRXL7dsyR^!LR#xwjSJ}1Iq{D)8`rz>YHi|s*2>;=fKu{20&pDIrr1Z9I8g6FUagl{iczy_0 zMT^*7G~Uv372zy-_J7g2hFI@zD&1k$SY+j5f&l$rmX*)&OhtDUlb*CzT3t!VK zb>Gz2Y4r;DAw=aK&Piq)%VN!BHh-}k3T znQi@YeH`(QlLxzEZ&cAkQB4@h`ezK?(5*GFt`CTd6n9qgG+}K~P?&lQ zg;EF8bpzTQDhG|~95~0wNqE9?Oz7=>+7ys2(GLjjkJCN$w^%{C?=MS;4_{sjO&#8ro9y4f=!zx%@3NcT_qHX=Y)B9SC&2v%?xX2C>#ZAicvN|GTh|106T3EgUFT-} zMTkqBZP*F|2|9All%T)VUNm82H)xh5hAg*M&R@drPfe*y3oX_LKN;Cf2s?^uY>mA` z@1T%7^`Rs?p|MIo6xhH;+kQQ|glE$YS_5IE1wzaYt@2g$_0L14v?Ie_@-X1)es`AH z6qng74~Wj}O(~TP6oC|EJi0m*Kl>S9P7O@9iqR7GS5F->n2S!Rep;K4;#=f1RHnW3 zuddXOWVSG$kh_Hfc!v_Z&nn7uv^O42IHWV*u^?LDJR&NW-^yZrvE*R*t*SG3?)4vk zK{2n6okEyhcgG>ulYylhwNlF?42xnZH}1OP*JWqs^>0R<>+I0l6qv7mQ;0@|We=^0 zk@wdOlBMq&yDSzI#0`bJcfe)IXv8^b^H&?-T(id`;x^LR!IT@H6ZvUt$4W%B=1PT! zA1}L3eYhKZJ+F`ppBpD0-W~|eJyd|0omOvpTda0gaG77qmVgCgZ!h3XxXM39*<@oy zZqGG};zvoe$bGKvm`Bm>=!;sfO&T2pMq3`GUY`2KJ@FGg4He9}AF8T(PcS+?e-I;2 zT#5M*xX9b~{qF7lyg!FKTr$%KJw=C`wgtki@fPPu_RzRt6OjwPCYJ+~kswB3AjD#i z>*!kJ$q^KMa6v)}d@CST)Ms{V0Vy*$->mWPJ1TyeMaPUIu2ig1bJ1}{6 zdwbwM<8w)zUI|>L`HZFBk7?fN(LYtP)ZcmYZkvT_?Eh8G)#`s(Djx@r;( zN@)VzrraVk8deq-k5SgFklHc51obJG)m1vHo~BYqjwl-K&yd?&ud%X{VqEHUT=fJ_ z2#cGfJe=(gL3!n*>(KQkbBbbN*TVh}sy~vF(3pVflj(*?XK%$i3Lj{oPQYUnjl_TD z{*sd}!29(j`YMuAB9fV4EUZSR_`rrmUt~UF$0%)msNCg-o_+!=R9YK%C`GRQSz!is zQL8sU_Yh~^QL+4~ieKCVT%jM>GO$sGA@{WvI}Ak7f?wgOX_QWqzw9N6d6&Uw_saKn zL(O8USz71&pB<*M=Vr*!!da#jUu%5ZMWd%c;AJX z<+BWk3qFdQ>o4;No|n(IxAR=%EQ}g7(>(C2OQLW$1i1VP&7>FkfCr=e5vdEV=#!sn ziFxaLJfJDL(Z$Rwha5|*%;7(inGj*DKws{|#);A$b%SS5!qowGKp^$<=*_#>h3ZV< zA(wmGpYbDUdB53pct()nu#cdL0ii}ua)T!(1u7j}z*(Y17uBrWJye3$d?qZYVzk*^ z_^t#0$4!$E1te_bMgZOX%`$!bdZRJ#Cd7Q7Z^MZ;R10H9fk*=b7O7OrK4S>ldynPe zndc~6AX^Y!?naMN?O!|?gS}C9@OdOlzWoOiKJXzg7`rdJIerxqmGw`VY5YoND~Mh; zneI5pQw9VIB740YcMV%oXcP>QnS>>?Zm*v%G=grx&1r#?LVLr2HEP~kpb&$yQ;%-U zi*Q^_a-VI6x7{6^u3y-l@h7oT6iuuY=uaX$$0&QZ0rW#m*-gG$)orkqm~%rk*euaU zx0RJeNJr67(-2u#f$OYi#s@Z-t6sygD7Y+s&JF_6$U98%{Lxr85cbon>grU-@aOq$ zcpLNz%5|IAk614e4YIlzQy7~AKJ)$oZSc%4NFa?q>r=zw-OOxj3ToS)u4gtVsZHM# z2{M~_G2aY-2Nu*9+Z4V*=@#F-iLLknBG>4wH)wu9VMVjxQDNpQUo2r?7T*g>NHDjM zT%r3sGb`>*kb#HHq@@FLdVZ@?Yd|v|E`!2oJnRJZg==|7C=KOkdw4qB*L&>X@Osy9l!jPv(DA}FP0 zRMK-_TT@zcYHUn*(>AC)slv44{`1jtX*!_RZQpor(UKY(7X-HCb{Uan`~*STCxtmR z6UnKg+>ehfb#8wd%(Z)<>C#77m7IXmgKgQCWE}OQISI4N9?4A;zVcUPeaXSZ&NZ2*jyV|Gidu&=I^!4 zKGre9eWW4eZqcr|kaUy{p!NKIbldZpBH)XQ+-|}Qn*Wkmao1)SiO=S1~1Ck zdB;Hw9~ti880;(f2GuytjI6C?A z90_k1=+~kvqe@%u=^7hK#rXSzlAkGyHKVy83TwyA1*w?llxVd2z*_ z;D&x6*2-YdRJ7n4O5SJ(j}Uvg53S>=1fTasw5q3-t>-gyNzJ{0ADSSOz@;EERt zZl7hkAYSs?2jv)II1x?#cyc{x`b5Ud{e?_ruz=hLb7&SRn?`4W4&Ch*Z--p#6u>ZA z==L3Z>xQ!bSuaDhkhuGjYtm2jg&{gYq)GY z%0QPlEX%71Up#l+o5XbracIw9FqsQtsAq#4IwoGP5&DU`FFJ<&MBN#p-EY?oea0Xk z_C&+30rVEX)}CDQqY0>i0Ey1mqDZZK^twA?Ng8rTD&$kqRuK8iTOy>R2TGA5er@g{&NVS9(hF=jS6S`q z!j{|^yjpBL8IIPNH4OYyhOfYOK|2;gQ6Mkp;>D%62 zt~`8ip?B55y$_nr@4&aO4b@5NZFn<2w z_oTD~IZ5;2DqylEsGpP+mrMgI4OBi4UU`m8Xz#$3fFJ`{AEa(k%{lEI6p#-#u8|8T zb&zbD@XmW^8Xr(X?P-umnBhR$xVujAyjS_AfrD-71LbK|pD7)fXUdz+VaZA&Jc8$M zxaiY`v>i1URG&JQt46)RIDE?Er>o;0U^Z6lUrmlxtufq77;U>+mLL>5{x+k=5+Yqm zbow3go)zxBa<`+|fq0#ekTh}By!1KJHuypn5)vbdd_Y_jfj*o;Gb4915r(YaDHghE z_+%wm*<#*WW&h<%oKIF}5PNMsBn)HvsBj`RS8JbX$WN(+#LP*=P%{jl{pu!U$oAd_ zpMGev4q>CDNVDjv%AWMOdGEN8>2r$vJ7nguPObsNb77Ci1$OP5U%f8pwnZ)SH-{3( zp4OOSS0}E=)uGPbe;SJJB>-!pEr+dpUYC}j`-@E^+Qp_7QqV>r*5W>`Z1)C_g2Q+@DZHH)f8WeB?c*mUC z_AMBog|@*@zE5>qdR7)oEf&{D`18+)iNiBkR5g7i~d#x0->vuJ^(4vOhnwzkvJDwDbB%Tis_oVK~t?>=t0fJsrt{j73zay z>-sYPH^ej--WT2b$RZPtF|o~m2rYTwmQmJNYD@n4UQv9mR3%aM_JMgSJF?P!M0$^P(*omlTUOhtozMx5BXzH155T*Z;8csTRMpT~ zEt5Ce9tdlhPZWFjO`cx|<7~^u?x69y>g-FezU@%febIa>c8n!%!VA7q;#tq?^@@74 zk62m%uRGy?PxF6&&Hul|=2s^*Em2MJi{A^MO|ifidPS-E|Gp}Im%QP2XFh>SE^ZqK zR6TS_Q0>ciTo+ZN$Y>-=2Z<4urayg5_BfXDabQko!XFSULzv6w+99;N?dl&QXQexO z#ecZ)sKfBr-AX&c>~;tM>g`D}RXktJk#d<(;tgFQ^jQr!-=IZ5UMM_mFZXzLjs6|O zz-2c0e7#2B`*KgpwZ&ZxzT76YeA{uA;k}z3LKDw(Vl@%%cVLQwG>6>1w7`dJJx0`PxqVgga&^4ynsh3lP>Q`=NN`bZ2 zz9Om!A0r76z~~2Ppm0qJhoPt{T>OK+(9w8U{x^kGeL=ks*TFHf2j3{n`<&=2v6)R< z=o1DoE=HdpE8>2iqb?OSkDw8+k$##tv8`hc=?nn!CHrzIy+I6up)*B-V-V|}{ zxJJ*O)YLxFB?A~VC0+8IglW))N7$6Vbrf5lxk@q+7HBFDhp5&+k~5XNZ_N_f`C?e> zVJn3$+nHx|8V_wJ?MFUCo2EbSH6EKHT1bDbE6*=4lC#CPxMew~XZQB1n2sl7)zX+R z{<=rJmlPw~{~;hc8cHpN9IZ&;!*&M{FD@!u(yVke$8N7b;q0K$l~c(S{{9t8BaIDV z<;AORSSL$cU1-=?c{o4NvcR2>-NyOqdpOq9k~K?-@Vl>8r~d^rphEvbaJ}JJl?3g> zY5iThND>o$JqJ0{%@28;l2GJ(E;aR8bN{puCsED<_li4uD^ zjwmJhu}kLn2UB(>BZ*SDl!wzEVoY5yxqC{qANiXjS5tYMTd@a{$LDv1nIcR3hS_+d>fiSnFD__W7;~h{<{5 zYRNsbd*slm`qGclIi?dG$W{RM1&?IbnA)^?L z-Onln#o>IL+B&)teG0?yzLDl*17wSqg^DSxx(}0*+_V0w7ILmu+$a}o$2U}jT}*hd>?fHE@l zJp-Y1xNJy5^N>UnDOPuhj8XZapWk}53%&j#6A`ZVlc=fz)SMLM8 zr|cxs%caX|Mn09_=iU^ppo&73>xn{3v`GR6lD<(Lsz5u7Ct4~}FSg*1w0J$6ilS6Z z@NHI|h?%H;%%+>PsyK%|>!eA~u+AwRQG!<9G~)utHES&iczPI?acqBKMg73q9^mMm zD+xEW$!g=v)p$P39Pi0&)P9cgOn2D}ByE|!-{gh|jiX-5yoS@IKllUDaaY+WJzoqH z@S?d?PVcE7Zi*)5tzY7Av2oXO1@J4lLC-1nrn+tM!L(?ZsEh&(QfPX&4t6P8V@%*} z`1paU!6>Ly=%rmY7cnV?ANe+)Va1zV!nL<^-XeT4A~(JLyW$fpB_0<-;C*#5QiJB`iP$0OA?q55&rmDOeuINkbyNtM^ z@^-hW6gGg7M<+-P(38H2)a3aPDoP)F@A12DqBwujDZ!WS_EY8V`)ybLUkFKldoeC6 zb(HA38n)fGA1$bxk?x-H`l1S8E2lGWe9^Ki7?Mi#wROnN!L#Y#bIi)aq^~q$L_p)) zDz^x^Oknc+FF6o3nOnqW)7mqQo_hC2ePi#c>yMsSxmjQZ+k+>D-?VynwpUoGh=w|j z8i27BmBRuukd}2Aq~fO-Zd!twHxJMIbSHUz;meGv>`iQ*cVWDE#^7Q1_S)9VP*)vs zmi=|MQi&lP8>8C5PmlM%w4dc~&h1ws1}n!kJ5EVY;ALJoVdli>&y7!Nd_-~+-Rp>< zF;euGGk)r^Lq~8IQ@88I@FKhrA%8=u^rN@x{1I-~h9@t*5U$znTdvt{UD3tP}#! zYqZ&lMPlbi8dB)f4fOZ+D?&mwiGT%)MC!)WAMNLxfU%?w#HK2`otwCjpiBd~)zB{1 zu)J5#Sda4E=mAfcPIC3sKur#ZX@9*KOtm@MvJG3%qpyF9ir7}jToGI|+^dcxCX}Wt zi@Sl&wCthL z;fkgVyWT+!5fwK-HmLsvTRGt?qPy!eoLzF80H0f`*p_tKOC%ZkU-gI3qofTy_4(P0@)K{;+IZMXz4OX^ckS+&S%$#+;$8Hfg6!E2KMc^pc*DEmYO%~$?fkZ$#tRYxs6cki5k(&}@Q)5M8g<*rNO=P*t9RDD1)k$ zw*(C>5f}mCNm3-qX1rD4`@Of*G}oPP=HCRmzF)bK-+=YfMRwSvzbX985dX;>a@mO^ zJ@#)DVU)QX1eOT14N3lditGr1f6tWX-+ONS+SyTd13<|<$TIcVY*M>S_}Kqb?Z3BO zLLWwah%txY`=nef{U#R^wEl$ueeE=$)^8Ogp<2@?3+yVzP*PZL9vz-=n z|6Y#5kgmN>4jvmsFSwhhUzhZ=#cT9ea2!b^t4WU)mH`o-mUco$Uk~5d`+IuZD9@mM z&7VJ9qeBF#3>SsvjIOtT>4JlY`hhw`;gWBeS@4shU+;Scu`t`aw_nqP`F&FhV9Cl2 zD{eT*X?ygea@_`+$AnRGADyXN6HYSGg=j`x&1L13Z0E1A0>jSwe)JF=L78e&Pw}-? zgQYcw*Jf4}bfF27f(aqtQVY8!Ga0GxSDPt7eqGJ%bm7p%R|OW}1n;bN1)RsxqLX>- z<^xHq067Po0!8H2~!)D>8Q}QfTqGrag4jZWmpvCI!34fnLGt)RYT<4P?>r^ha;3aJ# zbN$5_6Qf(DNt(?SGiyazrk!5tC$hUtPV#}z>94&B>j8G)Sw>hUEZg@JH14oK2|$y> z=95vz)qNvX*weuk;TYw+`3g^xKjWRG28 zvWSg@(eBg!SK*1!th$DgeD#LmoPtEod{+fyU}ACua>fr&+8%3_G{2fvI5N~R$MxPv zV)WGznhijke}i8z04YTuVNZ| zTe*hI8MKbgg_=0)4;TRE9+!1q-xz-OO#fYS&c)Q*jDf-WKwjvL8975bUwHi1#Xm=s z^Fnh8(G`5e+{Jyg^v{B&ja+_uq|PJ_{+-kpI*ltz0U~}9sdxEG6_NWm@ZRn$7P}9v z+Rs8xxeb->Tz{n%;9u7?Lr=}%<%CA|70lGVDB`%#79L!+mZ&DX?abv2gT0-D zo;WH;T@r<5X<7%NV|CqYyE6_UPy;=W#}kI95$JlO^pb?)7oV(b2hHmv)Y4QT&xfUB z5FuifoTep2s{eEIx*-Lc1~n9>{MJ#Xi1m;=LyB{Q>qx#=^&MreD=}t0eP-abQ+W3? zkownfmorZNI{1@R`j7Hb>Vkoh5tl#bW(b79cXfysxp!b(ifDEzL){eDqsA>3*+lv@ zK06!XkxZVau9Krf!i77tO$v0HJp=06pTd9XCFy$VJY*cp(N^2#NoQFQXbys?JEw<=Qj24a zsE2|KLuyyH$?R=1Mcs`O4!~OML)#OluEn5lJRL5Nw+Gx9_`Ru0=g(03=q5YmoYVFB ze5VW>obsmPND4>-M5+0brmtk-DbCK^2+q!fdc1m6lea~f-tgH}7-@N{{3W!m#sZHy z%u(+BWfOMx@(`c1TVqAAl|zR8)7Tz_P-D%M*4XgE%ThF*P%d4W!Is-8>y}vUVV4R= z_MM+yc3|Q@)KHJqz6pVsd3d+z=Y?ttaKVBFT@E*^ZZl%|~GJuxif|7>Da z96_wmW%GOhm@$Imj!0on5cYtX)kh2k^kDveDK8YJb;U_0$oAKw)pC4TvbC=~hL2OJ zN%uoK=3l$d!u3Uyzk9gQpQB>`o{8+gE^lg%cAWO|QW#1PtBl;+hc%!6)90d?uOXQ? zpPp$1n2^hu_}cg)t+UjQ1y!PI71JXfzx(A#!`G;+6}biZQmbVxaiY zM9{j=ugo*@l~k0E-235x)~D}WP|V6-jejhJ@m0J4yOJHb!dcb$&7LUfp@7GCsKM^G z+^?yj-jmm2s-@7#**&XLi{69X*m&C>&pz0Zusm#arFTd(pBq|O8PM@XR=6>Hxv!6+ z`Jyjnw%tR3eK%dw9B?tArZsmv36(gvBCH2)JxuQ`R$+mv-vqw3KWpfv$_Jj z=w{%0H@?hp-V=;{eqZC*Kx}=M-D(rhbI^@q{reX@ zB6k-k9Q%R+66u`So(2G7vLyH~MQ-4`M(Z%f0$p>3|&n8KG04stkEN;b<$ zARVy#!xRbT?w)n>9-W=yStc1#~N>C795tVk#b*lnfF!{ZfD*`Z@=i+nhO{vA3v*n#(GEbO4brl2w$1$ zzOpB;CpFy5$u5Fm1JiiMuT?gHk?3(k^&7vJzGWId#bLoYOl_c`$Cw%a_Ryz^eeQ6RZe z;zxZe zDm^vl3?(=R=QB6BndaLNf<-`ccN-^gQ%01pK1K_mQNA3UkbPxzx6UDwlt>9p(bY@h zARJ{4DcWQe2g}^S_e77Df%@7FLL(;MED2J z)5tUz-x1&~g0^>XI;1@;k5#-&*z=oapC2BZsjtN;62rfyfjvCByI=3rFF(Iuhdw<% z<(;t{+q$!l=P-I-RJpR93HO==J}yQhSd+23uv9<2Ss6c5fuk?@(L<{vD=t1mjmjIq zHuP7~W35krcOsJh5{q|XytiJz!`BQ5uFj%akI$n0&>HHJN)MyB@eDJ4fMnb&<9A8R z9p|Y0D?$=~G{4C0$fJVCSAs+-tgl4ZKpyKC^KNiRxMnYv_^d3WB_~v%zIebg^2=;v&l|>ah2mm*4f27iMIw}q3Y7_%lxCGrkdkZbxaaso>;Hun$~gT7bI$#F?Lg2?`Zv<^7{WdL2h24N? zVN7Q&LQCzEy=G6cnB`?@#1}1WTIy0)7Vf&962)6^2U6q^=xqa4`wsllceA}yv-Esf1(ymoO4H@9>L9riw*0Yv1d_$2< z!8gxq3Ka9mN&3d-&alr_uW%`TI$M4UW=p)k=dXUG>9|4JKPph>rXM*~-4DB%h{GWA z;e751n#rdia$@ddGX3TKB$#|J+BPn2H>&r;t{tO>d6a!#k~i!X%Yp=~%_SMC-@LbA zfpivJ>}4lkiO4%rDwiFspJ=VeJrzzx9(f(U6h84GwDrMd(}mzAKz!tqZWbD@U;_27 z^hDld8b6kU&b}~5c9Z|sx&JWg)hEPx0WTwq_xY^UY~zb^BAcU%w6IS}kSr_jKJC?!FMG|(!t7=G#KuS- zw34PBzN|okpMdvc`6V`G@*i5dtvu-$G06ZCtnl+`;sh;8`w0K1ipOb|6}0HF=^nm& z&239aGpQdbE`#T9tNfcP?(FYwu2IzIgt}J~Q)hhkbq^O->!b5m^sWFq_B=uoX$DPTOQW|sGU#)bdS_)OqbZ1XjX1{Q)C1v}bIXfl;g9|GnW1n5Rz6#xu zm(^@T8>jL=G;g4%^CqjOu>&tMDz$u{YD;sc&SAb5(oVM@@{LM`9-h=W-g&kdV{+}% zFP``tk3>|a4G|68-iE?rD)cOOR2oYL()8-6Z2tqe+wM^Njfs@+$IT^cZ(pECQudb9EUdLC_Pt!gff zi|x<2j48=}X;Ck$xOXKn=z%9r#&J1Oue4O{d%|IZ!%oSQ1zsD-CUkN%1}RBCv2Usi zpWaZMn{zJwo$M5;L3r;G&pWXM%O{F#(M3{T5~1>Mb9nnYA8k>ebzCKwp0lEgR$KVa z)HBbJ9kpR1Cn>Kj!op{w+d~p+3|A;JfSD|UgluhO&`g^7u0yB}bKCEwf5M0HpYZu! zsThY?(E9V85YnTQBY!gUF=h1u&pW!*lmf0_Tbx>Xnn^{f2sOmg>iYnODu1~R!fr8ONvs+RzozN`J;cgChnRH`XvZ9a zxa>a@WU??7aRk&XH<$0$B(Fh}_0>P4|7ptC26~A-M@e+n%R5Ss5g-t~!Idlcd(BKe z!V`Jd3tB!e`weMn8Roh|wJ>kTNPQ*2UwlSOchexm`iu6V#TLe3WLpE8l&?XPgFQb! zVUW%BcXf-DmH}h{$Q+}JSn_y7OPA0go3!Toh1B}3grPU$;^J~G=tvYB<4CQwUIEh1 z=4OfX)fu3FTbYb$ix!`#sv}p(-B(){FV*UbX0D_vL|32S?ui&k*s6sT*$zIwpr%%+ zG^s1CRqf-ftaVwKb5bp@w|llQQw>zEct1Ax(9d|=5_kWDr5<)=EOl16CbxD`u~LIk z9o~t%uo$=q(?CYeVlf#q>AOzf=Jz0U$|s($7$;pp3j!*851toqSRR$e|Eib+#!;bT z@ecHgGW?n2GhH(L(;`DRJ@sbWD-oI^>CTZFdS+252c|R-5mzz6fIOAp=dit%!WcRM zv|`f`z5p{l%Yt+R14OXhGNN{SvWe|{lE+3rg58^tMu7R^7;njn13NJM`ONS8v9o-< zuEObz(AHL?V zB9n7Y+lHYE747?2=lJ>5+z4FVl14ayuc*X{Rz`EDsV%7g0IW&8ZRSO(;0D{aMkJ(fM%34M&Yp~&(a zd*Rvuk+a>`E-U63Bbv+A!y7Wgg4#>T;%SY%7sj4a?R6+-^jz}BZ%f7mE3WWKOvwCx zj^1BGVsa+RGa)BeMz*Ojy?=%loMiTaZg21n@BXlYB$m-|pe1T(OUUozZF+ojp{85I z;~_Sl5e!LI;mj}W7Di4-8Rp%w7`3bH1m3XAM3$$#SFrd&Kqb9!#i)7xvbF1RXr8jVk(2&}~Vy zg|=<|ka3q}<&2X2qwb5?9~%Q@#b)19Q$u#ggIJp#vZ1}WxY@ydbc|0u<%fwwJ~Bk4 zmi^IwgwBqdFVV3ovCf;&;+%u&&fJD?z&4kt<4K%HBfH!h@xLnPHt%ts_l-GEI-j`WA%i7elFdrJ+y0_L#gvOaOG`DbgITlOXVS|myGqCiSM6mh5Msob3RVeLFy>v zMq41H@RB*ToyFeL^YaQ3FCTB(L!i&}%+X*t?{+LWSETmg04(7ROm2=Fzd#Ke>a@Av zX>8*kQ68Sz$6r+lT@%uF<3Q;@Z1qyF|8%*p#~fv!C1~GgwUAI#RBGEgncaZCJtpuv zhiF>TLv@6Qw!3pO=J7R)Y1mBa_#@2xvT$LR;?zr3M)#G#?^0;`Q|hnKi}zF8@=`N) z=XO7-yU6svFA*3MXC}(=f!bDhtm87KH(8nz-dV`zau%$=7(2-=4&~^;n1mCfG^kG>gAHfa_!H z^R2-91lB?5ZOt(w{inYBx(iEu-#Y;4E*M5#8qubK0RBKG5zKZr(R?O2<$hbA+CYK+ zL(9tOxen#|`DBh3>Y`+wgG5W+9SzIBLQ|GUo(IGA&EA*6M^}9c|@*o}@smY+m zU+?z>qou5#>UOQY8nqPgyNor`yH7%z8m{2XKE(%cmD_%nH5%ilb&0<9)1_JY(T*q6e-?CE15iGGhgVZRuf{*uW;w@VBuT(;mov#TusMkYyh z@-Ri;jqfb}8@3XPoCH9vh? z?-JdboqON9XS_Y|CP>c;s$rTyWvHE-qpv1hP^-J6cgCMTj%?oCucsZD&4yIlXhVI$ z4OKz6h3R=GA6D<%Hv3Mi>dZ91O9iQ&rO$`Ua4rh-IiT#MzhQX6<-|XTpi_gC*vW9Q9T(-cJBiji0fc2)D*uPQuZ)VLTf0OO2oOAIumlSp z2yTtLBoHKMa0u=}8+X^B9Xzs|(!$PNo2@rMU7#*qkm~ruUv%ZxS|GFknDWP%$r!}( zSGX10qmfR$G-7mrG)wnhuk80z2?f+l8U9f|_mQ6Br__nAE6jo9pJ6at`@9r}p|Jd- zQGi*w5+4{zjQ;WCs~-pmAqRUGc{f;g97lj0w%S?PtjNi7CA3kj=w5BVRm6q?wPR}d z(%(2?l`@R?<9;|jy*w0~@MbJ|9g@Nr{bzG?v#mq3DyQX_#1aeXU7YnSO`c)*r5G7R z%(er}F4^Z7k`XZsuRPD|kQxleUN*dzo|{un+1*P2a5;NTHedGeLc7i(eko`Lo0-bP zzU6Kh+CwSr!dF8IB^-`R3#~N!;{4o`>!=$Lqwv0ei_@8!Iz4db?D2_1ZD^-&IoQ(M z1t371W zUviZB{31`fol7Qhdl|NTJW++MNnqVAGnXYfEIWv(Q%>??4+E6(twC??vxP2yqSY5r zXtyFEgJ+H}St8w!4YqNa2)I{pcQt(C?kua6mH+smw}ie!{O@HR!7#~2Ejzp;{m0gJ z&Mw$(8fgX2G^S~hOlcl$k05cZmVBOQojj&&Utw?I(z;RIw3H*j)tAyl<&#;PHu+ht zw%pT5GYcp8T73X=S~^Hls3U{@-S{m_lOpv6gjD}|6GuQ@fDm6{hzufgS1Z=YD;VbD zPAloU|Bg|(o>riDdiQ@^^Po$pxc3A^;E)e@$oabPx(hi1Zg`t^hYK>ty<|_oZ_@vK z3MB5bzI37b-*gdoG~v)Bv%_qjv6IO70xos_XK~vru#CIf+8Zn$8jx~ z8>Qa}=TI-qjgtto1u{Nam6V-?o)TikV0nK;K=((jNqtKz!!s67SQHY=*w^Z22bd25 zX2Y{~A*nysBVS0#$sic0JmQS(AI3dXx)G)_;#&-vjr{fqGw!gzd=zwMrUxsgyw89% zXaw%Ix4l4rDeS#^7Kln~5J&;(D3}f1IS}i~s;f7O>gK$lS4@;6h98g~iO$fVGIEjC zB=8_Q(;}^ijCp3{U)q>ogWbR@-7kZaAa5F$D#y@86r`j@cF_};K$Fbjf}_1hp1ZV^ zw~I5JVFW7?`FPX1x$Lf*(5+v6z{EB9bE-0TA_>j+@|9{|OC5~L?pKGG&BD@--=LyW z>^~D~9V9~O$cf3_R zi{M%`2)0WpL=nm28%Zc5W|tCv&%fkXTXpbg@O=7MjWGp{~G9 z{DBj5T`y~DeIp8k5!c$_%u`TeopIyfM%d-B5H)I@{Et~7bG4DoYIBpZ$JcrNGG8Rl zw)%Pc91Z+1DCQcm8H^x3t+DD!4BSG`sN?N~dp}a(F`8^KYq5n-Q_?k}2Cw8AJ4=)b z;jvWLrKoH@H6{?2nOG8i+Iq#q>KjK`L=RvNShc)fK)(p&f#7M{$GZg`izL)!oPPD- zKsOk$I))*7QWq5~quLNXZuqq_{L(1B(O+)8?fvP^@Htj_Q;d$b0moN`8n*WUcuems z^FHYK5sZ9zuBi}>JMj?sPYC^II->(OH;up$fuq)kDX%wJNy&j4sqnutSjtVeU@q?` z;ife!h~#ECGV#5y};_i{K9$b zw!5w;G_sbao26^XdVb~5F+>N&Ysv4G%olrwJ-NET6)a>phtUD+`*4L>cYoEICKk2K z@xAsW8$~EuBvTjp#yV3(>+-VT{%$9|`YRM*-`X*a&K9333|tHj>Rzd|Zc>0<^$D=s zV3@Q-6y^rwmX6;B`&zkY6sEp+%=7)0i9;v389e;;HQ=v!V77Yrek!ss^DNdzXO9q_ zERVXL3cnYFa)`(489A*{c@-xWqu%C`*HVsdh(uIdab^Om!KadB1-%@`8Jzx8M1yy@ zAFqECKv4J$7Qgd4n?+p%P8z}%E=8QeXBX{T!?8vsAv6?84fxV?c%;htJDqr`v~E9i z_AXEq0xm$dYM0=RK@^9Z7$S$B$0TmrT4Dynhg}p4?WO~CD#x{fcpE`c2BSe6MF~T< zH9mk8lNM^Cgr-__?ucbFCJ1d8b~QF<8Ln=A%iB^vPjw~bI7?iQ4dc%5XE4$%Gdeke z4hyiqF0?#)fNjBUm0hpyboLM)TIbajeRoS8q%^!Va=;|u>yP5$;T%u;bHW3* zs#YFxagN+A4 z!9PeGQKy1C+@Zhv#~%IkjRqc+s0-L(^*{aG028QN*%Mu>eu zj7>|MD?o*p6D(2mZn@{K^qb$!4Wq~1dxz2YL%faNokLe30ckN&^&IkhdzIX94ulFW zr1Qkg%@qmiQ#vU5;#m*)%b0g-(W)4=)68~Z#n4nYy2HnI1GHTgQ3$pPsi7lR2a*dVPFj#wdv!EPT^LznA|NO$@bI_B!DrGz3!OJ*X*a5c-APD2CpTUUxNi$z5$)+X^T#oL7v zY1v0tJ6XrOnSoJ7fb+|FaZxyymR&~9^9BY71q+ z*hN2^xsc*fFeraI>o+Q{!gnmu;zvYrN|}w@&%p-jg>&Rnc<2`7k*^^l+Ka;chI_Q7 z8sbk{Z$Kn1KOyWb!P6zblPYF4ZUgEk#CGHnuUg8~dvpuw$;IL1e zdiqtvJ9!!CO8ySH`?`RSE4SVjgZzsLwF!QgM*o5SecaI z$Q#0DSrlz|-Q5QG=Z&;p-dV4NwB`MA<)wpt1&Q8HNkLlKgtJFgi8-sNCLuli|J%uzxFo?cM>b%7!@D^WlI3^IN%bnCy3SKdTg3>Ys_%6Jaq zREOnb?%ggx&lxTyVKbaA))Gq=yiI{=Mrwp;0R&*6SiyF+1VjcwfLHc$xc9%{ud2 zmz|Ot^)asEX=QGB))iNk(oUys)lr+YtMLdnucLQtn-&(u90O6;EQl}WH7#7>UV@AA z-f@bCnbFLv{SKl+#ik(3KxdN74XI4KFK0chYx;FXu=1>q4Rb-UUw)CGUH!U4~4>a-4;jF)Kf#!i>)X2+{PUmX1y6DK|= zDmkoou#Q+o6g-Cr6c!OS$NgM)`3_rWvX@b&P2?vA}ghAsnu<0M%D(LHy-Ix=J1wF3(L)$Y49O$eL)?ZlAw(VG|B!(hb&ty_v@A zmsBtLIKN4ZuRfg^2OI0)+iTQa@_8Es(&r3w!Z6^sdAuw5{ll5TXz2pHdQqswrdo8o z9hG~(I@yf*_->Q_?1bq#4qmVyLKR{9COM|4PZaud49yU*?dj)HF;QlmkmsnzD9wvX zk1n%#2%p3BbZ~)_`N!p*i_kkXMObQIfg=V|I!g)1wB%N@-G4J?Bmx(QfQbQtiR{Dh zP{&WvQbD$ic!Nb!5EzLcJ8btO+>ju}m%3}b@O-Iv2@F5}np%>~ z7Y|iw@OGS3FXhCJ?i>C$yJnC6A5Y5wv#Hy2pjQU;e|oizb%{B08`~7l__ISH7l>|J zsdlzNo_dJNttjPg)Tz$D-Vr<nT0hchcbn<^|;!KQ=a`E8cyoxClk18FG_el~yC+<39z!=UdoMs9 zR+vvqpyOpXOs3RP zQBk#V7x(W(VZ7<%<@Tem<7QTzrN62egawqNpS{QT#4yNVEPb)nn)~bp!AuWTiZVBk zim#s@E>4k2bkvb#jLiOx2d(VEx5C|keC24y;yho;5#^P9G$j_bAq1pT5Mal8^9z549PnXcSlgGI?2(OvXK_DBr^}?!PxwwHrId?ny%S!kvk{HRv9b zYc!Xs`I2qe!!g*-3a#ju=y?(#>q9wx;nXz{9kz88s+Qq_9$qaZg5Rvf=cQp{!v!&U8FzFugvMuDGh0%$t%Cc0Q1NS-WAe6h6|d zz+!n6OI3UXiUbj;F1pxI;13O4>gO zi%en^h_{E!JQLGj*U#ctCeRdBr%Mc7w;oCT4=sS~$h-iRaG4A+Z8{iGzR<$e@T2Zp ziTD&Q{}a%)xWOcUHYb;dtC9?}{Ji*(S*{oC(lY+2YZl@-cFtOvVef74ygRW2AvGiZ z1^gVp{C>Beq-c@Qw)|D9VoKQiYc<6!_VFRRRHe)n>7E@n%O#H(zfJxck4uA{laX~q z?N5vp7afrZ&)q(&E0T!M0ioS{{Lx^A9sP4M*y8hI)YxoUCqF=Kb7{Qz;~Qlsu++QY za7t8u?M8iZ@^ssAV)bNgJyaQQa_IIhQrAks`~+_j-%ehTegr|6ICfLl=M8HJ0`;dD z&F79t-*K7$9HxUZV_366T_0>DiWFPUbydaO!XJp2!`#)^K_Vu*t4SuiYv3lK5rOVL z^_j}&2ev?1U26W5bnm*wY+|&jD2^(A6T(shj`Xa5)7^VrI9a4fw7ZJ0^%3wzrliE3 za7MTo+(u~+Mtq28m^7PTZ6z3K4T&^;pE14CH$W94Tu~URNiHD%RzND7$E?#uROMd7 znz4)+Jrv+y-e6CzZPK zIw0w@FD!k*Elj8F`Zpr?MMCtULd}+u#8V^9Xq;`h!%ijm5ncE0hjEh@rJ@&$C6JKcJM6QyIrQ~u<*cOQhxCE#zG)&6` zC?pRLYsrGoL#q}w7a32-4bonSe@6~BRj#HH?wyA#B zLrvRS|1k(8reLZlzA{~sBo5@DKdH@7?TU1@H4em6H2`LLmKVaV$8%h!nCtxp5}=TJ z9Xhj6Q7+GO^#&skf+g1;i)1&%8cC;j#rI5~u2{a}-=cb^svKjF{=OaFCpVxzbZ!Ya z3KG~Bq*4nkr#|B%pJx^-QP_a3K5;2Cbq|QP*}p6=WEX&QuaReMvz`EZh1S+OhcIEnpDVL(L;SV&ReO%koj*Zty0`zPN7 z@)C)Na!lxK4L<+pFr0O}_|})zf3i&s-}e#*BLO~Ef4k8?xF)o|!rfBrAKkwT(f|6; zmSXeC1^@OwDiT!dg~6AUS%_Tj6=Bb9*F5qh`PPZBHE+nSy+mc3On@oNMAcI^oEhH0 zvnL%fKJ-iVJ;RCJB8Q~rc_aaC7wm};>@k~Mw?uw_2oOU7QzkujFn_il{#z*lK05WQdW?%j_^)RmfJ-cGmD-l)Dm@nBoonzt|ghi zJw3$gt`oy7G=kssJM`L=`-Fc1Y<8Tw#HheVNY81V0+A>vy$3W&2RMsgzG4S&w{_bG zZAOsls;NkZSBFcLTxXH0(+$|bB3KV9-pYCPfQJnB&5kGO+Em8|n)CMBbKpo}x~7hz6B#VL`#3{j8nySQWnO`5oE3mu1w$ z1J5_D$VP5{WLG&}xdfo2m^%F?(c2Q2Bi z%3t_QQ^(R<-+%0P_JHr@sEo>+PaCSWC#QI@#c$`#$a%Wwc2@4}6Ziblk&PbK)vz?B zH$N;td~{|r6#F8soU8A)$+tbq`*?7e$|#SDUefmYT-VE_&Bu%!#|nJe3KP40=?2H3 z7kDa(u;Om28Kh}HL0A+fp1A}{Lnc=j=0HphTk?5t%M!2`3InY4$WdCy4~U@?J0PD8 z1M4d|Ch0u9}g<<|lSJnM<4{XlULVmF^FhZvwbEYP2 zbl^3W3U%q@Af9?g-H+I^&Db)2kFbwB^hE*M{nE^j@4STU4sX|+mav{Ftn_hqWNyBe z)cnMp)Lp0>trmk?-aVVKTy5y^*xYREW7}`S5L|Ulko|A>1JKhdN@JfjsSO{etQ|@$$o6`L# ziX3jegpBZYT{mDZeu&(5L?6X;Y7*;6l=$UlO{&d5bhM4ppuunJ;YhlAywT26fEzT; z3{k*bZt=-g_;&8fIzD%yw(CL_!qqe?+gOIGj+0_>ezwC~l{PQKNS2#Y2Gl&L_Agg7 z#dqt;uG-vi=3##P~Yj)2EiK(3nDObq4BHOn`N;T7?9ALuB}COhPbU77yRzG z)**Vxe~2n``-tmgy#oF<`JpACX}-^5vard%tQ{`(r9hX)J_PI!w~t#z%?9N?8$r1S ziTP;vYAg@mi7=r_6n$;4*LCZv1bcbr)zZ;KVo$|O-K302F> z`(+D07pw~X>6N`P3vr!QG%5RT(qp1cPR9M1Q}UT4sr!AJT2F z3>>#G=Y=tqexi!r6`ftyD7xKtJV>j32hH#X6yq#a<1?cjU_?spNf93(uJn>$HT#^o z+1In0QBC=}gQ`Q)>ou_mU%MkSAG?GAF1SZzqb~ z<**=nyey$~Ak>7~^%$MKW!D5P%rAK$X%ZMvGt>|YhRg=z!F3y|dy0(S-j4j36FDgJ zIBTe`JY%LzNrlf+DgwE_G?^Bxgm4N39z|oOjyE;2boA+lc}z0st>2&N?f~LfWGG(* zm7UmB*$NRIvtA)Nivz!N&C7<9Ey}8!>ex$pDkJSc$z5S8P0-y%#VhTQ$5lyS!ok0X z@lfgRjHLNgS`Ep}_C{jA)ZEs6z*|@IsU`hfsZ{(Sj=;a1_`eI7*M&{lGC8OilSGq6 z>?ZhUW0FpzqPk-{(o}u3iVud2ShjQ6u9s_xyBVccC>tkGmZD5I^yRzn2T)4P@(=m+ zsxH#;GHJ^8&PW^#=w4EK&pPNi|2l?8^6SH|FJ{As;szW=`UdfdpYuQe_U83Xj^7^C zVORb4Y5#s8|4$?2U4$4r+HPiXFcEJ22Oquag1^7qEh2EsbE)C8!^S_FMcYR8w`Ee7 z_HDM&WmWBRnv!I*m6`ULv+>yUze8UR3G@AogwNz6PlK#Llp|g%yg?D~EiS7Q+vlw; zVRou&`1jM98qkT6^ItM*oF~g+q_W90*OE1jR`Skog|7kO6yNoeqdF8nDv^0^&L=tTHUqrODQdtz>6n2h62pav= zl|48(!i5pgg2&!aUET(%lBA$E$@<7hL*zGjxgmXphCD6|=2mk7vNeQAS0633wZh{o zemVd6WZ^6%2%2MowoX-k(17(3QadNWK}o}yWF%5f8sjtFONAt zs_Ka&?QEs`okly)jB|?O))(HB3Mn~FAf?g)0?`hKyW+*;UBjK~8zb?~U$6Fofb+WC zoD)@SHMKViYI{<3p6N#AEEy1<&I%ks5hD%~ytvg51bCo@Hc*yGzDE$j(Y8v3xz#}? z3T`(-M`AuZEpjNE%yWX37VDTI60mf;KD7nZbu+MWZ=uPuyp^m8%o9^B`}x^W>N5af zNNFadf5YDpA4kRC@z<@J?)Xo*8gAb{u2_TdcJ3O~e2#ni)p{(ftwvqJj6pFZ^k zn6F zp<35;A74vN_WRqHzHg?aFLJ1O;NrxXH@yqBUMvt$n)Gd@EmL!AosV@vTu4ggnXZN$ zw)S77HM*HXT7b8KhajE8M_Uj;kDbwIogR&DeCOoq7j9mVrMaWnBQvL(YOwGp zV5)#=Juh2I)&vJ$G}-Zipe15kkJkUdn&JZTB}u;QM%`E*?sNJYGcAN3q(3dWC$1MF zn`MyQ6#HZht<1Jps?uKXqz(SyPnc#h%W_nwa}(_m`?A-+b=weR@2LAdKataNFXxEm z4c!3pb9-}cj72iDJo7iTpPAY1#?X~F<-X`J@tN_*q%6W~ArSD2JlsIy;ww_PT7`Qe zb)CwG;Jzebf!mR0A3Qff8-3YDZE4(% z{5fXfqg|?t|A|kE@u-G{ZWF4>bWK&5o}p=_!DQl(M|nrNyO{p+qxZCGwS16|XGCS7 zNU9>t=QcH3cu#P**7`<8EDD%{yEQDTlM7cPeV}65w19@}GM*cp~?yd!l@QCUAO};=wk31sgkQey1sCE_Dohl)2|tZC7=L`Y_a+IZRyaWZ-4$ zz0GNeoW31Eh`J}=CPC?!G=NHv=u$>?gNb3#G{qCp+o)~OomE;3;O+5Km)9}Z;X|H` zjH6(QK;0ij2`R`kvV9-OcHbdy zPz{0BRO-mKA-7?(7Ut`x-K{|3A6^U+f83%`x5}1oFCF)*vD??a02`9kdn+4}R{K`m zsWtuj+IbANB|E#0tF|#)o&$xQv%tvjhea{R&SGiJhEwM*U$;U__i%4KNvK5}vfZJo z8G$WY&kr6(!3)PXlu&X`SiFwujH1V}jOED+gG646!9m_g)r- zEeXhh?xdTWM2;;b8QK`t0ZIdxiXNIlc10cF!2n+bkMhN1iT#c<4A7piJfm1n(nH#5 z!Lp4BefaQf5X+cNXM(swX|&LunQo^K;e9W|*E#G%EAe+?y;_mxAcHkbl*P5*yhTOg zZ>+HPcVgW4VvXp}{EF*af|+%QazmfgJOr$qHc(V?g1+8bs5&Y8Zl&4h$z>xM=DJ1d zX16F4RLFF}k3<*gM;`jKP@T=wj5XAM$S-L~;B0mEscG^gk=}UYd;a}Z0#m}A4=hjr zYL^tv@`F{DAH<9w#U_ccQ8pK(HZXDB}BlMlKSLmKZO%}friB*XQAxrY*^G} z_qAekfU%wtqiWAGcSf`VNu$sX^LbKT*iK$s`MOgjSPeOpB(!gX*c3gcqLw*D8m&yg z$}(QFdhlBI39;%bM^vi+dh}X5FrQr7Y7f-kM?Z&!_A5>N812)@d_3v7^*$9qDt>si zA5}_ecE3ndWY~4xMXRV2Be;KS;K!-vqF~|d@OBws<{UMAndB9Xt?>Ey<2zwDbgs17 z?xi%4dbqHE*drN!h(~66x+y+ei#qf9F}ePJv5P?i(34_bavxy)X3>@~YRXx=Slva? zyC}Z6>>;^#1A9{R?s*4)32(tQXwq&>O2-20#ncr!caq$NwZeQMSUCeACDJt7G&lRrVX-S+L+k{K&=B84H6BsQJ|b_C-=z6Rx)#^v3@v zh~p2oyt^CI)=#zr57zE_6j>7J`SrZcFLYIz1%Qf>i3i9s>|pDHC8a(@D;f59)Af#> z7%wN9)dQM$0@{0kz>?TKU<00czd?f@SYT+dNvV3l`wsZH7TEcY+g_e%G7uR`+y*th zp6NLOuM+{yH?2XNOTRw7XoWR5y`3)g0iv3-s;7_AZwT72JUyWPc;)l>vROTZer@We zbfr@K&Ue~P<8Z1%A3Nm?F+{%V+XQF#l0#2F-EZc3k`+dFe`2YLwlp)dHO0JzfUjnD zPg?J9Ms3-AVqZ+1+dw-YkCOK*o+meNEpjlqkV8)Pbsvh^f4;(c#fqEci}iz0>n)wq z6FvIJ=g-6k#kMJ)(I6#Cg?w(6LHrCajQt^+=Y@ChZ|a!0fEg8>%0K!5Xf0t6m~>W5 zPJ{yGT6pF4vZ23pbKrBmeg-A=lK8cCuHr~X@2i=4(NnzBr(r{W^B&%P_0abIAuTd^ zuys?L-N-NEs3emX8r-^h!KWf_(2b!Cg5tM7Az<~*UU5r0Vh@uyw}Vj6kO8qbD`7iS z9v&U^gDS0@i#*-JQW>9Dg?brIyo*LOMkGpJ-#vJ&`x{?kQu1v*cC;nY(`}qqC^`M? zzFW^!LZ0y&P@(pl(<{o|0#i0A;m4bR8tO3Zm^%0yuW|xwaw|WQB$!qrvv>KbUpP>>By?($5YHkrt3y(m4E8orcfe1gh!5cvj~71GUeHTF9yegON$>8pl&QAJ+?zv4rmZd zz=1+`M?Q;}3=Y~b4hqV)Ah&G4?$UH7lK=%qtvimyy|G%f39Sr$;06yw7VYgPW7V*vvl?g#Z6@h; z>SGSyEL|=hR2g*$H`u^qzF2tGxD%9I<$Bg}75P!y1D#2C$vgYdLc__Pb}BMIz9)B7 z&gSS7WaTc9^s-q}Cnmm(8Kn^aX12cRT9c0QJKu&i*c{p8eu8Vv1EQUd$ELMO_rjaC z*G}~hMuZst10$?;VoKTfD#SlgUxfS!9u$5d_mVmKRla9D(k}#`x5hhcmSe zXOXrOeyv*d4(YY@&KtpM?c23X)8{~2rbF&Xpma+8WZRF=4E7f;}Zygk&v&hfF4o>y}KD%Q-XUH6NE>^1#K?t z@<;fpMWoDDs%%{|%5hi3yk_H8`v@rEJ<&W(>B3Czw^-c0p$jXpX6yJ1*kR?!_>uGC zoBWyXT);JJ!+pNdnMJ$7A!&dAo7uzlQPuae^@9f3R^(c9C@gTS^#PD5b3jKHqO4z; z4j|xl9q4yUGXrUzfj4_rveSm9s(wLHRW+t3a6yhH9p`=(=Mj1ubq&c*mSh>EBe&8> z7hN$6WxRH*V<=Rnv|q&!J89CRu-gZTKjdQZ>ruk(-!nyI-skf$z#i3QxmZ*m-Z6GaoL|S zp{~cb8soQ{i-|$ll8umoUR_ zV0LNW-xnrc@8tFwHo0z4e=Ff*0xrRraX2QgiL+Y$UH_K&?;}NBQofj9{WaRGy|~ux70IukR12Aq~}Q8Fo4*9py@z_ zXoWaikJ`owpLqwp_>Pl2AfI&v%vLlwqjOstozin^Iw0W`PO_ijz~*P0UA4cz4vx({ zy;Sg^>u?U&?1-t-Y-t`NSrA?Ni&YpuY!K1@anRZFBnN$@S$HA(cFVK(c@t^uB3OrM zsLIwtpty~G(Q&rrmZmckzt3!EZb|z&FM@>WO3TLWVzS1*Zn=1fiC=L6!79IAJ{}j* zx%f}hk}X{Xl?)hOfiLfY?0Mvi7XMq=?HZ{%Q6rO>LN^Fi@YF>R*J*FT6MDXQDc$rO z_9%&}5dbNSZ30$HuV68Ekv-CP@!`~KHnJCy9*yh2>P?MU4a~EFN^>AZ_CV0eJ`-2r zEDaE`0C7I@i+B*Rz?jwnQ#A8X>mM&%>&sy+O&e=W1HTTYe;&Eh#Pyi|E|o0{0qtGT zdO+h^`6U?mlAN4+10zW2=9Z!GcaLi;$*p@^IxgPNIp3EP#|)$R1OdViGwj4gzkwsx z``{_2LeqtsqstZO@yTu?_%1Qawe{3rHy5zhJm9XXC2eI~c}HZYv-W+Vxc1HOY1!6b zs$)Q|8j=+T3wmLNc##XO{$+bOR~M0~&4ENP+xDVYhP>()O!%-8$~ry!@0v{`MumzkcxOb%5Ezgt|N( zIdMnTqf_P=hBAG8p4!4*WxIlLBWj_uq0}CZ(#g(bkuS}}%c3O^%3&AvStP8>H^a8& zsQ$NKq%zT5OMD%hLR9TCqPAiVk-5Eir2B$3yIGB21b=zz^Qzt3YH%?B$UIPuVJG5* zrAbRkH=sFjz7R{b{{sDt>XecwuqPn6kAC!jvjgb~XMjU($Jc|iG)jQ~!$senoD8Ro-`eV_;|CutGHPaaV@J6hsO_0qaUkGNQy-FKSt zhr*C48uH~;%S6?hIF->^DW)c2W9UG`Rk0SzOvjZOtY>m+lzy_(31DjIaEsO)#oO6< z;$fQZ9E(=znUh=2Ee9TjA#>0xMY1Pym{xW|7ElLLhf%5k@`>YYd!4*$m5idh+vsP9 zoA{ZC@qln-(~E5@i-j=6$QnGiA+D%-K&0-?*6X z$A;51-Ap?s9`?kG&PfS7y{bVT#6_PGSenky5*#Z{k4Wv!1lQX%HDoEZj!utD+{f5p zAw$2I;>|)+|DX?{Rw)OnTe+M$W-52&jXo&Z4{L=!&g``VT$!7ZR-%m!5cnuDb1Z6I z7Ya>+-#nj@ z*(4EqsT$qEy$Gw+kdri_tyw+HGJ$vmOqc4CM-9rQ1*jO(DvZMJXu%>dhMG4Cc6ER; z&=cJg*(SAY!su`s-v&$ayPja*^TOR$lAS7-s{0W>8*a^9rQ$nchBXWAFGqloq9uL= z7Js3B3#KM+quAjKo!!Gxlc(s;bx~^Sunr^BH8$3`vVZl<(`30dLz&&~>iPWvd1_7% znZ4%CxuL^CPn4gwuK$s{HjZMf#R6BvD4OCqUuQmdrvE{J8D30vDq}2@Z^mYp@X~ch z>M7z2NRix}AjRat4;vP4vrs$H@85k-dkVkak#6xPI>b;b^xjoe%;QVQ&-474q*_3> z4~bIix3hD8(Kj8%VqcPNbv;M`V;Z2KwJM)Fn-YfmX##pQ@_I99|5^;6e=Tf=x1f|* zl$Kd5`uyb<{)afqH%CY;s8PW~2KgS3&l+r8g09!XrhmT?B$!^)mUi-kIi9xfWgDj+ zgiIBr#dc3HH1F)rHB0UtinpfGwb{C;p*6mO9VWl-f^TodE{Z7@S>dJ|ur$P7Asunn zq9CSKsA5SAf3_w6!EC90kG($U)BT*sCBNn3oaAfW!z|yx;j9;l)t17=B}!@p-*vDX z+@b7%KOK5ZrMyAUci0P_8U{~nlN^9YmXZ#H`p^Y3|(w^!9Lm8- zLu4)JV$V&Z)7X48?ff8TsDpV_*XUb1121FJ4G|y@2-zLU~&);v(-!l z5HtR()@jC5a{Mt1yLSZtZQ`?$0>;uS!^tnD;rU?+cGUjG{pVlg`*{wkSwrL@pgYsx zzgl<4m;Og*JulZ;81w<kH z5iGm-zvVhwy@|ds3@%R=;738aQO1e5b$WJ zx&TIl_;T+FWMEu zbT@X~s)@~q1~2?ak8w7_iIg{!A<}-!)Y#uZj?u$r1C|3jXL2>G)GY3y+_;7i%#w`4=Wy5h*`J0X2fOqYeW`wqn)LRr=tdvaPlYN#?24*= z>yv7{zVQ`{Zpa8@p`>hNG|U_x?jPjMt$z2<3tI@g%dAstXPV(S zd+ZEbldW3Y+9(lR!7tItj1aN%eP-L6lhH#RHYtH#&2c$5rCqhRC3;C8(>PAs_Y!_P zzc6&c+s71*WxXi_9YqERBa;QssV@5x&tz;6L`7}IS9n~?+|X4iKgrVLSn;H1D36Ej z@6&7eP;JiVd@wtTaY_!t^DglQzF+Q=RJzryPc~yr^UjC?X*ECGu{a6%CVR0t%aKI2 zzh=xem0qW(sa*wlR?Z6xzGp?^n?F4J_bLS=)QF(GivgTG0 zS#xWMd}RZT>|w?Jz|-gR6OAmRxbFG7F2+9P1lm{kuR@S$)QV!3rwDvZ^*`5lN)EuX zFgL3o7$ z5D@m2y_h}@lI&MIy~1phAM~rbU~i)Hs_I#2U>V4Yg{t&)G`liudPB^3x6qB zqL)NSd5P9oD=G2fe!#8lQTFgK#EV9d$3vCEhE?A$SyN;8yldccb|Z33+j$x9?L#f> zWM#Azc5gjeMKrN@n$ZyrOXG7M4cX#S*7jh!q6~h$ogan*J(pWzOh15j*h&b_=eBz%V`U6))pY-bQaf@PUtBJoVEal&c&W@!Dk&2Y;@q z+axa4=z_)YKkf7c>`uu`wY;tG?ki~o$xd?gP@6AhKcgV%GH*wjfdBd(P2a(rh&JMSl~8 z67?1LJ{h=cyQ2y7hQOrh(GiHA zyU&TnF^Nnb@dEDzJ(p&=q>sh&ey{F7P`P2g$;8uyw_ci{Ph`HzFfoSk(q%=rPNsx` zKC(4iRlS#S>L@@;ntBh<+1u5HN`V}RWCZgRTV3a$vjnz#sKc8%A(t}u2SkIR>0L5H zPEW~1Y@dX`p#G%VqimE_PTOfT9LU|MxH~i1O!D2SYAxs|`eb7GvcD>zyy7^4CnzqB zaw0F%S$^tUmA6jio)h)cX%hc~!l3gktGj?=U5pPq1NKp?ItfvW`^dxE*Brp>9$ zhDd$O9n*7Ty%g6g(|Kd<4r{SnZrz*i3=6W1xxepL>wKIEQcvMt6G;2~`{ie2-eM*C zI0Zi+-J0?7!)Njwfe9BzN^}#k8uIy*A|hLKU&_9ElL)vzTR?~9xNo+CJ40KaOgtr8 zo{EvTuKAYfbn9V)rzn={6XYJ3pX!fl77XXBc+D&=FC3K$>9){F*W&8jW40@`m&Z@Z zR2`JMWs7q^zbkgA31JyFX>7__TT+8x%MMEfZue1R&jL?3b;QX`|{;Cqm@Y7M517;kZR9lcT8IR0q z%ymR6Lp0(MwcQ!TFx8UUTYELkz7)@x(H|c46yFO>8e-n}zNFh1!GxcI|C!+N?E9x8 z;&3@3H8IHoCNai!cU9*x19u(%^-fp$6J;|u!L=QW zVlPwGh;d!b`+bM*&R`|&Pt?UGjhmBQg(ax$nQ20aZVlK&p@5cg{bE$yn#tp=C(#F| zkKX`N_lCvngbB7@fxI4*PQLaDGGT6>@w7_+Wqul)qg|<7J9AS9L1MphU}!&Y@a$y+Nu6M3N*~a(Hnn z^1*^}Gs1xq{Uzz%7e?rDj*6kxM3&89a-lh<9wR;nT?w%duh+|!+=MKMHGerDx0HPq ztofn?Ql2hKqQe~n@913wJBjCv=)c}6RwO}u=O&UI0a0Yn-WVBf%W=B(Lqs2`wjCCm z`+h<4+}J!XVvP6L*hy=6esexoa1xq#EzhROaM=2~Fu&WcU-hi(&LXjvz3G9TA~o(z z$NZZ7ai6UI=AyAlbor?z9!}HxbL%KDom|n0^;_MHz?Pg#G2R+@a8OsI%L%-871X7P zXVWg_fb~F4B*omJR#UP9(P>7#M%vq<7jw+kX5VjAP~&n`mFeSD=jnzSdQBSLP3O+W z3%)3PrKchP2}K|GZp?n{MMD4e)Aq5$yaml8y_#Z2oTyB^{s>B4#<2 zD(<#|3tLR+CoQNiXpNdCzsdNI%a|12uDjO^Xc8}b;9)8Bf6t$aL(PdF{;wX{zdQUt zeOdi~@q~X^@G0S}GPLlSBUnwmSfr`aQs)?uF3yePS`D(m>lr$bp8tT?lXxx{s>3*T z;+)~5t9XD%$jVlSZ1hdy;?akYBX(a$`kcCXD|Dqa@d*<;j=c2&@)S0h^g*r0V$RQ! zly>0Sl5cZc(`vdBA9SS%qiVhUjcH7Lrnvf)2s>w}09?T5%IzN_9bvjwuvX%uh3U=@ z4(eQbrDv|k9O*lqb<%)pCOn}v_|p@sjbicJBDM~dU&|8}1J;Tn&j|LE zVS1CTaO)D85uTbEh^{e2%x{c0TlAE_ml~0@`7Da^qW=6Y4!>w)FVbG6;92>$aZ$W9 zYV1HxS^uKQ1c~YNtX2Jl8pQ4(zG14T#n8%-kY(afF6xDh)3~aXbr*<(q0H4uBf!-4 zxypYkV|HyDVgr zX$@}I>$-12VWYeU+o9MFS3fO#^{ACN$t8M)y($gnuyD_0u_JT`mG`KF&YjZg zR|h{4(wKC;HZ4i(YTW7kzK~%I^~>Zv@g3rkncOzumtb#P(8{!k;Y_LXkJ;(1m9^iT(@{;jgTn5=~JHW(O@*Y2L zBo~z`N=|n&H<9Ln?ES!X)ZZ03m_0{uG?_@LU!J)&HQEi5SiK zdHS)bBbGq-ABJuQxfD26#s#5QL8$>_nvJ)&jCbbd*9PLLGZJJ(-+O+H?^2{!7ya6Q zB7OSti+~JorLYrXy{+iFq`J@v8NQ9_4;i_InO}Psg%cl%gGRajDaGYAN?tJ}wy=Ni zh%=~SJZO1$6+kj8w_#p#3=NDs8#&w>ba4Bd|BZA=rcE;>m+~KCP`;a zN0}|1xq=&%cXe2xKrlshae9b@L_=NL`D)tZJJH?l^q0PO{P!Fm4{$qZ4QL@jGu+** zdSERS@-i@68C zQo5?DP-OxQf4W3|7|biofi|~*6*2|RHq@_NY|1A9B2|XCq;+%-W@B0-VkxI^6|`}9 zUj(KJdp)^TmedTvG(e-P>06o9xw5tynj9(oZ@10j2k!&;nrE;cf*7$7B+I8m%8)Y* zgIO#jbdY!=3}lcs!tQQXXhFpOBd53&7GHYBq!jRi=m33eA<=Kp>*wmDJ%R>ZDqF9|TS)me}p9@jmh$^$_56&Mt?_xHDi^gk5uwz z`qf2H|1SMZ&|N7Yc}1?q1w?%;fg21_tgTQT^&Jw`_7#%Uk(qKdp4+5;c;=!}?Fzmm zkZJQZ>8!a^#afbz-BRLkA(iAVxQDqdVjwOvu0Wa>#h9y>JFK5wqFt0Y-;C89%g&Z+ z0W)*@3B6H$P0$ARAjdC+`)3>Nt$!PGsP_T3gx_|dc#JdP%rW;0wvg%ko{#(C=aC!2OzV7$kl?6Hm^WMI{(WB@bOjPksR{a|6FkJ!+Se~cBNJtRo&&_R0bCBM+DErwX>h{p>9HuZ%^!QAE}tHp}OGD(BiT~f9PpH#Od*T2f~h| z^{^z-|87P%9h}t{)VS&Ke4Y(4@AcL^sT5GSU#h(t;S7=b6EtI*?ddjxH{()>+wl6c zqgpLWIltn4dur3>LV^1{+y_PQ^)&0cfP@Jav;!8I#oh27R%Hi#JjIB;H4DLb1Xe-g zO^*F#I56%NRwS#P-Ix(pm39*w%~Eu45n4*j4kkdjYhgU2xGmNrH&TX?v4%8-@d`+z zWq>+8npBy;=n}87&!m#?9GE{%R%iiI<8^GrhK(KZkxBr#xOC?Ta%0!lUES1*6koul zWc<||;$%&-41=xK6E@bYwBG(WpXic$$ZCVH>{r5C##I`H{;Yve4MT424^kpaDouu*PSHR_N?re34@Nel4B`$cz9%M%SH~ zPlzBfU$Ak5&~1B(&2Glh$?$S5d)KNUgd3!ets$x3JkA9X6mtheVZ+gAlZ`H)Vpf4+^ZV< zX&tY@Y(QiFs`pyyw$d}vvsy9Qj};9pc8vwS(B??&C za>7RI+3eW4pT}ci!Gef@xFLfa8T((MtA&s@HUpE&nbWaq=rXBahg!7hZ5v}tOU?oh z-fsR%68O4fxjS$jWhG?4XcN!SaLU2ZC`(jdqVBg&=c0qsf=*2Bg^k$HGKA>V%%l9Q zTFUdv5YKewDea$IN`s#2frAq$Z|T`*L>hksuRo9hj|Dx_mGfif7ymn`_&%&Zn7ObT z*`d}^@&Bz+i4y;BA1VkTk`zGLW%U=O^$qw?dZn7G^{8Jnlwi(zil)zK!Q|k-?cen@ zQUF9NY5BWVr=483MptJ?@(3e<$s0X%tcZ+z=pj@Pl)X;OhK+FTc}rR#-W7&CIpiTd z;|pzVH`w)W`>dD>HoC!i+nfXUPj`~lU(OkC-n=wYvH0?o*dlP2h|#t-*85fDMZCZG zs+gnNU<@q{{xs0_B>U7~-mXiM)?YD;?FZj{tm3uaXvxVAy6cp)q3qo!01?yE5(kwUAP@u{>nmSn?t{b}B{pighWeAF=;_}c`3+z#l#Dwxa5eUK8i+brbmKi+D zDQ3`Cy*2)eLu>Ob??iKv%Tkl*Zh+*BbLBkoIB9rm-JCxXKpHqMo@&T&n9ABX$UiJr zg&9q7ZF`4Sc873qK6W>(w)QnABwItwXk9pvn;NR^0Sm%lhzCd%{4;iHy#vYAeG;fJ}Eou889LjNb&Fs1^QP zeZ5^{6^C7+&t_{A#F4v1UD=u#u!!-c5*!ekfj1Vfg`Hyu&wuJ(1RWlrV8V`l^nWc+r4V8e!H(OIrPLtj^Z_`3rH!w=w}gQ`dafoL zRIG3h9EkS%X468G!s2MLWsW${4QfT3<1$%Cgi|86%T4UqnYKZ73d2(gb;ZD>p-q5 zZPQM>A#LwF6!znZ?KhiTRO>pYlBPp``YGC@_W@gD4OTEOhC*@Jg!>G7EIC6ZdD!%X z*_Eq)K6EdG~fU#dnBj#v(#<-1?jKUgFHj@F4^TdD}` zGBGdnbl9YKvohA#3SZL|+nP?}1D1%SL$#Q+&g+I;zJxWiR4Hnt&V?Xq8_Lb5&()!y zRC8>m%g^G6(t(p#?4^{7DT=w^ziysqRgPcf=?AZbSK?GxSy`}p4*)g>e|@ExogJgV zem??iEgYW(p&3KbwokG<0M;mfKRm~KtKJGdD-_4`z-xdgebIi^km-h79N1lDOHMV3 zb*1K|?^l+BrzJ4Xuj36|B~&P$&7)&iNY386*N7$POdlebk=cz`V8CbJgw^ZJ>Ly@L zEU{uEs&235D0QtaRW8|wiqEs2NjzHMYM2UpmDHhF_+MlA2tI?<`C*-5@>m1w&ZYN& z3Jj2$)q7!?Un}a#FjaW?73IT&VT`;0MM?AEj<57c=PyO zMO76Eh9Aae)@P9tE-K0Tckz*9oywfbuJx8GO08us=>K4E2-ySrW?01%9(!1^+Dxh5 zw&2XQC>J-rHI|9dH#hG;^M6WrUJsJ?J$KI77EknaN)i@v3!UpPKP+#tR?LUNj)uJ2 zaw`XmS#^YF2t>nyILy6hc9Y^=^@`ot>~%b3B2>SD0`Be5AK~WOrqtlsUl~re7F(mOR3>|p~V=B%RMYP!f08x=xHi2VS4oZk1UzVJ;z|S zf#GFBPd|X2I-QD@hxUf51SofdVRMSf9R4GSoL12G`Z>s(5Xc|mN_FmXlWgVovLZnX z8K^w;v}ZekNO=p@!vXZ3_1f7Dt=_zd&SLnIaLk+xh_nEn!pjoAw>2zDb9Jk1`Lck%3(Qm=O^R$^IKplh^h`doJWg z!WQXgYKcDN6L{uXDGDiyj57}xJD_iWCm#o#>FKnGyp^+B&C;ef?$ILk1b^mK@5I8+ z#&m$_OD-h+Jcb3);E0#VuxCy|(=F!-W&?>LbzhH32r`PT=46522J6N#fz8cg6eL$a z&ThjJMa(mBq^U%nl0UBkkpc!G%BMbb<*{>WlNM)6>q|g=kt!o zsoyO4>a$fv^L7kB$p`h<$0Gw>>Cmsf4=>e)7OXaJDSjzaVo1p*Jjsy5cO(3cK3V3U z7x%f8V?=VPuh&<<;5L#a7{o*88rB@`(pFoT?iJ871WB?*GNoQn` z(oTMrM=we{+Sbd!QDM!xHWiBtmb0bd$u!2+hU>&XjF>$AQNi7Pvy#T0A+wUEyxzRq0Gl%FG;rL{6aw`)k1 zJT@JP3C-e4CFWH#bWMKYlLHi2Y*yY*|H!lDvt|{nHYDTAiS;`gfB!kCY9-vHs~dr< z`R06p;rS`YkEhV;P%H9MWXMWG1TS*vFOrAolol`?Q5J#*Mx%IWQ(%E(hH5T0b5A9) zCipjb@cFB{!wG`=YZ9uxb6Br4v(%cQmZ?6i6Tu=9OFL~2BU2A$=*9BXn9cn%LswAs z%8gc}{yZ?N`*Q5pjQsHBq)&q9!U?gKfJ@$O%+(*IDM7VV0)ls*S2bL3ijR6Aj_3cC z9hqk&idaa}K8#G~CmoiYB7|;oCU9;rTso0Z4GneV@j|@1%=J>I5AXVVhg-pNwo4WY>?yifgK zY5oigcI`;)9rf#99GQ=}G~i3#^GpK)&5>vi#MncehV`j*ZecAK&KcF_xaRwo**u)i z-B<6s>neJ`z1#(2r`!%(sgHLhw(>YlI~#V`)`M6b$O!Cr=-(5#Fu=RlgKx18<&fVl zdl;(v2R=SSjero&HYj_&3yjrDs?gL6FLX6hjiQ2*?XGGIVP#%_>-s|Ewk(gtM`s#F z&{w8u6B}K>43P-&ROkby z`%Utl2|gQuL0q2mL*gp7mB&-h=2+`0nQ0eIoK{{nX01%rgXd!wqI_^*8wH$x0khKp z^X=-9MI!3SdyPz=SDK>h9c=FKd;%M%?zD5Qbzw-_IDt-kxt1P3o#YE&*O9jvOP$y35z;d1H9ht&fdImxE&!j%qf zR=Xd0K(rJHzbScdq^C)VRgM5%hpvo`H>KWR8|kD!S!$c_O;MmerEq z=s($@fH1@(tF-Q4sNuK%!k-8~FFK@rr&;j8JdY-Y0X-?*&85~G#lA?kh47tV_6qH1 zXVms)u}nw!Z5^4h2J=`iJ)FbtCQDKGV_cz-r&Q7AN?j0*5vc3cvmm$+ntGIRlcJb- zw6GVnaVxM47S7W&7DLAwczRJT>%u5Ho3>3z7h4O5NNum_hfisnPFy34k!V&r=>gc( zB-cLYJtl1bDz&ga{72*i=ZQsi#W>OYot2C1v!`uj&SqHXM&X95Xz1(~>MEF*U zouJnBP4L=xqArfAevb+nN*%hfAy7Eb^QY6>9GMBsGw#?X?Ag0W@MtuAUK3N^V3}7p zdN;zl!ar$}w_-fW9^dGbEyT{pW08E?l5-`u?DTvse+Gobq(XX*i}8jSpiopHuN(QbS>7vC3RXU@U#o<^g$}689prZ?XbL@uqg*d zo3)`72Ni+`eXd$TI*hqpo#k~dDde5qW5P_V^ID5;$e*KaW|vB}pRh74NTW%+66BTD zJcF2*l()r@7j`8tzFewDw+YGb@s@BCN#s3R+I)^IWTTckD#GNjhjE2UaCulJ8|yfd zHI+Ee{IRD)(Ma=Pf1QPl^S*az3ncBMh9zAY@7}zmd?x+@JP$S{@v(Q;``J_*!-oBd zU@gx(YUZs@qPa+X09oMS9A5BMgwK7Q{<4i9pF^J{r$=okjw~lVH^Q zUFibB6F}eNT&oTaeXS(Rr}*S^1e(*$AD!9-rHUH93g1@{7Y9*%Z22a2GP+5c5=2Wa z(8e*P(=tQllanPI}b8{7)3KeIIJVDvqGopJG+5jjPe={RJz?>T+CzVPS0 zMYEW(rF_5Sl)cXF;!MluMQRC(0qHWS29bxyoE>3vc!|ryacs)>o=BAh~b-% zOW=blAZA|_DC{p%e%^&J=j&11v}dqrYl_q1>qkq{?^ZJpkazb6^PJ}hRwymg4EoScOPX>Aw#cP{ z3cA?T0e?3?E38?em$XbN`jq8ZZE!)@hPXdpJK(hU;7Fbr0ebhld>V<<^+J0w)5W$I z6?HrFDA}@rlzcE4maUM36x$ol)&x?u; zE%kNZu>OW}O*ghPhl(09k$!Q>(ywz}v|qCUla?uccVJQ{&1}98=WQ_Nzs!I4`OEe+d~<*Z-{u|NmwG-+CqR^S(U!aN@oK&d9C{7T>*z zrC=wPl;wZr1h`!W-&~xS%(19d)`qHl$}GWjQ^xqRGS19+z2sT!Z%)gE&WhrU*FLBo zw1;<+X>$V%;U|8lZ~V#2hb@qQedX)@U-%AV}`og zH}%*39c0Owtd!F#C^ebvrat%aFHvy7$^6XvpT+gor}OeW6LtX2qt$~{9bNlmSx!z4 zf9~fCl7a|3RyKhW zZ6?;C$G^Mz10MtLPy>t<+EQtA`rWtd6aIdJPa8w9f_(I=Jlu;o$?g%0%(|-y4~Aw> zJ5NoE$v<$*7SLk+*Xyq}3UWTPCjRn`Oox9Of2YqyYFFB=%G#}Pz3Ww&Ik@|tYeX|Ws?^q(waUXI58)H3XR+b7d@rfUB@JW*O7s^*E1 zO*UnRI&&pkOeFiJL4${xZEzm<5GAVMMy3r*-ll-}s@e}1YMV+^E^A;U`zTe+DE8B( zJkMU@Mt1bJTD$ekNmnC81x@}IUT zE2mTbQ#Ui?NoGfC?qRxgl~veIN?wX)(+d8sYpH3ziKAwKt%&3QtY{_E^Rtn{TW&OZ zJYSs5Os4-T9w=RVQTk)7B2#wLm!>wEM=48b&=t|dC^5_Y;$oz!Dk-l~1W8;N7c*=Z zx6XG%;+-`)dv89LC1&u|Y~Wv|!8h#Tu0W_XRkq)E1v25xJ3QXDK$koEbo;LJV-EHy zp|p>yW8#@aT)D8yF(7mQt#N-GQkPE1`A|QD#3i0v`bEgS<>Pa|9imHI(35syD%Q(9 z=c~c}j{p1IXmKnDMjI;h{)Ho5lfAM1M`Nt33(F+w^$D>+sIjpTcQNTtz>5u%^yZei zo}em+&pP^o22EN1LF-0kdhOx7(`DYMvr(NM)8)&#xpp8m1=IY6Cl?9(LD@R`KZjyG)A{UG~x_o-{7NLxu3hm}igbUFwbr_3lsS=kCH~l+q zY27fr&&@O(nb%|PqH;qeQ%t4#Au=gi6eFFm&pD!bG2sR|=}rdTZ||q7A@6MLTYyFs zW_Vs*#b+EB?A~Z6oYHK2gYD zeDU3pXKOYHOC>}JGd=61q`!Yij(_)ymuU7i8BFa~L>GnZF3whJng3c)Ycmfd@#v0q z)}?2v`Wkj#LdsGk;Z%5dW~mMiz2U#j4PLF!)}_a@i_g*~Y;2)dQe*bY&t3(u^V6`l0ZNePc*p8KebQo>X1yP7WSGFT0`f9# zap0WJ5OX&Y=2(ANfXp$kf4mmWm=j+h8<@^*n))+J@6+P@T_?0nNC;SM4BAy$no7d}1sBUsTNeV3co#%ED# zyjn_oPF=}Z^^dj57cVn)_$CTlI?j?n;LoWyY4&TDUH37usjuR2MvDU`pB6CE%6^>` zovqEWWpU6LkxV)(TgNNbM9PwDhP=#G((wLLOVxF9Z#aV`0l$%KfBby)nAHyMq&`2` zCH5YD+70+Q+0s6^p6KfUlKc9G9wwMF&vQ_ZmyyRTQ>V?7fyH_fj&B5j^*Wx z6i4R&T&cA@RJ$*^^od7WSLEkfjK*K1ajDPg_F)jW`acKC>Qw3yKfE8Q+zFFDKTo;d zxA~u5sqy~{ZpZzb;w;A0C;bno>pvEWp&d!U%j)h>v?NiAY)cFB=>z7#4Np7gP3$z3 z6XP^vkl;LD-S4=mp5?-N{AN2P(J{{rD;F~zX!EeO=5QYTaf;~Nz9VEeqKm^pm+MWFnATjb5=H(D=nb3Cxz0jNFS@k<^k0PdUmI_;VTs-3mj(7^H~_`K zc*L(W0{j2&^a>PriM=~7AGLf5dfAyr|BDYalya}DM#E`NSorzNX$W)X_H9VsEAVg@ ztIXE6F{r=VxX&+-^kPpsX8V1kl4}9nESl?gc_l84pnx0e{+C_UgK_Df^lVeiQRjtELo*J6e5}`i{eU_5t}nU%^;^Sug^)e&QVHcrg`;dYBLD zBdii+?;&5L%(%p1yt|cjElJW^oUs@ViEi1un#)~87XlR=4g@Y0IeiIBLgv7eSrVsz ztu%A|KvsJfp&MN0TtdiZVw*-zJu8MD4mb;hxoy-gimWMY$L+|pGz1evu0%W86c+FHP*nrxZNX_xC-$XR?| zpQI$;F_sAVO`*}J=AOk?Y`d?nU(Fdwf2n4IO@mv|?229Cm^Okcl%t$qvN^VwRBLbr ztWh5tzKSU>(`xy?mI!A@p2t_)f&28xK{eQDfS00WRiL%!cAaB)3T)rOwwX7|S z!Kc?}<$5$YBY?DhSA=BpUDvi~a{b!IrSkl012zT2lC@7?X81j8f95t}@XVx}M#Zi< z%5<*V+%=XYi1_k>_4~h>tL2|XayqkJQfJbn2UNYgR>E)f!HgfvoY8hXVDH$XVs&#& zpPI=-LJdSc1B|km+$7QO;X-v^U$X}DP=d?eNPP{QuR(G}V zeYH_0Lb55Eg)jF@it_Z3s&KMmoj_fsZv6yHO1k}Cxk|ED!C_qd_EGL-yAGpsDb@gb+7EaVN*V-L%p{rgy5^F5P7$&D5{5iWz~aJhSz5rr zOh&WN6>Uv(QkfeV#du%K{sTDIE+q5d^0=xg{*lo4aUBMW+%on7_mABAgXmZz7(y~6 z9mXr&4SumoxDBo#v;avS*ejspm4w^nlS7^sTxj_xR`EEw6U^Z zjl-Dic~uRM#w9(5-zwoSZ+(2$OSRE)KCsrvnih=#9#PJ+xhhixI7J_XxrJzNKk0?H z@gw!$wKq

^!Pf*Vd+iK>R!LDXV_MuXcR8SEZ-GwnDbrKR-=TpfSdHh0YEsqfY_k zv?HTCPT!$B>#wr@H}7fhf2_C_nA1vd+tqnv?e(fW9a&2Li>aBurRLm4l`8ULMa({)@ry$ zZkdGz>`U@@m<`TYEG+E{8pk=xNmKkl4T8>hEvnDHU9vp11~`N@KJPzr#Z}NBlxx=7 z-(%Cbquu#y;0h;mCmS5LbsI(nyTEIYGp$bE{ba1pG-wsIVqIfI%7kOVdYc?^XW!r4 zmswK$o76B^3}E#P_ajWU-=tfI`kUAqyL-$uAXaQ-+@QztSEdqQ!IvkL?#7RS$009G z?7d2-EM?w~_#keI^v~!BPm83p<^sNXDkP@tS>4Eo*$erAprxj}e4cLE)|Il8Sru2x zyfjj~rO7kJ{ezbbxV12awf*xf1F7=%hR+-Jykci9_0_Evi7B_&ILE?nH9Ay5UJKj2 z0Go{i)amf07?iG(yE)s9c>`;yAw(n_0geKO1x7uvt}{k&FtEpYdx540t6f>WCEv43 z-gG)fp20|omG{K)UHV~H3k==YAIQoV-0|1tzu3DQnQDP@fkrAnz|5BA?ZX|GNw782 zbm~?tdnhrpv9_rcFXZ(;>VhKqxi469vhhagu$+SV!}}Wz%>5kWQ<1H83rD$;gBev6 zIBBe9o!v?k+sq8*qZG{So)$C6-}{}^9Ympsqo%;Xv@=AmKzpczOyGVt?WSH~{F6kn zWzzoEFY`DZy^IMhzyhoTRyuwyiS_0K%dI-7<0KM3m%3Dv=C{P*@3AuDv*LCzMXax( zB74&j-nm4r-;i|qR3#kgTZx13i7-eXrYyOX|2}|jPjOLSXhSxivo8MCwT%5z610+5 z6F)ck{doC`x6}Vs#+71Zh7x9Czr5fyRDAz@tf0F8{2wjFy5B~%i-$UEM!IW{6Ncdc zp$Qk}0*QM^N&0t3Ntyf>d>9GB!Ea__*}rauu;5kBVoWax36Pv#YxUyqsPB5!l(yTTbOUi#MW% zUjCqe{LU?-_i+Zsa&E0Clz#mZOSZfycC9~PUr--&$|?{_02XB=cdxfWSpCMf~PFB*fIWtg1lV1h@*-4Q zVvk4rq1H$_rY1FT08dk!B$p@b-%`4bA~|T3W2E?g@bXL zFS1s+f4=R{KS09F&GP$!ptd$k#s%cyKOs&Z?>9}KctoMNL0vN!7Q9)YF##5Kbi=1| z$1CZ#kJW9ONH+fQy>)t8W+~yxx6)_o_4OHEcih&B_t<{AJSiySV=DQcy)k8d=0QLwwNg7l(5!$AEWP~Z7}$0pntL=n zSchIy_`!~G=>q}du+S+aZ~PM3{d*UPX;xFVt% zbqwY3fMbEuCr`HL9}nu8zb~wISwj^=@j$VZLIdrT8@D70N%Z!iatm4oyL6J2?O~ZX zf=j>kWD-h<2#uXY<%)T5({ra&$C5t1E2$4T)BNFO5L1>#KTZ_T>S;E08d&LQoCfvp*le>^oCsRB5as@#n@qi=(s*liXo8bmUdJhwzk^ zWx13$D&kUI zBYeI%g&$l|ShB$o41DKvFJPX&#W?*P6c#hBzYGjEnzf%PoFWzwW^_7QoJ0-{^+$zeT1TiGj&)r}G^^{z+Nt%vu(E^ivGIx0jfxvMgZKCELeZ% zZ{*@|Z?M^^!J&>Gp2Z{ylGgj@rAA%A;&>1E z3?CxB7)(vHQo=po!3Y(l#y`XC)_y^#^Ag&TtZ-{Q3lrGtz@|O*>hrtEy8lt@X$cOZ zpWPOKGwc)b1$$7y(TJZYsPWe8hMZAQ9&8I^T{_p5`0YYHqzcPnye zJ9~?9`)JPF$JP(E?qK-UvGk;R;nl^vkBfTrN{^;vwp`jp5l+tr)T|5TXrvnSsiWLInCQG5p8QJHRiG*9WuT zBm9HkiV)2!ntyKEbZ;-QbiVwg2ikXDuipS2XHJNK+z<>liyL~6{sbO)+1mvivcA2h zem%SEe>n{NSHDyz`ns6r`BS=5C0CEJWAjS*(G7a8Z}a-(lMSf^DVFmK&yM!LZuF}XgZdqvi zW8kYp@ZswPu)p_6>;mn?=G-{UfmkyAxdn*oN?1wG7b4a{PppxSJ=r^n zww?A<%WCIdI(eISpi-nNxvjq*%+r+z{KFaax>{yNVO6ssG6{D8L~_7DB!&-lbQ14; z04$imm^gUD_-=GuJHZc0mhS+d0l!;bUKimhH<8-t6decmo_wCyq@Csf^$y#Z1W{7K zA^1u`;o3yUBE5)++8+Ha8M1wx=x2>+5eOFi4bAUK3#rdnAG1MkZMt0=35aHH3yDbl znry_{FIM;$RlL`-TLG(7%E2%0A9Q=M29rcH(>Ex!3CnawBQXq?cwLy~N#ihA0%Dya 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

8#wkI2KrvI1Bz`)`k&)&uJCA7B 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

a@r4tWl?}H(d?%F>bo6Hy6e1p?mF~{RB!)yw z7&eRX?oW2UW=%v8Qp-A{JivOV&N)6$a$p^GmGn()IXa0Br2O?){ZusZYwegI*&pg6 z(V|jt+_&BwX$H`g>3YE`f>&bJ$(~yV=9}g3p=M5u z9ieT7nu9UmC}FSOX#Wd)Z@yI59P7dU7mog~QW_lvvCF!Zo1ezlWyH}Tc=)!qM;2n4 zo_B=Q17XeX~3c);kv&A-VBP(8B>+?xH&`EKF$#3;)t=}U`ZnZl2zVJ_dK zfWIVW2@WeuBa2l5F6i{$HJZT|-x3+eIj>bKo~T((f1=iSS?X63p+!!g7Q`pS_xei} zqI{_3rF4nA(#$O9Wg$-@y*MT1%&+dnsc#VY}r7kU7`LpP~ekefatY_xeczU+B9m@m9MN zqqrVBD?X$OUUdOfW@RELKp>@;+;Eg|^k_wr;|{M!^R2l>+-Smcq=WeJrUaZ!%8)?< z>-ownKhyNr+sI>-7w$LX`z#OpfW&Jac3$jQKtH0Vc!cb9pltZ`PCR7kaPFEI3uqI_X7LQ0oRjuLFe9u=qGHsnS z6^zEGm*?X8OmbZ4JIO$z?te6EDXCAdxA5^^_@L2&?M4c{o`~EP$+vM>65TYtSMw-0 zk!6O5KRQ~RRhj@@NSDC*dwC8(dj8v?X^gGA1UFBIL$0W1y0RTOBCs~=!kZ zP!9P!&Ba2m%Bl3ZkB!Q#e0T`?Z*{h~uD7NrRUO^w-e~F>@?=&$N{a(l{ZD{)jC!$_ zt^l(2e#~h96k^TVHggKf;Cf^LQy_TF4kjAv+bY_Xr}`6!?Y8g8y|I?iT=1RhM^1#V zdQd$7{R%y&R|6+f1Pe`FN&*~ZL%+TZXufqq;EpSpG||=)@$f(Uct*sX6YnNv5kF&@oS1tqCNR5WHR%*Mk8Obu=yyc z-dUTW=`vzdA3lD7_(Z(c+^)>N=__PHw|hQZXqhO*+`botOv1#TQ+~l{JQ$7t869^g zpQ07_L zDvnwPP-Kw}lU`2bVyJ@)eY|p~UoVaC@6D9^mXvhgX`vmK0mb_eqlg>1WN@rDwB}98 zS<5u|HgRNA4Kv@*R-DK1SJu>uLs}Iz`uDf_S_x@rq8VH}skk1AT9jgkg-T|{!TM;_ zb#hMm$OUDXlvs~oyf*y%7^dKv0cP%_s^ykci}#q--`_aL=ylznT$sr_+G~b5Th@6x zRbc18{5V$7e_I#Z2K837F*MF*G@yNJ@=4{fiVS$JuURj0uuU|2VXf@k#+ykkN@&3; zwXg{#GhBM%+tE?v9^XE2*JC0qJAH(Cbbbn-@Hp#uqS=$j3-aK}5jK3jn}aD zF8LHLBQrqOSqRjJrWzh77JbYaFgzHZpT?r`iua6u^4%j#l>YP9UdMRvt4H z-}v2Z~OB{y>P$~kE0G$S^1*!x-!g)J(~Q$3CzW>a=)MKH_~kJ({4ju?NO>9t>+ zVn+KdZHg3z1x$WYn?7<4C4XsU!B?^-+jC(?=%H3?S3`Pa=$=sQ(bd?TFUUFt?;;rG869SbYbp?_Wfox&}o95Dv{}a((+Zdtd6~Z zuf$`(4Kx#F=H(kAuj3?uCnyqfD&nm(^(^zgY=5DAjs|^PTv-)uxv(e(g6m~nm=3g> z89C3;DQV$swOYluY?K&%#P-MvXh=h35wvqTWoCYY+#v&2eJUs`uAZL0T=RNV6aG5L z2n)EqDI4*$OYEEkM&ZBwC5^i|s9!JR`Bsx~essxH`0wwm?&_#aF#?v#NAg3=aU1sy z-Byjnq=0|mgK7DCuR{C7(@&Oc{}mrNgvt$yFiPkj6nk8|&uJbX zfz-WhdB|BK-~2Se>Fe|mGjHRtIobQZaGU;^4;AL;bS5DsYG&7=n9s0#-6bF`z+lqd z#^O)Wm~f+Z?{-LFwl(BbTp3IVcx{l-qhUz7Rm2m66zoISnvG9ia4mD&Zm{?W1!{t9V7a`7GWtRgU>r@;6G@X z(afhRQzI_X<9@=5c-`)n>S?-{;C9u>CK?mq!{(a2zp9I&M@2{tvE$s^aV<%>Jig?clO3hG!-A-;P*Y`@bxP{ZB7|(WF-`mY_pCBo@>yy8^B+7JwF1 z1|0VYs#L{>m4++7PgiPR#R$yDB3;M5nj|ED^$Mo&ro!a|J4geVljLUkYQhqEgSv>Z ztb{fST2=bOsnIO$g>5wj5ax@ZAYW!8ADhQX3DvJF?pF=W)tnisW*|)YhPro|Is&&- zOu;`*gRx^amN7w&{tjjpF++2zT_5;!I+`j= zsm$*vuBjGX+urPEM|bK2_70CsKE=$UL9t52J$**8!2*K}x`^1~EZ%ztzD&fyOFA*w z4%^%wycTEe5-{;R1yq^$az_b4`n^QFG(L!=ihXDBc+kM`AjzV2J+HPgfiOlhX`i9@ zbXSS`fXO7JY^pwUWT+*boDt?`A-K}^yx)W1v-U}?Yh1nmHDwqFeXhz&uHsLp1v4`n z9%mm`-6@vhbLJJ9<2PPkOMwCS6ts%2Uwtbpe>RbvS)Wy&q)Om0bg{6gj z){9T4;(@rFa)Zq4?yG%Sg&H`n;`uqL(-#s?00DC;{S1_Bzkipv9i39vv8&ja6c7IJUJxp&S=b(!8Et7X-63s0&K_ zH2^7guSWyk>Sc(aPb}c4hlY_uH=uc-tCIufRnUU+nt8RG%xTbZlXwQ=UZOQ+lqN?- z%26VaAXq0q-+!=&tfiU~ZlgMzv*Ntv2u}?>Hu?-ZHkZ@~^Y`|l+m6+*TpVbI`z%Ev zpBSk4y<9L8YXH?nB}m&qBzp+IYM4XcbwEb zBD)AclnJ$Kif@jKr>YV3w2n8ROvVR;BQ6BnN=%TP0Zz&R6cmVZ5PMv@YHeooxB{)O z-1BuHQB2(okP|^qOLRl{;s~U=d`w~m<}!A63TK`TEO0`$B};%fSLo^a<+?bDi2PFm z^d){DjldAy^*E=4*hZD+>|u#Qx!RgknUlF^fe9pWW-PBxl%tJs8K-Qh)o@40DG#zl zyeB0d!;#!#$h5tw&>id>MnA;-1oYG!A_5;cyU+HxoM!z&a8q8$$b3lq*RVPs14NtAH34)@kv`T9{XN+^l{8~t`pMc}# zqoNuS)7Ww0XKRsqp=ovOoQ^JGR`o=Wt;U0Ng%g{ixyG0gQZv`; zl2Eq!l9^5P+3;+H+`FG8%29^-tm0p zG5-8Va7|yFJtto(ta{-`mUWhzcjb^gwM~%Ad~?OBL=H$kW;9V2If6z<@gz3ELR;>> zskV}a*0#evPm{BT?MN3{nXO2pq+ul=Ke~`bmYpkR#sbuMCd&U|L(cQhqC(Xp3n<-u zdQfLTof520BZGgn_w<%Abwh#7rUO?>xeT*a#!s6-_D+CD*jhy=!g0lXQ^bt9J<-gd zUg_#FHK_Gx^gP7Zdk)OFnzfaA@~fNQ`G^fQRI{s!V<>k-T*8n1$+9L~T=JYn*c%H< zMZtr#b;fLJU_FHPKrsP_YK!R0ft}UwP5f${+tOx)ok#{an1qfs7p_j98CdC3(^=eH zrZs!mWK-e)B+YO%20g4Aw0Jp$^&2_U>c4UO@0rC)Ga;&u;gO&#C@t4(U%fqO#O zUg9IJf;Yx6*W?oYkUB0xA^+!Ds(8>MbrNe7FSFIU0m@C8`}ZLS`fx{CjCT2C^iuqK zG%H#%z_T(gzDkbzFYZMzszi7#we2l?16e=8AtwOf|HQK-R{$p+2>Qi1`D!{JT5R zz_$s{Tn1i`mzCm=3gjbWXPM>>Ku5z!o9PTAl(y^+qJ4@Ssc>=ohs=jkGpteMAk($i zwp*^(Dv_(#reG$UboN!F&4-z0n?KNP3xu903i$}ULGJ`j2lhZ17L{mRH-WXLCf0Hh zUQAp&E#qF24~RqAlpP=6_G^b{3pwzG92Lk#6G+U-fs*S%XV+`~3Sc7Z8}Yy(@z{L; zddxxWd0cFUS%BT|9kjrQ9Zz61UjB>Fziw@9s|cju zSCbGZQJzu8<$^ZIc9(mJ5M!E<+yRh0p7Dqfcqf{{R22-8+HQ;siiK65g3Eon$mt zJY}pl?XTrBUEfro<`MPm&o_SM;ER9YRU;us?Q86HW^QeM(WTz{p<(dH`>2;GacUL( z%%uA~7@$a_#YHXR{!&k4BGUeZz(4OL6~H67B~rbxJRS%0RaHzNi(D-Nm3O+xqa0qlYAo?u%RqoG-| z9WQuYnztPeES;TMafv>WL>GJ-1GVLosn>CeF&!yMhU_OgHlV!bvhP@+q{s}wz%w;W*^Y-Z~aVoiS$rnfUwp#Pxe)T~P zZ^d*rU@Eki`8p|!qULJ1k(pF9X#iVHADuU>idL2+B{A2n!&KW8RDl|$;r&JWX4!-n4(lsCoI>EAqJDjNJ{B$;!7Lfx8Od-(Pq-N=7{Kcv- z1x*gK-@K&3Xr3```pxgh*x2evdtqB4lf#R%3YIw&K31ITO$t*{!W3sR+Eb)1>_3>=C(J1^LJ2dg=BzFuCQy z)EjwqJ-LG1x-uP(KzMGI7wYqD+Rg;N3P2p5B3IxL&@Q#s)Ufr?#bqD-5vjPFb7JKe z0!-hpXJ8!5x%GrTIdEw+ZwKe^_;BYzt*eUEP2lIco??Z+nSY~4V2_T0V?tv~?i9gR z75c^$1xOnB7AQ0592*pjZSKg16^eXs81M6T>m$w@kYI#bkp_9!H{}hw_3kGADr`72 zGczbPDTTRZTmPZ58u)^(H>%o7srT+sqZoO8i!vyoCy?a)dDfUaR-0?dm;cEsz zVm=BWGeq|nX|j}j3--NmBbe~f=!6y4*NoTFSdM-du=n{@3$3Q;JUhtsuS zJlCn=h{G!Xa%$aN=aO17SDAI~k#pjts$70TW*CBB?38aWFt6hm%TeITRADuk;+x;N z%RG%whzr=JmP2Nn2^{nRWQNx9F9=P6eWP(06lji=I3EnL8I7B*td%%`xcvt|YHt5B zh`oBwBDrY&lfmpdXr?sxC)H!czFOAGTSBf;4-X^*#RBJt6XVoi$B z6~4nr6FbYS!AeYwJgdep6p3%IE~6oTVKych3}q4a2=x3a&k+=n+d*rYUue!5Z`}~|lqDJz0W&0?v9Fng8Wd^7&;-eVCzVPQ9#~+;? zhJ&#`+pM>cLl1p=%D+V@52a4Ek%WZ2iw3EZ!<2DXV|~b?ZRz!4DqbW*EspL0`A#2k zPaH)_S&8F2mI*!I50CbFLxxLi%7>{kxm$Cr`8Kx-x{>KCmWiZ<(fkvjdujJB8HFg$ zK?fPD1FO>ts-EFE(Zry<{oMOFA3oMNMh=NnR_f^g066NcE zoiyH$1)Zj%y~)vpvKu}iHmd{a#bCd}59a;jiwWRqE({hoA7HIWsJ-9ix*f&r$5}=x zC!LHun^QvIL)_*VRj_*&#_<+`L$>=Qqq71T#v2I?TE7sEB+uQWF9?<#iw8T`G@7K) z`va!EySlKe7YVIO(qj~o(V$dR>2>jSsCp`9tI)Q4h+E~_-EpDCH(-oY%9uqoJ#cKp zL1rv_>r8N~j01sfnjF)G*9_idTS$DD-STGY2$3p&eNbX}O;jHB4^9*nBG-`pT*Whe zh9%Hzi6NbJSNFu(h`PxqCXsh zsyFiBRAL1l{s0h=dJr}agzFnvIar|821w}{wRKg=4MLW+16#Nj5^H-s57_iU_c8Ob zF+1rNwKY{`S7CWpnJ~xfKba7J{^b;hsIc1qv1o9`zS5Gs3a|1m?u(}(pUXi^frQ~u zRiys`eC<96>?dq(x_G+UoPpS37EcH|-2;ik+t*-D4?zKU=NnK_L%wV=e=wYioONcN zWF-4wZmoO#?TwpZGrzd|oVI5N<1p^0Kz`M!veczP42pkN5?%@wi)S$VTv?R1Ih;J< zttvkZU|@CoC+a+C2j;?2oBKRsg$q*gxzr^F;f&z3oFDZ>-GhVcY!o}wVXUPH+B3E@_Jyz=gXGegR z3+{7r73DszR^dOMbN$_4x)d&9-8`SBuz$4W9 zoPJDN(m?Q@^|AYS$VqytaG$$|qm};sWQfsOHHK(}4ssfYDoSyBM+~zBJ%*@1tgwh# zioaJ1V@vB$xRB7~;fE8TCC%b_PXUv@IjhYA+Wu*Mdv(5U;Sk7i@5C|2Do04=MOM|m z!P1|f6HwPs>c3C;?i0(>qAtyE|fCQL^oXT0V)h2xn$ z1}Q#zE}lYnWvBiR^xScY34`qkYOKYuz~9g+c$ZdP4v%&u>`gTW8>II7YFr%j#|7-HS?&Ut|FDQeiP`%9@j=T=>j-WSX^FpJrWHf+pLI^#{o%G zso&8QGMY9BnCc-_8iw#&6h?$2e`i~8-5&q(I5f_5co=m*@Xm&eeCc}a{JuN$oyf

V3L$ByU4;@$RVVeb@M?T`jXR>y>L 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�Lm!33QS@pQD&d^Y+!i zl4Oo}<_V;Gq9Ds451@%0=>zsVK!AyT%~0~r?7S|Zz{_;>yIIlcAu8arx!}T0h0a`Y zW5mCkg1}PRE|~9v?ARw+%zJ6&1=E3#%$fZ}Cd_f>;nVDIH`5{_La&z+N7Y7eww>EC z3|%W$#PI)+3M`&UzQBhd6%^dp&0!#iuTj39Oawtgroz|ToLFeig*#sM<$t!a9!fnf zR%}GHrs`B|G#RFu&jA*}dq#r9R0W@B040h}8vQi1Bl`of8Luw~p1Z z?+-h3Sjp4yjx+SFHmm;A-tmcO#y1PrwgO-CBk1@-(ux<19=1@4J5SMJJJzuS zs!>YizUzUL?x)u6ZaL2XAXxozML!Wd&*3&M8I{VOsGV1F z$*s196cLH5HYX=A9r|mJz*^Ws>E!xV_4#-rms7>F%#0qap1H7v4w*8G8QPZ@MjBK1 z+ke1L>$H~R{1c<6$I8(`>I|7}`mt(^OtrgV`B%nD-~96e^)km};ZfWQjj*UhBdLMO z>E{bND};+%6TwBCh&7q8^C^sHxUhCMMLHqXTdpT#QL91bBY&L|J0ZvJAH5wDlV@$u zn|Jc<76cXI+EbvK21e@$xBRBm43#OVzDfte3G;S#zC@8Lh6Dr10OPlQOtj4@A9w5I zj>Gd@3oe0=hEbEwh%C*ASL)6T(J($xMBy_^%#Jc)N z@wYeX`@O<2$Vypp+A!0-Na!Jp2j6Uprn>iyUi!re*G_Qf32VxS*fOGrwrX0eI5nq4 z#gw|DE)@YJG)5W=2^wb5;Wl-#p2*yUr6vz z!hs!kelf3JIS-GPjblkgVdmfwZhGH(W)d-*LZ4zcV-M0ZRqT9M9(&$v0|(A$fbdk5 zgiKP+LFjLML7u9dlbK;$u*I{^_*1@U1KZ_aHvFqEnxiYg5KPen^hjd26WEjml96nO z-SAZ8%_7IQW@JXQJ4mT&S)#RdFf!E!$D1j{;yGc}XU0o6C+RmgZm^F-|Mgn1J4i)p_CSaB6mJ8A_hqqvs!bg$gIh)w zW)yx2GTI;1E8$4w*$y#o-8w)*1i%~Uh0l{OMsLLv=T)^xMW6D18NWr@k8yedvr(Hx zMiP=rS5`LyO{(m3WOz)rXsNzI7oml2j?`ICF@#@g)Be#f>in4<&4fGARR?ct5!>k{ z%DbGz=+fJzu~64SbQ}LXAOa*DdZHoP!WoKA;=P)5+oTi{Z%(4WKiIIJ+5k-#v^z}G zou59s$3bDR13G&0cXz@+0Zh8S>;czkl&?R8Vz=zm@ae58U7L)Mn^pE(m6E6W@XQLe zHFo>P$RLh>v5c0H(&?`pL6PI00;EaW-}dQFLQkA+81^Kdj>|62qyKq0j0N2Qh~`pq zRT(2JV_SPe?{=5Mq*0&R8k1XpJOtyW*HxS?WulYj%WFQj@(&Wmx~hTOC$Ea!i9mf< zw3et(Cu?&-R{}vS|9T!Yo{>OH?WLRnWR5Y=Nhc`I!NfU}Io)0jkn8SjLq=zIc8X^^ z`|&`;8^8%_Y;N;zl{1w^88W&Tp2dfH%$Yy#d8O^CMO} zd+RmhqMh(%_N@|dpS?-kdavB`*vpZq;9Go$J0UNX@SZ2j%(iC zIY2KK?E~@kvPJq0-+nXrt$o1@&wY`RveuB;&U+%`T`aDjFGuZA^rmyd;$=jpSvjUbE|%oZ_k2T}M@9B8e+ zrO&VVIoYzD4rhP1BWadv5fVwVwd!kl?VRJ$0R`9&b@XUF_r-Vp9f1g_*==ZFb;g!` z6VWlBq*uX3iAmY z$#UrQ+J5KN-WIi~pr)R!Pp#)KVa7_C@s$8q6k|+d<+2fhn-RqWr6Ii3H3}+TWBQ0J zTg>fD7Tq)IBFH)l!_>9c>2xx_Ji7~j3BmJgA!dW<)K%EMQ(fNh7_aEoquPC|91;nd zoZtTxF~M(qKDVa>s1P$&Nwu<%!>$yT^E^&Uctm72gNO;s1Jsf3d|CVQ|A z=EG~F&>n}0%?QOfluz(XIs>t>--^t&^-@fZPtf)A5@obbNM2SV9x!-agjBp8x+%G$ zJC7NqDs87fF7+f=F=LNX`g6j>x%_r`z;Q@zz!C7`KD=0gZJ`KIN%9K=0a7CcIu(5e z^puD$BK6(UUA>8G64;@4NiemaRR2twY^|6ZU<(-wX^bot);lLwW4kzbzYQrY}9Jh?9&1#aKc>>CR5C(gl%udc9dV<}GxdL0Vu(fYL1 z(%V>#-4^x}C|=1|8)ss}viJcrb2$FqRXocd#+`#gBNnBd_Wc*upeg<;w5XHT?>a)O zA_3BHQg2p2EL=7uB;DJ2a2e7e27OHGk>zhPzgOd~~0WZ8Ng^%rcJh zP98}DF%2g|M{4j41fE2WPLSj$11BzP4jBkDyz zKWO3BDGHlE@#2<>87=sx70m>W9=(DF&T+9j`Rh79u@tk!uHwen<~h`2#2^-Fo1H%E z6fNuMLT?x7%=nbSkDtQ%UWZ2Yk%@O$oH0OznI5bo1&@JNt)8E-BNKDF0BOa5MHEo! z1gg$mU%rUpw#3T@WJ0<8BJf0XJ6CzAY#(u)DYB>#1fVc<(}- z{`};`$O>h6Hy|NDD53Y~>+_8?>Mg4EYm4PWG5*RY<;%2nVhZ0qF+t-1t_hvJT}3v}?)34x z8|o^jCAo%Bu9Hnf#tutNbQ}bbFuL3j4q)(+CJ~zj3wzW#a?8^)V;-(8U?D@pA2$n2t{U#I;iKl3eaj1 z8Cp}@HyOyF)lj-aY9hb<#4e3X%XUXtUr_pvB(AxQ!v7uK425vQQ!-)AlKIB0VR+>H z@2{>6&h=pJ_@D8FCNUJpC@piT!}c6p2fQVy6X6t$Bg0w79CKwb!>J~2Pj*CVXGZ)T zskqCBb#X;hCT8Pw{BV&+OJ6}cdGyHjZDSp3CTZ~x-@q7VVH3G$6F3e*Dg;G7E1OYb)L^=7Pd zoCO>@Mrw;?hQXx%6P9}`*7B9V5#pXf)mA#J2>3D!wPe=<2bEd?xD8Qg-zATV^m#<8; z-J>$jB*dff$YPcXWrfh~1V8Br0Bdfk|8>H2_+X8oVURP5(dfqIC zb}G6O#_qX_0C!~G6Y95}s+5!bVlw3N|2*{Ck{JsW;v|RTX{Aw!Ql@B z>hbTi#YmMSLvM)lJEJ3N$%l#+*=yhksy)=i#6*iR3V-7=v9fNFnG$2%xcu1fD)_Q$ z?C`r94sNPJEzed;eix00S~8!b_7(T#ZnNl^`)fFxL zgifzguD0S%E>yR||2z0MQHw`0di;os4$EMe&kZg(bBV zjzJbQoMnOz?jZ6J<{CK1Xsa}CuylQC8nr82##04vUtNNq1zFJMhj{w#`Q+lTm?RZj zvf!`u&m)Q$0m(!<+HHknS-`Csm|j3=J)uMCj!t@>=#h1E%*tP^I&m{F@z@GxoVIWw zfyhYHJTmS9rRQPwoxe;7(K1_V4*Dp;bcVh1fnl$JV*HVyd3>OcQ2#&n7}gFf;gPH& zfxVg`5dbz+r6HrQug&mbO~UDM!GwaWdCd8*oQ)pCUr;6Iv- zQMwhJ%09j6{Nz%Hxlb$^=5 zHqR5uWV4?#@p02bVWBs-cxDBp@4Fnk6U4mNP6{daX5|~YWWbA@LQ4cUTcILO4$Kqmn*V0YUmcnM_+hKu3 zH#s9VB`rRB8t$!8K)$lVAHN`ma{Y_-AlER_!D#p6@D&~J9~G@*wJmCQ^B5p^js?5e z^K-+@-6}5a88Wa;J%tYNB~OMEBF7Nz@(MbWA&BKwZ-;w0)Su8YXjKVe@J=@SP>`Wz zn49SAfl4IB?{XfovVtc(-?IOh!BSJ+PH-U5sRun%y|01nT%U`(JH0bE^%H+7YuPh* zYxm85mCf9kzPXvd{VBg;1nX~X?vDi>pz-lcI4$prPdw!mylg$}54rzE{uP6qQ(xfq zovN?k@iyH#fx}!!4S*;4UkkeLG+`g)2;U~{*r&*xUuy%yqBmVAS=Xd6Ssrbw_2U&cj^191SYlVL zSLsYE{H&75yHdWV!z#hjp3g}Ccva8YQ>XHKY#92Go-2vj2K}n%P^=PwKVKP0`Rm8{ zz|YvMTl`^8ADTGA&!LXuQ40q9_RoxkwRHER z1=31>cpus9;CHZxWcu`uXH}zu*7_OEiRcBD(X@=pzC&wZeB5<9n>j{k)mvK@zI>)1AT18m&2@x)qvU=atyhAT4euV|uDc1XlCyy~M z^)P=>%?(4MUCgHww%yf9zPC9QgV3*%@@%0BBIX~Ei^u+_X4oHpRMs3&5C}p33Zi}Q ze8PsU3He5L(ppD0>Ma@WZnF1__MaSH$i02GVT5at5oB9=nKDCJRe#E5U^7u^^Ti0! zjW69p@6Pt72Lv65-U_DP^CQ{(RExm0qmIiVNybMPK)#ewu{KD+HwhhFR% z$FQX3;TmMR%86pEoY)|wZfy_D%||z?$u*=5j$HI|31tN(zH|>2U;Zr<;!XA8i-ZXf zq39JYY36Lh&GydZNhcZKop$eF^mpL}HYFf}jzDYa`y@#cs3@u^k3e@=rj=E zD)>T?N*OySH4-7j`O7wc8CK^&n%)bN1DmXY&tthI$Z;BE6rq!vZQm4w&s$c0)g{vP z+3~WtYvvW4H7LYMwtyaJn+9a}X!hP{$ue7$RFIuF+!D;~@J*IxW(MG~`pT}o<=6@m zXwEfxBFb^h|7}L=4FGYGy<#-cV>FZRMYEtXkNU(=Yw6aKEM46%Adx8ayB<$1YkkZU za|euqsd~|T^Mj4J@eYq^oJX3p!pY>-z+Df1`cJSvaVDdBZEvgt^S#Vb0L`|e^q|X4 z-DA;!q%|GZJoT8&Y|y9Xy30xcjPp;8V(PcP^yy8;VR}!32tF?D`ZPYFPe zeS9gS{@vcycAUD7vEuT;NafbzxEX&tx_R=-LGJr%Er31DIa`PPAi07 zXX4=>`8b1338JbV#sI*v4pcx~Z4Po(5Q|Bh5Ev@)=}9Z(m!(Ai0hXai1o1OPA(Yo2 z|AJ=A%t39a(MOPEUAleawJQCwFC$&)(o2!+Jxi9B6hmb;uwiigO~%0PTOT>o>Vf)6$5e)LSa9&W_l?6A|8m}Jzj84W&<^lj?vzQ0#NjV@KZB6 zBfYn>{mS$ggB#r5XNG2~&cqcQl_q$ZIiU4fQ95Gsj{TLfjt7~38NxAo9v=9lHvR;P zxTqa{=Cfrzpo@SQ&zb$QWnYFLaMfE}-gwMW$(y9aS2yL){M>b9QOILTiK5jBF6;Sq zwZ}w2DOam5@=3d$(PB5Tjp<+I(+c?Ms=5-YymnW2LyiS`8ha*`JAEfaqZoOAZa1~C z7%}C&OwX#J=Ja)=OdK%HoFz-DE0f{;mM(kc!*JaV2D&ko7<1@e7K@$Q9D4z)I=R7{ z{K8=ukq=icO+#;4jW87t}u4b2pZ zx|>x3dMWxW7*)j;fo0Sx?v!%9KVqLbe+i9eMe_`c;w^BTb=$(nIY%Tid>aYY@u&C( zatf0oA`LFUO)!7G`qTgK@jQ>&OT}>}R!MVA=I0|nQB!82YGE$H+JMeV$dvob9k)I) zK6v*9v2|Ner;vXt%bYj|v&(q%8==f!@e>v#w`A20&x3UP7CHJc^tUCdyJP3w67L~P zGDbA4`#V18ze_`7wCUszw@`xAK@c(H7Qkf?oaz{jMhv9Pq)Bm?i+@`O0}h; zR~-y$`i}q!pLLhukJZDo8*ifQ0TX zIM`VtE*!;{`w|((pPi0IGE4=Zc`AeHeDLRfR-!AsT=jInCmRp@*ZJOh(?~3wXtywB zMzEnS#NJF%Z_synQE%#57&^n}F{F};8cAeY(`hMnZ@q#C^oGgm-yk3!@4o5(=plSQ zZ>O3}v3+&iIr^IJeqi?%4CpEPM~~~g>W}Kn!DWuhDJSXM=&+ERcAhaI#Cog} zR5@*l%3(H5YyQ6a?*#_4_bwd^GX7j`h-xjLCs}w48ISDu1qbWI9%g?UN5?L@1$qGP z%RD-#WM_{TJK$~A5Y~?Hc&(^m>7mL5XEl?=^v%2FT*6v!{)J|3?@UULh?~n!@Xl&= z1i^3+H)xMYEs*Gi;VJsxHYazwd)sS5V(H7eRrHDY0{#;Hoy2e|rE34DLr-hbKZ2y0 z(}H_BJpdL&kJ2@Tmbi&byetiwSLnkP&=l=fypKvf$4~MnI{US? z*Ei#*WCiH`7jDI9^6=v`?7IU9_^QqJim>_?d4C7YMe4qupI`GNup0DC6!Qlv970<+ z4)hIdy|we9?m*}9duTf{TBp}9E$Uqv_8U=u8{xGeJyRybhidjLgUFHq&DwP!+Mx=T zEd+Keo}GrXrj+d5L&pM0slF$lK#MVasWzr{7wG8Kt0bZjXZKagGAmZyc8~yD5t~4k z$r0lcVMSE+O~=0=#T?fS4wQlL#c1l1oBvFyS2rB8(HhbTRZ3}ar$$EJglxE%Z`&ZI z`6rQS381e&COZ~;$7K^;FSf(e_A^aj9vXcmdJT_Y^Zk1yQnJbgzTAIf17@~MDwFJ3G5P0g5$jz3{hGn%Df=d?_N}W{S``X z+6Ia4{HLSX2;U^CkG4~PH)!G>W7*hS_5W%Ci1B8qCM$@6g&R{3L@-`CZ-boBhI5Fx zM?DQ7T|VT!t=5IHo0JPN8do9q?>t~G!#b1a^U~I|*NF=BD%lFd{lprnqsx<&pivfj zMo_-==FnAvY7Cj9Q&Fes*<0rm=5mF4BM0^^hm872H$frKlDIo{q5TTC;x4tX#4-cWmdY>*d_ZljNP>Ibvoxpz!I{t1`qsFP z+b>wT8GBmjd{Lge6-BIbj^pS`e8D5pT8l}J<90k-DNCnj5Bs|BWu*Qfxjvs`td&DS z)EiHx@Eu9--jo-0pe(89>vYoEKeh_GCP{6vf}s+s0AYe*{Xu2NQ!U zi7k09EHf@(r{_&93ns-;rJ6VD=JQ2Y5c0v*=0IUbM;;CAXL8-^i;U_{#;nc#bWA$f z)$&#Q8V(o41lHZU->K7QQNIlhqipj8Ww{pHWJ-y<#g&i!)2wXV;b8svg>h3;TMqH* zTUUz2*JEOipz^$|R6TQmO0%l&s4-gSKyjz@!Zc!}Xp&RcJK-zA95N(qQrBeC^MjSW zDvX4RBqpzra&vKZvjyA>8gDyKmQ&jKFX>kk_@m-3C9tN}s2K3C- zD#V%6ip+Mi*6elW9EvD4nV^@~wp4K4R>dk~wXB&0TS6AeWWr;A9!oVtC&V+Pp)F2> zzOMi*t1{HbG5#H*pe3HUa6lIwpiMiG>mOA?>9wxc=JF7XB56x$|8~cJqWNZ7cmA)R zX6#Kg0+)k7S;t>_!@!jGjV{DLZP-v_C4WFuAT-IDmff+x=G!SFX;x%RN0;^6GPN<^ z&lOTL6;EAlHix7Qy(FT2;TAkT6CdHDOb&C+j1KVquCZp#2%6?G!C>#bALTdXmSZ{H zzjSyN*8z4Fz7>POY2h4bcRMzl)E5K2^skK5LYjxUC7K>QTh{$!Wv)?(wTC--xA>=y zlXB4mY)1ifb89xyNbYMX2WL-7_s;qm_+Fie+Y~l}aGk;%9TA^(>RX%IcPnHY<9$x|KoQeiR*o1_EvP9SLHH6usZTl6cN<7}-TFieH|% zk46vhy|nX*>+}#pwD3o)l81fqu6{;~Nd>pjqD(h;zVta-ud<2ODx6`rj$9Y8|3x;j z-lK%rH$kcjuePXnH)bmj3-!gz$6k)m^DBx8{*GAEiH%>L$j*j(GrWi9MZd9##`nb_ zV9P{@-jj@w&|tXyl~Lr5KAjC(d&xW_E6QTN!MCR_lWI+ws$jVc^{B(3T;8vq?j>i# zKse~W3tcSX!;d2_iu1PQLF6_?MXk7fg^4pZ_JscH8j-15+Jq|_k{ADwO4<|q5?*nOp4L_?n zCuIz2PI=qfFB{9puWBbN7CFOUVqEC~pg)rF_Hz`;>b33<=+86(ZNA1m^*(*#dS3Rm zuojwBNiA|2i{rrjChj2A#j6Z!BiEqn4wWJq2vHLjsw|}p-gP6KJ4D#Tg_qe@4Pi}d zL(*K!%R12z$kC^rDXyWP|9oY-Kao-UJQ<7Q;2N{D49CU;Wc+rj{Mjg9`)4{HvHGte zP}?i4F_x{)u4cdN1^a`qd>R2Sq30wnSJA7}4wQ1$)1FRhS^X`Uz~f(&Z!|{AdF`4d z6w{Q#7g?N-vF{v7Nx0q{=lwoB8i5St5;3xz1-I*=9=xI>eYC?$)eo(?1rz3x(HhC$M&Q7 zj|GVEZ*~C>wNW3yPGVqvvT25BM#gk)f$`x%uZ|TybHb-;zjT_RGj&|ffr_Xf$J8q( z&3S90kJuMRY4o;DSj{J1Xmjs}st{%v9FmWBO)(-QCrz$44h|Iq?5XlGNWaR0Bt6$kn~Eud~1~*-&Mngqy8`={wG6 zgRQq%;Htq>9r62HMAvu;zf<$wZUL7>;$Hj?&yKtl%&Rv|Horu&aZGBQW+x1jk^oWS z4Y;~;pS;@uB~hU2$2=4JdK%k&DWB=mlQo9jt`glmhU8`ia_; zGI~36{d$Fjid4D4Zf009q|%mA%tG~dE0zKJ4SbDsy6^t|Rkvx%Z^x|<+hPdF)>2bG z{NrjsMScKzpNu0cOP94gI41sQGZv$=TUEF5Rjz9E91ZHs8JPy zt*trGG}23*j(+o}HEU>Hm(i_=qzHP8JX3<2=QE~~u(NnanWSj;Dn*i@k#@G>3zA|g zqoMAm5C0l>Xw;OkR>@iMkw9yL4`Ec-_LOhELM{r0w{Q_b$_(|%kXk^ud>i)f>QrX- zn;8uJ{o$$~sHAGgoe$cl>m2gF#2F0I*Zp-rNxK629aIwhlEw&*+v+^vI8kiQFD13e zLdSCS=>dQ%Q(e`y@?z38S`@@0gOp5XY+T+qHNyNSZe>fu5Z`-j_CDTG%bPwuy}}LF z?RW~zgWYABWGQpU@tNNa)U{^kuNBwS{H<|b8E=vCs&M%!d_~!I0#mVIX}Nq1Ff6Ef zy}c#Av~k7)4z7;@WE(sK9^TZ~5$znuK$Kz2!C=S4>ajnu@OgKOt07sqxS4ZTjp5jlz~rgW}WrZ#C`U^-_JdT zd*Qq!-l`rI;Y+KHGuY@s|1pl<{gIpW&mYi6!}-iAUtIKUp6ey@X6`E7AGRQ64QC$n zf4VX4w|kr=fr2zvmi?OFQGUxDUrX}4y0$DKM_#R7bwXYIytflg4^}zEdqZn zLFpseFl}BW+B$Er$k0{F7nedX`l5PK@}7O}9s2*CjWV(YBSNc%XnptcXm#F0g$!J8 zny$K@RPtwB>FfXq(1YF@U!ud~_AQuF>gts9%>fLitGl~}W5C~j9P}A>zj1AV;IUNd z?)kEG#|UiOvCV+YkEPWR10(Toh}S4&s$ym#Y1?lncBz++uyy32H`S|wFKvY7D;;)N z^sd9W)AE@Qor2@DUzZ@}&pg+VuAuB+BYibj_^V2qj3;UdP1yvjIGE^ zf|JET$TPrznH}nAY&g7Wc&T!@aLs7C)+dMGH{oXHhraWSD+oo&-aYQ@*td5-h|#J1 z*eVGdN8Xu^j#sm9N@$;@WN^;~iH9?u*qRaVs1P2MSBF&X1t5HHSJSK7{|z;$?qyLT zVq;)#aL1@4K1j|Dk4Z?@mlj%A{J_Zz5gBkrCw}YPK^ukPm#sB6WAQDY zb9aN~4WgRZC*U*lG`ER;T2J48FTTo}G?RRm5Pa)D?v(DTum!A!jY@fx?B0r}YZ1Xs zKHT=bf;-Bv$9Q>AP{4GLVt6!yNB8?sn2fJ`@Fy}BKleH!=XNXY+UvW6XpC_~N%c+( zYk!*0e-RHV{F)@GMUNp=&?x#b6g(C+Ytf|7v&l|ii^c?beA%{XM^as5{VDY51@(x) zDOxe8Tjom!pPLz%q9{wSA`+4~`Lbg4ZFOOboTg3GN>+ow753cOd+nu^y3aigIqG%0 zw>Gn{##Sprzk8-`kB=2%M+5w%t7-%fPEvbAkzeA=)yA1!G&%`_kNfCS_FD2NW%A5h z3=rAE$Dh5*lFUB(?UUesu6buu*KJi5_CUawy+@*usnXP(Rer-vqUcLWLm`q@Q{J2%5xA8HMy5L{fPgzw&Vhit@Vc zlC;O1WSQ9=#HglAP3nE0xm@7ODb*Rou}rQt)}sC!3&QU&-d=zAjxI~zs9Eg-l0Z?? zRM;2Jp2xLQO@krNtwGAfGQCiimsPp0uIJ!ETq~X3kJ@Z!_HUC{sH zrPGF|Fy$j_D(Kp!N>^T(J+a7c?1kNYafDfzUR$GsZp~lgL%SZtJI) zLDzXh=wh^2;bJw`U3!#QP;*!s`#H_KwjGZ9{24a?S0iVr{@-VOX6Z8Gu@$|PGw+&w zQ05a{MD*;AUYcatW}(q&4&9}s)_Q9E#NVu3L29whlWu2xw%(gm7>t$Fp~`it+M%H8 z5ui_x@2W)aA~aoMz$9h-jK1gE)C!c%z4U{KrVH*Yb|AeY@cD-TTbz zHdSSIlSMZQ+r+paf%}r+6;8lIc8|WvF`;^aO0SJ>c!bCJb=y3N<=;6-Imov?+bQbW zN1D7K2ACb`XM-lgM)X5H;@^=r)3ZHE0+ja)31Q@qVw}Gw2$ao3adSE}aO>apD#FCH zKJeX=!;o$^^54+5HQ2VKRyDgz)Abb&fn3dnDCnC*{3U7QW-_#g(N0Cxq6bs#krZW~ zh+pfnGSg#=t=bAYybjze&pnahmlc$pjaBJPrsJxBPuJ(PUz+ zWq-QLjxUMNk7%rokgS1uLN@J}r#YTh*4TK=oX;!b@s;yGroTKF821CrsX6eOD z9n8EPvYJv~e^Y|^q@Xh(s-zFM;X(R5DiXciR5^R01C&im1<-}7`6=T!4o^uY{2dVH z?H3*rSPhxtTe)>e5;lX)$%+Y0EH<5d$N&+vYWi~CedaJ_F-n~%;#=4$azA|;bFrS_ zRm>IJZf5*E4%-%D$v zCakpFYfV)?S`ub@B_w|sZ+QRG;V>HIUe`rAU6u6`4`>SdWYFSb>V1|-E0S~;@WL*d zmd!Qi=*4Le`G;qS^e1Iy&FiYQZT(G|6_4hc21=7GA=zyP4yHBnj4(kW+BiI&-e|>F zMWqn^`EZ5|M{QUui^=TxB1{iX|4hC!)MUReCNZ~b54)s3h41<~a)hRLddszvM^7a{ zA+F*5688>w0#tIU+5$x5KWnZVVBuU_;b&b*{m4-9b_U;6_$Nb~?RbsV&7(M?!>TGp z)jtStc}&}km6gT@y-REh{yuTH(TeFGYsi0ZH!JJg6IaEbtKZ`a^$!vQU;JNfZId{a~R(QT1Kb1KA>FKuJXE;ib=HMOj)MZxy#IM?~e+ z%$C1PrkB%q(_%~gaK0JZOBJJenhop{YD5LjlB2MThQR2rOq3shh?(Kx; zcKzH<{@Z)yuMbbfllrEqkfRz8)7*PQ>@HPcK0UKdokf9EG(%?x-SV0Yg*3jl@S2dy z(fUNW)J3XNSr$C*AJByVh+s(BckWQ18f&#&%H@)zmOV|#p}jKp3_wWFf>Rw z1h{uDp4BR;s4NzP+98>A@qj~66SJ;VlkZdZis4A(QfdyoxR)@7PjE1un}7Z7cb|hK zyO!4l2@zKnH%ruycH*Q!HJef6ONA)qR0Tm>bFbmqq0oM=HadJx_^`iyiV2owRPYVx zy{(y5M9uylr)pPNb1pVXA}-zE^u>M0yx!6}Kw6*TlRhcNtFhYzDBs|BgX2a2x(sFB zg>UbvL3~be+Y4tep6U1WN8p1VZ$O*E$)?AalW;Z{6CeU@FNpgs(V{VdLY$EFLEH|l zWv}u&Ob53cS|jW$5U$gmAJ8(hDnzy+I7X4|Hik=tX(~*wRwHCk05rN1lBCI!(MIFC z*x?36a1~!#gjRP8_F{wO=p4gwj5g|E6`|}N_x;=znHe_E@CLNI;(B7od*Vv zWf6v4syT28%nn%PZqTSi%x0JbNdiXR;pCku`DyLEbnrPGAtu*IN;cLejOE$aK}xCZ zcmHnN7kB?$Bxi=H7{~`3U#d&$dl!mQozQe`gnA-_%N5Xw_SkGerXN=OHqjXpb;^}3K1{}#1riq- zCv8Zg{}?vz#FEG%B?rL_?y}y`nZjeu%xzB=pn{beQOF!^3hZ4*eRvWb07fIO6+9V! z_E26G=!};NT`apEyhxK**X_OE^3jDfYJ6YEz7y&FiV{quFtn%!`BhxK(nU z>bMp3^UU=ZO}8ZR|aZsr_z9$I@ z#k*5z_xHd>mNay%bG`^3_`Lcg4N{B=QvakcHdGQqv!f*9_eMs}uPT9Kcp(F;c~jwi zDn?Wut_0SOiDV>$N4-YY2E^KxoObG^F8N5QZr##$F&KmW6yAv$h3Z~AV`-`Mm z{p+{y@gbu83qDeB1A3=(!p}NO;j> zZ~o1vxqQfS)J+9H798C~vcU18WF?>_GNXlHl$!tygVOH&#fN;Qwk2vT&gzThRM2Cx zaYH*Im@5MX`@Zdq23z6efkkO-b?-z#-z;bIYv^YBUr+j}IqmYYXA$nny2xDe?B=4} zE4{cnesRh(DNBxCo?E+^LOq>&`4-k{j&FU=(OKDJN*8O$I>f{b6$TOxE>;?}4 zBgcvW3@WJf{xFj(N4zBS*;yy@tAI4st5i&0SD14F+x&pdY1qmMlNfID)RNTZwn~ya zEx}e{jP6e%Z8_EK_J~x^=pFhfKh>6q`M^Jav=p565o1F(q<}S-+xON~CtP$dA}+UqO6)+>sRoZ7-8J6&Ld>c-$Cb1`KYD|Y(`sls;l++ckv-m)S9EY+ z{&xC~%Z~ISJ+WKWdklw+>%bAllkw$y`_~hF+QygpK zEuPE$DN;nEs=KaZ^r2VIaYG9I&`NtQO^3?XOg!Y??15#Hd>-7d0%xc5FXvwOh^N?>b` zE}R8G~r=J|T1uRou45zWZK}11uYeENfDB^cQzc zt-TVI%+SF1Rv1{L#(bX1eB;i-LIN?M03}f-QFJw*^|pl3KcjZ8>%W?cT#mQJ>f*>n zJCo3xIyn1D8)<(_Sy%YCXzOo?45DOb4!~=hsC&`kAgakP3DxalU@+eAa;)ln@T(`l=XnM@F`qz@pv5Utc0wbRaRmd|zN$gDGU4q`=q~ z$>dJzIuT-}5N=vQ(Ll|k-Z4xWZOXkcC>wtVfb) zAIhaq49}ahEGiompqiw)vl3uoXX}^{wKKNgN8J=Ubvy(sV1I*Mm|3Juw)u(!Wl`~T z`ZgbDm~G2SYA%%C!b8Z>-5QV?(?ue@`ikBkG#mbp<-EisyR3ahz~qV&-<t>FhDMYh=pf@SOwZb_wggT6iDp zI$7l|^rIroPgvA_rKlCqbV+b0oHN<~6PHV1&Q6)X2KdHiumA&W@kGV&omvyyW^@YC9Rh=Pg z!@}!Wu_7b<_lM`@WAU(mxMV`jZcUMY@ZhC}12eFn6Db@U<~bQFRwLY7KJRv_G`}M? zf+Pw6q3>{FZRqOwW}F>G`g1*soE@DfaYYA#rPr36f|Xvt`EdG_(r?F98&c8CQHyF! zKQW6&sud-My@~Ho$$o;1X_c1Qxmgb;ni)}_kJ)pn)8`a59cjfX1@TS1)04Ebu6Kip zGeW(PewE)8AT#UXq83z{vJ>K`s#s?y0U(XsLuyf{s(4}%q84OEZ#~*m5i5??5y$qy za+LTN*^mrGD9vJkpv0o~l@M7o5`iGQ;+*m_bZGbU$l)lyfM zgOEz%`Csuw&#Q*#-W>Y(DS`+#R%X^^>c5@Ts&H$eGQG{`3fVM<^ex2>-%=CQE4m2X zYP=O%3*tHaoKsYXpWJ5R7B!0w!hPnzHL@XqH~%d6@;>a z+AyT7p(467;-IcZ3JBON3J7)FXgFcewyZqy1wA7xO=Lf!rL*X$O0nyyeN?#|ne?iz z1B+r;bSVP8TA6J5yGz9C5=_+R>g5D-=PGTS{bMBIH4v#Bx$bcRp2stKQZ#62NQ1e*XKq6x#!(Y*pUq>J?>)pFTq~CmSipV-iNAMIH!C1`6&q1XNi$6?bo|MJeAo;dH(9C3Bj=07AA^!rGw znUig|yQBIBB%}dw}DSCT}aq3Px z?GwYw3iCoojwSo6ooFCw__MV#CeG4#%g>hG`m0 z*w`6^;GKW$+in4m?t;)(bGXM(BFQ(O{0rDgs&_n02NYVjIjpSqftfg&bNS=1L}Je^ z(@BW8ooP!L)2FFSVhy@wZa)$gC$~3`v5Y=e<3{mkr+S}y$Gqp*v4HyVy*e1!XgEI%&WLZ1MjbyLLb>7+6oXGpoM9=h%f)FFHZK^Efea(h-Cv{ry-2 zTKi{djTWbFzy8_mZS(tmBX1%YG-1cMNXH=<#B=+sq%(Js{@@%7)pHBuc||t{a*&4% zQJg1oC#;UId{)%S#>_@`;LzEP{MeYt!mrEx+)tvN7vsAaC$7Ym=^V9x8p?(Agw78o zaqLxyPo|#s{RIdTX5gW%(p&{G#?_PvFenxkS#`Nv?tC|s{TbNb-#@*%X>z|b-xHGV;yM=b3eBHAYiU}lqf)g;VPLc{at1-m3i#3sg% zD3`kLx>0C$9$LyW79lA5A%?hpcsB%lW@QZo*b67%tf&!;S1lMFAERiGn8pUxt(nMb z9%>@~X0w^xo-9X4K2-gj&*lt>p1?zG{oh;d|4GmZ&s%~(Zb2g}xoArLvr$_;h?$%A z?fUDnu6kF!135n*+9&Hg22ib_>;4l#hRM-e=+_4UjZ*9^<~uD zQx7qadPRqmx`Yt^hRKrU9Z$O2_$$+-gv6CrpVIpO<5U07d(ql@?Vf)Y ze<*9HbHh4`*i(I3huzK6Xn4A8H-W8unik8Tw{WDo{w$W_I;C2wx3?Exy!(-S*q(1z zu6e;CF6NUK(ZcV(P_t-Cp=>$`Xj7i=u&{lSDEzp;tq9+FIm+yP&&s>xB)77A;N8+=`Xl+^&X(^KLHFx$0c?u4PA zv3vb@8y45o+jv6*dCD>6%FSS*+RFu&L+rjKapYDYPKlBgfiq&Uva&X5{S|X=c`NIQtjK zhYy?WfEKyhaLGc^_|4bzF7K><&d8V(=jMMzjULYZBZ@-qiQv+Zh8Z!B)?Qq4_e3eEK?9Zsb*t{L>NGdE4CRbdjZ%X*M zx7v|<^|!z9lM4U{(xNqJ*L%~7;$r;xR1ibWTz+Ef&R+5)7d9mtUl5r7dr-t*nm}H}_%fnSPpk3Z{9&5$dX7)}hu$E)^hmTwml84t{E6Ts6x!p4;I^LY+UP<7yIz z_$xY^C$Vl~;9Ki#K^i)H3-(vuAHUPEkTNp2{5JWJ|sSyDNvm>=2I!giN~ID0n~)pxFqHXSaKe>X1N@Y^#0+GN`ge? ztA&s;p8mTE9m~JIsZfq%Zcy~i?;Mm5Ewrbk*SOHg(~NEnGCqpWACc}uU(2UUAJvTx z=}!zs<2+-Tw$fqAB1Fe?B1&hLE#9BZ1t`}!q$X)O9GaKv^_ytd5zuUn+)dw~`rHhy zSz*k5{nB%%R>i(2Pc=JG=l52qrzL^%`Sd>^MID-?6~(kQy1iMjD9AQBf47y3AorzV zTY*&n4zQ<`0;DbjN$DJOVqH?oSQyc4RA#1MD~Mia|KivIvzitl_lo;9Tv({YH_EFe z{hQR3!8LQ_Pca(ON`|r&B3jIb0VYl;7W}qN_wP-D?N%H!zNm!;nZ7g(OBt8r$KD_4 zs3&OeS8I~T)<`2}a?Bra!fbTl`$i*$X&%*yY;LGcH2%I#Y{`{xw>ZSpGgc;(*pg8% z(|>oSXlS1~U^w&zA|l30+!IoF@gwYEYk19>%WQWcP<;?$*_%cYygv%_*=wrg70V2b0r}$5wPpcBue6mGCcX)8B zlhx^`{6V?x4X?u?wyYy}c1ICm>;AanD3B5Y$#Y$5A(~Xwn~2cy1Wcl>PejN z>UaW4d6vE_df2k;A0`CrXBobeB)a#o;!0e}X%9hQMjJkml#_U+9x2^w#;_L`)lyZu zUUs!6{`BQu3fy6nWqN4d5beA}HG}a%kmq!*XEDMNVkh@&E4z9OoirDES?k)*kMpAc zN28%AuX2NX%?F(A+ET7{7NW!zzsVZs)Psl1@Q?+bRV`9~=A-056mkQmCVT8xfx98+ zG_Kp?dRKBJ{RLp{dy+3X6x{U_GKTHKz(42&uY5$#8^hs0-x-Ey{NN?%dnQq6pMFCg z%_EiXHO7FQaM=_|xUNyGfl2J_HOg3wrm*AVFuH(L`hCm}9ju4@a_5z}yF}}a(%!D_ z8_+|f{O246_qYlI*;C)!qJv)*&OJ8TDef=KH&}{hbT6Q2Sbsg*)9;JQNdfO3M;0>G z^gC{U4NuMLT)MldX?LjS6JY!N&z0x@LRrojmrmm*`Z79B1f{-q4w>_Zkn_=jSr-8f zSC4x3kLheyq5Hr`So~$;@J$uGndr#`<S$!n1Y5MtN+~!IME%i zjVC7U+kZZ7(|?auTw%zh7KK*+Uk%N7=VqFwUU?LPL=3FLCp>fjc@4CXza*L61TV5C z*Di7E<5R$1uD_r6eqQ)AC9sqB8Sq;1=I+B_@>-c*FActNnY-hR#2nfY$HC}9VYH4k z%@Lihg7Cmnz!P1EV74n>^w$tN?+&&9UO3%~>G-4VtDE$zUDqiYRvJ7D?}wigKirQS z@ajEsAILlsK6Hs86iAECcOluW|9K&;;jWX zv^;TbgtQL*!h4T|MwACdZx^8h8lpsuA699}@9OxB{N){$84UgtZHAG`%6~_j2T&IJ zuV~GKM4kUT+HecOga3*)4fE#zD44hsJ)ZcY&9Ob$Xl8AeuPW7H7M^IG#H@Lb#fuh9ml~d(N_SfT#0t-~W!qMMKB_%`B zmX~Fr!ka^!4rZ3|MXC2(?jOnuDZi!^)Xmjg8i$61V-g9Ts<4@c&}&kr=o=H?$DovD zMfeSxD+1odHWX5;XW%Ziyb9;UA}Wet@|Ici`-AaPzwqr`1qqc5WySGzC=Fjg!IMK# z*BzR4tP3iOhsKCd`#)0kWiRTS=_Wkz>(s@3e(hd+RW20^4g)Lz#n|sE{tS~>uKtBVT9#;>xViyqozfCYtqzu&tfI$ zMErfcDb=Pr_p!B1e_ufL1uq^J2^2TGw;d@2kx7oxql=JN^=DIGUs*ZHjgyp|Hs&2% zLKCDMpw0c?#nBSmMrv$ap7pu(e~E{gH7G#V2fGAbk4{5rKu`eP};nRa47Mw z$ifz`38Ep~82krvh7$~_jMecDu-yz^9Ctyne!PydjS6N`QLr}nzV#$>zxU*3LkFrVxBs| z1%v3fMV4#@F*16n`KP%$wceH{5^btf3LfJ00&k4AHGiZ{v5ed0t!L5OVr-?!Xgm(Z zwp^}z6cm$haln$3w8}GCAD`9qLiH}vP234~EKoD7G~5%*N3KD6VzKGMkkyv{@dRGx%j z(CespiZFrPS#WNU+Tmvm9o-R|Ec4=2`vx}+Q@2U=?J{TMCkbW9)4T3)J}_LbmNQEd z&IN-<+<#O&nMvR87b4P^tJzJKvG+nKVrnrO#-t|cSF)+1%euza#trn&{@QZvxvPPQ zu7+`&kyXGd2dsYH;)ExY> zS!uKc+jO)6>9=Z0WTfsBp^^VIp1YDhak~ed*|Z6d=J4bK5J8x=w=nJPJcV+^^EJ|- zv#81!ROTA`M1@sgw+i)aU>jypJ(HuF$f3x*JeY{bGJ~A<#I+6dF>U%+wc?0UeW{F~ zZB=3sxaf5IkM>E$&g%T;_JIHz`TMbtN)igX|BJP^42mmix<&`L5C{Yhk`OFFAVBaz zf(Do1?(ROwKp+r;3>+(TTnn(Z9QdVE{1s!f_H8>^UU zs?VTIDC}V3)R~`H?Kod+zjJLqj+L8Ih2FP%BD8EI8A7G^g7@p8Anp~<;f5#qiox;` zQnGYiF(|67;=8X2Vi38X3o8&PPhp2#HY!f&ZpJa;u`wNNQi{xDYy#Gcat_h9B z|3;yS!3<*q1C5o7Oe zDUA*fa|*Rz$NbEH;}VE$Qk$L2*}Xs%Rh@bi`<)RKH)ANyXSqmhsk%JwD=ictaz5A5 zx+v8dx$GAgi5Vd9j}9;C??prJp;vc^Vq}@Pd_v0Qwhy^WRLs?{NW%N7P|N;?{Grs+ zTg;BW-etF!RsF7q2jw9K1O$6J5tHLLS$3uYnz^5kA0nrPK^?+M8Rr`94@8_X*iMQ2 zkWmgcaDf?S8*3#ZIV1Pkg_iSK4${uv;CS{;NndV*7q4GPbm;Q%H|OHff2FWr zd;Ssduk#R9j9-+@%-El_o0K?5HKAQjuD)!IG0Wc|za-8-rA3zkHdd@d<2Ud6tR#{$ zo?!2tc4<`*S8CdnFPol3%~Zu!Xs<1&^@rVRk>vr7$X$ixc=%WUDFNYfn4B!YB3wGDsm#&wWC z`T|$l5V5?PgH5d5e;^-89L$xGGK zf6Ze`E+cRzZ}X!A4To6O)NUtvGoGYNs}2e_FWLA1O-Sm@3Y)V-T`4@Y=mm9|Dulm& z+-7~BP&LI!(Mygmr~P5w#b^h|1p?vn*$Sw-a`ME7A5Q{T>AO zCRQyK(L6lwEx&lYe05TwQvETqin-BjQIkg6_|d=`!+3Xp%);wHI<(!Ako0%XdE=u8 zBO?Q5r7e`xqDg7U!^cb1oa19|frkN;z^U>&j;>(o1h(w-rBmS8F-7nMg?zY{X)Zbr zOxGz@%)BqoSb9QDuG8*^%}hRLm+3cIRZp!C10vBH-r;4Y9)1#noG(j7#rv)&NRnIJ zuSH<`pbNZGL)G#3-Tk`rBYg1s4Smwuof*=H zPP;=4;7l>@a9+f3gdVxJRONg6-s-&{qD`Tz(b3p(FjC#w&l8LU=li_rb}aN=%hxIE zqruHz=r;C(6@x5=XqOEXRq3P`@F4D=+h}C=1RbvNnlNP7OTBnK{(L755BWDzL+PBn#;VWFGS%Y&l)>ZeUI@xLE zi1?aOYMt_7`n%P2Pvkd^+5IjA-|o-V2ON|B<|LTNm1Fob$ZakBhtWRju2+C2@hcI%s95^^A9~wp1ZkHSLe=PJxs;vnr4GF^cp$ClXFYND7>=9jt2D*# z#^ag$BE=~SyB8^~p#dG-Bdz12308}_*lBU@oV?C7y6N@md=LWJD|O zE6N5)iSxN7H8;CIX)?Ut=TW^}?1SL?RMNiBL7d$0!+VS1=MJtiS=mVN^F5+N#%^^{ zR!hYdGtq{Dub{AxZmE|Z{Z*^9va3(3u~h4?j$ceNPT$`M+!Vmf+-N*bfOE#lK?mt` z@^cQyPz0nh@#ClfoJea$ZEOTC;#?%57KHwBhGFxjKyjoyyUNbyWDKL{ZqD zR&vf^M&CqfC^bO#pYji%$e0u2o_nsKYpV*L6d|9W&9PdW+w9$>AfH3K>&s=N*TV{l zFaH*Fc9iTS_Wzy*5azA$;e;{ZW*?{TBdb~_{dASE99EZ29wNj!E9m@@AYQ)fv1}O1 z81d8gZPxX*3*!D#R1DQ3w-#mdShq{poqjQ5eA6;nHJQk3r7qGad9BSJcwP&w$L$EU!Pj zEN*t235^+a<#kLJW`5o#<5AVg zIoDl}1`8J^;7m)r1EbCNS?kXHRe?XLZ7BzTR4jiO3xMnUYq`vnfRgk@a6_K)<6_f< z;l7R2C;4eE`XRfjzotj(cee&x{Z3O*{ya@Yc^o$V zR@jB;f@rn)|M10Rn^PX8;><^1{HqjZ<04>&eP(OqzeobOpfU^<;CYi3ds1RluTA*E z^JY!BKLvq&D82R8AD23>Mij;FD@(zk+4K~a4oqt=J8E8sL%7S;+!WT0 zj!4fIBsYb0exW@vUUeW?SKScPnyZp8J9$pi$Qp4U!K0Qk>49kazkV9#K{o zIkMjN%(f~3J4lHn_M$uJLHmJy_A zl>wiLEUoV|wfLro1KF0uNq=bxo@d!xDTb6e0j#VZ`&EspiIn49Z0Ui-xNeN5e3K#_TC80@_ zJoD0(>)Q~9!!`;IUu+YTKK{tM#353bWNi-)xG4Gu44FgO9+<3RF z4Z3QmQY#&7%W?)0!nvW-V@+9OqmcX})n;*{@+U5t!~UWJ|Kxpt2~O#43CI$w0%HK^ zIj1HJ_I_j3s)ly=%kwabd}^9w^V9gJtc7jL_{MM1GQ#!0t9wPy#^mPF(1FZJLWAK| zo3Y)sZNq3>HIHYq0ZKo;2I-3=s1EEqHZo5Ci~dw%w^s&@^ctK^Vg#UqMx?W#I4!bzXF=t|FG69RX#ok06UFV64+~Y%=cxc)^An7ng(t7DwvQO{Rz&)c!)8aqWKV?`hv4S~h zV+$bHJ>F;z3TKbR`No)*B3ys=KzFoh?qwH?>ylD7!tlQiqAHSL4*Ccp zvGV{&zQ_(tWWLyR;WObnoWqYhZ4TGvy*0`8#H}$*3FocksaFHZ(Wbj! zG!N@W-5s;$GLk{Cn*PdbACwl*>AIb))eE|$SbIo9_p57a;=OuEA$il^n1BPwpR7&j z_U|M%>(5Dbe|118sz1+auQxI7m43_SSPeriRz03J+GG#_zB>=Qo50C2gQ<#DcF_fj zP9)WS0A{YbtqJ5e1k4%jhe99HJjLm(d@#m>E?&_`$&l%We7(s=uQfJH+g1*S`?RkY za4h(7Ai8f6c%f{ksb~JXho?%nZ8tLe^pB^|lx)Cwy0pBH7& z>JA!gbt*JU zdZ&gchI(ASro){Z*tbzu1hkubz^51m{vHrw)VYk;>g2!N66C4wvU+${3*H~DAW~ia z+_CmK*jRG)^Qs#R2u(d{+)W4g^<#ZwbIAt3m#ipn;v)YR;~{#3>rVl-Bp#v8AMh;T zj%VL8PuaPTs*STzAE?_++R`~$IV5{4@g{|R>tql`V1pvMtLlV_OOz}YzAErr!^bta z4I8D(c4(P%$RKS3M=qhF>8g4OZbtSs_p!U&pky_HWhdgRGv>9g9E(Y4Z2OoeF}*pb zluHv8&bAAUY0?$O-#){}uFjArrF^@}q|KHDPm2)CTD`(>+3BoL4BB8px`Bobg1%Rb z-=VkIeH*5lzKEZaPVd;p^3MM8h9s}z)eXx;QU6}G|o3gx1iMhuQxMpZK9O2O?;4D0CjU2t=eRx1a-~&MHb3N! zOwYXq!}c6jP`6uPr~Vuu{B!}uE`&UywD*pgeO>Y&YmNWk*8b0eN|r%R^6dYAh4}w& zH21YJ;s};M5!!8s__kep{*!J{ zziGIp18bDHKMamo2j$_M^Spe_1g6Vc6ZOJFKY?<TB^fNd&&?B zJvyFQbq?Me`;QE)09{RM5w_3NDBvBPIL5Ca{r3mj)m!WF4)2JVSulO$lUSU2F<_GE zc|EwfQo+>&qi|XU3*p2^qR9vDx8zd|Z^JpJ2vnsyMKs*q2t?xd)?wt53ujZ2_!OV4 zFvWdS3f40vET~~kMi=uYPcj zi=B}aBFPB5cF$dH(&V6vDYSAQU zfF{cnG9C!9@fC2daB_uK+$<2eWf2MNX->#UDHMD0MJ2`Cu|w-VkNv6VVdfSP`s>4< zFq|p{@WuP*`69U934HxEwVQwRQBY3bxk(@OiH`y7?#UCp6MwKWB=?-)%m<}MbV!{( z=sM58e&ATL9s-I>P{&o&OT^qWWr!=wloM}C7K49yP*lIO?wDu1-8gO(&dde^leBeY zC$C1Vg?$@S`gF+y&bPEd>yp8=3k)eQ1k7$cZ!-+_DP5hMa3NK0JAg(V-IJ@6rFEP? z>(eDZ7t~JGwI>>*dO5SRzm_`?Hf?{earq)P!ydPYZ|Th>?m$elMvM227N7B zE{}r3qQ5J*M;U?M{S*`n`Df6bcZx2%>aC$H3oP1|+OWxjYB|Swlhr1*FI_wz_>;WH$P+mk zL>1L4vaDo64gob4=V{xWa?e<_r}iwU9vkNSi~uV>%I8%Cx19bZCgz_H#IkD{MZt3C zzgL3rT@jzNi`=bRR~xgcHpqhwJgMTiu)L)U;&NK%$B-^gGgOd+&o^ehQ9eC3+z4-4 zBEb~4ww`{$K*}ZA&Td!R@-_u?Zo6%Y$Z@YN%|1^}9-K|`k^Z2Lu)JUo`1Ko%x761Q zM1Y#E2tEQ)MZ*VQx_={YFfKUh5Hd#Y*|b9W(uk;b@{Iv2ye|_>ud9XhPKbl6{GrAK z+`fqg5G+TV<(61;nyZf?qZEJ(W5AwBkqsv}W4+gC5js&>cKqDU4%4MK$d~;u8R)ax zR)aUYeKPXx3iozBo4_!RI_MYO3_+Uza-ipR{S5rp^>IB(I8;X@yMu1Ep`>>A)xR{l z0*~p=HgB$^N-vUpPpVz5n~5viI*4uNZ^*aoogIj%xo82G{S*jgWsaK%Ni`cXh3~%e z7|Y`AqhIs6GF*Z57r>{ReGXqQ{^MTPeY4Pv_M4v7ABRA`MDt_(+|B@c`rcSDoRAA! zEr#~U#4M^hr3~=?Trs#Ay|IJ?N*hs)J72Pa7}mXlKDrr3$H+u*9o#drNFYBvBsCkL zI9ID4t{Ti9ruV45IUfz{J=p7u;$q#T8CD?MKOVIJPQ;)GZ7$`w?BgLhJ73uCc~=01 z|4`7yR?`)$A_ep-LKA!>exGa_Xut0G;DTydv(WPt6I7$Wb6T$C3WPVTCL_-fIaG1b zK^%e-F5yIG72f9)I=^KKY$^`j9tzJ*|5i;C1l>aj$PAn9z|E($YjMVYwuKAB@tH~_ z*UQggtGADR-TO{!fvO<*ZR^`=;0lVJ=xLbLOvL2ysc14CeB?3);nKKo3fj3c1TB=r z7E!eA*@CueUA z%2F2*MZ2%XC~sYWdLWlfA$AGl@)UMgy&o)DRgIHukU*Wooa04)DF?_;k6y)sNB2{d zz8EH7JhQ7z)5koGlR=0<3spo(;3B`11~&RkP`v!sX)C-fAhFkde;YZ)dsDP_ITpgR zBF_o6LCqpZCwnLlu8Mj0`!Z5E5R`^ez9>i^Aik@a*o33em6|f=6d6p=0U9@2cg@>p)yhaZ5w2BbN&MI z<7rVC&x;aRayV|4N@~1@tA5_>HX>UZqzqDU-5%^0P>1S4$m)%qJuDlQ9F=~EhZMZ< zLWbV|rr*@8tPQEtpJN|CETVqG>68<1&fw(oxX^;S>B|{*$z(6Az10X4JO=*fnH|`P z)3-QTq_m_jjHL#G@*Y>cI_dMEm}Dgl>F$qRpYaGQ2tVJ;5DR8GdR0zC(Ac;^hC_VV zvo`x~H3sBReY-cX^%B8V_;HdycmAwu({~cR?|n`FktWA*uX{Eq@J{S+>FZ>1j~ty@ z{>_ynzPqN@54_W8sr;OF-!>LHq}fO>Lmt%I{W?EpKvQ4l9aZL*1(%$5#(YSni-&Rz zg4(;}D(l{>z7l_SI3-{Ak0L@KQKBk3F{@}jR3ZpJj(^zaqBN07{r+c!vE)lOb!G}H z5?th0T{;j^FEVueol3f3G->36yv^_X@r(n@edcV-zY(M~dhg2y-&TGPw_;+^Y)O4j zoGCf){f6jccjjwKn$c>aO^yT(J=Jfoi>9^C*OSPSw7|E;MyiLwH79JMZoVX3^vQL@ zJMp5iBkUYxUb%0rwBjQ5j!l(QD-A)|+}Ce%2@04~O*1Xo+P>??{}G*2VMC@My-@;;w1xpUF_LY`~cjv1f#7nZx7llGEkpnZuo;*0vR`x-TdG_85@3MW7D z;Wri*_$WGM_#0ZnLAeUH)hrH^3oduj^t9 zn25In2qk~rHa-u<4uSefD#uGKL8nkw;|CcFMxT*WM9xJC;4h1r%|^Ee$DUWlH#Wx9 zeGXAT`32a*Lq(>!_+o!<=t?d^@Am^!a7#l~?PaqCF#=ufWw9&MaX2rNX)Mkexygm?DA3PdwHPD z8$j4~_LviaK_7e9O=x)l?-97yLHFw(_@|$x%%;7v9eJyl9x@&{g4K_Zm(+8>d|J8W zU1GJu9|W|liGQ^XrFFlwY(sifB_j6Kg~ff2DkJ&)tlA}v@GIDrNW>Ra#>tI5?l+zd z^+kzV9MO+O$o2`G{3~oHQ+2($q0Kp?N*}I};_)Cp^%iT?C4cLmULcKT;qX*O7{$4b z02Fo`+oq0MGnLYU>*KF``d*Y>!){#md7W6l3<(86)cf_s+SAfI92)md6fmLy{sg{% z7rbQ@21;(eIKS9))mSt*S(x0ZgNaWaW0X19nU&5-inhfb<*2~*Xuv;qTYzmuxz&9P zf-t%~8?-TUtek)G+dhXsXSj``e7CAvG*NrRJ2oqeH!uX3{dea=`ki~PXRd0wH5OlY@gdC<{o^jNxw++Eqj>R}DJLg!&w0)*J90wU|M}-|^ z{(ch+UBs-6pcMU_U_JP^PvourGT3Q&{qv|nmI zZ(3B;2FvQYGAk<3U=FXM^5q4{cNJgP7_)IEA?*`2ufi~6?9b$~rLtJIg+2@zn8Zqb zdk%zU01qqpnp;n(^mZe)z(kkg*3QdiHguLCm!B&>x`ET|wkiu->F*7U2?y4MeQ)T| zY)8{7^)2PYO)5ogpU8(+$9cQ*w-#7sr zZK`s249>MI5v8Ndioq@k?*nTLxkvJ^X_+Sx3XyzpEqVZ_gwc;%^*7LxpR%jR4X+fq zu%-hJx<~-W_k3e?Fiqb{>(6Yo?Z>Xd1RceX$^Zl>(B19_=V~4c#R>&*TG=50voZuB zcV<6RBOd!^?dCa;N|eB{bYRkNvXnao#NHa_Hb84*l*s56jMFT6H2i*PB5@ydL~6>7_=wR(mX9@0 zcs6^bz&qlRTt((juoXLj>MuZhBqSE<+FE~MD7l@>C?34|#$s9UcA#-n{x>(zegn+O-w8#a#BQX6^8DX` zv*y6LWhjhAac!Qq`@%iXs)DT;0i@7A_&my1t^&%DK1w{OT#5ILnY1ME4J-Dbw`;q- zbws_?9A-ubMWXmfXjN;uG=}t`FZX%w_xR@Te>o2SDQ6RX6Z7}`=$TaL_iC$JnP)=W z<@!{+YP#02S)XX#5z0ypz@O{-$5Y{B&Td19|}s&CSkv zV+0lF-ZM8OfRvkb_?Mt`r5PTu2v$tA9qo%m7VzO6mj@nA&%#cC#6@+j$Cu87<3(YqzcQ^nJO6^v$znIDc8WkG_K zerHB&sWR2o`}vC`JJ1o!vm~?8{atM}kCBco(OdE%8H#r6>jKbE^CZ$%4)ct|2yNUTyg) zwztgjto0DSl#JRpKdO;#VX>1`!!KZF7U<~RDkl|U5x1-+>qIc_s@SZ!flfS}ow2(s^noNrNa=`OCq04S+kL1aw~EFjChF^axp7j?oYbBNNN zz{8^F{475kDlh8|3Hlc%d}))JJTK-}8>|$pUH*L&CCgj#GY*V-b$n1b+wTBpuwVb( zW|BM>cd0}DZ+8v=Lj;ROOKVlGps599I|eO{*B4*?3dff$!^Ur7QYNTeb0FSLu04Lj z4Dc>lZI)*Kf!!i-z?yn%w7+D$CS800Z%L*E_ulLxP%n_5z3KpG-?ma9Vr?B?q~g>Z|SF zViTxi3r``S^7SmOmCCOQo43Zb!$-x3VpY{kekiM@!OAbC7cp<&^d)sd%LA;0vfnv$ zZAa|mfXvFP18P=l^=`XruE2i#gv+te*&OM~AE_Kt@opHY3Um~0qAXYQ+j$I2fwZQM zSloii+nfcVI6d_~S6pMtYq-=h+aPIFbO2@|Tzq)2y68{Js#GAr02t53S@|d+aZd?2 zr1S?{dtarIav&n*98aCKW5+jhp85C9-!X%ID=Vga1Ok)MM$mg^k>c*wuVX}?y9VJ5 zH?~u9>1PinDCuqzMJRRpis`#8*h*5x{`GN|CMk8i0_V&0Mv_!qL<~hx)(79dI+<#Qyw*OSYzbp2^Phf?JN=F$)tc5_0Ix6WfdXkp zG&6FoW3&G>A**Bwl^cE4?fb{L+r4s*&i&p()E*7vwn{jR?xIM{=RKki27bpI0wPSO zlSpPV%eYV0Z9rP=iTC2j4>h1FDsezLfy`QcbFr12+lx|5Ry0F=SDeSReE94U{&U!= zcyWGVHrc^DFFK5Y4!pr7DaV$grw;Iv2)Yf>#Aua|1GbY9I#q|Zss^A<2w(?vF~Zl) z%KK`SI*ebURqj_?5O4oPdpTcTY!css=e$h(-mdxZ$u(5$#~;&ODr$J027Sl^zz)lW zQH8b&CE20B$vZzygf8;qkJb!x#0v&^9BGmKd%pnNPdOPlscm8Xwb^~>bC+KiAAt|k zO`bdV1$;*$bM4{$x-Ibfl3QM4i1}g3`@xOoCn=hAik{u<7ENu z@KzJ#6!g0JYSI9b4~B=p3U5(eEK`)tGdIwb?Nn3*{r$;RrwPjQLEz{Y^(#~VQ-Re~ zx_~PVuYEM_gg89`|Jm@|Mzeu4a21%3HI4m{CdDT(p^l`oVG} zQjWp9htA5VJ^I${^KZv*ec6!PMB>>&+uf?+DJ_cfQ24b^fkP8S+mFhC5f#!8D}f$SbdvPHBq1m7%^Ydj^7*pm06TYuI?F)G})San7e5(rDf;PZtSeC z1E1|zI-Wp{4(MyY4bPPX07J2yF-i*{5I0ox#=c13sbr@q+LAmk| zwc@PPVWB+f-QQuMy_<7%hS{HV<$85x0b4sLHfk${Dr z^OT#MH3XK4`9d=Nz0$)QJ61t?W4q$|lhFX7wg1?xpH?~eeyY)! zF-_QzY0tWAoK-kEYfxGct48C5+wytERcaj5{ba_DdSfz~(<^MzR%%|E=kb{$sSSg7 z22JzI)%^waM-Fd7%XZFN+`5TEC4piZXWVp&u{L34sYk0hsE2>;$eUUgaR}@6ho){( zk>4U^WamcI6;BRNP38Fh~%da2C( z7VuR@uHJM0GaG*UGBP7dF)i@wLW=ebEZUXR?wi9h&;bnD@n!OY23o_)#18)pamV*h4z&c4uXxv;DD zBI+n2FqtR;T&rYC*U#CDh6GxqoI~QMf=gT14RkS2Ph4ClH-Re`#Oq2_{MB^#a;oem zbmxqT63i5)WXqO3*bJ<3KjIRcf(mZIMYaO<%N3Ia$2?O2GYdTnM@8zTw!*+8PQmb$ zG~+A+hokLpDH2&&f*l&kyzezfA~Fw^>SIqV-egDq0Wg`FX5hFu{mPnd+{egHqEU4#~ZCiG11ap+n8l=AW@n+Vq>YMaAknu!?>u9Ryg zw6&)ggHT76(4$Zs=@-eA1^!CuqvGE2+sSE4;pQ*Leb;Csrf?-{uYPG;aa``OUPFAR zMdxxFSIaE&;E|hD&v2WXo6vPbmkhY`pAVD);%=z_h~u&QioPf4`V3pU+9RiP__;u# z(Ok(N-ETK0>Siqn^j0txUNZ5%>1lB}DQIzixm?pKQQG>wlTn&_JI741`RMHJYI`>z zbIDT;XrKc>>W*3k=|s%QdOGgc@KvN4C=c$7fWg)w!N}nB_e&yt(n}cnj^hF;{K@7h zy(R@4IF7)Q__JKhYv#HE7f!GrD#IEwwZE>{zD~It`W(Q1P&IB~eX5--@Eom^)m}|n z7Iej3t$*L7BI6nFf|v3QyQAOV+mR9?aAj!2VYsMUKxc)gA6Y&0+Q!dGBoH}ugnD4e z(x9?jdyFyIzZ;I2N&x?yypK>C#7YEXLKZ@OSRS^$o6lUG8B4@Gc3qqIla_otKj$2i z<~Erjx4$gq7-n>JOLO%wM*1G3$ULi13+=oXM|ROG;Z#$g=wtN4*};O?JjW`qwej|_ zz^=cxVX_HUgzt~AZ!b=Ys82keGP$Rc=yMCEDUQrL$MB};i zxzkHg(%GKsRf;201gNgB2!Abg67GG+5IOv=KNbJ;tT4eO(oAu<`1@cIjd2C;e>PKHu^9T$I>$GR~=UXWeA`dZvll454mUh?NL z{olmr`B{!FcG)l92Xf##>*v@EybGTC>MxBy9scZE=jDg(6o>XWX4RSk?YZ(tQ-)n! z*XOdC9zP&0 z?IZeN?=UvDU(}MBerVL2%8h~V{686ZlDWEWjTP4}`z+^$KMKhTORU4w!?O((6M`%0 zZlGQrnS{X;mGb;DTUslOU2JpE0T+k(mdNcpO=Y$X)@Sw){}8aoK3*8m&+Uv@d2nsi& zE|V8J!qxg^?%~K@t{@)7P9AK#UD7~KZezvkrRx5^2RoobO!c*Nj&3aFnRS@kC!+a~ z2dPPx3NBq5x;phGZuuO@-z!tX8{I!Q;w_sUcNH7?GeJ&*tt#<4G_O16-*mU`>5T8! zl{7fL>S0Gv(u>Y7B^3vF83Xwfj02Y9`LJD|Zp3p`Evo1}-#_#Tw5B>;8)u81^{W<{ zJdQ{5Mbk3hcbuGMJ+UBATx$tIw8S?^lgF3Ce3$;{#zS-OLDS6%`H-_NVK1R_@U#X-lMc3E!c=l!q(hw`*uskRichry|RB6`8l3B|QsuH_(j zyeDbk^amwVor>d{s~njVmRpI6n}*rN5eplHgLwmjk;Cl$PsKFbKl9>!;-vB?;mY{0 zhd7R1y0RaKkHx!O7S4{g>8O8k^-qp2!_W?X&Vmpm&npE(ThX>AQK4eVk>2~etzSHS zsV`fEF3}~*J<&%yGupziqRqYi;`Hj% zNT0QqcC_(pvV8$1uxeAzzW8n1AsNdF2TzGWc;Npt5ioQdM8KlrtOV^R zK(tDuRVND+UwyaYbkhsi7BQQ#a81~Zs?&8Un)XaNie@r__x?BZl{!0 zQhDUS$*7S+VDNkZAe&AsRhEeM%>kU}qs8yl&w>^P!Co0f*hg4JU24uhN5#{YC`i=XX!a?$ySG%^m-r;_wP=RnK_w>aW@wQ@2c;&KweD%&^Q@bE9=J>Lrp{YxvyIOBGMKGkVri<2zu_CjX;Yy*GOv)qOMu6 z9vZ#Y33}DU&^a`H#b3I6+@*P0yz34Ms1x%F0CU8@5-!oH2d`^brj6y?oMjqxl5TavAcdqw(zc;ezFp3a z)K%QZ?*v@(byj8l(gm*^#)OOwIKJTC+#6RB+3^&5#=$1LgJVY?&=0s@H^xxBf_IhI zh&%3Rz&);ZG-%ScyBD`pCr!JX`jn|Qv!AxOPjo?uQQQ}oJ2Fv&6ak9Ociqo|b@4|x zes*6Qy5sMTi-pNGyxu|9j>JvpoZ4u?HCiDXa9P#Gp2Ap5+Tq|RYhY{0LuQg z>f?R2@+U?Uh#4Jq1tP4y;R2O9q;Y}ML51-dm5pIGT@E(i=rH);TT^r^S;uapT&PK1 z1odDTfn1M0GB{w7ZA<32thMN{6*FZ5rrq`0Y@U|Ld%Vm(UA==i2ND~HGy@~a@X90$ zT+}DRpM-iS&MkQ|`Ub$)*a-nc?S)-M`Ur&-VdGUmC4qM0Z>1CP0+M`eQ)AdXIk&epGbH7LIN(y(h_*XHfvf&+Rho47S#1kL>9Cg1R#?~K5RXg+>z8ih zLH3tCQAcqEE-V&UighJ{7Mi)qHk~A-k5x8)azV)i6{hROVTuNysUM|`lc_(q4Cru{ z0Edy4HGuq~IbINHu6J*NY0AC)H-}fa(Qt^oF0=G-CusX}>_LZSJK(yu?Ke-FRpMq+ zm=8Ws5_0h|3Z(Q)=+t{PJbi2O{OT5|?e+r2DfBMa^);x#p=1T55p49mTLVGL1AuQ}${d zsBWS_OWNJRny32ArU^IK{ZkAL)N1+GYx*jzH}G{W|4vHO@(o8TJ&ho*@UH%_A z*M`)K*%oq$d5B?a9+n|TL6`}mK()ZcW^Kmb*hldJ^BR|PfX)ma&L&P5Y8^%-c_mu5 zd0I&S_7ksuhdR9SG$-(sOtd4^7^dp=P33`8BIUd5m|RiY@STna$L5PusO+8i2twT4 zhs!t#<5~_$ehLJwTVuRw5oHhem3+Zh4%@OfN#S3`rkwRYzGUgCw;xIoqo;o@j|U5U zYHpfDKXuys(&jZ+Tw{^^Q3Dz15{NY%Tv14b+F@KDb%3h11H6K#7Zac%H$}^e=b4Ch zpH|_(6V;p;EA=vPt+=C8g@wQ?rQPfqe}M*6l!=eS114fpc;2SV;-+FH9%&N1Ve%j& z`e4iKaBG3OT$8_D4pauAYTTrS~n1McsGigviQQNyVG7$SEv7#6%4|RDvwN(=p zJl!h(tHhiWRW8uV7gJtdbc>iQnj%8{YqR^#w6F#@Ac~-q?B;*3>2YY6^kI_)x$2Xj zva;n;o=DfZgrrAaLa?8vb+9L=h5u>}TFWp=Zzoh;AzYjxQhWL%AVox|vCY@8N5b~z zqZ)AmX8ARE^U~e8x#-R0vE*8}HwX%!7-#Od5x#(5!3g_4TnY@XF;u|F0W|ryy7ldH zf?|JJFX|Rl;3YNJTJ8NR@HwQ(F@1wjZ5?Xv1_IA%*MNhaz{ie(TTm9T54`^;3~MU} z7}6wny+|8VdqnjLj^+W)IL!$zmvG6?kQL-2&6?^CO@#w7`at*u47*If`VGAzl0-Nz zTcG#04@tMc@meT@BeuaY;ZgwRx!UE6uqU?GDjp>~lnWxdbaTN7n%W+W*SI|Rm_XRq zEVKE(0ViJfKXs9DPKi5({hu?fpivnd3!$=|=@)Rtc<@e|&7`ux>Z=QHk6efAKN{30 zM(gUx;dn5Uvy|xa65Q+Q?j|)il0Ss@N8Ne9q=24_~fuY>G?g+uRk%6^YGQac_52V74iKhm(4uUJKlE}M|~RQxd! zzxis#gGHoYsEQtJWd4=uIi(V>TO;^qn;}|E;-+OQDv`mpB^ZY<_V@O@3VcDt73I5t zp^H_L{f1?)ZZQ8zd(!HBmv6^7ygpR!*9^6vMhf79{htxuTT;u_4o&mxN0JBb_?Wp; z_^7_5a?Y@>oS&@=3!OV(zf_t0go+{zumv0@>A6}_XO6US76P1E;rxuCCZzl3#65B` z0Q+IFRK|z83(z-j+8)&c@G+a&oC>BgLrh5{)ulDJtRplre`LlLmAq_9JZ1Zkk z5a=jv-E+f}p+P;xr4blf^(1?24VN>i=8!x4uJ%RnlinJCQJ+&pv2M8!IQY&W@Rk8< zx^vUBAmY}M1ox`avDia;X6fx@nVOuvWd<3h{Z0hBFRWRBW3}c+3COqN@9h>-5D{;F z{}0^_n~(?2>J%=g{(34&`jDRK+OdE(p7%$@AvtN_NkKDus^8P)32&}m+CbEW*6k2J znx96T<27#lFSRh;8Q!Oy;`fZ^y_k?NFkS^%o2-I_yMqVXU;TZD+j2T9igqkO9)vPu zBG37KqDonPtkHa&(J%IwHZejZ>nZQv70#8K@e{|s&u zSc3_BRj~F~(I2Y*}vPp2H8-()ZXM5!=|uF2?&P@}BoA4-H=Ys_3z@cI-MNY?e*x!QLsrScEHE z?#PUnBl}&J;x3Pw2#JEoAk&ujmYflF+N3pEIUf@Kn6@oNA7U;(RQYF^u7UwfH||Wx zz(68p)I16QH>w0!_rhiZ<#;DFkHFVI zyW7GGE3Vy}UQyt9tr%Jow%5jb`k^C{4F`?riXwWYG2F)a%Xb^5RVQAqt+v`a3*)|2 z8@hh-+`%C2nC}IlXqXW6JKCKlkLiMMk*Yj`&oph53RHK;Prou0W*5C@EVX&}uS~)@ zb@;(SJc<4f_`Cg*pqx)8r_=%(+~#K?vSpDT7ATrnL&3?w{6IfJTIZWb$F^FBqwBnQ z%+MSGLy;LvbR|4VXNfxS5+7ecPv+7)4Oc0&E4>C_x1rt@hy;LRq<cnFr@76>{dgb>^0S1>K1Ho+w!QI^o7By z^PYP@y+7c7e5z~9Q?+aN?(Vf#Yk7=2aelll_fZg=K~Qi_O0aG4%U02yW|n%a3G6B# zL%gGaT@74au;klGgy?Z+03980iA|H?wgvtBs-bmceFf%@Z(Uu(nkY;0)38Y9hkFh2 zzXF@F?!fg!kT2}D{?$WR9C*#ehF|pYA|Ei|xeDMZodSb5X?-;TrDw1X2|(#;dn4k^ zW2txw-@AQ?E8k`Ff@~53hqRNxP@5rVJkWByipEzq!m+Kt=)SIe^x)U8eij-RTkm&$ zeGNZ#xm%gzzc6@M>6--k5{)OCq*t2$=FS@gr|Aa+w2@gHZi7Ut-Egw{)e#*rb!SMp~g1Un~}nqvi#S)nU{QQD6MWCxU{L2@T)xB!=ZK z|EN`0%$v#hwlVv4It-`wGky0N-%rs<+I2p*Sz(F z({^33e9{@PS+UjN7|eYbf4de}uIvmtu0g(U-^ssU=WlUqtY5a9Qm;&W5bvohUPRuH zU`_!a%9}QRol}MIqtSt*D?ElLD+0}KU&gr++J(DV)W0A^Bcr)aOPvNg=bC%DvSK~i3fXS$dl+8Q3ObpA>CHMxvYmjx!$YtUBP7RXX>e3nl= z&KUT(nxH$C`UP~!Ejbl+cZ}T2K?X}5j|lXMJEc-S_EOrns3h4=y5F8qtQ{diTVt#D zORc!6Iw9h%vQ9r>)0Pr?hgkTemR0Uda~^GOWAd+26Ik+VRhE>Jgt`JH|7Qhg`HHh@ zka+H(W$85kbZ+#yVJs8K+$n0$`fiz+PN~r82W#z1*Ft&`t(<|?6y2?dMNt7sEVZKa zSsB~^Khrx~z{BzLOLu_1CO07=Zq9bmJ7L-^<)l#txmG zw0^$h)EUl+0s3Y{x)8oXi&=9cm)Q=Dg)(*j4M45n9+;B}Uy~20dLmdReQzqnY*x6b zDOXl8^{UdI4PezjTJ&+ZA7zMjjdtJDfbNL4onw;>JD6ApoF%ApmMJul)FPrt@HMy& zt4a%P!@TmHU=8cGAc^HAodiBgIVFG&e)5s&>Po+oYbM%ANhv|_J3?vx`# z5cTbQ3!(=uf|!%a_)`&(5sy2G*N4mfcmU*D=bcfnGx+ZTF@M4NsbuN9EZ8c zAX@zi&2Y=&w|&Z0?629rv-H*M&ZdAC55h8$K1`HjluvxYdlWFQs7r2fQ%0YDW| z`xC{0B2rj0+C|rZtYuWVu0L$x$ZT?2{&>NHUaLwsj8E$PR|?thx3S<8CQ1*-;f!Qi z>%EItdFMH@6l=~5Q4N}g8*f{4{{qP)@yK`L&qwKh9F3`=M-%x~9}5WAxAp%!cn=L_ zdl{XpYwYrpU=|!uf$y#0$1{g4OY=hMV)JOxpCem96%Az_CN-vZ+S`-$X-NIYV z^-{H8C6<}8NNA)_xMQZPZwO93;ulYb4rH&o62Sz z5lnqWdz!m7x4DDbpG^ZkFF#(IAv|nMCYx)OM?&HlnB$wxvD>V}FxkU|c~QiWeH zzi5OfI13vdvzN1!PV{S1PJa1Z_~}>G*7Dxe)-upfuWpP9TFn}{6k%QLAz)taiPJa1 zkDhg(d1RBxr6|;CpVz$+eETny8r(&pjleR=(68YhZe!;D;VWf^#jn9)VLEAIe{6 zk5$%my@}$t_+gd#+UCx`p>rGl8^9o*ZP?<)e;FZK&DN-{$D+)If8sQ=bejZ`;+HHW zAiGln=1DOC7JZYvx5-aM^JrMv+`XgWDq~}um>#z98-A)hWaIYHn?DGq%)!$sGZTRvAqQ=yjR2UeEc?1a~u!|D%3|1(ffdQ{s z1mu@_a~X?gd%A*Yqhu(5Ebe7)eZ46YMeC=MrEg~Af#yervb(0b(xUG#J$7S6bIf`9 z3k|=R#Su3EaFKPmo@t;g3wE&hFZEQZ*->M%Wx$H4CI(&+W1Od|kKBRF&_Bpychl_t zgJJ&IiOqOiSAT}Oqp45ae1HZ6CMTHDl07hNDpNc8M})fw+o!HGGA_HV<2&VY5>fu2 z768*VZZnI#qSh&PtHSFRH@J=0l8%1LDq^HQn5O+Hwr>gqIB>gd*Q|az%cm7g3mLbh z^6X6Tt>qs1)a8p_ZB9B>@j|AseMjI1nzOdeJ}ys}#;w4)YJsx7R4>rT`7OKrib{O! z{gANn?d;2hYWW?#Y!%6Nj+=p$m06EsS4nr1pFH6ay{#*z~El^DBmCE})zL z-->uECdSvM!27NA-WF$2&uEOU$ z^Uk7xpe_9DpT7PF*AYBUz8NjZo3SRvp={St`rDwDRP#m-Cbe&X<4b#f-zJ!TN6>!1 z+U-06mQm}ws91v;FS&QZ&V$OLCfdzdki~4vH3PVCi+Ma*#ORx=o=9NYRsKaHTkPMSW>Vd_H_3<_M=@Gw45fF<8h%~6 zuut}iGHy0Xv?hs)qu$-pZRIzqg=nhCS~6x&C&f9C$ba ze$}DZ=6%YIJv{7?`l)N~VGz4`yQ{P8eBdTapOM3PBqx7Zh^D&u^rNgMB{0OCAWr8d zY=@@!9dViXugpVzGw@{+R8M9o|DrU zafsZW=fwef$13`5_e$7KBD3A{m~Se~9|0LMSZ{VT-I!2rJ~1ml zY#o~j_q0`@cIaFO$^)eCg7r{DR(@Jq&%AObg%wNKPNXN9x{ZBSasAwR;P^9gbaE^P zB@@bXZli}q&cR&3)acu(3a=Vx!`ZE+<~=Jx5AO0Ml*dl5YPl$o9p>q7l|~wb`xuc; z3Ec(qb@F=D-ppyxk$e6cz8v~EsKmq4=VZN%gaQ1Sb$OCNl8TY)cj{&-yQVD`feN`! zfb|z0Pu!Ly?bPDO7e|i=g_w1ddx-aQi(XP;JgAkt^-(#Eg5pCjf&Be9>FJAduvgbp zZG|V-Pua)3Lpb4%O1m@miwcxcb48l0 zK7%`$N!m1Cj!_WfX$ke8sjT#O%iOX^2#XBCujG{O+7)jOttkNQ!FU|tmuf#H%Kj|E zm#wO$G1{HgFmG5y2JWoo8}v@m^wTC{>&IWFlNMxmaXe34|3vdltNqQm@+xW-s@Bb` z?97nD5*F9~)-EvP_G@=z}V%4*D%K} z_nMQ&_g6TvYWRzV+NVF`?&k(WIkt8F#^?Akg>4#5g(X6X{_~+=uMu#TYeGn;Ge+@KNf^z_#oS|a zQ&5fTlRD?ob5i-zRC0$JZ2D=aPr$2;W+O0L+b`zfM)u$;pYsw8gKszcR~GM(<*gvp zrxSOe%^KkQVE_ikE^mI>Vk#j<{eJc1@JrD9z`ybAspRaQoepp1NF7OP%Jk(IWH9qk z1kf!|1ZUL8rs)CcQqoKKTww=Y#V4CQ045sGJ(Gj=V{Opu4h{Szi?Nt8yII;@qa`Kf z&m&n{HzTffxxZeP%5F;+<&I3@{QG1I8>*W%AaAp(`q})pS{Ah#&B?E>XGmkIk7ppx zl10NLwq9hNyvLLBuOd#rKAKkA7K?b=T`772`qMA2IZuG~8v7TE_l%h(pjiVNihbXPTYKz)$E3S&N?Z})t+gqnT*elB#b z)k7Nkzz54ejcM-@-C3c&d>^=()cAq_zO1<3@jrJAp zG@$Aq%iDwpT@>`Kw%#_ow{Dmogti@(8Kz-daZw763MM~%Z6?6WZB5*65TCD+7VzO( zZbjC(unWC;ir`!$an@bbj?o;i8`FyO*D3o4LT$~Hd_w_ML~TK#IQm>t&-H-XPnjdE z@!&75n~nF-Qmv)Wx&HF8t;RQqSid(9#U%__|J0lbvbZ6NWTo-< zf%s1NllE-pUBRTu-%1Ya%8aIy)dG3eq)tywe%JN7kS9rI3slBZqIO*;g~rI7wDX>U z%;rx?V(=8j{HwjuO1^NrXBA&?%YKOQ<#oU4&B~dtd$iZ-uZU^8E;8o!orw>WoeC`p zpWZY*53XPah76QRQylr2!VKIkjs3OSODde7v{4`!x?!D2Uidsp|oz9KInoZK$k zAFV=D)+tiWs>VBm=(77JdlcS8Qw#pOJFNB|8QGq?ur_{5{Ikc?lSDc>X>RZxvu*Dz zw{Yp|x8BLTx>PQw@6*B7$~5@ae;Tw)WN95${*;2{VxZkAdKWkY(x~8TF>SE&ru z7-xy5b-hr$TL8$1D`!1T)$G&9u(rOnHz#oG`u_HV2R*B5LH%ww()|P6e7Dz(R zoR=LLU}%tpm&(o$6G#6Df2;J4)KsOz5~a0ZZeD84$EHtfQBh2t*>gwQZf9oNn0cxA zoVOy}eEPDQEj*%c=)4BjjmlQlr$zNrFM79^iJPKzUNvK4Do38_j7&@*b9NMUvcoui zC)V6vxP#|M4cTJSLF6zSv8s3-c$zk~pxu)ytwEAQgg+@UIm}(K?zITfZDY=bE1T*Z zmAW*MQ$ry*SK0JZ?D3!0<2-g^C97oH$?1&C-bJa4Z-OtW<=_~<@TbNM8e!hwVi#y} z#|){6#b>34TFx%kkikLDMf$SDa2yn~b)P(Q)*)1U+YNFFQ0bN^>!%~%BKcZt@$Lap zoB2UaXlNsipdG9kxynG3FAlpdG-|^`^TqwTen7S{elhd;}wBCU-YQe?gH0(4f& zEn?i)mttW$HeMOde(PdZxFuCTd6h|_(5GLSfmn2>>P?gY0A)9@X`f-_F;WL}6b1>k z33mpO%C)azrM)W6Pl*QIwWxc9J%kb++|mtwV;&DAn^7GGt5S`yC|Pg|T*GnRm-iRI zIfwGwa3ZP>rzgWBN96!G)z=lY^ZSC$z5lj1A90A{{eBS$tcel(1b*I#-64bO7Cq^D zPDSXJd5&o$A)z@?j#4~}-A@C~HVLA}*~s9DpWBrnShjLaf@{t}9E2X?DU!7}I)_h3 zAllW?_lM9&n39s^L;+-RY#e6Ul4+ht-kyd~)YzZ6jk7}z{lUoXo^>ojN42OcX|+YI zaG@%9?YpHZ=%$G44oIjyp;$uu_>Nb?!*iVVy}Kza&eCA&+ixA}S4|WrJ1V;Y|4bYe z?YNCvWu$(f792i^4=^?)ep72Z-lStt{BWG0D+{J6016&1`a!4_1~YeCd*JcR_ZGvD z`nr2RV`^$rKqm*vpv}R{H+>wJGr=tY^wwDqj`1A6ONl9!xUMq(8!TvOHCxhi992Ni zH#AqR%Pn3~N14TG(|9ey;#0Y$*iu}OlDEzGhu%`%*M_q75dO_ z{^)k9-TBo<`xyj*_HK;+DKITI0QEAU_7FV3lkU0OWPd_eJ}vonap(66E;nu9r4K3l zzV?uQi`VQSw@4o%$1`O+-K>?f(!3lX$L~<^rQ)FQ8KsS1jp; z1S*$LmX{WMBwVk{C{mxE^1#m!xcD^?pPL?RNR8z&i#hQON~CL`Jl_0^Ryq;yZWvkWZze-3Ss7eZXZwa}m$izw zoO5_IxPUDbIeib@BSESTE>meD2GTcfA|-In=}`f#Q%Z(y7)LvJ7E~1td}tdyLGISK z@wBG2W?({E5&5>6qRvb!9&t34fXaNWftsN9**jVt!R@(uJ(yiVnsd{Gd;>NbUB1E> zH0R}NDRL*QT9=P%<)1$}3<|D1F)gE6`Ty6{Cnff@ah(l(%sw!og;}`V@Bhnzd8x=g z+Gr>XH-#EJHFJPQ1WK_5P*g>QuwM^5j?ow#J)RAWos8S&FB;$c_^@cb6f)zRCj#0f zw=?e4ysiE8f&e7)qEen!st~n$F z-rnvcW}9wozfheiX^^;QeCbQM&YQ?fs&oUvh9rAzi_Y)-(z_iK>it*BIW!5|!-EhG z(-WUf{QmK6U0q3lxZi$>`$LrIHA6fG)3&S<^KKyS!6MrbF_jARsp?Jv+F$K!BpV#! z?fPmXO9$a7o9K11m!tMn!0wooue+rG&AhFbNf)~>WJS@DD#kj4cJ`RL$2TY2kBagi z?5Rht@p9ZezTF7GYD?@yP}51+$6<7&QfK0YYIfilh5cf4gS(G-r5A^0;;En3?43;* z_DY5EH1muZx}b2^&y9Jy$27Cr=o?I*_~F~~%UY?t zLG#YE8E3XekOrut=E$g})^46TDcU>VzED1v6Y?3xs@is}-bdq$t5|9No+!WD!%J?h z1t@P2D1hUo!<0AoCqY+F)SY>EB)l$CsOl#>tV_@P{vEW{53n7@`?~$CM{4R5QSEK~ zG9sQO@`VN6!vU^G>r>W$YL#nVV_set7bDjq`flo%SU#n+Wz>hUlSa46q8I6gZ0qdE z8f03V=SOOw?&7;eDIeLESp1LPe`z|ydw!#QWR|*BH5UPWLi;$!|1cilV}w3s3#rIT zS$*OP4&)BN64#J^<(dW?W3$C>1&t{jEC>a)HJCLG-yV|6qHY=0h2It4jyPTBRQNCr zt4)sFy{Q53mU|xo#rT6YJ@i+#B#+x!)6mh(GM9GSR9uN)rQ{;DX;m@GWrlzAve*4& zOEI$CYMiOPPEl=j*$ob_aihQw&Cfv7$c(pxeY+OKdhhD{Nfeepo9W_0-t5XIztVr1 zZ{sa6SoLq_*A@|+PpmVD^;7`Y9Cq-i6GEgzoDHElnzf`o>1N=gRp-K4Pk6sCw?^Wk zAsO9^2$^Y|LeA(>zMNiLoaASaB5A&X&f+e#T1e7-j^a-a(mB~s#`wO}owg_=Lu<3s z*`9F+=F*5#8Dh(y*Q8JBmNdt|b4Pla&^bcRfAw@f z1PoP~Ka|3q7bHUGCb#*ZUe8KZqscosF~#t5Vg7$k)$#6@rc7EVTQsG*M>@yE2fOh? zKf5ff17~%hgg+k|qYw9Jz?Y80nW*onbI;DXaL=G5i7vXPBJ~Bg^*FO#&YBRnry%DN`uA3>@og3cu`Y8vmi~xYV1X8tMnGhTm}XE%Wn` zv>j@*-_M6)OThBz<7tNHtz-IL%C2L|)1-nnK6cLF%~)r&ceQM$(D{J5NxOpOG1y0F zyUW^cS}nKLgT^6q?U(!Ug-@ubo4HVH?xyc9`Lo*BAfx-}*sKPruBj|h=jQC=isKLu_eTo*4yw)DPf{keTBzNU;adR~UUo!%+znGOraevB{$ z&t3T?qUaO06Lhc-4dDJ2k-Yz+A)Z^QguctC~T^$8oXzti?lgXNmxO)UdW9(QKEtG|{A z&(4Av(n;QV25+yasJQYCa-B?^^{iibryNz+o(3vIzb~eD%dBojTOCz^31)E}u??NH z2B59o!65mz;wuB@q*d^NrwxJjXS6^z^VBl^o`uA=s#!3m+8Neal{`VDWjbZo5BH{Ne4X2UVqk9gvxarkyG_}+wZo*Fk-bEzk+Bck{Qfd)(qV?t zpxc6-W_0UtuaWo_=b`LGdy6#j+%ty%*`$^}W>Xr9fxI(hp3<)6!z6F6nlL1>@7aCt zuF4eCiE%kzmrXcPx44{W+>3Yk9VyG!`O8hFQwIF5vTk8YJX+7C&$;wlmyLf;L%>xJ z+8@i2X-^~??^!wT|K-O$I8I}!h-LdC0%9;RsN1F@-ohq#$VMn%2Rfo#jXh7xH(;A0 z`e0xMtFL3tE5kNAGCt?*M3_T8nO4-=^03I<{pY>%HCFXmk5cRYyPhc-4S{z!y#3dj zUgmQ$;cjj9ernkQbZ4;q%2lnwdw8A_eA~O$u5|`BDBWAz?V7TL$7V)kb!!eFdRp3# z=0AoK3=qGFi>LRiFdbyQ(bSmSz1o}Nr;+KNdWSNvtQhUtVxCe$BZgDpA}WiMa5ok; zHI{#&b4GtsmWN{yb*IS8%|8bG?WG77xgi_NF}nS-GTW@S{!zq)7c133xPXkvrbOV^ zX%M<7IYSpw7NEE?vhp8y*u17kAE|>W#kcx=fSnJ7UjbgLPC!4!C)$)=h3&wz)}4eZ^nTre8DpJ;#K2?^2wCEb)GDFr!=6Fzc&Y? zxR-0A{9vZ(ogcEhRp^jl!p9{lqpGs;pnMx8D~1=-fn;Z*+s$l#CAt8m?y2Ua)f|p~fLquf9wvt6P~rCkBktiSzWK0K{E% z1M63-kG$U~ofzPu08@5kTWg)Z?4+5jRMVmiH*m6b&~jOM43tc9qWdK+RI5|g-(@o5 za>}bNf(0HXXq0qx0cLKIjPcsvJmWzUX}8x<^yG}bK({!MBn`=Uk?F~EtVfsRaRR0s zuagJi`NW4d|wi#YU*thpDjbrN%< zgArensqWVj3{EH*aIhYhyFW`YVD?+^d>H$E#1>&qef9guPn_+p934A2bT1ROgai;O&LonNTG@&n%Jp_k5NYrN(B27lLn zg3Os>U%J3FQyxh4^fpvN&$2-@40uQXEjPRot20SPzjnYk25J!!>!I5;_E+0VLX0iC z>=Hr)3S{XG8mCR-TSxCQScdBPQ2|%cXNqZTMzog`f>jM#!;9o&<;=@EEvi&q#XKS+ zp1vc1%Ld3j*Ij$vWVR(qdAFcT^B;E>SaK*c^s%4I!;1$>#Mf-hN2fjz%7ZOMlk!<6 z2epaG;^-6GbPKY;j^ooSELSXu+Fh|L`9`)!7LA*w(PpIx&)Wi7?IS&qvK|V`SaUtA zcqyp0NzDN;8u4HP09n0%$C5;Xb8+$6|8ho}T0(5X0$e6Z%Xvblt{T{dxgvZkpv;Yl zlGt6$-(qw1yFV0PJLyOMK@9{_5R&Fzm30k9g7I_LJg*n_!6wH7O=pdlh~Pu7FF0XE zDahIj3|Vx0)S@U=aAy}6yC-Tv8o-=BCu+Pdi{RR8?$!q!>(B?&G?US2L>f(<^CpYB zdO}Gaj{03wHVx4$p-lmQ%|dBNRq#XdT*ac(P|>a{cg5=t)Lk&x-hW(|4wS6XL97x6R308Zv(}vBJq3SWMA(x?JcXK@DjzAyU+3uD{qv9kc zQ>FVq6ia3ggG{bb*WZ!ef< zmKn0n6jJ3D=-y)sAH35i8gf0a!o|muK^8M&9{(@}*<#&phoZaHO34q;-FfeS{U4GD z@F{~+!5(%i>{dzV(manu06hYH$`mWoA2Sa0)?5|&Jxuk6+d&|;zt6tdd*TxFG`4uK zI7L@tHZ$XiH-9WA&8|%lt-fL8`IB`42>Pe-tbgZ1C?wz$r*|^f=yqk*urnEArQiB( z)N~;usNC;Kiq?mr^@*fBj1xou;xZ|h7Ir~vzVNs5Iz*s_?psrwV*0kE8HeckfMQ~vm zp|c!~2+;=@|LDeQQz2~43Z!LwNy9@P*Ga-Gg?(d9*6by%Mz8wVML`o-N?ZEK3BA_Dmpa01g+>NsI*nFhoG(XtZE`O0CY*F@&WQWtF z3vB>n=o*UfI2676AimX;{O>1IiV(`*!yR!gdu`^+5aX_(aKWXB0nq){%bOme$`6E-We#Zeqf>kxxTNW zX6cOF?>dyBLs^Z9@P23-k<5Z=)PwP5bgF(+JLpbUBwGkjr zDa-aC+c@DfJpW-8h^lpS0w&-=Z^F*w}jCx@FEY`0dND*>7!B3l?3p9`J&waf_Rxh8HI?`N8#$CdJ zK)imc#`o`qw0F`NLl@6+8nsmf&4qmY^8gC@eXmH*w2ynDBUvdU*o5)^yzJ1jo^Yw? zDw)czf@dR5+h&{#XV+jBw9kzm=+=YLPK0PV8#s^ORZWkBR~|vg8ALsn;ng|q&C~#J za~0y--|CJ_l+-76?)5JX6S9NuH(PsCSrgrN{8%`Ps0UwZH0^yfIe5U;IT#jP`caH> zxxvlMZFB^%-ZEhQES~P(bTVx9QRsgn$>8;G!(^x4CN23vc=Q7 zG=|o7NItfYK}Y0@h9I=U1~Y+4PRhl5BG3)TP)kWUQx&#^GZvE@W%`Io8yipgPEkas ztj2gk^wHpaREQ6*coYM5Ey3ZA{>{}rIY9(S4mjbMZ^QA}U#+(WoJ=HbP;YTQ`ZV6P zx0+jezA2x5dWt(!_Dgei_Njw7$>HB@7A2}qwYuzM!Fo47>+}JWGWE4h1x-XON<-O& zKQ7@`xDj?F_GwfW_7)E-#G&Br0P1O6sb*yERtfO{1n`V8D zG$gkSsq(h0DoND<1zx0gSBLuY_EZ~DDe`Hm1G3Qzc07aX7xM(<@{y7$lf87h988Ib z*roP;5_sM|AsRjlF)F9*IOhf{Zq`x!D_R$!iN|Wb)Gj#AJpu_)kz;q z7L|t79x7Nx8s2D#sa>8I+zoWxzv%IWMunQKRJ-v|6Yy=M@KNyZ3T`?l*EQz2+g>Q> zF|bWlfGu8kQ3%pSs8TOQ7E8=94cQ;X^#Ru+e*QQ^zE^746PhQvy^wPrTg>*W4MnrQ zsd-thmPp3rP0%s1!_A4!apYPw>Q{HFU5wap1r5M+^>*tI8NsWu(<(1?+>L3hv~3H# zt4HwE16fqRAHcrHvx;!kgE@eM;?5NwGh!e|Ms^goJ0CI(C91B~Y_i!&wjn^VRG4aM z7bpe4@e%XE;uZeJ2aTZ^@m7%%$;>)u?B&-sZ}&-s;_AOq-f8y=>>Gpc-t--L;Xyohtl8V?4_KKOEiy9$FNghAtHTwbl4MBS6+O z*!?zD%0C`*IbLPe^oG7ty^ct4$yj|Xo68Z{%!P3xXP76Y#LmB)V18Z%8Mw+omnpN#C2GLJSOfDM?kP=d$(Y*tf_q!K0>h(x_4{^F})+wEcO6oM#5cS`ILjNB*`qo}|i@UX1c5NH|jcmKb3WGcx*TAhYV(0jcH;xn^>2A*BlF{KJm>rTpV-@8!D5jJsYyk| zwqoAgvkKT$sMvKD3LJyt_*X)c$kt_iqAgLtez7w6;cQ^-qQo+C726y8wjA_N=xZb2 zMbz^6iDP3er=n$H+IZ4i;Gk~o!47#+KA*}`2lS~G2C1(?X0{6W*PXB&dG9Tp9Gtc8 z-TFL28JL2Y{0jWuV$F+K+Jpq<^Uz56oF)8WoG1RlAFT3>t}?#Id5`^whEt4&CZi<% zmJSu0A;^V+uCdVvJSsXO)+`ExBi01=7Ol^m?Y@^ue=n#$6$OoaOe;@w9%;RODnCm@ zoUc-nYFjxFywuOE+dO=7{-J8hPhaVUEL{Z`->vaFAr98bmu#u49CT~ z+9ZBF&DVaM#-}m5!Nl)#WmEVU+J8F{_l$np3}2ny+Z7O31;#(T)|hV??U?UMWtDK; zq{w8%V2`EFD?`|PZIuX)1 zc_c#O+U!NR4*$6~TE7K3@tII~-FzYHh(Mr-6jAi&<$h=Hr~_4j)aY`>ZI_mI62r)R>m~(`0ER!ol$OH2@Ry z*>YSMinoh}S`#xH&)-7Frra zq+?8lHO;_Rar^qWOHr>FzS!5&qg|eFY*dZ1UB3G1Jw0g8Yd zl5Hr5N|gs%zIEyEwfwvFL@q=qIH~p}^l)EQKQKFJjVSZuIY5`8d^7^%5}HBgz(Oz| z_O;0qW=@UA7zNDoP=@%zv4w}B6Rj(D6^YccLRo2ZLzxG}RheAlZ>hYPmG&W?P1JRO~vinEZ z)YlF_P>W0@Xpx(A->7`H4CcQ7{-;Xai{p@rQj>j*J8~(gPF$uATP0Me5u@Eb>50%|NP2Dj>HOBP(>{gW}Q7 zmLl3GIg}4yQdRkp-!-WR>$@MC-=xkBV&Jj5G&eQ&_%zLv0`*BJK5={9e&zupekXDVXC!48jvuT-FjVwIg3FO{g>EKX?~r%Bc%i)k&jB zuVOFkIScP+*s^S;xC!O$X;j2wL{M~F_P*H=o1m$j%pX}^1C*qcZ%wc?&WOFlnxbRr zDinZ-^gb|O?xj(2EjB{lA9HUNVSTrOb#F#B0NyfIXl&*`wCAq_zynO=@)`>Q+6=SV z!v}`sBr5H}NzTnZvSc3Rid5zzD?_r@8W3)$+aUik$*!j86CNZ7z}P&t)c}-G zF6TZh-~*?g=R5t}HZIClbWUsW=t`APB+b6Nu2zmtokpuO$aJk*S@b~MI%4RZSC zmHiJO`litO=Wwpb$0~o@2zS4c&TB63>XYFJ+uBN>Crw80&;Z7GR^_1iM2 z{~ziTdQV@t>U63b}DsUYmV&qDV?_Xhin>D9j zY{Km6+5Z>=i#t;aM&qAN-=2BTRm#AnK~o*Oi)yQrc0W3ci|=JNQ%&RivD5I2Ca0Za z=7Cbf8Ve^A*0KE4%eUxgNr>Ag6zmJy-=U0SuIQrm{Y&}_Pqi_hL8&-zPEmg|EtGtD zBrv!kYhm?Ea2uZ&)lC6$DM^WQ@S)A)=#nDoMtfNg*UT1mQLm?Slj{$3;0fUtJaTJH zaNA6c{ej{-**E%E4vZo$sYrfkH3t>QLr8{Maly)BW5fo|xyi$LJ><9DeOW-gZm`x7 z;TuFtgI@CSO1yBO`jC)jSn?J`OXQ#cs+JTna5*V+IO^2K?Y1%H&P;)}dagt?;)Pi^ z(FH8f5~3=*YGU1dQ^%Fg<;Pc4X^y`ZPI z$8k~uVNODtCg~HNHlOKi=(Qt38}+Lf3R~biQ9xx9c9`ku?vT3@GO6{NaU*1GjbIgt zzz;eqYaX@xCAVdsjJQQl$XtdR!@!)EYvA>_S>e>)EA?b=`SZ36N9{-jTzMK2#CEoj zpb5lS&V%_3qIe6KM({K=$~nUJ=;73k)aY9~yw{-yFH9}PUBZ{d5S$*6)on#>3cDWm zEZ;dzaZJCfS;DHix_w|tScQsydty1~sm$Tb9Tjed2{S-v0r!{nQf2~ez1KI6$S6RK zElwOKtR1Q`mMLrd<(9gIy$0Vmq16`h@QxIh1V@yOOWXX;xM!Emf&9&&v7x5rK>;>I zk`u(MgFEY2_XF`Am+TRxNRs<5Z)Q`VPKCyHW_~St?iYjWJ&_N*XHyqhlmR`K#O-)P zUSQEtf}Mp?bBMb5BaH8MI^I3agG4(pE|joqVe!{x>IwQ?WNwBy1+HqOdCBcP+iTP+ zbOO3{`GA6!A8&ZyYUo~XsZs!=Kq}`tT>FQT8+MS ziyD2Gr|8=i?iQ+)X4_)+dbvY3NrI%}b4}KTChzNNUfLYn*Hl8(`Z!u5gKfzk{qfrO zMT6FfER&fx^4#@qlVjiCkA)o`|8y;El_0}n)CP)$+Q}NdDPMTqp?#!T%$aA^DYeb% zCDc-08uRY>n|?;my6Rn}02^*FkCy9^#~YwMwf=V1i_nRRcloTw1Wsv7<;@NR<<0Qw zwm%<0Hni5ECvk@;Ej0Vjy*GE7$2W6_Ap+ zX~DXx?!yS>MGDB$0QrD4OSWWDIz~!ZmuEXdn!8$hlR5BhyFSL74;zlpCqCwOGbl_S zr{JSG3jYFVmUO$2ZEc=O890*xWxoS#{xr3HgFegwI9>5UhM&i_i~O>9K5`&s0o{j| zFZZ*)h}$X$n-fcGDFGY(wO3=U71XC_E%06W@n|9VI3<=u3w=PPR70lx7>D0Km3!qD zFBx?9JZp$XFrYU(LDWbQMW{Y$Swb!-r+U9}S$7}!6cs$^;*quEDd<_5fz^+oCuy;m zC?6c6!BH(kSaBucq-R(Hl5sXvd0*#M#zyvAAErhY?uwe^G*Q(^AFF(E(yZKR(8n+W zYaM*xDp}!s^&g%vUxNpyb-61slm5P zcv$oM!D3~wNP+usS>XCxd2O21%MF-HB_jntNv)ZoU;C+)wf9iValK|rDlTM9Q<|E; zKJsZ6QG+UDYCSP|7hIBdEl~P*^qU-8!I9{=_15B)0x~ih`>UuC*K$ha$b?l-7l*YC zHnTN>mzoje2xDGZIU%lX0`VJI-aZ$bzPV$&O{u&rKo&xK&CP-saqjCL*ACJWXzd4t zm5P0z|3R&*pxeeBKbC<6V!NDnSCnO|b6IYB4Hfirm?U zMkd<&KNVkJ>{+TJmA-V`IR>OZPSjo@crLqYR*0pId2HNX5iu;@Fz0qsXg(M>;bcrQymv97wpiX44u2NG(GY`Wo)y=n z!4JFm1#~T=3J;E)+b$kE`d)d^EOD6WVENwdXT4F=qEEpSlazm5uU#M931=x&z3lot zaM8pd1k%UjRW&>L$5<+@PABp>(-RrbANr1GdUJ(mVX2pO9OcyMP4eC6p(s%C7K{=E zL|Rks5M(pI$6@nZemw3s1jDZ`%6U$4^17gg`Ft@|=;pI<%oNg9r=iAnGs}e~^lpqI zesC(*I$FX0UUfa)XR($bQ z)kXRq&Py7Z{L^aNi$-ffch7=hu2=wrTNp`e^gThtyuQaJiQ^=}J#%j7rf5B#yVBHX zgEXf@uPnU`FF&)yVf;>Me(Hb)0n*lo#!S{>D`eCK5~}&BRXWvx=i_3 zQ=>%sHTYbvn-mGH2}%9>)46T`KV_(cH(xF( zQ?O?V>b&z@5lR_UM`2uXjfYxIgU(L^2S;hczRHqx&0{J zsKZ7%GdqtU?`f{IF9AN3ptm7@zedE}b;4(uTE2+GoX=C>A$i;raMBYd+=;}8z6|{L zvhM)(cwKJwGv&LI`*77&77O8X%<2CZ(>7hHY38F`F_6PMO>w^>PoHmE;eaX)S+%Ck zomClVGc3cA>#n7tgB-{8`E$1Rf^AjUZ7SkXk!uT!NlI_Rdekou>y#5 z2_4&PKe1P@%YO36^xI-(-#=>}!S_1bJX^Nc2(C=8r47HLlTsEJsqbS=(0ggxE>x%&Vf-)(NiT8Yzk<$H(X!>7NqA$UxY;O5E+Jurz%!IE#8u8tOSZ9Q)nMeB3T6kiG%3*QqTjg#DY4CsRljhs`qSl`1*f#^YyrYN0Hh4y4G35QzJq zE%D zY_a#zfB(d~Vm^wQf7q6|v0a&uG-Nr4+@VdiFr~?Vf>$o^6*umo$ zDJ7B*VGW(iqko%UX`TYB)QY$yW7^dma+&6;NKKUKDx|;4V-iyWtLBaqp*s;`w;{K{ zWPV5lnys9|hZA12sIWRGj0tpf4#yUUEJ_zO0ULjIYk#g70^!8(?-e0&D+lg#_Yf?* z^n-Ru@@t6GsGklU@4%;1D7+{=4!E5%v;Y{WZjJi8Dr8r`%7{{s3+c?$ zjn0PAerqZ^){=u~sV^;hznY5fGDjoyv_q{L#E{Woi?5j(4WKQ^t)BOMoqkc$w8M*3 zum3ZoIL5?o^KQQXBjuaw3#j6Yz{zddRXVs=z}p19PKyK@3w7~$6kmQ3$$y}At^Pi| zQOlO}yZ^%0_s4H}N4h%a(qB5c;78o+_l*tPFJY^7IC1d&x20|H!Xv}ZAY@UZ?Rxyh zPUM?{K*p@O5`0fFjtxV3Aa3zkM%zx%97u5 zGfZOh?4+2FmF<`jvxw5bI|Hw)1OcQL<~r4fyw8VKe14R8W%J}IkQN{pKxMt)!`Cp8 zKugmjg@BxW+Cw|sXvTnTgv-d6z-fwf*&nFxqB62HK-4l=4_0UY#}oU$9UGgEvF@$( zzyQV9O^?6&C|Z4h6|>9-qU>mjgG<6m{b-S&{Xpf-2pqpBCoxM)ogM#u)cRY!m|La@ z=?8nBU3RE>%+uMR3D-E;5dUO%9Y3C@Vl>pLeHu%vcv1eIzY#dnw7BFM6MHhYF z+&MS-EmpZ<@E>vSTUnqJ%pvA^D}V)j^TxOOHy zJchw-p>UF3u{duhQxU6f6bZ%0Fd4}2&$A~sI^Lr!5?)v+zF+Zx&a5Khrw9HdrF{XE zJbV{gKEq-OI#7q>shvHt^6RX>q4Mw z(#_%zCo;t;b+$E~8o%8+tfOx$8 z_VkZJqH`lvS8Ccr(ErXb_*)X(d%|B`rCsvPBa1f#*E;^qp~oriW28VysInfStXz*FMAULjqg-<;h27Ms-NeIuk8c=oy*br?c2nOFxch2$G{^`L4iD zH2M4Tp1n^Hj8dGi{S+#cgtPQIf5ZGWy)sZhpq4$Z=9lg9%F7&gB3NahrW3iL=ScPs zly<_Mvfl?uuh{$I_lHlg5NcVDf9Di34rOuiR#Y9l(&^TJ{mVp>`4Fcoe2{l=K~$`( z3q_ftsjko4uO=No7P%7q6#UL9E*x$jkc_n!kAU6}PWce|Y+cv2Jl&>K@51cr$xa)U z<@g>*l>2kdQsGx}kbpR)hPt56vY|5$USYK~_W{#?-9KF)(@RH|TH-+;2(D&g^p1Bv zc2a%6*S!zRgGbqhEh2W)px$Wa=WPd(n+mC>KEpP>t7Jv{r9f8WnUA`S|KH_FH|JrJ zl6TT3zTbWD>d8`lmCC{}$JELHmP?~Jfd^C=7S{q-hkN6?Y{vAXEBb*oyoxqaB)6w& z+y@dM%A1EOwMFcY&GuHL@4t(WSDnO)drdA*8p)cJvfz%T|peFLozlX`({ zUU-ImKXl>Y(_ogHp5C6j>5gU7JJP<6(|cM3ymy{*?K7vN{)0tuqmcs>J7;YtCZ@nZ zGub|7bzL3X+uyp%gaL{X6?RT~9#Njwba{$152VUmOuu7(buTfF;Lg6c*VFV0*U{Z* z;MDQHEUFhD*88a)CNoSlgxSVqz!}m|@_Re3BAcjvyOYEhHY{HFoQhFgA+qjQp?8KPouJyN)4{mA)Oe#3;D(wlojz^=y5MYBbR=sk>?C#hBn_9XN$T1C4h=|B4OOOV z%sNsScx^%~c!xB!x>W3Sv+j2#|Aa@N@nk$AqAW2l(5$t|(Vu!pkwmr8TkU#PQ)upZ zZAHE+C~LQql3xcA7t?nnf?))SMO?J4N=)Od4g}B(X%Kz-RIt<~P~PueT<22r#!Cr6 zv;IKmr@zoozR{LKwskp@{ltQMo0D#}O~>EZgS+b#eA1P~z%@odWfp|BiVom{ls=e~ z2i1s2Ih?-h4gScOVZg$jUQWOttk^>craeZt8bDjeJ{QBxM7v;dS(X*+Bw5kRk9a#J zPx00*rbv0@k9MK_y~bRUs06apOMau#?OcBg)4^)X#5TRIlg3N0`cx;8`CsbBgZmF> z@U%OU0Qd*ulWnEgx|Yw#+-add7tbJaknf5nxqjz9S8BrRZO3-9RBf-GA%eW4!h!zo zFLqrhDR$i;4f7&42F8-o&d5ioOlSw=kI-mjUF=|?`Gz{{3_(SC%*Gm6Pu`1t`ve+b zMJ7lfje+oyZH3%d!v6!;PzsKfLR zu8wAK{HxYGB}L5gKcBM5C7{aEPuhqc4HH(t_lu}OW24BW!wn&N|7wCja?mBj7Je+C2r6meV#4;KB z(d8$qMKeb;qtfGcrbjNS=-11Fs1Cc-Va9O68i;emri zJ>`@Y&_1BYK?Th!`s1Bwa}X~!gjT$3&AC84elM?XpE zLbLqA7jG{qnR;GFH{Ht_-FA^MU)rSN7~s4J;M4_$PjzVf9>_uyN%#z)p{gr^byqd> z3;{=A>>o%8WbE6gQXg%&5;C^uy17$}w4B*T+omrYDO7Qyv7EBfLHcu{*E+Zn&`b#! zAs+ET?3RVe)6oA23;UdI%O$zI4$27JPItME#C*w;i%WMD*=fwoieggFb^WvL@@PT) zJnXrO)XEb=YwiHuAL%Os%6pgo4o9QqY5T~1Ry0Y%JzbS-*-s6L#SJj}34SN!#b)HR zGOPXTHCh$)$mOR>983n3Z<0x#N3SFzBy9M*Cmy1>%ED#k8#Q%r+;{Q1x;)e=PFlnt z_F;$Th4NkbDZ0Ib9p|N3Nn$@%=Wu0&J;?D1VN1vU-R8-%hZNFg4Ip2&)eaT8daBIB zf{a+m4miELnA`_m8D2P=XEQmVy;0k!l0QgqDKRtBzEsc#S)W^a^fCGl7bNJ#M|_Dt z6;S!B+QROdz!vMSI9VFXtTG8+`J}^GRTRmyrh4@?O-Tr4>5_J&28d*S(JW@VhqY$@ ziiEi0or}qB&+2cf#f+XU$GbOq1m0*8hly5k@(`ycm)do)Z&ja(kXKbStg+2NB6EHd zFEwmiw6*L>2yO&spR`QN5;~h7_KHFVIj}JHa|dG`)CB?M=no5xX#Q;ZS9yE!aQ4bQ zOrK9tax&X1^C0_1J>;?(J8{+O6>hKK&&8nC^u5EsoEYD=Gd5GueQya1_F0>6g^h=r)cFye^v3`qk`9M~jcZf?SZ>L7J~ zQb7C{o>h8hraUyi>Cp8bJ;!_Ak+!ptKE7*^*SadRQe}fbaI82&tpTX%0bmt zgG~1qiClIGw$Tmcm?yPd#WuSL(*#EF_$iZjKkO}g8~^&`q2jG9n#awvS(0H=u3f7&mlt`t`0dTU zJBsU{kKexrg55VUw75i77w!95BYh5NW($F(?kyze9$%=q<}%my{!N=i8a&KwmtQ$% zg&pv`G-Paxsn-6nfWgP{ZGH?O5%|U-N!twFV-45;%CP_LSDFLu&zK{MH;#X_V%Oei z2e8$ba?&Yf$Vy)de=GayL(=O|RQ9IE?L;AQ>0Go@h}r)MG{q1;=jQV_wrRf9NC1TjWtsQ3jc;0+72NuDae2 z-F|#pdTfH9qEgkb8}(g#kqfHCtXEv57OR{>>5Ckp9)QjxbUs;FB`Uuhi_!LHxQZdp z@q14kpT=tGOio41b5vLep83-mQT{;tUkkn9umfl=k@;2fZ9WB=*Ltk|+o(T{CwWh% zf4WfCj0Y7@R~l8srJz|bS9>V+e&b(>!kC~&(v{2{C9vL&L22p@;qO4?%m^6@OL~i0 z#{}=97g878JvcP(Of;zRMC@?#XLX8B_i~55}wk}Sg>#G-mb3f{yjRu1V$AIqnL+Al$Z!E*7nvaPmgwk30AB`BDa(k?<>Tz-Y zE%Sb`_gAwq(9nkcj>nKBaNjh<_P{;5DsWnS#hE5tZJ0E|wg-K2*d>9qv;O;K{#_(l z)YN2zvb(+FKQ8$8n@jMR+Z z9l9*7QDRSkMvavDWOxl7@+NR@>9Ys5luY%%A?k8GOH7*?uWY<@?;ak*i}?(N@Bsd! zv7mCqB3=_2iy03kvLRT~3?&qn-^$ykRWFCW>v+x~9|zDM>HFNBIU>qq0J9f*w2O+Q z0tHc*qt_W;-{5i~a>3;lFKiq$G(m~I%jTz)H31s+_0lyfkO5AAMHhVB;l)7(qv`n} z*?{6!`)}N>ZZ_y8MuL$tB9(GffOOsW@Ma*_ru>!ysjnVH_c~Nu$Iij@q{NAj#Wq7? zFY?C$+uq!KijW_y+4}hNOMcBG*0btqc0bn@Z+Zj()PT*#^iyX`N(ePI0-~GTf;&Wu zE1*VK+sE^=FhWT7u@#?4y2!V^oVIZ&y)dd8+-##@#t9mqPYG$pO(4tQ1Tj0G{Fj17 z!`s@&(&oA6>JUzI+s3T>5N&~FX!tt9WYjZsBvIZPoo%;Ecp?U!=p_47pQ52GM6(Gr zxtQlu#tndsp_32$XA1^(gQxvn!}FUq-^aq;wKw;KUhy0$2jzkwvyfEkj4?;clgZ2>HbOQFirQBj+Pf@tGilLBA7tMKSj+6ummjK{ z2O{egW~3Sp1fm42z@_FS+8p*L(IuCrFLKndt*&dZjB@&R9L}N3u7jTKE?#fdY@jipU(*(DbWj)WML~h|7_7ZbO@&2Y7N~AQ)d#im&OG7pc`2C+lgGq zRwr)mwkpL0DqOoneW}Hi7&gg?QBjF1}v4u-sMbl<6_87V|HM03Txizof#o|E4E!z|)pkz>)d`#CXAOe`tgw_-G3jX9w| zU46&dG#&P9jZ!{}<;f+>TBS^_47}Q|#(O9xpwJ=xZ94zEvX#V?{Ob-d4(ORS3X%Vh zf$j6}EHPBkCT&Bws?XuQ+%HzyY*da_Ln$K)cSrf>3ATGuuW^`jx?IiOvi36XeI;P6 z3ufEb1#0+FL+%Fqs0l@rC73e5#}ge)T*mx`O|*trUHDBg=Z%m$n3ldjg}&y*1@wt*DuxAr~ue~*!m}L#f~}`+MiWEeo}`GUG+YFJ=`*db_R zs4C$B8yc+=q_A@!;9(@2(c>I>`+7W)j@*N4$U3<8?}e)3poh>|`rXkW1p(~@hzpC{SQ#Fe(!GD9Ig-{}I` zCcoA7Ib>uZQw@GdP%u_S9(2KjRlUO- zSB>oIf+N#-itl}jxs9~G8ql4uwW85ps!VNv!!p=8sQSR8Yi~ep`GYAXwjjU%-!WrJ zIpYO-T!C?Zt*jJjF>KarqCppgu+9|wV#X)`ZZZStEoAi}OK;RmIC zSS9@n$HfUxoRGL4J$dD9B{;(|_+i`KCO=MYx)eQV`9mUJ5Y8JAOxZY-m@^!XfvGN6TYjUkmnVy~THT}@xhS7cl+fsPfY9#O5t~=$oQUju8XU@Yptsn0 zbPzuW)OER)cuFJ46@N<0b8T%J8Ob&JN2RdmB-)@Wg!8q4p%jXprr2^1Cuqe@k}0^D z6JR+?5%feQdC1w)G}UI|s6~_8^ET46D{SoSojw7>Ae(s_>qS8|`VZU(p---~|YDX?KhL|mv}DFC%igNzI(JUhU7*djT4imTi%cwC%?N+)5g$TyB*2tj zk_d^llD8NK-4kzFk9MY5t7devHfjrL8bEe~z6l|B(t1vIn9EUJZ%G*Blw!>e z2sZ^WZ>^|CLkQ1h*2IrN+@+W2qyjb?A8f&q^c{OrOK0BJZV7g9p2nUt{nwQd&f1co z(~q193*7gKcVFf=ngqKsm~4Nba(gygmla7EiaF=6iEh)#$x&Kg?{w=Cm-*sza)7c? zU$>~wrhYLX!qIG9gv+er1acX1{@-8RHKNcsm*z(m5~mf*r|@qm@p zHm@OOARhdk#S-(U17U5adUuF5Wtg4m1uBH1py(caT%Iu>bbw@U`bL~#AEl9G&)q^=#*v%P z(sqCkuIusv@UY@@@_?H;9Bt%g%=%H^jS3vHBHJ#ju!E7sD0n=`XA-jmz++!{s3jtO z&Mt(Cl06Tp2}CWRbT{Xhw*b6jM{hcd=!SyOPM*_OdAXEdoT_rxz|mdOL~78DG-JS9 zqKFlAq+^ffzsMd**)&S?c@5dC7`!pT6(XGse=oq{s;|veY-YB4@jKt|V~Uh9}pgQE)rD>t1tZqnPioEhl-|sF z8#Noihg%X7>E1d7GD+%05+%aJ;#UeSITk<-D=eH-;AMT#K0@Su%~~&zzwIi_`*DZp z*Kdq?O&K>yhg=yc3ifsst?6}#8TWWN{SrI<_(KX8SU8Zk8z8m=>?tmiT&7<2&Q!j# zYM@WysmImlQm_ym9U)vex(u|EtP+M#{7IjuW8`Uj@%@)>r*n<0!ixUqHRs%%v2tl{ z2fFsE7w4=tL-(>b?FZGg2Ph{uQ;HhtPkxv6UdXlW0f~ zX0CvCUQZCz`mL*mwRYcDhc42OX^KsxqH?`A-XY;YgiqULj43t@EnU$+_d^Ofjz;y$3LA)HHO`e;*tUJL}*X8y|nGV8@x`xA75b&Eup00G#r< zKU+tP?WBD*x-Sv74q(vn72#jj&K$2%xW;gq{5&PP%EN$?g8Ai3Xoi_gn6b|fMX&@~ zp^$a%Ft5rd4=U8=H~6iG(#q}k7n-B?iI=%&J=(|sVHqkL)pdBQJxUt}+x=sk!;Tm{ z*Stn_h$5e{xc5&FhVX$>94uVyc%ZC58895bJ`gUE@#fWlw#*nWK8H zzy{Y4+mj)ZTAV`N?vb$+2ylO#|1KqeEc-UM{Yxh3aaG!SP&R-i7Qbqk{}!gZk#ibi zieDYl+CbrDFl#?XRtbVV#yS=|-xJ4`*W!q;{{q zpvx?vRwvM8wbn^L;oS6SHTS)Nfs6pfwiIP-MIcq*>Np4_yHdCH8r#s+V0ZF2Lq?d5 z7+f3oDw3Mnhz_=O36mDM~;JB>Q#v1<5<7iILMt%l86HzY39EJYP zQaT>;motw)#-Tt=;17BPsd|`jqevRPmX?mO`ta*Ryhf%Z(!HBnAA2;{*5F0fm=O?u zWG=*gehFlud05kb!h##st!)N%NUDo}i3S1SH02!+33cY|$|q58Y;Z{%C>(?;%GZCZ zQ~Lzt^{Z%*`_addkn3EQXjEWhORTty^AR#B2x*Ay1raN zuNr@CHMR;IWqsSB$2rC+j=Ul^3^|xJ5X)Q2aE^Kt%Qmey)7{9QKmEHysl@~82*+b< zl@QP;DwbI~w((7@E;OPVpiG_`2vy@I&CIY{06bJfr$wK~{7#a}l*IZyj}PoYbGUTL z%}$a3ko>7%vhl|^9 zR765*A5GdIvd6=l-_c+bNAnfVEx0k|VTXF4WUk678yWi=Lt(Ju;*UcsAZU@qtZx(> zFDU&QP<(xYm)$wYT;TDK7WI$hfOt_|)a|R#a)$da))PpH-b}16OCP!4^lKttP-M0y z54Hf{>%k?bICH`-i-~$tYSQe>!D#pn-GX@8;;S(>8_I`9Ue;VDxwjH2{TJ4Od^`sG z3O-E>E7LIx9whjz^hlQfDy3N{`ab*U$n9;vLnBu_{!4zT0{@uM=klN0;7Xyk`>zG< zqXGA~ss?vxdz;3lz5Qvta}ql5TslU~XaAya?;x16M2dRuFeL(M@oxPJGsv&Ktaa&) zZVE_!lNPwJOoL4egRmSbC>lX6(+feack3p-e%?vvd3K`eq&`3LEmPO|W+LA8Jq{K% z1CYCWS!{*Nz><9Wjs$ciUA!~x3Zx7D9|n3BGHky!KEp45lzAJ*2bRpn9gbfQ?&N~1 zatcTe!16DHxF*MO%`+Zf^qrv(qS-go#h-1Y$V*KObzY)oa+iN&&Y$XQ=uS-uri(#$(LU71K6X_Glokx+S10n;v*sUL!K(y45XH z)2N+&{H9fLnPb_Mli9~nCfI|!ZZJTXhj6L+tC~s|`=p4&K&Ga?AJx8}T0<1mdSA|n zB2my=bRe0?F)u<;C~aT$pa_h7WZa>3@C986pr-%qv)86c#HC8mogfG@UtwGO{oXET zCs=*osT7gaPJG}Jkg-sgd*?4cz+Z6}ko%%7t+avKnfw_rlb~(v^xonr`?Z3cvPSmE z^j}`mt`4S2bibKafN(&9=6Uv<0?aRd3r9c8mgWuhiRh$6RGP6v--F(JDzq|X_~d#! zixFrc{Nix+UVpu>K8*K!5$RFq(!BopQXi{?Dqr_u*n0=xLhj~!$yv^^x24CV?TddJUv>747e@?)-*~{ z?V&t4B;QR$-XRZWwhtOrTpH}2wMOsKv-#p1l@0z7=`cDqfjuoG=v5`ep$&z%B1d#SA+!XgKMQq|x}tWG`-fR_z(n&twN zW5W~BhksR1GNa|los^E+Wo|0JyVtUV_M0_*h2V!3H1JB~=E%#`w}JTPC9Gc}`muXY z*;;A{@nsL+4h-`4pawwQX{9^Z2OsWeX!dDni;ZCE@l%_Hon`q`t#{eQ2}w=KC8fah z`NVR&WP{-rFGH!m<9&moqTB%gBCm-L+92PHjB2bQ8}lDHjh#axS6yCME9|k2Vt#vv zc)gV#=)qWL-xKT=6;>lMu4MN$!n|61jW~YEqVoMlzo_z==$v@X+!O3X;VtWbS3hFXZD!`68(y?go@$WS;#b8ICwT_c4>+Qh%S7 zRu4*_5iz^J8Osy*QZ7LQC}fD4;3qGG>pj0e+=Y;O`6z2a8dg*lN>HM0%600uNW=8! z=*n2dbUF@GV^20ip&*%&1nXPP;9R10j|mF#a(K^GT5ae75cOzoZ*MG8hoYlrfXl5% z5wZ5kl9`aJptG&?E0s_fB+}4xURIlSa2b8SWESUwm?41IhpG{Ik6C#*{Ebh)*DO;s z$c#Wz4|#y}gBG;Kpj#d3P=h2A^{NYDso)aXd!O` z{vc-TRl!Qik$^(H^cBA84)AkxyU+I1NBrrZh;kOq`-qZgXphlGVj$8Q;|R!aVHJp- zxU&WM{jUc(0qJq9>w1%Qk3GVe$^RWvDb84n)*dC8`v)4GqJkf-JmIw)D2!{<)7O%E zVT}6`t!HFD_F9%-p^t`0p*d%i7J0ygYUrhd3H8x^AopC)W7G-KpzqpjH+u0|%ZfZZ z8@%s=fYm+Bquz%1oNJqJujGv=n`=>QZE_eveV9!%KMaxkeEX$zP_==31Nn2g3Hj8w z(Gcn*5lHa8zLpfo-hpnrmo`#>Ul}x}@MP)Cz$G&tv}#2#;Tx|tBpIAXI>A0+sWJET z#SHKE)owHGl#bacU$ZR12A0^$5?dth+@i-X{*r&}E=@y_ydVqX zyM!kEwF2W?IM<^xlb`u?qyhMcl0m}uO9SK^afhE3q6LWR^qY&dlUb|eI&y}Tgj61( zPt7X1Qy@-hyG{eYNF3nwe?J73#h}c7HqY#&BrNGLe&>mWDrIYG=uW8P%3B}NBqn># zke4VW6gJ`F#f2RNb8Mh0jccb9^i$2lL^aL|_fitylWhC(h>p{!!j+B<9~HQ znlt}#zT3!yxa18)w+v`%<#w?$g&%L4=Lg&czXKRpNi<-aNs62NBDdXK7R*ozBc#6_ zg62KD%sjaekG~3Z`uzL*U-^jEDR@60oga{$s!q%eXH+RI+=RvqxMTohS~T!a74vGq z(sK7uem8R9iqm$m-Bxt$7d}ZLUinO%Y3)|Luox02kUx$i4SVuwdUZph^>vjX)28O8+rJv{#(GLu-nAuiOFVV0XG;q9<|W~qFQ z<*>z@<($L7;M(o=vPQWRnzOwC&H;C>21Z-5z8}|s`DIEkgaLriuCk~UT=f-W9W@p{ z046p};2q3B!pI)smpvgD@#yBq!biGSKvX*cBQl&~@n|2i9jCeenV|MJhx9xj$ zax6cOU=}SbUgLfw`{uH4W!}-|&Ogo>9T})SB2n1)^_-A1FiDm`mPAdd@I})}t-&a4 zbCn{1lJU)TIc8lbZ+FmsvK$}wAE)}>o;OnJU1ES?k{)m@L?*t$!R8|ucwT-7-C9X& zr2?od{3$Bagp{H01;lTs>T^8c4T+#F6w0%F5wKr*u-^eM*ZZF}a{% zc64k&tt}s4JTQ$_9Sum-xBRod?+J)+73XSTnnK?@WWPVM95#CSB8!X z$40=;bRyMgQRD9cP|splZueb?OD=DA3^?NP8_v4ZjFp#g_m1jn9QoUa(T)~8Z2RaRUJHGnX`jUmvXmIs zsxaE@;qsN~d5JIU1zfU`6}1+YKN~j0s+dOqTkXFXfO6moDKsCS^ zp^t5N6%>tDqe-Aq9UYTM7CWTEdroB87xMhW zIfbQYYzP(iw)j#G)mJl*9iu(tA|KSq0NzQks^2lwq>ztf-R)#E`gAqDCNJHO0bS^z zG*%vyTr3KXb;6}lQ=v&#PbUeBS5Fyb?_JUhjCSO0?(>N#Gpn_^Ry2hp&(w{tfeYJ8 zBixxp?_N0VE1%-PYE1ouFaHJH7+48tw{d>5F8k+KiMkI#ovyX_DI)%l(Z(B3sxQm-eZWAdD6XrJXoJIy}_M>{4#F5d}T?w7fih zcmO?&Z^Fla@{S1J6(Rmb00}qlk@w5W-cVVxa6=aaJ5Yed1GRjqcZ*^a3*5vp9_H@a zL^`+-@PMGrPw_adYgas>R>&RK-HW%Kt`Ysub=71`M9pEArjFlk_ZAipcI#$f$7SH* zs0qc!m7)vI0VF_0L?VE}|HKkSy>-*WEAP=iA5?GpG&2qdG041>i&p}HCi|fcirhQn z#H4O)pi>7hC;Vg*;keZ0U@HQ;PVz(Efd4lRH*kguYb-J8%Bt zf@AnS+GD~fL$qe7ishqm6c6zLD;%BpS=2tkLsV@|_UWzCQWA>7m(HD$g2872m}*`J zcd@b(NiMUD8jl$|3T$CY%3_=8N~EXZTfH(eQ2gJ6rrqd<_y@*&Cg@1G|Get8Uih+6bXw>gK7r(knCO$z z0hX1^YLFT=p~^_Nn?R?P@#NG~<9C79QVge+_JturSX>&|r;0HuM!0rU2u1<`2icH4 zep4p8zE~TswvR&F1+J&?p8`+I@`1dFwRwVVTs*x!(hZ3d^F`?ww>{mY73Qg3SbOhA z(F=5zWaVz+YOht_dC_J+Ti&BflH%7lKczQ>FRNO-h*-|Ut*G>8^To)_HWB-5=)PAG z|CX6&B>%t#hGAr2@wT8J{l7b_dBZ0i<^@H8KgEN2mDt#J@;#qT1yvfB1}t=fdEKl@ z<7TeCnF{yG=l>Fu(!p$>VuTizN$ttdY*#tI4^jGC!7u}qtVj5G1Ti%T%DYc^nq!5c zi(!*D#ipbL3`7mu%N?FL!3J>8A>Hcqv}IwN{2}hFddE!5JIP_a}(Voq=YQ zF%6$@2A4iM;5c>C$2wYbW(_nI{7ybmwa7wR5IxFyEjRbg;bvBEFB_QokN9=YGl#O% zRL20C#$UstM@qI+ak!zLyRf{Q-v5e5s(}ww^qgnBCcjqvbiDr?sF22A6b)*Odq-tW z%%}Atx>E+yWLLzWRNW6;*M1Q?KguQg3!1!MeR1Nx0tHw!I3L3;8plr_eHS6$+x%Rv zmd?U2qr5=Szo&Kae{Wgn-#D=X*I90Sq9)i^@i3DO`w2R#v49eLSMi+oWG( z(BYCVjFNZ;xvUbA@)!jFS#WC7L~-t@b`O+k%@4o64Y{0_*Ii$V|T= zT$FA&$K$ATl^DAy?fNF$KhQH_PcvL%PTbLv*8}SP`h8-IAS`P|Ewj6pQf2M5Nv7;S z+mm#~4k&Db7T;UEiTG{<=PTPAot-?~LNekdIRkfL53`mRbYAOBjmaNEMFn_2Eix%d zsxWnd%;2(E9;h9~FxI`Yu#Ne^aYAkLhP`G^mzDPLkP8NfUjr>OWpbO3nqi^1@RL0V zv`~SBZS0baLJiHI63QIJ7u31$;qy`$D;1r15j&s?ri@B)mdDISWyAqXYeg5naCX%X zI~=kVbv5-rlwZsw-3@Ym*r$J4w{Mbbtj?QVMta+Jfz(Cw5%`yu*NvKmm$J+le`kMn zZKrLypwcp6YbN4>RO>1cm4oR0d|$P?T2GHi4{c8HsB-vlE_2 za7NMJgFh;nCk~?7e(^D{es!^H(gQFE^1B9LqB}OzR!KfXZ?Ub!$pMzpQhu(7ilV#JI8724(kVH59`+4ru+#$MzL4d@_KcQEd%F2uK7(Wg& z1(0MUzuuj@QEn6fXlZGq3i9G;EYq@AM*d17j-F0@f`>oWBpI+XKuxD?$OyuL{6 zHLreopo%X`C1yu)PU9G%JLiv45H2nf;MEsmYUGPwj{-ZjJ!iA)NclY}1TntX;#scO zr2Xjh>8EEd-i>#{l9K%&6@KH9#_OM=kH`L^LI(64o`qzWi);^WQEEGoj}Dg+u%>9YG$<>Q*n(AI(Yxlh1T4@?!w z1RrpL|H?WuKKIpq$lZL*B_Yp&pn@@8_O%~CMrEd68MZj#w66P7nwjKF^j;gQmTl z&))RUHSRi4-6TSe*CHr+CL}tbx`BJT{duUzJj03A&AYpcGoX*Rjy;Y|DoW= zvR7$({o`35cgU~EbWphK@BqybNbHr@{OQE!!F=T93k|SmVVWK2Z60dmvK5R9t|J2I z7g)RK$f#g!OT35siPru+!PQr7LRP|OGYx+)aadKaY{n%AAUV!^<}X`Ck^UCOP#Z&f zhg;<6S!ee->L$(l;6`RMqdZ0`WWV-MQUkk2S`Y zwf5T2ob&grD4mmBi=t$fUMk-LYl!sNS| zl2Wea2kPoMGGqQaIlk1R63*IOr$w{kXSkUps6-zXIU>$P< zXLh8E($r)V>Hw0)*P}C#Kn?h%Kr#MD8^|_E($TwUT>VFe<(~2Gqg`?ef5z#-yv?`f zp6%U>jF^wp3{J_h$F0n~zfH@zm(8z!-Z91HV#d!YVU8`E`p>jIlD8Y>D%FFyZT3sm znJVXlHLOOSEtlu+iWX+O=TFFuoQC;vuKUIZSza2JsgBq2`%gXa$BQN{E&au7y|}!m zM{Hy%C*;@qwNhvX?A-8V8|<4GwfYAP#x^zj-x`-g7R%n_qQmo0D~lhe5%W~4!IXoi#exyN z^c-6M?8zhq87|_TyqC1d0EQvnu+Mtvz>a)32i7P3RfFJ?ZkIr}%R!0F$rMr`bAyINKck*y+Iz>FZ?mok?;<|6UFFg*ba&@O0W^QU2Si`&_r>WmG+q@wDHL39X!xy=0qD5z zH((IBT^F2N59Wdf$E7wfwNss5p=Pz4Fxkh)K5sY~QO-QbPb z-!h~26zyA!UIIBxrx(3p@!m$|D*kLtH!h*=N*5MO72|i^)G{E_d2?k(!Si`X%*#$2 zs0~{sc6>s-LIlNef)^U7P{^a9J9S{LCimg%?k>U4IjwDh|xen+KdB`&5PXU5Pe zaV0AM1c?*D%dNZ#kTzO*+K+?Y(GMMGc`VSR>rZoF@^2;7C>ny(=XX8Q07Sq?us(&_ zBt+Oa9wb;VzoT@o&S$61&b7+>HAJrhYlH(%&GIt=AiLdJ=R(k9fWJOzkVWiOOCvr;??b8qdd+ zDa|wLQA=SZG5&W_h9Ol+t2q&LAEaW8N-yYvE`nNi@y7y5gSRSFyf3k#%n0d8ohu z=|{VL>QuKLOb!BoSf8Y8>*M7QyS&ADBeQ^%XAeJ8F5R5H(D3WLGs~&#OQq)NWDuyI zO1KGSur`ZUQ8Kgo^*KD5x|hTl&39mKXKtBZv3N@KNb~xSM5l#8zfg-LE|uE14|8`o zS{oEbt5`1w&eBE0R~Xvd8-~)0br(gZvD(i+;Tm zQReXfj|Gqc=R!8f23>M})W`YjjPc$FgVP(?)8HFH6NKD^BIG@3exGix11t;;oHLuB#-rf257C^An|D>UMk%e zTH*^?w4ffTHikh#zazH-V;92-$L4Dkhk_{a{6XJcZ;zjEGA?^RE+&w z_!1t}sO0W$Nn|-p{P7v;KsVoQ_{V?li=cAxAMV0^mkhcYxFNbwy_U3vl@>-OAGTJa zLDVCn7Y3E!c4pidxEyT9>dIV0O8rbbMq6?#c=gi`+<5Has6Mo>uJ}o59Y|NbW<(QQ zfyh7Jh)uMC<1aH>I$4kd=17Hc{@mH@{Y;q?;8t$nIl;+%6~0m;!&X8|EafkiwQ4&> zkC|5)9vj!WXsUHsa|;lKSikGO0HJ&NZmw&etT`x>uT02ozQ=+f8T4bRG`-nvxq(sF zEP6sNvI9^y2p;?%x+0v~dE}%{#>R#ypzPxRdbH0MpKv>#i9yk?%G)XArRh z;{B5;YHqLjg3SN>SBKpP^Sj zvG8_>4jrI)N*BV^NW4lXE+mO22hP68V%^k}eJ1l^EcKJu{mgbs1oQmLsbn$!uetiP zk5sO>0NSo6Tlo@K3bu>XXbj02O+J77xZDdax;m-d%Tdu)%jCbIrKALvrcf4|IS0(M z=kXdFBTwrF@y=YMF4p99Y^AJ~ECE#5vC}#BN6rPA%rG~<4%<{CChxOW{H!LuPQ1kB zcA6X~%dzZZf8B-cngNEw9@X@{=s%}6#hfqt7>q%>wAQC)S|%gSp;wu;^K{T&uMt zdrkwo94OFW%;YyWl07vfCS~aQ^Y~eAcNO(XJSWi_zzG6Ktw2fK9`1p=%Bib zN(!JfYV6CPH3;mn=LyLE5gaQb3NbWdee*i~0W6cF#{f+(SIteH#{08JLjW}US4|Uz z`9O(}kZ=W5!LB1*C1=myd1in|cvv%X`5x2v`%a+;vy5gMfm_=gxUv#v|Kcd9{X7T2 z-oGzp;@D2g#LXHHU5eg*eVcl-;4Q zZwf%_gqE|)eC4_Ef^XmQaXbG%wRhhBDVU@a+rq1pIneN&T8`0Tpj_ zTR&$bLM`*>qfXreXD!B$$eqfhvTy2jrDJlZr5_9x5c~ykd36v=C!jlx2XcO?Z8vD6!TIIS)B{m2Xoq zs8l(#<5~%o-!aJljQz@ykRrKwhC*2@?@Nf0S*?J|{ogq}J@NA`%XDBlcO74)WYn|M zFWo+mg8*wKJSpeXojWb`qZ0l@3(e>rIiAAW?wI8BXr>95HQ%rF{2Q_NKWe8)v z1s0c{Kykc-QJ+T>d^*F@=qm>3oNRW73}lk5OI0Xtn`&J30*{wd$@oV3{hCO2=$Nhu z1G96da|^7-kOvz-+eu#t{E$Q@!6 zNwa1+O<;#e31tE(S0Mv1I2!g&nncWWpS*iv?9DQ`edtT|i#v=*Q=1*`qtieGq%GrV zfe1M?mBul;l)XuW%j)@_h#ULpwS6V!(v0A6_cJDz33bubYd%c6%*iQyl89@*rB~&l zQ@*R7i&rC(67iUR$?j~9lBQU+$f{asN?V733*K8 zTmNVpd|I0ByV3wTyqt)??Mm@CReXe^4CtF8zdf{!5_t5TqQ!?cWDOq%#RSeVNPPi& z8GwUbeB&l*;n#R#gthVG^$`*DIH%l#GE}r>f9$<9(x;QPqz0fN&aCnvpJFx_Xi6W@0yEuyMPm1@G}W06Oir1e@-RA{j!awZLhe_4LDTT9Mu ziu`XeS8YqzrVUJ`S2|YityNN@8DBb831jQeL6y0`{Lm!hAxC0bHbLPrsl*ePH#!i| zP^LMiEl+$sG$~t-Q=-Rl>nG8LE#vXCvnz==5oQ#BxPG)SyLxmCr>IJ46dQw@{eNE{ z*+eM!o&GY~AJKKXQ{sF{M1Q%gEWY+F#le~HTI9a*V6jwqSKitsV&{#hG%0Fd$hX0_ z@l3y)aw$MTC;sW{yFqsCYHi*BF|9_f!+=Sp4HkWS(Qgk%cT}NM|AmA+v$CBE3XE8B zlBs&kBSamSoDSW}JQlC4C8Z5TM%?BF!8eWcUpGlUw$-R?3|xsoV$&^Oy5;C+=oxBS z^OyebpoK&+Ye|FGN;A~?Sj)&B$OE{(%8dM0+9InVVaY8R{u!5>B< zPu~R`shN?XE*a78z`z>1UPdHhg9LQD0#frAUG?ju?2R)=J_d=K`W!X%uHCH;WG+U! zogUWBa!Zt+`JV|dgd4jejHnoC2|TaEDZ^SuwtegT_sl{bZ(Fm@iIYy3Qk%>J{WUz1;0W)@@R$3DK(s1`Dfb>R3LZ$ z7_XxtRV^Nxc^U}bj0JQ3&i{FILz05gJdBT6p2eJ%iRigYG$A#*s*oi7s^mJ8=%ib$ z>%6z3IY}y%t+K^fzf&B=I0H9l*0nzAF_1${F37d~W3UF82jIKm$u@Icq+@GgS>LMZ z$>{IBD2V38+;G~8$g}nHC7*Wzgk!&*#bO9i^GoHK(+r2T^W^i^iu!y^_h$C*`0@`z z!MsG!tTv=tmE#3;aIMdpwE6d+ZsVvPR9`+qVI#Lxr6l8-0_*FT;0(zakVdH0^EW)~ z$AeAuDNDzD7Od*RWAx*(qS@7uakeY_KXymxJGj6wiq?>+m$q zh3JEKq2-hcYMm^uX0KjR(esc|%PQ%hK68AElKQVqU2M|CO1nJxJ837k6-TA3JLZKk zu4JXw2MwhD?9*k<+F`g_Zg@FtP5rspEbMqv{zv2qr2V?TfP~yL7bw0(V=xV2O?_@? z<*uD0)_mT@R%5_33h7gIE^>;AC?acyb;FL$!cA)(b?1%)2&4-~+cl9L-2C&fI;C|f zC3z_SAIT4#exr#`F#PzJ!GLx>Na-m>CZgi);dCPbDmuXG@Ae9ZY4BTql%Za6(7` z^PJ~RkkP(C`Nl56qd>j{!j%N?RNu%f>t5E=@zf9rg;#W*T)3~(XAy3^@0V-6UHG^d z-m*wj{@Oe5gF2{^K z6L;iWuE&VjS5Wh_#VBsLa3SCx_$%U?RW;f(?8NM9b>t+aTz6aO%WGTT-l81?-k{pt z?dK2N92xiXEN@(LiI9Nh5t7ioqT+eJN~;I!`P%wYbG^_kP`IF3=?-7qAqz8T|JPUW&Dt42?6PXQd^9FNjss6C;>iMAa-&?AK?{s%!!q zLM){IDu~@NK@-xoDJV@}#s+^2vP&W@NR=uY97LLV4|hh6g{&t3LZ1d2Lz#37WS%Ad zqO9mPpe}uG%iCjSnYB{H;;DsRoV z8A+n4G$C%<{c#FCI%_)f3iUN$K?`Gi*T#2f!`E+(_Fr%fW~oD@QOj69(FZx5P9 z%uq(rl=%(6X6%g;jSf9P>j#f7wSn4j$pzE2p6IveqolCM=eNUoC$4vl3;J4~#P|B? zoasl3RJs2#(8euhUowULA}TY+3U_|d>=%9S939O-4kd9ax^z-JAl?d}d7ZQ`7{og< zQ_vmCVlZod?fTn+ohNir676TbA4%T-xv=Yr_VCISB9 zS5|Sn<6(jpNbY)rJN#d4&d*@FwUwy*CLhRpm3F&0PG8~_`X8=E8YopB|Go`bdQNl+Z7f7Ui zH@wi?kN=5$f7W!bQO&5*Xzj1lz0Y~Hba5g zbc`NJRysrVwL+;F4y{6k>5feNxz8h-;T+jKQLc;Ewm`<*bI zP>K>BV6<;f`pXpMhRq-$^2lE5?|) zj?mkb=s(7B82;CpF2sBY%TU7;He2gShZP&En$smVO$Mz@%j^9yeJRMt?~3(kiu9w< zRZ0+CfvgLamn&_n(EeIv=cxTOar|e2vz%^92)3LHB&v?_b0LEomSU9>Xso z5vO!oba}@iU-WxXoUfUJb71dOyX*Xjl3AU8!bJfCpwc^sEVm{YyW->|hEL-q8`ANn#)cfLSPPa z46<(>u!N0=rmbRotTDjc>`M+GjT5kirx_Rc2Nq^M%N$<|3M-PiIY4dR9CH~vb7YPh znQI&6hdXO8m;a|DSrsXqpAu@+q=ThQP4D$~H2=$x&ZoOtsE~2rJa;gAPF>fATJSl_ zpwCakB^i7Aa!dzDH@ea0i~38s^o!`{@+MaQY3COf$Eg;V$)G#vQWQKg6}c>V5Xr?6 z^~9Unv?R6|)s4+E-{&l8{joSt3;1>&r}Pq2G%5}dd1WR%MSKd)L)>hRygXW=1DAY^ zlj1>H0NJW)T9M(u$(II3iYe0KZ^N1f9qo}hQ~bd&pdDX>*rS<5eAEh%UXq|~NBVLfl&wS;PIG*aW9ACr1VTjIL-k{H_8 zd@5fWP|4xd_+&rSV;d{gg$xVYGHifa zM}2{2kQ5d>HM_~w$D8}>^1XK0tch|3 zGU?l=7icJXAimo71QLzojgwvYk75$C(!QT)=x#qr)BzT^Jbxxj|A+Xk&mvs)?d(KA zXQ_~n_gZz6I}60#g`9vUeD=1c>F~cwu_z3cyF@6UvHh8b+i#uve{q!F+`vo>d)ujH zIX;?@;NMdQ)Al}N+Dx26j-adezh;FNO3<{}HCm(sf?E=ib7vpkzpKl1|C{-$h_Vt6 zaG-o6+c84G-Y$6KI-&>SFxupk2DZ?Y*ss|_!e1#)#Hw#N2ILl!ZuS7_?| zR=GN;qui2=B%lxQh&gbxoz37m59rFkNT;Za?d<6;g@mphq25TdQg8lTg^=z2S*4mE z4fQeQj{N+i;+uUq@ykw=n`0_cx6;Qme^@Q7oamX2h8-qZck56Ch5D&cSarg9`zXGh z_fVDok2OH&Y*LuKMyM;!3U-eL5D-@};^9ol6q(2=ePui;p2hyzTPlU5%+JfaP`iB5TFsGn5AfGVQ z@|1}B?+VeIR)KjKwxa|F{m(AdfL98+f)@2R6Bb*+rwch|%8g=1u`O!YsP-PeL+VW; zHmRU!&@PP?B;urIh4L)uhPzQ2W8y`1&B$AiykfrAvv)3O)$##`F-%S|!CXQakQ-CX z`)tW5FF^9?L(56Tm!lolQ?*by=8CD~LkWgtt%(2n)vp*&n}w7D5x-ZPeV|G-7GK_y zJ~2+cRX&MD=g9RO%~#tXt}eU})r(Zx32Sak&QX4f+0Pl_{V%tsaJ8Zk(w_0{w;TAr zU(c_5A!aDa8@!KBeB;TlGwxN=7q^Cwt0Wr=>}B^!kvcXXKC9c{7nDvLPNza81Y<3` z`2Pke5_OV0KE|Qi+(=t8uq};h@qWpvmMalg=TZ<2C*7qY5-c1i3e78Ivh_b6GgFv6n~<-q=e* z=6th_>k2l)>!IJ>8`C!XSo_p|`kPPmJLpe|Az&c%`DnUAO`EmI-RM~&&?S4U_X)rH z5Z4{kA*#Kgu^xQ&T=4CGpAh7fUEOFxwM7~DP+xV(O~A^xn2XJ_9h)-D5IbQuzRBZ( zh<}$xt)Y}y=`s=N4;T!g6YAGagBzKQ;Qu&G>SBw?E2K=k=kyfW>Jk}j zEr+dPkGJro#6+NXL3UmqiG-CSQO%%p0;J>~_ak)om-=-+Epc^`?Z zvrNcbYGR=hBlDrx(MI-=u*#|!1)H5yAiCF)fI{$B5rdM zVNg(1RG@y?k#vbWZ$DvaZgKt1=)2kRHqx|k1$)t z1YrqpI_ED??AugTq}+Sj;D&1v0FkpkqF{KA@Xu$7H0AwC&cAoU^3c)oGCrT}4YO7_W32Ow2_nkL}W(&f=>un;1Q~Ft~cBLs2Y)ldl5PUGB_nF&RgHUvh&u{x*#C z7A&N4y4~OYwyBSO(bQ++Tx_B&A%SJbWz^_=zn(Z9!!22*f1@WK5_VGz z%OW?dmVa1&+|4 z@R0sJDJ%-hD3kd`1sg2E7`{Egk3J-HNvs1~=G&e=@0qD+i8_8C=ci9{>oI?>Hxtbq zA%C|gNFk?VpoO8UC8nc1D|7o2veipD5y^&rc)=Y53=eaGU)WG}xY%d4eh;#5s(s6P z6N7QvU&Ofcr_KgAVvXeAr}<65jrrgzqOFqqJn)|;p$kDrB<#(b>NXV zY%sEeQdv6mj_qkr-af^=cK#mpa$3++z_h1lqrr;WUT5) zoNih1tF!uyQTur^iz)$}H+2n-vv{j!*EH<$D%C8xrGbXVkbS&n+;G(~IpQ6Gr{Sa~ zaZ=QyHK2H}^?+x`k@|<%&qo*R>FVkAbyR8OkonPk@G!&u$^(|APXQLY?YW7xUziVl z+oWOs))l4WylJ5lRiVjCB=KBp+4Xib?7JzME381{jsDlp2!E-%@t1;&MKtukI&r zb@YnmSHfE2lNb0*3$qDg++XTk80eiM@vmly_o$7_uN-3WEe3;Z4w!AHh1GI>sUKxR z<94=cU7eD~2<$WnxW1JWonaA(Xf9$I>i4JUnDZY(Ls-fLMoQ3C8^1G?Pl!mSk1-$a z4=oIh^^Q_Vhnnc)wqKhtLgY;SLb(xZw^!vDO}`p)$B?P;xTNbA*B&PB3-NfYGvIih zSBGrt1cqwjHQ5+H-)kbWsnhc5Vdy1u0RL0ZK(EI#4T_nV0196H-c^5Dvfhz&mecJWyJ`VUN-p9Owf;)c4 zF96GO8T#^1_#9QG=;73N;|d={xIXsiV9$R!-|6IjZSyk7ISbp}W-9JuU*~`PLrvQA z*AZrEa?-#C9&4bZzSFVt%Qvu&OK+*ehnF%P=AQFgcRHC%pV(cYvIZJw{gJrV2zbP9PEcqa7dj-DF79i4E07)nVK2L6tS5{8i8RlD& zTXj3@L`qBm`-w?IVXGj;)FE&`1UQUww%kCl*|Ka7p00nxWpx=2a?B!h%)1tKW(xau z%xPnt)Ar(V1A)iH{ip7buk9-fUH>h5Ey@+om#$R=xk`(oUB@e^))lfiJANS8*-ie~FKq0uS!N%)T z;%&+7+p>hDZX-aAB=Ls|(_Dcvd5g+QcicG;&Sv1xhh1gAP2?xP%@BsBpl{Avntp$~ zS+7v^yoKnqF*H4}t@_!brKuPzfm)CFH=p|XR}Q5Ye=+?0AJ~tUmGq7t2(Po{Qd<(R zk6WZk*#sJNsXUuq5%q+&9&V-|eZn(ImF~YbM0r|JC9;-d;B$m-xE zF#Xo;(c%=!XE|Xspkn(8^lmxrc2gCoDDdEqDB%p7Iz<2IS9n;`ccRy=izBwM zu)Ew^5zaG;S|oVZd*HU@#ES@WzTztL>P+GQ!JLN^-*r__zjeuGuczS`8q~Z2lkPF( zwvLPPRhlj3q-;`X$e>(iJgUSb$u_d`5D=Z;z1@4k1w=kHUn;o`Bb;{_(?9M`EDeF#Z;exe-cN9b$3pKoT7IZ}WIff_VcyLFx2BA1YDKNM zfYzS>em`C^5k(A(TQasZ=hmy}UWyJ;%zbI60{o+ep724IeKmtppm`o0VJo{sxFZ4I zt1e4v!%fvcyBO9KCFpoGxtN9+FKo=;wg{u0B(+|-%%0#k?{B#Jp`2?rBWZjD-6HEe`7|b3k7lGm(F?U%4y1$2 zDGEo;Jk#}nM2Ol?&*BY64M1#tr6Why#QkO21jYLO7D-6P@E;7k*)Lv_@dn&Q)fuuP zI<JrZNMhF3XzAkAbKhoTg43TW4-C`6jYH;gRJH0@ztp(->y?ce2I{|A;mGOaQJ`2{eb}9x$z_y2?JQSk6jyjBzvRf$rMw zrnt-*UmN=erNJ+bB_Xa64zE6u{Qa;assBNXJN!OsA`*u}Xc^aM_bP@z#b#TfN@>;F98lnIaP6FAOm^@+mj;lv^_5B&rRh^rK= znLIxI9Gm>!lv>v3BjVrodaEG6qJk~=b?t|f(FWYD9N>iFm|^8c|bk5WSmc0)Th7 z67@@@KF+k(oF64v;_9uHvgrIP2J+MmqNiF}Dpm=1t|)y+gw2*GyIblT=NW1}ggOZg zjc_ZW7o{T6-%2pf2?Ta(asH0vfFPDtB2{Ww%^olB4ct5>BP+H9Ruv&*?$~jf{1}xk z?w*9Q?a%n1l7c5j&)|a698Wf=zUu)#kgeX%9nYe!8}n?mwSflm2&wR1!^3(BregDa`P(vE~)Du z-dZ7uH@^>4Kj9JV(i}+hbFL9Y?`Tncb_6hXi&g`Kpo1sQzGmC)_ejS_5(U;AOl{eO z%x$FOZL-w+o^444BZ)g>N+~W8FA(%=#rjM;uAS0-7isD`@#Hy1acoN7@Cc-MeF?iN zVjDNH!HgTMJ*)!EE_YV~v@zST701VGB92n8-fnt3$SgWbWLv)CcU&^7r^1WV`VY}s zO>&%?cxN5cuH@1od~6zqAg+vDCglw{__BqRpTy|p)C%)Qc(?L^KHVvEE7rMWH2vKV zv4xDe$KZKqlTP%hKlAC3Z&^YU-@d$NZ6^+tIM-xUy0B>?A;-xR(M@=4!Nj;w2NwSNC`o zDj0fO`D(4VUO!YjBB=UjQ{TU?)=6nGN(zPnt|1n~jWcQjp-%NDgjraLhX+Ue=&XFu zxw6A1^|R(&r5?o>xxAxLx3ns(!zJv~GWR|@?0(aAVY*)(K_`SwkV-Y-A+H|!vtPxy zph%Skp?of`q2Ki|<8)OoywgUdPs8A;VkcZj8~!(Df65}HQeRp^;U-!4Bh-$C``I_h z7C$%1#>EDoSFVh+R(mUwCnB(f0^e2g>lSA}F_Rp3V3s6dBfSJ9L6(I*<;=Z=c6#1# zKQ+#(!^Rqs@ILrwq!Y53RU6;^TdRi*H^=O&HBYt9!>s*{=1^;ZGw^7H#fSV4#9`|- zsYu&L&7kBf^`Rl-(lNOGTdV3`y83>){0&9F3`mdhH(%93Bk^MDzg(mw?E+Yr@3COS z)0B438o!Ub4XX@L-rb%8(@xDQ-*Vif{+kZ@21=pngl{5tSVbY?LQ!~~droKR*qc^W zj+<57Ua1oMX)tDetOnCJnHo5D^_g`^29+uk)5M1A zddO7U{MjJ1^>9){V*dC%JJQ%w#NlOAKTTzK;Ca_VkFkQwS5(4(ParU&OWFK46s~~h zAkxsgr<7HFsrJ8vbCAsH)pyFbDHqqEi|ef}^nDja$e_gfi{RS?&@Tgv^oWZitq>Z6 ze&6e`1y?xhi2;blb4R7u{VTkW5&t~kPNMG#o5S{Z1~DY~<7hwIg&1^ojxzNdJ2A_= zZ0Wp-K!qHeKkE9yx0GtXKIXff@U;AaNU0xJY&l*8Zk(fBTG8Ez_<%GiyFJW@{cKm* zlWkr>MAv+lfo-Efc|s&a?zLOA&1PjNp@fJ1$>;LN2r9Bti+nr*Ct*=On> zA0a#E&~3cU;E?J#?pHMon#K!g)`clgH?**~YXZn=cJJGhqFd;4@_?w$3VD~_I3Yv# zi_PD%HsG67u)BK)7;$aW2y88n$Dk+QowEHa|~%!U5mJl zq!`aK`D=U+9k@mza3=yc5^WqfC{M zps|>*Z|?l#SE=e9r*xkG-R2{RN73Q+_;IwZ4bXkqDc@^)CctDeZnWd@Gl1YFW#m(G z;e@NiA^0P1MPTy;cifh8w6w|`K`M*y!Wr1QI4hdqvYl^b4Cld zDp5Tgk6A8JmJ?Xd%wunymLD#Qk)A5K%%ix#^ z(@eYG=g|(ho8|RbJzATm!V+6s3sDQ3P+u;f&NFYru`&<$y1rX^UMLrq?mXwpGg9V6{*_vVIgRP%z^2>fG@84V% z@g<1xZh#83IA!^*Etp|pK>{r2-%MZK`JlOMUcyU(Z~WBUY#b}nEz%V?G?4v63t| z3PC~cCAhY+QOxnLYKQN+#w60df;+h#l$PRrUUkoo59 zswxJ>=o(RbM_~AscX&=nKSG+(_@oSCY`LZ$Q}pt?K*_tC-}rbDzFAHG0((D~sirlC zQ28z`Q&Onu?~=C7XBEe>^i287E~h_BsSuA{3F?;%PnVUFM#l;;l9AVQJA(ElQlub$ z{o9;`Jo=uk*$kG9UKrmn*>0yhLWlMIAWt=$RR*1?WA3ZF06`c1>=@Z0MU7by7MrTN z94Rjy7uTNK)#pm2k)hM}ve&_Q6Tb+r?=M@5bv+rzwC0O<3&%T`W`*T2tEm`UC)$e- z6pewf?Z^f*!IQ(Y#>yzula=a|NT>mVoV|ITILJ22&+U%{1_E{UtmiL4c`XwoWpCY} z=kj@v`|l*sUmIa<#f7wE=+PcGg;HW2e-{;39tX2MQRSj@BB_@ApgVdtxOlBFR z@9an*YlkAsGS#x+8PE&6#GEhhq0$FHt6sBS)A!{GK|mUikV#<^k8UYkh7oWD zr_`i2FMd}?mPP`M5pvLD9#Ka(UwF)WN_gvHC;k2vRSe9 z_V}(4%#(E`k2pRbvU5@3hHk4xNTUXV5J0Rqiv+_?A+{4rgzw<#PH>!#^!JBP&^ zC=h)o@hKk!K1oRO1)mhO#1naXP6a+Mu8-&^io3fquyr&%aqJeVFv0rl-r_{jy4n!U zc4FFQkpZ!7GtY>q#^~lse7g$XO0s`L6(-y0`ZMX0oN# zDHYKq;%Ol1m5_}aDve_4djFzoOxO(fa6u+`BdOF12RtI>p7LOC7Ni6JM`=!h;C~Z` z;Tjb!OgNY8J%|RQ(E1mmOt1^fUl9hsF=isPUb9Z4pgwAHSwUmtDnIU02?p`q0#=>ea# zTrq@SLHJ0LWKgYB`)#pcLsfNqkKkRU;J3&pPEA6({}zEO!MWdHM=w2Jd*3pey3%nY zeC{;pZf!yh2|qZ{@Z{Ll$wS)s4Xd3M#XBA>&J6YviApp2(mG*|&7oXTHE1E^>I7P@ z^(IAaRO&+N4yoX`Q`7yTMWFL>BK$SMc0nb0wY%Li;6WW;Z2nMuk!g5X4aj|XEzRo{ zq0xw5x(f+`C!i5)TgMgEm#1=pY5X!Wl&q}ofm>}~l`u7rSDu2}V}_WZ84p*CzmLcR z8OFh|nd0N=HW1AKQ8f9#c6m{UghEOANB_gkeD(OZnwrUS;{ul&2WczD)jy2!SeMs} zsMKPPa-tg=?2Asl&LD|XaxSm490F6VxLHa(na9U-lj~>N_#_kw+9E6ppc=7tX<7e2 z4~PT&$x57U`}CBWL*h50-n#Ms4gSCP_W#0dnJbkcWc44Nm$do4)a{o1Xv-IQRc#vD z(8BW>M zkYqg!X9lC$^+4&TY)L(a6v0F}bF8X$30ABGm=YF~Xe8G^+ya(xGovTC4vN{@hBi($ z@@AFWUAK!^tFJr)JB@XvAkFaAj9JOiodIi9YF{2q$Iu&|Z!2_z-!p9!m%@t>%V4V| zQ_!Zbe1R=4RuxQHAX7P)){S{si*r%DM}^k-E3Iv;D;5`TxJ`(aLuG-Xu+uBYzNN2) zSb3PR`yxyq1BxmRaV5o=v-M^J4q!7KOCn69+y%IEvuyL!V07SKJERA!B#levXpNW? zHvW#GS(%N2?)W(dLrL_I478!8IW+yBJ4`|NxGYKd?Q4hTZ-qzh9ZgWizQMOmeXYyNQG^aQ6Z8#b}Vvf z>T#@oCOS~j>fri4%OY*h#H=EsknNx^B7dqDcP7-dwdVKW+)kK1ZZCc_vBnPj5qfA= zwl%SbL?5c+*T2pn5ysvjTqp9zW>>lq0K4RHqe za~Mn!yS6Vym+43_kDObAXtBk|P(L@9HT7aqeaENFL4D#LUndo4B0X;*{ zaqcB6{jibmPfD?jl?$^7UnPP&ajK(P>+2-8#g=OO1QnjQYGUH|`Jt~)kmS1RH(`c6 ziM_s~a4eh)!Ke%r+56M#M9L{FKAs*S;Su1j``llc;Tkwm@}N>L;Y6`BBTnX75Rd3IfFb4`pu|)mF5HYbT*V@fHbg#a&ulTUw;J z2e(q(-K9{9JHg%E-HH}>cPkVR5}aJl8TXFyouA*|IriAeSZgQmo0U1A_vZ~j*Kjv> z*&yEZ7(-}l+9$)m#@l`O(!bh3^`WC1JL!%7qmPW^A(sGg-DrVhmC(3;yNUO=er;py znImG`u@U{+<^qF!oDWj8&vCy~i~X@xe^{F8raUKp50xb9=T&*j@N6-zo(eDysIPrj zQ4^9qrl?CU9}oblXbE{;KQCPPl}Bgk5&G(*CNCn+)|2m9^3dDK;j__p!O_OR}+52b}_V9%;ySQOTtPdl=J?v*!;WkV=l)0)xp3fhZwj3M~C_;5lA&<+{EJ|pEN zZX*PU!mPJ`#I`y}mD`pAMho+>I9D>Ae5Jwo;eB-4|t-C_Vv+ zAiqmBE~{>vio5FMId1ylP7ePBUsy&wDz8&j1c&IfmTLLfY*7HZ9#J{;i4FUd9&R~L zKj!F9K2!Qb=(-uo6x4^2c?9uen5(t_WrikzjD{``C*Nm#CKA?=KtMV=G%+kpSC0%B z)99Or#pRlzWlyr!BUDyPM!E&5BL-F<+R!cob;I}RZQ7KzW-(bj?*o1R0r0I zOsYl+it9qjp6yPZC&7Y1Qcyqlm#T+ow^xSY&A8w=sqqbSA}Kf+1jKT`(B&03YZB^jP-LDfUF(roNuoqS%;>H>Lkm?kN# zVVRHjH?8gSYVW!9B<3^D73*pL?E%}`Ki`vGR-FUBbyxUnYwZlL)wIkKbhDhHV=vN| z=@mqN;cKfMS6>Pfse5N`X)c)7-p?^1z4R|#`HB|*-TznlGlOMW-!~=8n*RM`D*D$q zMPNvmePPIK-8zOnRgeSv`XI5PGT`^$%ofu-PbPXX@5hHr!je=2mo+%$Rf!;Xi_>HHr(zI+}m%ISU@I7w`_`^|@5|M9ri>?o_o2JRaZ} zWYxasgr~B&2Dv@;tfjfBMz5pCe&SSLPQy20;>y5taD_)CWQ_YPacTcydxd9XrxH=n z=d94T)Dm7aqq;SjBf(oihV)Csc@pa&BELwNTIF?NsptPV9j&DfaqIancRY!71hS?C zHz=M9{stX6-K$=>gTDqik2hD~{HMaSzk26nbW^#e z@%yOy@iE>v9O8&u0rG+quo^#9$YB_}rv4O!Nv4rW#YH95}s)M6-3yX*O%KrQews_weua9<3g&c7oZ~*$F&Up z-&iZ(CI7fM&6YDg$CyWnAZL3Io-}D;)&818*4xF|Yo)0YF}*I@g|Q}p{-uZ6+PlV$ zp)KrR{ohJEa3f)tHVvGv;f!2=JEejJdiq>hGcjdbhBo%;s)!K(DR*) z8-FkTPvsKDTQx4;TA^9ANQ^GpEC*kDzt8$d-TzjwZVPD{meTEg6#TwYOnhRB84q1T zG5g;N>AAd&Lao5oefs~~RlGW^@&B#xZKlPge{<@&7I%5+R{~8-#zLGeGC5llr<6+pndu6T~&##mY)`z zHZ%d5HQbNYpXl89x{i>DYKl|in{s{i@Vmnc)nlyiV9C(n36k(=8mUE1_3$(;n^)$3 zpeniX;;dQU9nx!#44&@}B9FWM)y`ymt?h4gG6Cs66iIddMRZzh&6dZko=a9?dCqp~ zW$f6nY0Y&61i-#SaeYOSR99yNTf_t#oN#&@vPKy25DZkNb6b5Q7)fEIefnB7Yl@{r z6}QNA5%SUlRdY3Kob0nH2l1D33Pm<3=lr>}pfTTqcWhJka!nxJiNh~> z5KdUB8arvG51_`_LB!(iodep~d7_U}O=&qr8-cm501!!0GksPe5>sw%uUAbEQcM#} zQRP~ij;ynWlwEiVosg3D zP+zBA8Ibl_0ld;I{l@-kqw)2#Mv1Yv6iZwi66maG8W{-xB@&0w9o1dlwFfy6(0t0b z{IQI|K`>=xk^Z!vQ~DXnq0rB?^d&v=o)7m>No6?9Y$iH51;Ib^NzFFKiVhgF+M8na zO1!YcX%Ag%S6_sBH(X>pQTA^{SF|5&u4D4l%i(G03*3RZ#u?I~EM68L$eq5x1@ae; zxHb-b##QX-p6Lz`E+1SCR98EN-1V%`yy&HT!mW0rL5_z~SJ2!ww4g>?s&p+U+!^rk+m{yUzyojjhvTR=R?>4A$w z{rF`dp1+l4aQET`#p6Gaxw&p4yYZM{+1*I8p+jW2F{@3R;_Ks)>y6*cO|(seH4Yhi zkcrdXUg5&H+R4+}eNVJ*O&1wHHr;(!*KLwTbh?(I__m$qXqG;d3-loM6z5&)xk{SG ztmo0T04`K>+8A~6BJSD`bF!>Re&LqH`G@g|E$%{>Ya+@^nj)+F6{v8TLgvD z*f8Jtl7$9(pka@5d`x@XKm%2Xmjl-4<}(Sd($}bD4ibQ z^flm&aiO7G&uPS(stT#?f_LXcy$vHLKhC*vHL~k}Wld^c{_o`6>qYjNDv&K+H;a;6 z@DWo$6EA%^g8Ww98yVWe5<#qWF?_hdPJ4~D;QWPS%6_eQ!%-GOB+Ek|axd)ntgIr# zp+XfuL5H-puzo*mPoOV84GWkMCiXoaA1Mz@(3o_T8zxQpkA1rAIr{X!Lc8EFhWGN0 zKJA%X$pdSqchE2ou!sHGg)VCU>lE_zDDD3%pSw)NZ_?B=91!;qe1=_2-2B4YLiOE5?Lig0{ax-tabSZWVxKe_9{aZdCe=9}7iR$XrNjL5X;o^E{4#Ly@a zw}Y<>8l8JF^zC(Sdk8zb^M!Fm5y2B7R+U>&4Po55f2u{jY)$KAuU-b2nE4a>mUJgeQ!l3SUiiyM;RMbx?#{o$;s(Ja6+>1ra z^79slv?%ycaJo^PV{XQD++T^a8P+;Epd3lDiT4kWX%kedW4!Ucn$gw(H5%d)=3}VJKcr0YE@6sW z!U?#EB!ZsIb6#in4E>;;^qydOIm$`vsM?OzYq0dh5tUhq2^N>8Z~{9xL4DN?QV_4` z14pigVH@r3kf{0O$6JI`oL4C#4Hy+JX&WK5z%*rTH6Mf{Op9YgO|}VScwrp0#5iTq zeSI5O;>J!2^F^1C%uEb6@hI-_2$KmUDz9}{al>om+GhSz{-+h=wi~gb*|Z^M$=n_D zs_nmtPq$#o42(;~>a$}if4pFny3+a4z zjIS&+EL+=}W<9|imGXPZn*QCFkMfIM zApVNjFNc|FYS-aJrZATRc^Df>1$!tg$wzAh;KtmF!q3DqPtZd8ca^hRg~0Oau>4t3 z7?-AMO&hxRWs8>9MwWvzq4^XuyFz~ZFHttwZIIRLG8cG{LYC;YQ_zfKQ&vV`{&aJp zn31ZDf@-xU`6!=WtfTca+E_%8*-GQql0!Sia%k?1nseb09e0VOVTnB=tE0F9fS2x>Celf)JYf_CP4{3qsTV2vL_JcI?7mAYtrvG_rnWcQ6@)Z~Di2g1obny=x zhTBS65@E$5V9~YYra??G@7-MgV1I1T-Qy1K0Gw2{GlDZQ)Zw-ivA5jWbNyb9a%d*- zDsOltziLPuAKD9&%II3C99Yyz!eu&;@K!>@OsQ*$)=Z-Db zyy+@nnEL%;LgoQQ!h^ZulDB`ocfa+bMZgkbkU>C>{eX$kABwHhm+_`RjxBCZyJMI*~eT1lQ znkZ3OGX@1DzkE-bvKFISy$c5$cH9F-w$W#ldFAMKoK#&2+Ob>kivxe1iDi*_%G@(I zkPgVrFV6T|iyt#mN!p*t&SZjcZrET7b5cq$Q}(aJy~;J-+%irvqkcYq>lDY;>J!6; zlT>5fzpRcLRQ4d*BhRr$ie20E5P~?gGI~QL1Z#VY>dlFwi1Is$h_!nDcS?d~!-^#} zv3()hm=~31e4?ilXx8rzIsi#xy~~;qYd+i$uAqMua+geSsQ`}FH(?f+!WRIZro>0$ z1mI1;l6<3=l77ZG&dKEk{HjpoVB*^Q*_yPA)ofpyV1RlTq4UWgE8 z_{h1eV;?I1dOl4MAgIM}xK^2PFv@wFh5${q?Z}Jj_XpMRY4Xo!=~!1TR(cy!gc#oU zmEV$DMD&bK^cOysECoBw`vgC8e7l*;OD|5h%SLp_*;RxMg~!}C8JXk}KR+Pcf7y^` zy_Ub4tZ6AHwe9rOY<5QAce71=Y$uxBOoj9kbjy@aOdJN|j%AIa5nSkBoA3oKYzHnz z&(=Ce4fzzY-mFaehF)}q`<+qLkXkd{*;tBI?$5MwS4MuQ)P0}gdEd$wZ7Ub6G9yr= zDIH(gm3YEOh-D!}g|OY~^13*KPP#lkX9Nx_nvU7Ts%d z-FZfSz6)_*gy6|Oe~?~lMj*pG@8s*=5DU$k&qie?c~xV}h)D^lUY7-!Rn!il z?-pUN*ZQT77Hr@6(Z= z!^C7N(Jh0qLmGrPQ}07azKKa#Lh5+v^2C1!;p$wTZ1nunL=Zkgf3sR}I)iyg;jJXZ zK<_n_KZ0TE+x)8U%2NE3YJc%i@c^AcNDT1Q2ZJ$76#nXi`A+vRqQ+#F<1c7LI_r%z z&R~0&(LsOpI_$lF%Nion-Xmnz;Jo@(cZd0H1`R^JyZo6x)&g^wMt8aS4tm@~wYN_9 zFK%rl`v#IS?l%W5dY5gW)@Rzf^7eEEm(mJsX%g8?M8y-cbj!OpQfvwwALcdA>o>{o z(#|!+KR>dprHp(X`s+7M7tf}5LGKodj9TEOhYwRXX4F-Hu8b5boY)i#ruk=`2)6z` zx#z~<8Bl!8kr5_PE04N1M!I|*fLrp^3y?Mam*V|^OC181(x}OoKcUR!2mySfbAm~8 z{hMA1wPpoWruP`XUFc;4|9EN2Ml8Q=pn3#<{?OI0+yHcDGlowRfYI_Gh2}Nh3l|91C zHyf3c>hKm$UN?+-N?olx9uYdg%&q-VI6e^j+2!Pxu}V*ncMyF)6C==2*tSjd{0Ube z0tiQ4A1|85&;I_1u;S0uWeh=`zzo`P+LjSfb3DpXXhzel7fh--yqmrfci+YAGag#l zDp6?u&S$t@y&6)BomNSGLGK=ryOPmcYoG4hGhI6pSUaRZc_2s5t4rf&Ku+D88t?hF z_F%GEng6W7(gJ_dH{#`wOiXA!!%=bs4KPr1w4p|qY=ysXuV$Eu1I7pJ(^a?a7SnJ4 z7A7u*zj(V7xXfw}G~fG9OgNGVY!Mjn#9tq=^3Mmy|JEkQSnIlt*8`h>yL!?qqz#&wu7ciiIYdzBBBw$ z!uq(7;s@5KVMJ-xmn;N3CEgxM? z_41qOd-ZAn04^Iq7L+u@fQ@nsWRit3t%plnk? zccYJwbz=g*y0};V8^%8_NuudY)zS5rLnJ|&gX!B4mVuudV?TCd4>Z8b=fWxDTp}M_ z$vMTT;#RTBns3CYNl~YNE|-%?ho86+w6fbgs|qkW+v#{H-F(j_`Gg9%a>LrHB#$BB zoM8^LQ4J-4zqU>9!;SFiQvd97P=`XqqGa=plp7fJl4l|<5Lbm(%%a(5+Fe1i&X!8k z+)+{1^@k7`G(dT@7+`v;@Nc~aCwzJBBI51JU%GYxkJTfOA~mX4bkPwWf5;d9Yp!Qfz_<+i45fd*xEV{i-Le3c z+nCl@%&FI;W%E=A=2cn)VI|KFXu7!*-wKWt(31%lcanwzQzwB>I;nc-676z(Hj*31 zemWokiC78SVfxnatkPn?(^$XM1WhI`>I*E-)x*7Ctb^YB;=uWq((kT;(^t?_Iq2-& z!!V!2ny$Wi(C^D@&gSe+Re{r3|7t5$Yo-9xDt{Fevhs{rcnQzK(CaL%#!~Wc95k9~ z&{@I1+n=ruC)%IpE?JBse5~UsG$&n@`p4s%jSp%O_bW9HCb=!vZQP~dU z`xs>-?6b_Uw}KnEc0W`rWm9{~gR>mB%C5M~2Q1QbpQDD}C5YnLGrHUn=?nxUSYZ2_$^oG?Zn6 z)v<|{MRyNvmq+kEOqBTVj@JQq*HqU16HM;Di5}cpo`&v#Q#k8aDbQ+}=~RiMIdU)0BXX z!4R%Z2%RBBKC3Yf1@}ot-#b?^qn)CJVuT%?pGnKMYd%re|-wE)hd9GyfKk!s+dPe4 z3 zf9)@$^#fU0@fENey@$t#jCsV0@A*RSYRLNd%DuICiyNO;fWqST9bn$cYR3BO>s(ce z-Yxuq!HS;)3Dl)PJsStr+gwdXF-z+S3197g<0w^*^u$zn zA@3%UmEwu&vEaC=PYgPLGey((N+@1?BVe+|G$~n7aK&reh*JH_UesY~Y2FooUhhlo zK^n5R|7C#k>Y@cfMqaR~GPHjS2!6>vey`2;x57np^po7FFdl*=$$HtKilwPvBg0De zO5%8}1bN?cq~enXkS*WnWQc*8{MqK?JBs+{2E^{cM?j54t%lmeT-S0N!JE@v8%Db-Hd_q6g2^77F>Y zOvAGEn5X!&;NNA=yOGs0pjp*2#ZN6rL*wAR&0~pVgVww7Xwe`S%&ldIvr`|VGrjh{ zY?R*x0)wK-{#|v5BMASU{?!a1;WxSQp1~@9CK(Y91G{9T>Jr-vhPJwNXfFwML5S1x|uR?}(qX*oWtSLK^9z`$(00+EaFLJHwd;RJ$ zV0oD|)b`lW{qEMS^FB)c9iy*8tH5l4Y9Rb&{p?u_r$FYv8?z(OI+)!;=JMZqM|IYig;b7zYOkLga8K)Mj5CaF z1(gHM^sq-m4w^>Z>>Yu-|nE2ZA{H3WlknX_8sfxOa)x(fbs zQW@Lx=!K9Kohw^cYBjy(e^*(PC#qhHCTEBYa5n|KN$!$Ea1D%OX+*MGp~Bdek>oV? z&37AL%@5y4UpVeFO%4u(Yue7GjptO@=3#n?Rv8g<_@IgNaNp}oVR35oCobk!356fS z#(a+?%bla>Z$#P8IfrG*Bvyu&w9r_N%a(F5T8I%br4NK=&qgj?XVF0@+5 zbHC_rx^o`FR*f{}P_#Mby2U!G4KIolevba$nylo`96unAs(&wxl=*|>GX5I5k4~2g zdQ&V?DHR4=UBs%BE!&!r9gOI@GBDLACH+m(JW8ZfyxE!7qUclnK)f*I4-b09KOL@T z;y;v^{9}T>l0>OUuz+tUpSKKc_23h#ePvL8y1&9ocqWua5THy~&bczZ!nlyU{QbnJ z{H*VZJrPq8Nke7gpd?tSkmGF-&LszxHO3~a$7Iwg6^Xyz?Rbzf1C268%h>}*{^ys0 z{Y9qCGJyd_j$n`OdF=T@8+f?QbPDV}4SB(!`v;x=nLU5+LM*AI~ zw7Cp%=N$F;%oXE#F}FclPn_<*E3j716L58f#=kyLRBcbYyXunw57fC0DqTBi6pvm9 zn`Aoo3xSJQfS-UrL1+ydrNJ_kG@?HVil+yW&*@_bNv7l@a?7fmq$%RRc%zxi9k9Cn z1KBj(l=!a--Y<;cgB%FJ?rpS6nv~^^V;!{t?WaGr=F`;Pt}xLbXeX{rmHDZL4P@Oq zOpZLua2%cj$S$k9OoLHnvfM}DByhAO zWReF(Uj**?J!~$F2Db*?L(zf~{Uy_o%ah~uk)+EmDPKqI-QV@%h~QVYS(`QgjGpd# z`#kW82T%Hf#S*=C^d%;{Yk$N_X0I#$R!1neJQYy~XO5HxGsNujU6e0rb;rH;3@_kN zl;3-yF}n;pldE<`E~pXizr&k2BIq&UVslu@_9n6ZcTAfQj;4WRup$3wa1kfeTO@kT z1pfoUzS*g~iCQseHhK_)g(@~@PM(FIc{?apHUE7QYFq9^dqQkwJ=PFtPA#;<8?>-C z%n^tw%BNVY)SMh6xbM?%>&N1>GU4nJQJIzPoYhZhSAOBa3C?P-l$^ZtcFuA_D4f4@ zintqA&B4;6#17|zzi(L1&fiW{nyK;{Oh-lK-#Ek75*lR?UcUPJFuQt$`uFgz`j`@d zk`+7`I@^C6&N(9sneoJ&7Nd-LMC&Ae(;*ha&V?M&{q+@hILHK2a-zN}j)HBVsg?O_ zv(oCfeG6_gmsxruI!_4l83YTC_v^BNC8drF>Ee^VFdqHP4CM8{sKrOsfsZ}*w#T7~D3#!lU{OwqB*~9BkUraS;lMQQfJ*H@Mr?9ko)*8=?Cy_JH0<<8zEJFA zW5_qUkMvZ5_bSN3w?Jno)^8Qn<84jViVk9=K!1AV+?a=Q=g7@l-&)V**42KUo#7b) zFHv4tV@2wQp<6dRnX6OosRwtq+k!u^0<8$g9%r?<7Y3W{Bv4xk^WmhF1hWVL%ZKwk zqWOQt zkbmiY_)r9}tWIEx*6g85N_UL5K9Ri<8%{m;mK7w|9!<;~+)aW;bE{>|s)=F0cJ&6A z>9Ynv+(~;{O^#K>HJn7Od2}u@S(;Mk2usyT)chMGcChd6VVoX6gz-Eqt#U|{qUU;p z8Hyx)z9$i)LaIBghr5@UHR@d_ZKqax-ha}`ve&4M_PfR46z%TWeTG%<(D_$xc{Kn0 z&V@6Qm566$bRW-PZLs3cvwV=a(tF#m(!2N;VEz*tNqIQjjk0ek90|SnrCx2g>~IuS zoe{l#pPq5_b3*P#^LP|uu>!C~uiO_AvtNtb;mebSj%R-0b0&K>+c5PDMsOVZ7E@{- ze&tGtFQdWMed6yQ*`9<6z`}I^@$Eh`u_w#0*Hy3KrMv*qy}=E&oGTRgRDP0(6vb^|{53pt=e~ zP5Nj9mc&X&)+OjhN4RQsg%^-#s66}=8R(iTio#QUp$$=qR;kBoQ&Yhi@g_0jt z65n2OhX=i-X85k`t_XOgK((O&chWq6-QYKYxx%DMb7G4!BFNz?l*O0o@$qz=d5nBPAer(j?vGps|7T;N zavnIa@jbjxtT0Wu+*o!VB$P~zws{OnTDqrw77SN1kxJ?SMMxD^|D=pbg8&Dn8N48nXg)0bfCe=b6Ny6qJ4O{cXr|?@U%iu3wtbrmx(1E z_<55ii+=b!H*mE!*YorT@WeBUA?Rqw(bRAVxF)1}@hm{ABdk>_mN`NH>C%upxf8;M zxj|?@+b4d>@=kt4=zJ!1u?;bF|B8eOcCX5I$j2J?`&G~D8>^FlI`1*Qjp3ZmFLcw4 zMiTBhF7k(S=)SlKa?>!!UtP9U(;?cn4pT~0V_lhr4|#3gjjpBsma4%CWsa0U1MY=U ziDNCDt=2j-9Q>Jl15My9SR-J;J@k{*PO`r;sF}%@#Xrp;hyVCZcV;z&{bDrVtMCx) zM;P-S@#C046!VSM7!5@sibUD?ldr}(c{FZgQSp(O{n-a-&%w%H(%{*A|;DFGC zSF0cFQy{!C(YDRm9tsV+l2fmMO%og1BtGikSpO&_g>OT<3irQ=8hCpO%FWoOvD93g zOyVGUjtAATR&cGLV(ys=iIjy2gj}$G&Thlt1ZPSBis8A`e98gIvhCjrPndpASe>53 zn>=jsiuH_0L5XJo{jUTkKTM3!3Zk;Q--9OJlDj7Xlnc~O-mZXN!gbvXG5*FqDAbyr zXu;|CQ;hd-iP$Y=+m#%t<@5$*!Fd^+5B24lK*QL!V3s{?et05{X*FFm(h&Ad+9r*Ngxf7nk|XBR(9^~JeR`DCHRA!XRX;dV%7SsKk` z6;lMunAT3PKpKYbOV6amjl6IwXJ{MKM$O_X`IoQqHT7g5RA}CV5Oo zQk!vEr^t9BS&NEe()9O#?zA|6y?;YABcsfP9O-#Z{2pT#xs^2;x$!C*C2V<-#7}2O z@dikW*B_wVoGW}Ak%D{((gTlzBsC*!BD?*Q5xQPU$Pv%!J=BD)F@eI}NMr%^tfh4^2E>{5`vz>B9~84* zmqm->GOv8&YJQKocI7GF{;(Jhw}Sl9HyrcNIs@_2aF%_ML6RhhZXY#HYTo0@ZaCi; zYd6B`xadd+hX`wa@p=1}`di8;0iAPvHV^v7@m6ujXZ!E5lHw(|79SW3m7-}%x z=3M1YqX*L;569cCPyXGLkrcaFwS^PsG@ZaC1rlc?Z=;8Fe4?qbl@5b%I_)K_P^7^S9g8nB# zjLy!U3BXVhX}tEAdXLD`q$sNyP#F~v)lo1_%BJBZKbmZL!oa#T2l$utD0bI6N{H(~xokHT$R^=N2GA?-U;m?3)Q}H+~Rc zc-=>y8gW5=b(0zhPD%GXAx|89eNtv9Jrd1Kt`4X@8PNLPPPBVT6Kt@0H^aRC&Q=@| zPEGWboHTc->1xSvKWF7ns{)zBDGVahfhl8%5zeA|xs2w@G4fYkM@!+$x{Ny7X`YV- zmb^BX-Z1+mrec7UsBG#>SAmQ^tf>6b{OWB8R=wk|T(?Ab8><^lS|-)_ym^TMp6DsxwIB`MpNQo#OM z@BnawF>jzEak~j?rY|c;R*3S`u_xa zZN-xK13cgGmlS9QWV^u8-C{Jrld@Ogx}rA*e%p!lJJ%$9c&PN-RvXoFz@hAFJsc&* zAD*Tk*={;b{%}Xh@rdgHo#Ml(dEtB3cu3rzY zZ9Zx^^82mV5f2)m4AtQJE zaIrXNM2qK{LVGzVn_BS)pS}iw5?X!CB>)P@3b+bC&H2JxJ{Rn5I`d91{ z^gdl|$ZDZ${Ht=7a!I>k#H6M~tspPopHa=p4=tJBJgg1bk{aSxSl)8rq*}irB{FjQ z^^4y+LK-_bqiZ-H-qt*B-~yS8(I)M9bBQ(|)o%Ua*OB$+du|~A)B;KNY-zdAi{C+a zw|I!E?E~vPa6jXIVGH4m^aw2x=>Ld^W;m)&EBQLPnmsL=K>r=c-N3geG!hC>*81{( z8M)47cV63TD6DVUtS(Z0?suTeEdaYZqY;>hO;2rDtGS%({5G*8ON^xCeN~#}_dfsyk zhpt!mnPsgBI@uA%D2$?nEQYIjot0w3jMkkkxAoo6KU}5_U#yylvx0Sel)iHcye-}%(&Hg2=&0p8=-?I z_YZIEv?u+z!L*%5iFIw^dmki$e6+?TS}CND+nfOHjfzmh&{eGF;}rMU=9pC9ykN8q z>j*eVt)LaGjX(~X<6$M|10=n)((DWl*8lquHo9O!576xttA)7iJJyhU+fBe(qqzj%&&ig+_Y?=P?}$|>*$-g1*GR?ggUPt1p(G^ zpP$kW`}jyT!Z^QLKN2MCaOz1+-iqa;OB+VHt0;A(`FSPXG#^qulU;JW*L+>vG(@I% zHYfrwcyPx~P-kB#hEI`i7mOMCA}}vGAMQ*Ddj=`f8*6f*iN4#33qL9SrV1vC{Tf&r z`g$j>PEPp3UNqA)K6EKYic4}zc7Aa8MM>-btE8RO&kTy2ski6U!3~_ zd=~V!;<7d3XWzT~UGn+8f4ty8)bbox*m>#P-q`uI1*<+FM*Qxo z{4>Q$xCqwa^G(4`I=*%fMN1-m*i${eD6_j!lp55f}!K#q=2>GKDNb@{6WrB7?hS?~}l{t|Y%~<`7W0(7(x;NJi+HYrtZ1)SN zno)$4*{!~_cv|1s!No|2sQt0B{WsUFehZOy(OJJE*i8jc=NLXWcQpHW&R%0bGW?%l zE^Q-vQ*>!u`!WJ-UyjAgke)*G&Tlp7@`RoNdH)8hU$e2cnkzGRYyJaC%;ctU$O%?Z zv9OVqDj<0_^c56;E6SYpjsIdni%zT5@f|2DpiC-aFktX4$#D1C6obfKb%hp#a>&Sv z`tTKboDRdVHtYp`OkcNMduvKv(Ptdz?~e^0-ChEz*|?Ae5j?%wL>{JD9B5UBe_mHK zey5%!+Y4}k%z)O>BMN@O>N|L+0?NY^lBemSdo=VDKJSj1nR>E+`1@*jQ&J^~z-zF= zuADpXhPzbHQQKoC7|Yri5bL;tT*@=c6ltqI-&(Osb-B0KJriT7@(6mya=`) z!kvlvNIgXF;hc}m(9qTL>YNKp9Cm9B5fqU{H1zPF#tqtA3D=YQc)UG~e3Iz^YqWl= ze{Y~{2y^R*8wgBhb<&)0?%Aesf;7~e9dCOR{bqItjVw8^nvXb4Ee=cbW6z(Ap&!gB znoK#B1{Np^tp=qnF|(6dY0rjKrM`Rf($Y#D9>W;pQpxp(LMYml)$lmc-*W*lywwro zV5r@2UpA|pSD9X9@#p$g@FA~=rII@;)7&$G=7SXysD~cN1uzG)l_B9Jm???{)HW08 z0~u}XZ8uLB{io!#aH&;w)$BMBaWKZ1w;wE+=*`x70_wbf+Pes=edmCznl}MmGyp%2 z0KJY5tk7PoW}Qac9Fdgi*YwZpzNUYf28NdHhMwtgVSn#uMe8M&F~FUU0=h`a^Hwjw zgJ9WnT~K-wflWpDrw~?~^_6aNfTM0!Ru+`r-C#rD*UO9a+AW)nM6= zV@khe=>_khG5W+nKS(kI8bDIOs0PY%VbtO-%^K_ko|8}Y`E$?p$7GeMCO-3d1|eM| zDKN$0IdIufL$O@}=9Z;T#FOD5&@#j$AbU8RyEUsmc~>(=DjNp!ujyV+5(XE@cIryVtS2iN&nFVg%jH|QKJSUT1w!L@e`>LBI)GUAg5#YCdwz^YkGuy^dJ!r5 z*W~%vjPW|X)nm?dlqkJ@_aHIhjYaRMJR;-s!L^yxwafqLIn*`TgQ`mg6EJ(y1{_(2 zfx*)LZQivWYKhaO%r`Srht&bm7r&GwB_nfrIl30t!`toa7AJj&N1q(ZX$yqY?r>nn z0{`Y7KHDhx>+wGCd?|U*Y(;1g@zLTyc@zZ znE<_*tx6h!?#0Cpbg`(Guop2-KNC)t$lTfr>47YDtSAZ>6XSOW&eu+u6Mmh|Pa_VGjM zJqv{Y`y!kK#bk7Lm3<#b;OAli@zGh$c z@oj|hx@a(6%y79wMZ-8RCXtP?fbLHNtRrWb&JInBx-SlUrjE62wI@D6tzTwF%40d# z@O)E^AHHkNI8m|L2{Bpkb5>Hf^@$`E2J)_Pw`d|f*9m^*-{&J5UO)=9;&kO7cD`eV z%G3z!XabIQNj$pm4N`Io*83%sz0cc+imLjN@N!&~CiX_r_LF+wR3@oDn9{BM1?Kd* zSEiEg>{&lf=+%g*xi^*%VW40C>a{ZPF=>9-`#)&v;}QOqurw6 z@hmaXyo7pSo#XbNS-8kJ1EGx<{0ctGZ|@n2()!NZU#xf zzl<1Co8aZAia>Ja-5W3>81lsu7#9H%4xyQon1Y*SETLrcQs$ zcD=n_l$Qu*@{Ojh5TfxyQp=Cb;R`a2ZGe8 zr(>-hjT#kz-hsd`Pr_V{VH!NK)5F>+mk;}|&)xgrmup}@4C2qxBgnI7;oSJ)FxfdU z-+o*wDG0Qz^Fxa78?UIQ)1=%mm*Gf}0#lmOZdbsS{Um$ulOn|2K)FZ0;~}!BRE?gc z6FQlo;H#BONz;H1eEG*?S^a0;t6Ou~+Vspwa0+Ao=O^{V?b2EF5Aj^kv9gWsexMp@%2cSZEl$7fd* zWoxhAgI;#gsRLffHb&P%s^7BD@HZ|S&rv|z`mgWm*MznL!_Z%wji1E+SdGL{VaJI; zb<(pYL^LC}_&2Vd2iAg~&okA6&T;_tu#23_Ghj8e26R<(Q3HCcxiA-ldJpiwHFj?y zk>}VGimY2YLjmXi%L2g9^Wk}}1ifukZw|Q`B!katVUNx_f?OYazR!hXi<0amz*1X# zcv04~O^r($_c_9_gEnEP@L~P|S!Jrqk=V~0=i$z`T0v)80YI*o%gxp*5j@HR^01BTz@CzN&(8+*S7=(+ok6a@ zG#GPa-T6Oq8JRyEUW&B5(P7OF2)-*1>{&g~zR878G-Yeuyg)DeurA(hXlbs>zAJ13 zzHo6=cGBlLE>CQGU-gx)p-b1vYsn!GA_B7p=z$vm+hQ^NM5U73_gRup<&b};N72xf z@)mDU+0=RcklM@CS*sHuAHGFXH@nGrFMAnT*?&ZZ2e8ppC-G{+NzB3>H%R8~|G;w6 z3|N^i^hPpiL0_d7PmxAP&_WtTlR~QF(N@u%*2W4}T{~8M_?1RUo=M6we~B}+V}CoC znx^ALe~3PCU=~~zT3x}CFYOu2_sYf-yI^v;WL6MPKp@6+nXg77*KB-C;eZPwqC*Q{fF<}nkUlmSm-#L;K~gF znhUrvKj{qzWhk5>0=4^_mm?``{Upn}3e2DxtaDnvf@E^OlIw%>nJL)ohnU&}jiS7{ zbFXC<+xIY*7EJRu&x}yh6#j-Ml1WTmusRxr+`SOORCyE>3SLzmU#)ID85hftiX;LN znChhk`XXf`-Uxbry4m@Jp1-nL{jk!BI8|X>6d9=VR1G$zKAZZj|1WP`eSG&;3yuI- zAAC!@dD6}rv&EO&cy0Q6?_@DLuy%;AYW_B8eg|Ihh34ky;h1nJGxp01n>%M|3K^((=TYONj5_*Qbwt)lp%k6M^;E-6 zDg0Pm_paZsKKj$}#nAE@?I7W7*555-NTiEWclQv(=md~DNCgLwVl^#+kZKi5mazIP&TtVA6_ zxbu?ub@gp17un@opbZX(mgERB@u-mF88m!%Y%l`uHx z_F+IBevu3?Huvra8p#f6G+TJJkt}cxoFL-N?>{)PH-u>>%s$YFUe00cchK{7+klEi zye7BaNs6?#dQ8JZ_?T3`MeGD|v$Tim%?J5{b=MR!8b+>F<}A{v`RP{i-}$rK!}!P9 zI=658>*!h;6)_4%ICE#n^5E}l>H5AA!1WMhW^AOHN0NV{+i$L|%?|(s*gZ%54tEa& zK}(;&mF=I4()J@ekU#KkZc|e(2E{XyL1f*=s$QfyoUmQ)pSEuU#iH!Vc!k*IY zb_mS_?wEgM5&KT(Lg@s@dzuT8eFHcOcj?wV)915BDDc1|)1|J6tVq?`{ zht=0gp1ubuV(=WI2G%1>butJ+A zXt$Wv#QU8P|K)IVMER$Z(&ID7#;Ww>#gZnJMsxd~es}cbl)K*Z3`Mb`FB6%nOxJ;K z&80PW;Ep~61kj<-V|^uNd!gZ}6odc*vy|m=Ip*Tm9T_B7vE|@F8-IQ(-9xJ_*oev@ zeJI-V5i5p>$-g?D^gh?Zw!FpZNwearPl3$;sl#Ijn)2)~i4oyd-`eDM2<0Gb#unvl zIo(GGDf`8V`UxN+**-~R?5wU+@&g5tH#(qD^Ob+76_1RUI zo{w3}=;zlWtms|3aDzel9a!y^*nJ2DTkOg^h`=S;nAFPz|2Fhw(DnIVWD5d&5<~HZ zczT}<%m$zPg8eU|UR(>;rp&dF&i$6eP{ppfuPXke>tTWuypKSNOq;M>Vwg6O^A+5e zaomSWDj!cDy{8%{OY?QCE31$j=5B*RocI3_7Hg3(U?)OBsr)s|Yr$;xCCVxvx*6*8 zUJpSyuPb6t`+Nnu@*4X&VnFaFC^^d6FZHe(S`~=!bhLM+Y%-&izVYvV0#ZfNUC^x@ zj)M4VIofMGz)W)5UjJPG@-mSWo00I_^>`a3{OaTsf{Pz_4!e9FNviRojKTPM`Qlv( zhGankxA!5VIAmZkUxOa~?-G-H55*iZ08Y;X{H?ep5baVRUezjp_!_55%{Fn)i;4ZwuA zdT{07)OzwqE#q-XZ33ve$~5_&p?MJI5Xn34(gzI{t6T|dwpZfrs>}Mjto~}$`k)C3 z!jPf-=gcaQm~<4Chx#Gz@wxm~FuS$Xa~INE)M#Vi%})Ek73X6E_bo}&G-Skr@smYG zcLgKqV{D>_Jgq>M(l){ckHboCoe>5~^pX*U^AgrZJw+EHKI{-}LoeC0z!@P%uBWLQ zA$R`L3Eza(Z$fsDAU6^}jPIlophIVnj^M-5sqvwifA`>h!Vz}y^EVF1@Z0NX)6k*M z>E>dxk<;vpAN)pON#_ejFlKqIuyb2HfN(z&&oFY=bRrPxeA1!d)` zBo~W-ACX)PCi|S_13Ao(bVr%rc!+)l;C5;-PR(^}mjK|%u5x3In$!WV9WcS*#4960 zfps(RSKs+Z(I&hTgX9Lfq;vG9qg@>WaB;)9i($!fWJ}2Y3C0zf&n({sWz8ndie;Qy zNPlHcic4`Idv;qri9Jdbl23E>jDbYjC+PY=DW7LGVT(NGHK23zVJL6EqjT7qZAhnJ zgejx=UwcSjPlLnAWCxG|Vbk&)^3KE+-=#xsJMPIp(bqCm?j8GHxF$d@WWl}x)p`w| zKeJCS(V^xwE-^7yDs@)0A^X>)H^rnr*ay!kJ5bts=JV4W%lZS4*R0Pm0#5VtoL1j$ zgTzy&>}lq1R=U8e0g`rI@;0CM8ky(3BIEe%va96pZ?2L(5vM%vYuUm&^~(6z#v#LQ ziV%Q}{hapfP`9o2r553rWQuuj3VL1h`lfgVCB-ucO^uV{{=2P9?E7okJY*`$i14R! zq=b31%1)P4JrQA;wFT2n)xt176zlBa`iqqJkWep0+-f(C!PceE<=mm~y9bJ9m;2+0 zt)GDhHmA~}nB+O2Y{yy6cXC(CxdaIYjTy7#i?FYWU#epuq+QyCc5M-Nc4*kuHW=>~ z{{^yft_jso$VS3`-l zR8hFaX|8G zz(!A)RSmpLbmXrcPd*=`wVFZ z>XSu$nl|#$e>v04j=QM=lqlvKZY>&YaRhS3RX)b*zh_DQOuj@YjLis_Ojx0V$l&%f z?F&k4c89iagPba^2o%>1RH4#|!V1oIe`Kx>*RP(I&0_)GokK=M1W8kU%1`@g*Wj28 zn&ix$QWUP(m0zVW!W~Z4p31*`hS>@mFI|RF{AxTC@|TPzUd#S={sG{GVB|n{m17GJ z_#&uk;H0~@){202zHrAwQB&9&Kd~Id`eU69)4UVNJ*`y`ybniZy*%QXD({@i*?0|z zgJ(h#o{|)*`r=T}$kQUxHuIlOfOCe^Q6wDHS{+8n{vA+5pTsFQ^0%ZK;f#VzT~ zMI4V$&&E@r#nkzFJ}W8N92+q*Sn77QQeHzCQy@<&b1%c2#^k}f^6EjiKX*O25x3}# zgEPGdHAXtoy0_SU2x@C6?lY*tyx)CYFxWJ-T3wZPD15VQo$2r>q%V+}nha*@BTbIK z3QnA1EpkE743?V5cM|La8BGj%lHH9EY|cMouU;gq|A8`2oH!$VoD!2)o|nP8G z-Mq0PLC9oP7Dm7|i}V;%X`(xaFSoM%u7g6kWd%+=o_>bT*xrf9>HahK$JtM6zDCT= zO1tx^l+|AeoTpTl7*%u7dY^k?(HBpE8f%xFn(Of0v(9s@H@08az*|cJ^R(gf9UUr6 zW{F#d4AMazlQBYl2Vd8Pa#%j@9Tle;q4i=?KfIA?;s(%xJvcQ6J$OeaIR(qh5a=m{ zDCmlDgXj#wVj-*?H$&6Y=;OX5)#I1@O=K|=(Z~9@2=skm1X)=6iuCCA(^)q#;7y+c zq=|(LBS?!~2()mKjs=~y?_WS)nlBQ>9+EEb1gop+V0flcapa%gZ(IyJqlrBjKTExZ zYeZI0Sy{cE1p{=COojFzP)@(K*j-Wc{^|m2*g;u@h`$p$w#dzw`!m>cXTN^XeYL5d z9?i#b^G3bHRq%tgu65(H1?V~o>1095D}qc<+{2ZASUQ4{&${&3z-^qh^5-7?!>ql< zH&#{$t#&5TU5&)p-84E-W2^#ev8a+3)tZ>@FA@{x`h_U1hEGCb(y7ka757y+iER|Vq%3{~3e&GWv!Lnu z3_+uf?P~FUQB0#;qwN|bP(q(1qxpXA;2bNnA`TDIFRcC`m>O0j}vNnRu%BKv}nO#=R zT#M##?fxku-%xFJO>yNmt8B)HIJ8+Rtb{ELDIN#yth{|cjk}%N`wSZz^slY{*7g0f zxKcS;{>ioNWr6tWIe|^UlJBRKmUJ{fLib;6flj}FZp$|KQ*qM0!=L+Pxh{j@ zV4_o$zYL2nk&F->F<%N#U1;_~^?W7`=7NHvO>a+9rVV>=-$x=%ouU1qJ4vf@J%q)^ zl~=@!Dlm>|qbMaDt*-4Ll0~oUhh0~iL~0UMHW62;{g(5WuR%ED(Mh+)To5tUj5R0f zOF094!55ggXH@mlPe0ox#LPz^5mNsUz)UHc$okN2Ni;mwGVrf4+Vt|WaoHgwJ|Xz3 z6(RL6sSpZsSj~3&)MxD5-oBUjn+^!^O)}}* z@1Lg8S`N7Oc6isU*jkZS(Y;VbntKcG;+y5VEa#bw8HGGr{1+@sl_tC#M``Ez?qm?o zHNyo`p9QTq&;ax)$n2mnQm0G2CoM7c!K z^0Tz8OB*Sw=2n3F&I`csw^J!L!rBX#fgw8kOy_A3YS6<>a4Y}7jJ-(?Q1;(ZDAk>F zOnpcQZ_-fr4koNCXTkJ51SgesLCuKEWChh)U z`UQBtp(}xb&bdh0oT-W=I{wiWVSA#|o0N>b^|C~oA9+rLxCegf9}UGkj4_WSj99Ed z2yzbV#@_mk;j>Y-RUpf>q6$jSYC;h~=j;{xRyQ3zVhBOm@Dt1DxNBYY+s*jgb{|F= zwejown*EkO3_3M!W5U{{y|hxRCH+2Wk+{f{sshAYc>lb;x_cdm%V?g_;`+R@8DaEn zwrbm5kXX>IZQTT9Q~PHpAY_BA_|Rpu@s(=4(Ti07Z38a*V3+ke&)__g2ZXFS^M24+ z5D+d`?X9!-@p~dQ78XNlQQfjF_wf5rf}UTe61C_Vys8P%Hz!^@U%Z4yC%kzhSlP#! zrg&Phf5fOLkT5>+aIwa?QgJIq!09ZUG2&7wJ=uQ6Z!L6aGwloLKqDZO2=o5?>wnVXNjWW)+h6yW6|%$ zAtECa^rZwlBCGgcJfir^giVLkJ+m6Sr#FGI?aj?B{!Hi&k#G^!|44=8ZA`+i7MoX% z#bk^TI3}*a_tOWy!nn@a7NY*BK(iygC*Kg$AMwM1;p=r+A8S%mtsTzS1;vYcs0wHT ze5H_nL1hembj`(ZMWM$}$$RKV6&*7p-0A1iF{K_mr`kq&#M3PBAa5L6a`PkB@>L*? z@QTtWxbF8)r2~%F0mKy!VaIO+!X-~JwI4kQcw~mb>bwbs{oZsD&9?<>_=2oEKYZ=w z4*q@D{d0a$JKZ$cceiM#B3BsC=Y~OOh*+z2I8`)}h7S7P=O;z~ew#(nif*FebPjkT z$g&RxEh$_zGuHp$p*pVn$Qo2Gdibud5c=*m(BSX2R&E=XFy4C|05DK6GWUv$u&?sV z@44Xh@3npXntl4{5cGRS@S5e+UM#u*Q|%W74>%0=Z090*@q)dY`3Cm8UWP3n5<;r? zw9wz5eikKY`PQ5ONI_$-PNZPh)N-C(*VI3j{J4Wnb23IMW|nyIJE{|+!40-R17FCv zzAiKe!G|CFZ+|7}7wtZQ-7AmWS#$)v5wTmJ+=g$@bmf`*x|oMwDZeYVoL-V^LaMF; z4RO^7$5$WGOzyV9Mp$v(F5&)|lIE6W54a&rf!q3w&?lv5wgSm`LOHMltTH> z?0vjt>gsH8)g;R4Dv85;5`qJjKh3K$q4fbuJS{Noo%`$Q!AM7xJch-4xS{t{aj=uz zMUg4xQv`vDrC8A(*vK`+=aotf*5Z3$t-HMs$`qYT1LXf4I0cvZ+-f>g5(&7l0DPse3d*qzYh*Jbl{|~4i}ywE&szmrEeDL|L(l}D; zP>|PaRw-Tov!6&^n#XMI+wP)1E|NoX1@6@@xNVQ>65l zCkl!3*NLF=7YWazEgUFV~#V^`1;s@giQds&akJ`%d3zZZT~kA zp6tYpSJ_JtQzarLf5rkGcCY$f> zlJy)6ZcMkqPa`)UTk5HpRk*q)E$wiFzF+j~?Z0zwl|-*bUXFW0+JlUU@u4g=YnLU= zc?Xl+N@@~O@b}jX`E8vH+1>Yl0$6nI30g-r5vHslwcTBiNeYa=#_6xckxZ9Q^S-P(3`hjm)c zYZuW+6xJo_&J;5~l>E57f>wIGqaYB~&K-8o<~1(o-c{~Y09E}O`O(k0t=S1L&XP|X z3!8oAPoPR^2zM&}BjbT%yItU_EOA;G4+2O{mU6dHvH78HnrGV$r;eB_ZZriC%}V;u zw_HLs{}7AvVw6%X0dBUZ?UA=~Yx6Mpr?C4=LEv{KDFZT9VGkQB?|n7_Thw=CI99snuW@q?#$@Ut?^3lX+nP?%V}mQ^*~Fd zfri*M&6jRS!kX7MX`s2yFb?$*6y46=_kzjZ7YC{%h_{g^ajQf4ixtypb6rwAt$o7S z;CYxrHM=I@4Q+xsRw=>XUUo6elWV_Fd)YtE0~(H=dR}iU~_?d=`FsC=EIVnhjhB z=gzEwkvd+G;Zg7AKsb4KI^KVPG3Ku8&j`%aBxotXi7|30buioybp6ZLy7f58znM%yfWC5{dJ;duE>-0k){HrxvgWY-Vwy)`-tgDKymE{_uw8Y zki%QN*s9G8pZxl(95ikC95y(1u_5-*pL%&$2nq1M|Lxq>Xp>~LTUJ&-ULT=1P)LzP zZvR};rJ`-QY6I zC^wJAL4$B*8QFwPg+*BEWKFbR7M{M`Rm^{OD8?C=X^{*>IFADW*!Xg9HsSCc z=s}7iuJ`hVzXvu95lg4ozS|4PZSt2S9ZJ@vH#71w)FM}Qq#5HLz6SfeJ{yY^y`PD~qh#tX7u)K?X( z-A*d?MJu;91<|EJ&U};2SLV1Z26Ft>z!UMuk4SbCMd@4iiTdYhelpbL@F`pAG#i2A zuYaN=*>h1%7U1LV38>SF)J8)VQ_mf6X*Au$Q)R@#@EJRq0XtW$D^;@6?92D7pw}Fxi`TQIgEYt9KWIRfBHbfgD2?$P*)>HWJj)=!(jXjr3(b zYfLT1pAJ^K>mx=!Y)QB0_S?72YD7u0?ws(J%gr7~$59zs6{UuRU-UcXj3_2zazC-r zY5}ZEzyB5-+W4Zs!^oFB+JdI0QsA=Y|quf_Q!HDAT?z+Z!B{s_yiq737w11K(Me zZY*kD6s`xm-ZjXiQ^0}^(fH^2v{g~l(a!dPW~B|iJQP*oqujb#@#?Z|RDEO(ftFtU zpX(pRse*O)%7EE97~tF*IIhi4%2BFWpt8nj5%b<#{bpm%7oy#_Q8(>qYi_;&z^=lg zS0rR@+J^j#qEX|Oo+Hkg&c-jyVAk$FHPhVV%@9bxc{AZ%h~WqaJl$?aUMu7?()^du z)7O2euW66s$vM6APpZJ^$pXnn6&+`fISBoA#$JJ^@W&;#osR(a{Iafq-M_3G#R1M) z6L%kJL=1ZN4D(>cxm3TB69t7GCHXdBXs&E;$Th$zslz;?KoIn3_u^*3ed|g+)I~nG zs{Y6@4x_)upJl7@ZI6zik*Bk{(Pf%RGA1f)efJM_&7ub&$yv`1#W6yP(d|*gBo;-! zaC={S7n*XB=}a0%(P(K%`u7q0Z9iUGl;wa(z1l=f<+HII&=s6&}~=B9RmajwcxZN!gSB6#~iM|rg<6v1~1S} z?S)q198}19GQQqCQm8RDD;FhFlbkMK4i1;&ITcVc;JJ$6})PfTzP(ceBs_too&FqY3MyE zJ|bCH+-~++*&<>-$s5ZXp7?6id^Jdze?ZxO%ZZJ%f;gJP=seXWO&83{NvwAoZm;T# z8WY)lLn}0PO_asz(E!j3S2J?7q~=(H_f5$YmS`5MX@=aFJG#DlM$_Zg2iE^t4EiCE zX18wfx+RoS#gTPLM@6Rv!7MFc`=+0y`j-@N&H$)}4iKiZ*72=qL6fWZ?>WvlYt}US z+WIxLZ^>e|kzqrT4=RJ`46a{B8}DAO-jYv9Z@sy7a&9i?Gmf`HBs;Skn1Fazl{R4- zmQU_lL#S6VSrci&7WylmNwl@;&(~7fB0dN4dXICC}@;=0A^yahUeHWdmD>6QQ%l`!e zfsvp)5X{NvW;+ihjl;--)+QWse`|~#8Ar~1BLwar!~8eRzwGd|oHJ5oHQe5$nad1k zIX2oizDuSnlcrPDn6{s1l$b_*NSkobh@tq{Eb2-BwCh*${_rIE!Fr5t0caB~^$X0! zcDVF7pKt`?9TfvX$@%O1mT*+^kfKC3#T{nGYp1!kRH!7)l|NB zvGga<3N{se&bV`7TW$H?^!%MsEOAZ5;|pX|f+G0cgWlRfJ=1Y+U6|o^WF3*LMsaV` zH|@a%&UWN44(BT9>TiRh4Y>FPDzxUc7N=I+p6!=0h|@mH!R(-Mg7&iPplI*35+2%@QneVR!GP$#M>nruwrG3*-Yw~ zY)?x&syn~OT`u**fm(usW6DzX6}ldN+vV0K)()xo$oCZ0|4RU3Jp79ysh5+dm?>;4 z{)0F3Dns)*AubWxxIA8r{vI7sCUuA2w!-$h4g~~SYBRUX!Lx6rxTl#|6>)+oQJ&mlgk>^jeiiiZPtC1E5LR!_Yg}_8ivQQnowRj{ z?7Pie&Z|p+k`a|AFaySEAHbXLL`tXIIo4{;&4>`lAD#rK-w>G>w3xvF~CUEK)GuqER5RIz{UI7P#|) zB|nuE>_7+QfFysT!04ra*eESQ$?jwAFDAUgDk?yvU;!xh^6kbn~J|I*!@ymmeY-+W^&D5_bLcvfte z53*BEbiU@>9(TY-_N|;^VrvwR$HZ9ZDiTUb`xy1DfOBBtN^jRc#GzEgQ~4(W??dLb zyjwXrMKNXaVdhm)96pOAk(Ts_?uftci$S*eh~-t{UfJbw2iaBO;b&N=};96kUks()bQ#EGSk24PABW?5H@ zTxZzxsvd#+xf$ygZ}s%6BgmF05Em#*wrItvg^S}P9?pJGbcdGi{7c%s!#)kyLyDl%Xw z_^d3_e|;d%elt^S{*>qU=Y1b5!_LLWPpzRptMjqVgYvD5Vli*Fgl6#i3Lvln&fY?M zYUn#4Lw+WOUvJFaG}?pbDo2*xvo4d>jl0AYPenB2$)4;Dz$F4Diaimbtut544%MMx&0b ze@#pWVNxS1dO2uCkBA%aKF-I!_c3(87jQfu^v4(DW3KWIsW3mF`nI%#4|R-ev5gD( z9>v}}d8Q(_XAg=vTvGuqAi(co)F{ZQn4oQ-+nPrz`w*wzgTL}xbQLpC)n}m$5wfJW zvvH!j=&nPM>x9QSq2|b^+X~j+F+>w!j-Q3T@nhameL6x*bACJuO|*c`2Xzk1NI$hc zyq0Gg@fWJ6I&kDlCt{pI`Y^nO44N(Z#RfU9eMY=kt3t;*1+)QCJSN8COdDeoFs}-d%1>USdytczSDX zxfm3M_T=A^kkve>vm20JT@{cVH%4vjk=jBps7tZ54^9&M;6gUnR3B=@i7yn(?Ai{y zn7ZJVy-R0wN=ifGdEIb5gjkY`$H|vUo^KMn zy5xwzOXXPV%+}tPOP<~p7AcnhKdL9zSQ^4#(?0E8+qmTyWNgb9+KNB2V|0h-pQZ`F zYcT##=O9~=r>(^6^E+~eK&Xm3s`$H2v^ZJt6tskgqthgVqxC8=;`>C|W^!jU)`!e& z0Vf6X;!mGZdaqb}@&4OPGf{cMFD@O3nX&13%$WD+&;|?2y+~Mdh8g!#1l`L*-XC?v zmZZ;idNt&!*h-H&Dfg6XFp(2B9Ve553rmZ%s;GHs+QOl6yAxi|u{Xsv>U(8d>Sv3B z11`|@c9$qJy~y@9^r$}%dZ<)LN$K^cp5rn5Gjn{x)FgMkq&&J#(K#bfZ*+op@8f!B z;F8wpNSSkGRkxpj8H||@&(FW9w;#N3yjF!}e$-3Qf;gN?8vp0TmoI6P>dVP7m-qfF z!^WUfo@kZx$UHJX!1D0Bgy7OhiEDcZks$DyESO8!)YsO1bi=lrjPHlT_8wo4WE(S_tEGPM7fS&V@nypeG_r1=3%yB|Bb7a7n{0t;M6T-B|yIj$(Olhu}vlQ$_d9?K(`f_yqK(1=-9=VgcK0>z^~4WAZm zghz?H!=ou6^WN(A0oQQ)^NX_wSNl%SruK*Giua?;HQnrcaqB8D6ftnS#d3DQTbH6# z>sw>5GWTO@k8)${g%k!Cord_&dcmy4x`d+MP=$O~qI~sxCmadllU3)fNwx-K^mtqyM zYcVJX-j48{Zy$*xdeKm$uBrPHKyp`;72w-f5~CNe074)!*XuYWx_TNd%Jk!tC9S^s z0+UnKmek-wE}uJjMVLmI%%ZvJ2p46TuLD@X`6CRUcZ6T2FrKmm(|O_LD;wDvGeaCr zALUbbs9OQ2qn#alMpf=UkkgFvuzjlYNU)e)Qc;=jSSTrOAJaVduM5*ViQvjW^CGU(wv#x<{0jf=Bp~g z`n?^@WDT*JE#1n?mY$F;&*_5QYt^OajMHCmDW*KxlRZX}s-@h1fn^4MUx72aHKK!x z{yYeJroDVdmwCQ21xmj1kuJRm0PSr+#u@Br-J+}ke9Y$GZ>MSl;npJ;0H`>UZ|7wG zM57sdTB@(!;o2wp&=uh>e68)9TbJhIdG68W?9*;hKa^dtk5M#PJg|0bI+C+q87nFd z^El{jlCeR$A8a{kOS{+!`*M~`gZ+>ac!FLTID#s>?k9gGuvv`LmDGx>(mlp~V8HLN zd3qX|Z2CL{Bka;-^uqrgy6Ay=4m9xyvPQ<%*&8Gb9Es7)KQP`I>QlUk=jSv{wm*qm zbGYEr>cn$0khB(Grs%xLHfO8uiCWr|UrlZ{?mCiv_zCC2_I{roZgvEG6?VFXYF|Rv z>4puwUFQpJZRoKt|6zrVCNRHuWckYmho&E^;Ys%5M>W@H^srcHYp0ARy#z8eZy2FX zM!?j!m7!L1MH@24K)8T7-H5!odOUJYR6+-i<6U7Hi`$CAH*WZ&PgH9b(zq(NJS@0f z(TQ=6u~YSjv&3hqApcWhIRHC4}yPQnUQ2d2btvIsY~(4IRCVBi}qY623*5YgwMVo z_Z5aCGe9(cNjJ1|oIF(@j(9%59xnc7HKK=lepRsJHTeQ%jlqP9@XoI5@m3ODd?jZepaY(|IPP^n(xE2)jh^qU@56e{ zmn*@F-bHxOjaFx$+xlFhAKQ0orx@J!+H@-35jpXi=I9t86Iy1h)RZ+llmr!B`j9DK zYXQ=vmMk2>icN5My%TkRTI*(}J(6-Ynt1z3nWarE^|YM(k7UI(i*DRq;%{|>9s_7# zAphf~NM!8GUoL`GK^A7~TVz0Wrw$cO2TqxACxxUa^l$%Ll+_DV%^rvoKyR5pE(aH; zI+)z+dnrl13#n!O?(-sMNtBj~nn&8Mn*`Dy6Do?X_uLHAEG_N0b5b0br?`w59?qX1 zydyw2*S$9UeFW(A*rN9)J}31fRT-**XXP$1ggfF2Odp|(>4JeRTFOS)NbRfL{aD^( z`7gE)i4lj{SJ&>kS|wL*#nl#yuBn$?&AkU;Wwe;xwZOVDVNlNt_~6fvfygQZXCnKq zov$T)8K89-iImvCS&wb#7}xMN)!JaY0GaTZ#9=le;aEeJ5@Gm9(+~PT8e{5TMxa!2 zy?De!=>9OSYr=&&ma_$(#J(xmLEZcH zOWEWB^5(&%wkPb)DSKFd>m#z2uEzdC;Hr4&&dfM`i?9_^zaHgE%XEl#b(b3E@;9xW z4G}gox2=te@}H^io2ufcn)LI_`@SL=4k=n1T$vu@aw(6;zkE=XK*XA;NM!u^79(Zr zLxMd+%E{`tpiO8YPS017?6EigK%**+#k6hNUy(vobMvi+)e7xrWGS6ipDU7fZFwH>WXu4+iL*cg2>A-SBXs4YAdCTuaY#k|^P)bddJ#VUF@YJ7Rc+7>Qev+T|lv37x;F^9Iaaj4STYY`O0=g48$E& zwM4h?Qd!B&qj0hW8mbx1)t7d4D}i%JWVEa1?BH7yzA3C zUcXL^P+M?mZodost4kH0QytQ%;J|Be1iPZ;l|5TNnK+}-#o%SQm^oGmk%w!hS%D{i zf!*Cyd~yBn-XP+v+B%Z1ub6))y6bM%o9o<;Bo1nT;g6pIET_oma%%!S`{oq7zA*de z!)7O2njpb6hWUFs)l+TJV!?M|d=A@}&0c1_22YdWbvNyb1)iyCgQ(qt$~rdJ`6MQ{rPP^-(jnb- zUHefftd40%-Wmwn+=^JUnc(C$k z+B>_j-sh>vwXL5>OAM{OPB)MAcflUNg*5sKZ}6D(e!FWvNl(}>NMg7TW3dP8tqio$ zOhL|F9*mn_N_1!EI4lIHKux^2DJK=2O_+UVhaVAw*EiWVTO{t6u#AS$fL#&9)#7@J z+#qj%pCa2B*L&+vQ(uibT0L^~x2^8->gNoQ2Lv}3;B9sngjjJ%<5q3^XQ6Pk{3w!@ zfwpNgviq72^vjo%NyilxYp|}=zC@oNmmE!L1#exQkdnv`;p*X?aDee~Bi+hle zK@j*sY`%RV$ z(h=4d>`OqXVw644(GCtjf8)z;Z#?UPatbIwC`DXtRtkWwJ%P5Q^`6C+r zc3=T!DRA^y!>CI6#&Oe6mggZ_@S>Tqj-`@s&$AD|0S>A9(g)&J&Rx9ei5{5x~W&@didM$0Js;F)Ao_>+8^ zD{CI1AX@sCK;3&CRYUKu$qWRnvAKt9i5*n_6>gX4`wJ(=B4A7G@JiG=@Nd#T%~mFp zZ`>!B-G+=WWaGKz%RnBD48wQj30G!ZdDK=&ogw=_Qc+)OIj4F)G%hCWmsub!?%W0Q zxj%F^>ZhswwQ%6U5fVt9>($1iv>B+r(xaF(SRMx$N{?c5mlf7pUKy0u@3hhH zj5(m0;MnLd#fp1#jTY#dRCT+A;%Ys-k*@0H#`%{d%?w~U(xN~dg z*p>4_z!|MV6ecTD=HI^J@_-09e$TP9lht&c6@7Z4-}u+lr1<40;J>X!Nbda>?Zei^ zDDo<0`L`b?aRvtL6Yy%7`7#1MVtls?e(Fqc9&p#zch~g*>pO2pdKoN^pRV~C*4xvJQo1@}%FBpnV#5+*=kl5VFrx5Q(J}jzpfOpYK2GEQ>wZhr{L3f4Y>?66Ly6bJ zL(O9Xh=xgrl@bu3ObgauPISo9I|U(HT)N zUFG-de#Vb?UEvaP5hKKvL^7Wn{#r-~>d6;hK z)`-b>n2rj~!}lHc)V-KPG|YQL4_5dN%&-|Egver~W)(!;bZVJL1>M#mJK31tP`9SSJn^ZOWticjTsV zFI~mie?tF><7wqYXGqdBK$=^S>ab|RXvt^FM1b}(JJ@LXkft7EYN9UyzoswsCUHBVVOsnqHI6*dd>G;DMRm6en$cj5jCBQqG6UJ;*8eT23fLG0^QF(HH%B}p)am`50o}2_u z0RJs>k1G1yzn{tc01Iluw$VSG(t3A=mYHbcY&WhM7oGkxy$~E`*C)q~fRyZA{SDcN z{HEi=>`OJ$JdH?o$O|4PmXphO(wvX{fcs*=Z{L1uL-kaHYn|JlLsteQz|6s%N2cKz z2}afhd*0pgGbx5T*v3%OW$jj<{{Yo;f1=iwZw63$(nU*n<7Gajj*Wu5p5O&gfWyN% zgq^d!ro~I(#yzm$;#)V5-@nCX)s%nwLXJ0q|1}8I~_s zn344bbzAUdZH~YCOJ|8JncoFDq!9E#!3#mHdn50+LKpb+V1(2c`JUyIrtLN0hN6`ZjWfU7Z7m%iDRF2`Y zxGa|OUPx9-`)2irmZ)bMY|&C4;V`Lpqv4KjoP{l2>EMh|<*Dm&U6uw~jWVW6i~89z+gR#j2!^=iTA7ju zFmjK)^(+UwvIM}tjH9JYI5dbNvzeXv^miSaG7o(Pv^t-^rXZLheS5AtHAyCFil7Os zHWx4dMzTA}anlz&X}@82kXJl*+2Dk2q%EbojxJ7=269JEuFK}Evl1wtb{+X}biMd` zO@v!y7m(_8>~4eFJ3!dncuu2mzd~s9=F&biwU{TGI^q#he0>hRO!S|HBQV_&eq!}qQ#iAC zXz#8EXJU_Y|JF%)cx{%I8yU*y&={5cVK5~1^pM%3e_N9?kdbyyfMz5!`+iC>AcVe( zQ{z4$lItWxUtvA$H-Q&%?;V}AAha5_Lgjm+BOuD|9)AJLP<+SFP7|OB*qIBmCrg{P zM#pb^dgI&0E*<+@xAQL!eY=u*RGxhj;UubySjd}&&IUeMY6dW92&mQ(zX)m?H-gm5 z-o-*QlH@BO_E9|I3(MC{jo~S;FY*OC*^1GAJ^j#nwsk*~S`Nd3#gXZ{Zu1NV2uixB z1v463F6pJH6u$^RanAQph8)2kt|a_KHVeA-PUYFUzXeu_yNFD#G#JI9PBop!2JWZ3 zT~Luq+xxbD*8*;mWTC4t#eWNm^W&b?R-v9*I|+(?*8Cpz<=_uoph&aTbKx4AS1LysFdMME@PZI_>SYd~rjJb@1;b_D#V9K81Vr5%*y z%}Mt?N8?Y8$@?)gjN^uAJ;^sflJD-ZNt_dvy`smpAHO|I5ga{xXmmakRAo@7p-7}z zma4SYgC(Dz3be29a;gUp&Y$@Y=b(({M%d@;jB$G(Cku*v)fCSK%xDf(c)&k#cpeWt z{k#`#Q#tS#lGS|@@t&~`+_hFE@Y7w18lgoBTPKI)APKvVF+alRH(tFV@M|Jz%6WTU zMv$KQGO!66t=-$}g^bS&;E-EemP2Smo@Vv^SZ}z+2Wi0EHGg~axlQ6vJs9bJ54;hy zFjxEBm9r{|ig@u0B3X~B)S`l;Sl1M&ikfs zvqner+M*WeTZcy*8qu^>6XU5S>QXq#2gPT@>n$KDT#B|6QU1@etF`81!VNNBck=PJkY?#WBkfEDU;Ek=@nrUx)u0z~bRo;ytYb z#;n|>%=wl{K7e)>>c`At8Cf_sn_n+(qup7v3pkzC#?7q^lv4pC9j;lr9e#_UN!#E3 zRG>(z7EG12OFgloFZ}e{da?CuLQ@wui!O7;20w<^}v_kdFjQ{|Nqa-(y!D%qcn zYlaw^x1FwB3XWa8j9%%D5vQ(E$TbR@0u41;T}S;@G+L*s5i!Px~yJ%{HeG4s+iww@8Qi5`AE zG8|Dp<=#~1>g#vjME|XZ@P#rzIII$ANjG(Wjs6tmGVZoU^Hup@yXL2m)&;)Ld>Tc@4w-9a43DNT21tQ73ON&&%7_Adlz>$&%BOaWK zN|$kUlABp@nqPt^xwWJBg4qy>Ln++8a!Tjb*5(XP`;Gjeh$L>4)H|M;YHkTW+!U!w z>$pEG8ZFQd%#ar}rR9@u@zI#FnfEk;BtGRauU42LhX-c~m<|FQ5|dsc-NS{>-39e^ z@ijHTenBkx@+U5n0Q5lH04eUTDEMBNVahw8FDA5rHG1FfH{>|JFPX5#5_mEztE}Tx z!wiSKY0#*gc;cV&vkE}2xHyM|&dZFR*TNxazE<3Rw6lmJJ7ugkTDqItgkcvnf=SZu zlCi4%b&?R-Nqs}rvtG&+2?x!JG5CHggig*#4c%wIKfYSje#wqE{^D(FcnDASyA$xuY@T2h%EH|w zeYn3L`?l%^D{k${tQqY(P2M3a#OI9j;z_o2&^4)3ed!-vC*U>_xcx=aIB%?N0l;-6 zmOC2l1YCr|qHKEaFi$EaLhd^3!d&j!944kli6Qa28#1P*Y9PlPU}uUu@O>U59sZ{B z`Y)e^3g-=3CF*m6^lS)sn{aorI6}!f%fmVO&iDw)kNjp)Z&XtH=3KQLzkCi!7;RK% zV&PE$Z%V9AS$)l>3+o`IX+~whYp(PyH5qv}9Th*CrTaI7(1f%(bkpC7oofHvsP8I2 z-57y01~!!wGTK$Un-MMx*BuKd&j-L6RClHki|+Hcyp8pX83*5^Hs_r47iK5 z?mPFpLHC{R!Q;g;_F6o<7)u+)0D|q~Lb;kgSZ9&r^(k-@wC}HXJioVm=H=Nht@RR| z=&pGamILdQ??vW^Tq%EKrl{*0GYhwXNGnlfOi-YyT2as|KVxKg-M@s? zoT$of9Am);(&3w*=QzF)mkczf{iI*Cp^k^3&U0N=Qpfc#&Hf1oR!pP63Iv?C*e<^u z#0=PIc_uOPeOFxnk4Jm|aN<_Sxxe#$9_?dZzK)c}jqLs~^Gjtv5VTRW{n@x(HB7$q z^40q5^ye_i(8M^k_sg2eO7%^CD(y2O=KSeNhL*!IPYb^ywMDHBS@0=rk2%VH~mtQnGxA}|NpQB#rQ~7orPS0{ct~f z79UrE?(v6kGnk^Y@)~-$R(WgqwOTr|L2s`v&@<<^<91OimzUeE5(zKmxb^7>(dKFeunzVu zXK2&*Uj=4k%Ni0!#^Vbx7O96dX#2GJ`9qg8fZeF`@1g~;?H#I$t8#0<&Z`N|D2sl} zO_Jt}yD;{Hq+r>u_Kr3T8o4x$zaq^@B2TzrrYW#Cq(Hkm#AKkGbcjm9HT|?W$rZXF z0)5U+cKkIkU*->x2$>`ycifF+&Fq}}h?5)4*lwu0qXyjnrqk6*UQDVJV>MkCdFO!c z;+Yic%W3w-+}8H_$C=e6>1(f(IB6S-RUslQh?Gz*BpB`4RT5RXVQC!XJ?OMap*RB! z1xIr2F%KJ~D0by4KX1YOfPu3uFQy>sRlx^`1SraA7@09aI>z)V4M!Kd3|fx|DXhFs0i9;%dexH?S6Iq{y@+ z38Z}k1T?&ApPwJzu`E2kaMQsCH!8yFCHqJ5=o*di~J-*mWcsuzK^$=mGk09gMPP z_;u4(2Rh=7&*IBdKcaYhgS-RUCHo2zs1`gkuFuT}1%rSKI(UXfw^tn>UJZ;KIiVHN z=fpnAuDh(pIe3QygsIED(_mzGNh1O9g%W3DymqV+s_MnXsi{O;I?}-;Ofnpc)(T`X zDnDK-K`YJLZ8OVw%u!O{;s}G!!p~`fxVpYB6+VQ!3;7okw~qhAWnnvqu$hLh_;<@n z%Y~j94$OLKcGp62si$5o7@UKgTkP|C%&%lkf>~e2?5V93&fBn>kf!3tNpHQQJBiNu zN#3D_#)B<5w_r4JLACu5a3{nw0T`PwL?!&;VJG!cdI_&rGafZxA&%YXsIs=|SsY&P zehVJ~CUTHonHOQ?h3?fty2}^DK_ZI)YUc2ysqo@p?Nph&s+kn*_YT>^H`jl!jy$iD ztarxzwd8m0ac2V#tt)>jRG>U={)8tA(4S*W@}J&{u}@I~46+-XG|x!H+1o0%t2Zy( zWQ=ie9TPD+d5s2t5#%6~A|4W&{;neOcX?KRmi5_uGB(g@l>D7^qowz@k_1Dy)ov1^ z5FM45VkrZ>VL0fE90Igs$+zDHTozdE`kzG-R!N+~SvwP(u4U$Ay}mcuo#pH6C3ZBXA2BvUYjw50>JRMO?GmDlGU3F1YKDl`K%I(Y$ut=h#$ zbIY?DuzaH)KFCs@2V?zn zWT@}0z!y4hCDV$_4RH(;(Un47K~WQWPT+*`7DlhHC)n?_jHAFgb9?^^|Gm$ltfvlR zCK%r}jp@cK1@RRoE5^q@sS}h(Z2BO_xhkwG8JHM{F0CW+WzV*}pet_Hkf;)mz`Ik@DmKA(NB?tlakYDD_f@hJpvX_MVqX&UP!9Eo@))>^>O@ zpz*#u#Q)071Mcxt+ku%TooADr*i&N)G!<=REXi=Irw)~gEAM%?_ISw{u@H}r!=1PJ zpAmyJKoNb*OCJ=hvE} znHgZWNRgt0*Gk)#uDmlbou5e~^X=03l5}ZPw@)cS| zr-1d81quPMv7>sca`Lp^e=q1?LYTwihiJ`n+Zp6$119%!L@dWPm`1;FNU?MLlFk3A zzaO)A(D;}0{O~_*c(X!_lWNGj^Lm*6k})A2 zT^6@Ov4R1>eJDm4s9Nahb@#i095@^RD~viOrspV@obtEsox+*PpFYX?S8if8C!yav zCfnOZ(j?!qA3tk^ZmVvi>QNiM*!7*|VbHv>ohG8Mjnf-!|f)?NXd*&e@y}doH z8o6G3M}Mywlo7$v5I`vd7K(PvrZeRW=*vDB?cyj^sOWR`3N47{6~L{Q3!Q$*=02`_ zpD++)tWNNcW)QXfKIOV~e?&1Ns8l~W@OGMp_GQ`BIBy^xzDm6?e*7B4^wW4r4?{XR zFj?Fg>=y)vGm@rN5pRm`C&}t^?#}D{o%^u{!Ek;Af7R;iJR%Ho{^Wj* z_Q1y>t;~n9$H{cA(@dclJXV=ybV;qF;Ql zSrw2c9}VRh%ITgpJLS7_fB4q7viYMu4RI){AV6z9f*zw|HT`SgZ0~@yuVH8+jASC~ zdNi+&l5m$Cwl*`kywf)3<|TOg;kd#eWVdgsXoSeNooU%%RuZwYr71h^I1~W(Xs0Vb zK@l@dxH}Pt*9V6_;h|AS^9=RZ7%}hGUR8$jwESqgWJDNnbyMB>QWNYqq9|l@Q#4I( zzQ?pV@FzNTZUDT+@^1?|!&Yc(Yaw%%Iko-cZ+rR9!q}jp5Rd#%hYR``cCMz4X;1?t zoPQ(Q`dM=-HLm}w`lG*P^unMT|7ADJ8>A+{OFw+`>6?6?ha1TJ18P?;%3Sre%{ed>UO&{u|4IL(^>0~Uc(+E&WUnQ&v-qY(r}Y=_N+D3#_q~X=U;ypyFX1@sIHYb z?l&CJ;B2+Tvv0)1)_HIVq!JB@ygt}&DV*q9@O*}0@U@F>F=2OIWB)5RkbvAduYbt1f3hdh-`2VR3N~wkh8y>P{*1OLsq9J|+o@5V3 zv%k7cWWsVcOqBbVduhy4?AP!^T%84??%4npp_?y0y^6_N7JB7LSnN#$I1tUNsOHeZ zI#6I)BL=R>(oG9be9LhGlVp?JqGwZ{RNB#1qy_!O^tz@e$_CrphlpdWx|GeeLomix zHbX_FnceOd%NkIaH1te@un;Rfu$e!A>-fbfrgAvwG-b|^8A@E z5t*nu34SQ=*^WE@D!KxZM?4Vp?8NI&!GM_h1J&)oSnKm?aIA!RZ60)C{2ckR{R=xV zE6OjsaX9!+biGd<_|xg6BAgo4)f?dnp}}q@2;_)gO)DU7H_*UaoHX&3A+nE&7zQxd zAt599*^42RT0pA?C?;g{na7}Ss8jBe|>RB6Pn<19w;2w3-uT}UtQJ7=7=!wdst$mGM@m^9TF zz1V@WQlYZiibSf5tFS!R!d{7jZ^Y%Kx-yP6FplKHgD$CenUKMpS9;hHp{%esWb`D^4%6z?0nYasyppHoq^dA&PU{*$X zT3z_=i}qdV!OX~mbihlMH%Z6L5|u>(p7>?iR~3Jzb<)=E<|3?_KWp7UGWL$`&DGx~ z+BO9>y=o@;$*KAc(>V>?tm3T2EM+ z7Av_)Q{O$TGZ4BQeG4)*wbs$q{f}WKbMLXyT`NmqhP1QlY-dTfS-g%6@xc%+Vv9E9 z{Ar?#8hW}$$z?>pOBg!+8eMlp(VC>tU6ia}pGZVDTP4I;0;pxxF^!H(leZ*GWtQ^>1tan(E&YCqL(eBW67oz;yo3m*4a`6DMNPlf|IWX0B zVGXEfzF&*ie$iD)6;UJsus)+M5B-|mdZfXK+ib}yV{OSo0Jbq54b=$dG;+RnC}Sx42_l7CL-AJGHm=J$B| z743*}y?i$Cabz=JCpg*Wam9j$3Ca9@U;-*0vNoT**=jZ%V7>H4d=l+04JjMqzSo>O zpg+mnou;b0qrh(~l8IYpaWXnajtv#r_lr8XIZTCHn`UAsKKEZ=gj|&N)NiXL`702j z#D^*@5)PVXS0!0Tb?XGx5)QQd$wLwvK$+qjlHT9(5a4@r@n}+OLtHHJ@qq{lJD0?X}#lN>M>d=8q zUlBm~fW~WB#BL|I%r40tCVSI*mfYITh1hyosqH`nVpUo8p?lV3 zee+UcefdvjHaW%&&(WbY7|&25^ac!GBy5#oG?v{eDcAW5DK7H2OGbIF8qZW>FxR zDZf{)w60I08D%NT3{zE63TZT-zPsgh?e<$%BS%_Oy37ly`SPx#m(GBApFr8mIf_HoPA(HKH* zL~cm*RZJt*Ansk)N%%LX^?>t+(yWY$q}oXv#XolV#L^Dy;J{;LXrbo)4n^ROs5NyX z0VhrJRiW~sK=%$8cgJ%8>)uv$ZR;w?Q3fo91Y+fY_#ttZZi@`TE;sfa%pT5Jem}l8 zGtaJ{>hE2PpJ?OJh6i5J60-Frea7e@ZGP4kMRjfK5r!kW{;3D%duE0zMJ5bl^P!x(Xs< zr@N2{Ei9P4CRP}<9B7XA<5m9$x`EFeZ+LChcv);&xcD+D@Wa9Fj_d0%Pnf5dWRALK z7p$$xc#?i1=JO+By{)NH-9shokMWxE;+>aDf-JIKD40w1v--b!U632nv6=<-+r<0; zhd0enC>A&0_;#4D%%~=o=iv_5-4T!42-ubOoC4r0k^7?gryaI^}Z+j7M?4s z5;YHMuv)wh;$FIkfuq!*Sp$g2#kTbUv$-7Ar#QxoStk^-yi-L0 zSk1F;G-^Md^#1tJIA%&kDXuaM0ql}(XpIn(S;7Mp#nha`!rH&V{pQiD8-!t|zV`Iv zCa>7LT?qm`UZo7bKbiJC>(Z($so8Jn7&!0*dz6m^$=T2A_822YiwL07a1G7Es^x3&h4Smp~bvzcgjbYB@k4+U9InP<#hXsij zD}ypZ@gJw&yDS@?zrH5Sa+Pz!3>22?v(O$A)0tquqp>b3rW~Mu1*b)lcV&o|toeWE zj&(CWH-EXZ7ZH-icjQUg)Hr6}PFYcHst}c-(Q`1x8UyG2($2xZpPr3ws+OZd95|6} zzuXb#!4>EXhpR<<%bGZ44*eh{TxfUXuqbCg`p4N_=ab!y{WW@#hU<5m=`fB>*Qbp$ zRFl3b#Er^0h7>1e3830NIlr^ffp75LF$kAzxJqhPXU_+&7JziTyLd3(*W)w#Oz!p# z(I4zsB{jBT{Yzw0Y+%G4W$JsJ^%#Zps={E=4%oham@i{egnwa=W*y__>u$VUBB5SN z9rG%4cez*EXXbshMb+>YB^Fc^f_y^Ubi!B%fEd;S&iDVB`4Co zg6(vyl_tzzH9ftkg^Z*(DUVO+(LU9gb1Ak=w|c^%UOU_9`>H9bxxew@&-^|mTwZKf zS4uSs?P;e7bswyeSYZj;VqVV(IO{uSrNZM-r>XW7KS1ZM7r`2I^e0R+ z@~NveoC%QZfZ7x;gF3In5fbU;nh5`c`^9yl|g|1udfQCIvBLY*#q*W+7vnHE`+9{1v4?*AsFDxnEt_ zb?1dNdhCw}(ZkQquj_;E|P@U z4KTTl2kD``B6F)<_UjQ7EBp-bE)jVASr@N4gxH!N32B-uI3=*cvl z`f09l`KtdR*e(`KNI=Lxo+E!X9_aEZK3-Q2+tE7*T;1wN+lr@y3LX~Q@UeXNnwG}y zCe5rEl0V%0SSB&Zen09}-Ql`aZAk8zekunKx+&hB`D2^XWav1;_&7JjOl$+(oCHg;C=?) zZ^g&nw=#*-0e)%o2dtmlJQam;=U0mFml(QwiaTpBS-Mw!jTF~!_tNWQV70a-q z$t>19ZU{T$G+^XLxjzHYfIs*gTBLiI#t}SKnqT|Hu>3mUUSH8M2P@He&>pi0dZLW& z&0LSkN#~TJbXYfpUJ6)FqHc z^@{}(J(H!$gq|$#d#n!FYqQ;3ZnHfUTLci3&c3LkL;rk0J4#wl?7(j&XX%7FX;bXC zH@?rNuRe1zNwS)I%4sI?-5bq*ZN>Jod=V{otvxj9!nT3|#pVDI;!)myk-cMkMt?{C z#Y=sm_~dgRgEfE4tH^Ke6h439)s#Pzy#^0vNFE>SK8x-YA*`DRx<@~T_b_Us;acu= zaNu5nOlX9P{bUH@Jfge2i~7UvT{H(RW5%6t2qLv&_!21qSu~S$m0A_EfraLQzw~v= zA78y#!!Msd(Q9sNQ$TKqO;r3|#AjE(k(#_7ky_$Yh3(BKro)``KP!<+zvE89q6%+d zyTV$UNXYKZ_p}CyIbPKbV~}r-DL7(--l8srwF?B5FR2Rou(mE zHTLHAq%}G(iQGBTHwY1$Cr;O~=(>*rmq`!TmE=7eQ;Jsx!Bj8!xstB?k<V_ zi1)DGh`+f+52R*hr>K}j+R~7&`W1!_<>@E&&^*o+rzax$7)BxKrOcd%jaD3%mSOKb zJr0$f-kX6n_v7O+9A=h9$%Se2iI=cRBx|LLtL5=S)pAzJNljJGPNtr5zy~>x@4G;u zEb%pE#pp!a2PaQcdrD?i=MwWF@5`YjFWJ|cb@-EO)$e;{bs0 zPy?yQ`0~~FAfYcvH-z(Q4k)7Es)lBmQoW zz|92ZXEdl1)V}cI;q6A?38cWad!IOo?Ydqf)WxHH2ko1Q7X0f-oBfJYce7GM_{ZOz znUtnwAJSTS0z;55(xo9;-V*z4&5d-vs2E+#o#(tLrHwp26zh$i? z{GZcHZ*R)G9?Km)C(aSK823V6DkPG*zeB zeZVG!gOLlrK*t$!GJHSh?{2+#7$AMyd3^DsJ}4zWLr`^hFb)K@tRzY%NmYD+`>f@bwnUwWrIlj z%lDB6*Ue3SJj+w2^(a*0G z&4Un3#m(DtAwY+gt5AC%(|ax>2^`YI)piQqN9PPdGrFcQ`3W5OfdUEtt$j`krKk21 zV6dZBtA3@aX7F)A84y`+YwaN5p`zSPkbC25fG72xU)d$D+Rr0i*W-<256|QlFOm(d zZ-gu@pNpt9a;;;<984JqEfYJ0CTh>@M=RPML*>%V+V?jF*i|d7X)!B0fE)llUu)#i zeYh6&N^`uW6)0l@ZQ@df?<`|fiR&z)sE;if&ld_s$rV;5A7%0=)?Yd8rr!KGh~@@6 zG-RGAF7j=vISb?C&j2uh_2O++7^HN0js3Q|uckm2BcY0}W(ex4jFh03mxbZ@8(GtI!zm}H)5ON!D~>@Nu( z2)QO(4CKoi?laMIHRE(Sd=ETLqc|os$ku$h zx2kJ&Qdqr{FRWj@*8EGk0TX9Q4L6lZE1>PB-6yHh4+#2XgnQ^U1I?lCFS!zj7 zU}?Nte4YHKihH@TM(fW%UclD{Dvl3^+-y72sJu~@zAdD7=QNLOtyDXf zgq#=URB5g@y!(zC4xM#!cF5qy-z22`5*R=pG%U6y!-?`eFZ(xBD-GskMk}q-7=gwE z-#qwaI0Dl^VmCYER|K8duM;Xj1#cOi-R7h`#X}=OOr~^F}(PR`-;lm0EEUn zVIt8H8y;-+fqvpP!YHdc zH55zf!uuDoV!{m*M`lO5Uv>PIM~qzWE+cIi)A}~E!{moDH=(C zUvOXJICr9dZT-V%-_fl{pJ#zjuMOqh0b(U2@RHxYTXLagMVt4pWgCoOd*boE;YYqM zfZL)vTB1 zgK_p^Qd4h}?NddQc!J$+W%<2w_g?@Lx+@CDVzfXNciV#E;W0c#?3dzLgPKAH7oD#= zJJXAYBBWaIkAG6v)$7QfVht^MNg<1(Pq7B4co*jvb=K%E9tGl)%T-4`e6D1`b=)b> zB64j2x65$r#Yy}Qd@xm<=BI#4PPb_RE3&TOV-l0@S{ zXG11P<`SPREjT!*p9uP~opUQmQ>S;qV7Q3$2h)ypq2ToEpIaJgiAElN^b^|DLbDqL zPt``4^T%^VTXAY|UW|@NkSjqIOIFZ26J+Vks<6b>WF6Lu{HEr0n!<3tLScD#1zlWsUXYIt(|2)!f zVF(Yq4;=ST29_cPWjue&=d7Z# z#;$Z`fJOt$>K8>&13&AZvJ1M&R0L3ux=|jns;>k%dr;zNck5QVcwG8gy;aVhQnuZv zSfD!MzfXx$GhAEBflRL&4mZ}Q==!2)cQ=tuQ*3fn;T=f%F?lez;tF&NiXPf{Bo*8A zTuZf~_#7_Gx~9J_l>Iz;=ROihTlYT765pfUGu2#zV`H~@ROM!u$@FwW-7H=M)Ge;COVsTl*xLF6ve^Z&Z$siNW3f`3tL)V-K)7fNRL zJtjQ;j^y+@pmu=z*=Fy|zVVA!(vTJ$9U->`gR>AnTM?lQA-CWzih%Fl)P2zVa%2r} z>wwkP-fjK;xc=d~wyW#Y)fdRVgK=e+HTTxG4vyYL?(Ne`i=v*EK6qlZmsW*cA9i@? zYZ;t*V!QfP)pj|KoVec?z)IkvwL?_}b*kDLOpFCNGxX>{J+FnOVJH=wv?55C)}{yd z)>!s2{Y+MoP)4XZfno1y-9lRV7+TN}L~4ke`7V`z98R`Jy4(11M-%yvWz|EywuKA_ z-oM08d7(q_Y{aaz${IN2pesfT_+X}8wA(UR!8qR|m zCltE#&~Ih~qv8ZNQf?C)X&@tYKG0Cx7aLV4Bb7s;fXX9ULTJg*%us+C_uAG%dkaRx zZr)_AJACj{tIzBMHaUavcZ!SR3*_?T_M7Ast?VxPDGOiLj&u6t+5;5JAB<1K+R5VK z!7pqvu0KkiGmypRgC4>|{07cZpU_ItE3$gN>!)YUL1v_CZn>SglK4kMgiVXxc2{p-3!w|!6wjbv+lhooyf&94)Z;iJxx}ul@6i0 zFi(L>9M^yk4$wiHi`O1XEL)w`*~X z6NP!8wVj!jps~H6xjOI7rXT${kwgh#Fhl)`vZ5GQ8(8V>vE? zvs>K|L!s-f(#d-qXVH$KQ(9|<_;Hm5y6+wP@s{?f1TNeawG!>;uYR_VjAb>nFT5ng z3P8dIzj!ErRcKoS#%J0Kz7qMogKsW$I?yq; zN7LD)AiQ4Bam8^33MS+{i4XcZ{;zv3Yf+;cU8hq>?RBQOY?2{j$SBQFjpMCwP-=_8 z1m6osG+0S3JBgZ}h4L-su?$Zl8 z@j)iLB^sZ>|2*I36M)dn@{4QQ%uOc%#Z+Z7L&69hDfktMv&JeIr7&26`u4FIB0KjD zs&wYlG~cN3Sue}CU-?(4;1k<{SxYi@jWl`?XIdo#)npI)A(m7Z-B#pEH}XZa83!e8dA$)K)o*dfzX2Oro+lfvfg zh)!K6?ae;`X-!7-rkM@%uI_lNo>RE?^UlUIDX-dM==&kuYPE&6D$Mm>1U3=k{?Z;R zjc&&s6R3+_#YFo%y&!MyX_$DAM92?Z7x3nevpQJbuW1DmQvZY+L|uzcLs3H$_4!G~ zsi-fh#UK>iQW>>oi74k^L*8y6E${gcih0Af2oBXOA3pA5)Pt`AQJN3wmT*erp_|T& zYIj1v=&^vDbXM4z?&Nb&M72AKpj)%Cv*J@L|5@SBfDF;g;za75s1q1xWF0j_)e$Z3 zivMpbc3bu(wpOk8lCDC?y(paI#v6fxr^j@n7bGl757iRwsW!{Th4AM({}M+jkJlSY z_vA8>#ZEu+QuS8lf8O+J96a?zI}U!@UGL(JJMYG@m#2~c2P{9A<+g6m1P@R7mGZ;4D@S;f*co~)vtUWxPOMMRK35GQnx~4Q_X`#i8DyI8C*_w#> zdyX}@YcoIm8Yrjg&bJgBjBCa6V8qhr8+F%1>U=2k%VN7p%R+GMGhV8Q*hJ$M!?( zAfWpsY{D16^`xs{@vVVP>%bp|%}Ogb1CpHC(4mj1AlJ1!3vOn9F_T0h}(Y zl{;V3iq3RaTS9aD>?`7=9jQl^A-Ojvrm_SVpmugKsr;@_3XAl7(=_{=6r1HfW19w^ zp_wY=Dyt;E^P57=W6~ms1^B&ZPVna*BMJU`kXXt~xqRP^#Yk`zrNJC(h%qd>jRd1( zQfocv;Ox-A=&rYgYB0K$fT>NREwS;Bq0@5I_)${FH`8l$g;ij1#~gT%pYgM}=bV=8 z0^A5vw6|(l=~(I)Ojp1T1%KR6M9(pqMvuUci+kJwxER)lu5#&L1R{LpMb65XRbVg* zIehpKqD(IULp<3k&ly$ub8jYGlqqtP-=I^_VhlR2bf){|xyQZTKT_nQq zW=^v$K#g-^HO{f;tg9_2|7qIjVGJabj!XohRQ3lA9+bc+&uPX8YEq8-RJ6f>nRtet zSKkCn9-mID5o`pVjgOwkpZ}%9l~`i!pXO}MzK#Wx4V|anHTxI+`qLMFywn<9j~-vY zg->&i256j#O#W-DYd+Xo4ev0Cn)ILNUlTcxvDEr(x2ga8>uZ@7WLk;5JM!I8%?;a! ziqmwjgz>PwImBhOoKwq>+YXbjypg04R=r1ta^hwLq1YF!RCAFdxQ1{}4+h{{5^-OW zF@mnJwN$Xp2S)fv$XP1z^GnMt2hBVijnR!gM+b8ria%{?vdJZBC9yI>Ld4nn5vawF^`1Cq&$`A#`6e@ zQE5Kqg`5HCEt)lR)Y#+kH4d6hE$$xMO9CZ7#ZVX+K>=O%iEx{I&+}6P!Dlt9BgJy@ z-xs(^zs-j~tbI0K@xHnm?lm53eRU0?shLljHY%LjiL0fItD3wBS#854GGsmp_yP~2 zkaA_8b)Ke(!Xm$tRB|XD*$BWi3%nO&?1W`C8Vz<0*8@CaDIu?i1bz(>&)0P3V8s-B z54os%y#zE@p$M)dw**4)79b`FxEbHLae030yTy*W*+BS7aJp{A9E5Smjv#Qx|7pie z?V%j&g!p-8eq?z~?W%A7rIc1`VF_r@LbH>~X|wi%Q5%mQK|&2l)%?JS&Q+51*BQIO*cBlfjv}g%ZFFqf5f(#HzCLD| zSt4atkI>ehqAtFUncOMN@rr6En(rsdhl}7HKX|sM z0|_PY{VU5td>DqsUF%?hPaV1@54`^WslFOJC4Wt@M*OfGk(5Yegd)0FXba-u(iBH! z_*!E5LR$_Sy8YMmzdhxUrzT(i{$h1w5;eBwe*z2ad6judm zf-8oM&ERm&!%P`O{&gZKh{9s;uXzVhz$fv~6v|}0#$0%LB7t_;bB1K$%X5mBcb{+b zWJ8r3R+S`X^7Q|-U`F!so|X09-UPrH4Gi>^nm$*4>`xHk%7{(xV1E1YFmCiro?%YF z{K}j)#GU`Uwh4A16N-BqC0=2T+TVD};o9#~>?0yG_u{{B*t*pdQ)9nhh00{gpx_hG zq~_0HDU{fw>^5rt5Op-?de}Qa;O#2pY4Bso$Exi^gdi-K>WP00HFXd6->K%gN*`(@ z4tM>7Q+M=gc`SPB{!ZUW_(mT2DAr-77!O};=73?-)6?rc;ZIlY;?enjdT5KTeARLu|>xi}s z8?eUK$!nz1^1qRx$ar8~V=sTY6MAFyNj0+R8_7lKga<%;=*u;3Zy{Du9cR~N9 zF}s~|U%Jf^AA8~vWh{F2Pr(AFL zWW}H9p)rZMX+jUo$|b_q`&A0vW|6w>C#vy#xH}D;2Ohd%frH{JRDp#CpIHn2Zzde5 zcogoubfr?tk{y*y*d8VVFV6kFP?F!rY~a^9B4fL_4n)PdqTkA@2a(j_W07X3GQSyUS{vhwGwM#i!51_JyVH zZjS>lgCY%fSe7$Yx#K^wv8K1{%YcXMwbZ~l(MBfp1XvnHF93?$`P=) zsdOX~Sk9~k(G&#mj4JyQ4uoG@&dvRKoeG@OSp^Q~diq<8Zx*9*bC+Vi|LXoKxWP)F zCu*ABg5h($6Iz0Fra^Nr+Gq6HTlANsJJov38dPP%M4ODFF7uh4X&0LarLMQX+zph2 zj^o75=tD)gFKK!d?Q-aL7`Du&H2@}2AIvwad_C$NXI+drYurqq|M`4DNdmsp<(cB- zx6?1@M;~AIw6dD^(){d@^@S_4Nrz@>>~pDy+((^W|4M8>>^})=i&EJ5L_L?qyXV)7 zj-=()Dsr^kih$N7GY0!fBA}pqin}>}yA?Ub9?e}cTr535GprAx6^!Xh$|agVTCc$w zbGcU9K@?eDd+~=8MB_o%|7$Z)Bv^^VEPh_e?B*V7xhSNQc+%rR{#z#Je0P9upNp632TP0XW} z`91bMZox}LX;%tK@7DW6)0WwAxewC@u=9LE$=vaWe5Km#yucKga*uD+{9R7PfGea= z`vsUhNd0H;h<`$3$!K=nHJxK`M0o}0g&4g5Wk${9WIk`ae{G4rX4}yDc|_Y24j`zy zW`5ZcR>DA|b&gQ!b_e{JB!cHNb0UblRq}unpH$!@F4y>XfVvwIlM^yBsl=`FPT7UXV1UIscFdwU9F8P9jw@l;8cI9$U5nJ3rL_@p}bH@LL z2V-+kpWNt*Mn0auJHu)G%PjE2-H0>~A~knd=*`HhEMG-P>6f3j-y~AzIob-=^TE?5$=2=tF>5==%HPFD9hi@p_0^osIBNB9O=E{=)SbI z7e~)!U0)USE6u+@lR(ojqhwvFXQTUBmYT@*h`Q)~Rej_VFslvBM$+&FU@ROSV$ zkm4X-kOh7hz&Ibx{Y$7GY7KEqnEqtEf6#15pAvCqrCH(w3WFboqj;aXg`~aobhau2{|=l`!Vc?xltA_GjB2W4P) zY0ZPy=0=^5mr$Kg3^lC*$kHA4#f8U5N9df*`{R9flq2X~Yo`CJQWA{oC)n3>9Dn0yjbbC5KC0dFLDffygS&)WBE$l zqt~;v@2TFcnSZ=v#yzr=v|R9M-WtXsGsc0djKjE6&~?U%K^m~~4xf1wE-T`QyCzlF zMa%Bp#ra=ItefK=E?9;R$PSIpx(_~sTpQS<&hd(C@DE%O6lcDD{%ex9Qo{M732l6THbn+ zT($Nv$MI?lqoy7SoLNZmMQZ*xRRL9&gj>lSdIv@>QGt${3Aan_85Yyp`pk%$2M?ye zzi+FlK*4~XmJ7CFD~&fn4c0iFp$=I4fCk#;AwYt61P{{=1AD?|DbuN9WMky71LsbH zdt#=eG0R;uWvOrRJRK97KDT>R(2$5jj!1?_5)=W+Sy4RX$Rmic9Qs2OVzP;&lMAfy zOhJiS<||JC*5@OT*YP4VZ%U;z^~xu*04>sw{;YD7!GnSMGC}zbFz<|aa_!Jg52s)F z1ud;?Eq_?LIQ8d$a;2*wtMr3=MxNwLS{UD^asA0@E4EQ_yv%t7z4N)i$`%7rZTfoP z8)N;4QE@Y7vQ`-I)3b$QUO=Bye^4ASIawb*d3u|(#oOpgW}OB6D?-6&4M~OlM?LO4 zA^EINnmd#b!UKuYH$XFm0;Ay*%eNc?Sq7xX7SlPa^`_P~ze1hSd zwI#pDxCyRScCN2qg&pXF^BY&%lNCIT`v0>DkH|7JP`jgh!P0Db7>}1PE^ZO4Db~@VklE|4B&H3c2U*R_=P~r)# z%cRjKzt~l*it|gnW7GF8Yq%H=RTwU9af(@Jzr|^IM^%hV^Z+b$8qMK9nu0L2_rNRHEB2rHU%U;Zi zzjZpz0(<9kMxIJUp1#|10JH*Ht~dOPECyd8cQf;acYp;b(pmn7D!?%@@2}XZ7F4)S zQJ?gSJl7lWkk1yu3mxihOJrFf#-NPBz_9h_0YigTE1I%4WaH;A*x!43?^v@BGbwa@ zjKLmdnSu{XAHkoVs;QU^I?YHGn zie$8jR6sJl5JHc*4*(f-9#71HLUS+F(LHJZc^p@B_LVJ}j z{1}9aZ}qf<+bp-pc&l1fr zi~-L`lobJvE`~etTZ{Pl?Q>lux=Uw{)+O9z*|Kva4y~QoEjm`1)3MuS>ji){xVARx zc8S)Obg`TCNBaDWGFreBUIl^h@eu1P>l3DjQtu_RRHEdEQlB5Dmie_aFGqaJNTtSs z^<)g0O*yzuCJ4D0N;NbK&n%ACsKLHzIF9k-mybzdhj^@ZL`&ut3|9 zu$+y=hbHHQWSVgtXHE!yveeN&iaFl0wWPKe)N}&Oh$jl*dK+M{c&(JeVfMui5c(%F%S`d`bR(_BoypaaaET?cA^(}!~x8qSxTZ$^4g z>EHTXgkrn?S4mI1nM$O+W^rB{ytv~wY0lLWy}V^F=#Fka&)ICvFHO`riyY~e`9-;R zIYK{RgCl)gGi|(zlWX4JdFgI;!BbLOnClqwViHzMp6h=+=!Z*ps)wu|8J*RsESdaqge>DGs3n!_r z?j?TgEb zrrO46pwbQ3f9OXP{Y4g5WTB4KZI0Mq#qLBlP~z%0(d=yrCg&JydVbh&`|K(`8eabo z-V&W+au*^}3Ge~!6_D*(_P@IWt-=-?;hYK?`fxSh6#nC0E}wqm)?EF+X7%~T36KT{ zaL0ps2<$=kkg8j^vefmE-00W8LswqS5>Lx4b;j=Ti-GunX>;z}PQwEf2VXjQbnWC` zo46*n)k)C9Jm<_|=j`K@5}L&D=&|RS4)#`=;dM2wg*k3~@!yOt?t%d9;L;ks^`(V$ zHeVezEm`!&xTNO8Q@1#p>EUV!crdz5xvYa9N@$Bzp%bo{O=a{!;c(dH-$@c|W|=c$ zEWU0wXw27_B#7j^ZzX1GXEsUM^Yd)0dJexs*S8y3dXbhB6oDgyK%(-nDfR zUh{AjR|oIc#QXqBk7kRLd?xd#{kJ0#We+88GahQ2L9V1dol9f9eB#QeVJupYKXJ!a z*tNDTp$2@Iug&f7r)F5k*>(3`KNQKR)upcKZ|6(b+&&A!R@14J(=QVKq)8gU(H?ty zxZ7Xm5pvZ~r;R3RHGC8{Cw zRa#IT);o$07F|KZ-9y&L5~rQ`0-XIs4vjkxb|S#Cwz&)Kj8(rY6Cqk|@nh(r&EUpN zj|igoZb}H(!=VR@M@C8?;ruTJF6+(9P!{IFlO$fQ3v@taSZZrcIDYf6QH?=XLmZKs zF_#TiV-uigrhG0(kwN9g5)OLea|EpLNE}v!e^pKzhd$-`&L?hwo!&G%S|kbi_9}^@ zjf-0t{KVJ(4kgW38wyWMd@%|gpR>@O>NCHu? z2XeDQDNzQ|2*QXTE5t-g4(=01XSy6kl`YR2Rz}O8GYsC)->4aH$^NUKd!k?x-YhmK z`z|%%e6!(wsg1X4yZW%DX!H!*-aN(jG;<37dvjXS)zzu@*ZpI0H4v7#*$TStx_yIN zNL>2}0UvzOOY1GaU^nr4;!Zgxf;EHSPlk|=XB2xzOYW5fXXL0Dfs+=Wb^4DjqRkKj z3d6*extccNlMjTi$&Gg1u933FXI$f%VV zG;>wMDhm~;DOK$`ChFiOd>5Kz6yK5YVd9s+)nltpR&E!z$?MFMfU;}xaAj)`zR$~v z29?6wveT%$$EQTvhu(po|Jqn1TI^p)W}|L28P-s>4#d1Eg*UvefX<|O)UB!^+lUjw z)3rE@3uA&~AGYczvp7N#;<{a zH|atV*B|R8%BrUxcJi(v6<`y~)76l7r&}W}%}=Us3@H;f>3xcyGjoJPBgvRBYni8$ zcyi?18n4VCE$48x4R4Uu_aTII)KbaVc%hu{scz>1v&vltrm8K55?|&|TDJWwb2j

uQPu* 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

J4al-^nCak$y(f16STYNU&ln*XJft(FqoYW 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 z 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%0AlI+cZqFHc*`#4!NH%om{pEZK)6}7?-@) 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 zŅ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 z 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�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

^|#Au+vAWYvl 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

6wrrJVybB){lezDWs}PdeK3qX`n73v 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

{UMqIq;mgFwPC+ww}NxV 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 z"wQC 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�NrT0vep6hX~*<1oAumDGd9IP zuP^EVePjIz^|{^49Rv!)*90FJH5JCkKC!I`S)(_()g{q_OE%7_6XF~&R>*_GvFinh z;e_%$EcmXf?Gg3a9PG<=q0zu;;KtSAU)gB98Dng;Ahc{6;(vw{( zBo<<*PLH8X?e9PGhV$WX z787Q<5MtH>wHFx7j!N=u8YSDI>UhL|u)_A$<=)Ecsi`U?6nZjfd=Fst|06<5{E>Jj zK3;XpDqSvt{)IwDo^l{oeCKQCZ1wuzEUN##)c+@Q^?+ofi~62(BBSYdeC(zPHt1fX z7cCP-!5T2W3AEkk(`1nsdt$bwsv=+ zNsM1j<1LD$R9xcKA?(+kBoLj`ZX$`$^!fXXT(GTC_`DRLK8zU*=8mD%3=kyKwJHBY zy9BW^toE0_yD&o6k|7jFS6hru4?{=C4%#c1NCP@ z8*(2u9N~QwJ5+t!c+z5BRNwu(Xr|%Lc;TrxVl8C|(sV&^pYa?DwIiE1QKW7Ra zcSKV9g~&412@vanZDz|hapXVJtRB@aPw&oGTlbM5t6?9w%D-$32`xtq0ek^`Oof!Y zsUk?We2Z>}6>`Q+_WI|m@33YK-b#wNK? z^+YGxMgktEzr3>bsOPkD{-W!>uB;Zl2ZoCG!I!xYzsTpk^*1q1lc-1=5I>mvE4u-} zyb4!;H>UNvQcurGj3m7uI;~sxz`7E31HF*JtPxee^<&B2@9- zrr14~A*yS2RwwLk>~&t-)EY-wo?v-nhz!JC)JwHY+5{b z2nvnA&b-5+p%7eliStVeIjk)|$YNI(@%?P6Q20?r^yqo&mM3VKhlcW{N@}Oir_TWE z%h%;049;Ir3_odEp!2T@Q?G9{VNSn-QWbi)WPW-ucGVe{-dO(lr>2mh=hW01&~Eox znsFeD0auW(Hd}4CRU!8DTuw@NVtl5nG`e^Q?b5v=e!WCJd^5DScC~QQDp+#@KrlV$ zZh7(xFHtA2Jsc>imcOmp6va1?AIZS(=xRLEx);do{iZB~?{~|}Xf&NH*LgR_e|sNu z#*ckLPd?aKh3WsIeAdU#eH0T4UpYIt&sq2Fgrl~>Jw8%*Za=ACC7b(>_P1nY~KTbRYRnn$ynjBzPN*sd)9*Ew_F$-21am(@V{O`?b`S^Zq@ea)xqz z&0?+U;D$YnJEu4I;^Qm=P*DiF*ll(k!xN7RK2QZFSk+=^yAt`3h()e*BM}J7* zm0Vb8gI(lPd27C0r+9(_CN#m@j>Etyh}^(Cy;c(>WM{Lxn9r|iaox#|AZ<6(=2ciY zz1m%73>|m0F4+LXwOE3H{+|M=cRk=U%4AUFeaJ#_h%ZrhO?l%{jrIBq9}-U1ic!1; ziX})nal@JIqw@YKy)A2O_*fS4tEjzJLx+Bi&7Uf(k`E1RQA{RO#i#erbsM8VVE=mv zZ|C4UOq`(R>$xN?WC4vGt!O8oV`l1_Ts$*I^uxXef`LW* z2Cui)exj>SL?gg+7(P`vK-h~a-k3(>G$QF=g-qoUNeD;WDHSU8_=pKABFq$aABpM! z6vKx{Vr4r9UXMg1Q(`X$u9O{IhEO0;I{qVYUm9R5S^oKU*x_zfT86}3?cecTh zKzpCB4KBKN7zfi(O?MLF30iu!kKK&i98uDs>3j}(J75akqzE0RjP@rl_f7m-J(s)5gHE+i$>*!9?Qug6;U# zJm*m0%WLwVi;@Du6r%4xBB`TnD=fYC13jt>ccI-4#~GKisACvm z5$%jVzacTTb$P}no!YYk;X$q2+Duwg|EkBpQ+!Zc$=u8mQAw&qJYOU*8N}s}=YSaX zn+iHG^#1N@LTdU-p;eHBpgQw|(Zl57L_Kr~CfzceNh?*z*4@p{G zY5<((-wz&a`kmm(%RjiYX4#p7E_jN5Js^u#tB#G*9>ZuD9puf+*;XTl0zX?#Dl5sP zRxF-0PEX`Nj`z+AKWcOgqe}V)(2Y|8R@_+*NO(^NEYh8Y2ZR3zec{*#aJs1k=e{s5 zH!NWN)_lvz;g6SWiO`YjW85hG`R^9>Bm|7A*WfD~upTsIPfh)^Q9bRROpgJ# zk*fYGW5Is5M5$Hy!0X2~toTCC3IC7NYkQ?>r!_JA z=T+((Hl}LZ3D)9)|D4lb$%=0d?Ee09=m1v0$u+||0*rc{{}Xrwf2&F$Q)GhdnNnKs zyPn#;eAo6En}mnpU4urHDi8bgwykFfAB!Y)3>WnI+J8uUBr1M%z>ae_&)`!YQ$f#0 zsYk>wHHvs`D@E2lK5PEJ0m}1r_c3YpXisDxDs%bky}VI0_z(5eQaGJXNH5OoKg z4f>25-=1+3TTQO1HK`MXO)O$5NpTHk9b;9gw*Ghwu@OPnqiO+sF8CkLzF+_$LpdDR zi_Jr(@4=Tdk{NN+YM15J0#8fSyh}l z@LiH>6008i6R91f`=yca+?L-6wg>&=@yfI9#DEmY@i1+vf%W_ z+UB7@W3b+;bK3?t8{ZmGLyk0 zU@QLL;U-mC-xMC7BLI#RWDF^}5N6;q7U)0h0xcX!eYFKOhE#pEJ(2##zrsIqn+BK= zLfBG0ku!3o^*xZsVg->98Kkit+>;TzTHEbTP09NBYUk>DWdp)F`ztwJ<*CD=M!VEw zvNtsTVW>f7^S+q}ef zIC&{4Jzz~(t(bfQ93Oa@-w-xkv3d3T_k)k@ZC~>#f#XR^s;;EPU;B<;zsAT=|309~ z|0SQ2D<`DMCwJ%K1Mh=mmZsfjyV; zMuoa%l5L#-I{{`z1jIuZ>KbY&pvsBFz%qkFMbKyA+Jatm)^t2;7U55aCqT`r(}g0j zqpM+R)BMzvW{>g&wxz&8{{cpBA@!@A`h@s`a0A}J0r&ej&oa)KNa@D4!6R=gjGO2n(r=KQtUB+x${=@9^JiCcxDkI`h1 z=WDXO8%T7b3>)5MLU{#zvp^M3ppXnK4=Fc#O@%YA|75pDFT+o71`2p?>50NfBIv$j ztH+qU-k|uO!ygGUYD)>y%e*`|yE%X-VainCM#G98|0VKJbOTXa_O&tTyy~EXh@)aH z%P89zDlmBYbdq{j(9ZDMAImfiLgnsQ$xP1`WFad|$ryIYyCl>lBnl1tLEVZWelJ2> z+Ey7CZAcN2eItX(WLvmPPt3>QZXF>c| zYLn-?Rgn*lA@UjzVySfGb=?1D7JX`BD5)g)&EN9L4eno3XFn}K@mm!AazFEiy-_bB z<3%=z^|gVq|1?c;uYh_iA@imv)dw+@U=Q&p)uE@hV=l{AoDlQ!+5~4CH5Q9_9n1C_RTO8(4_DW6duVz9! zfz!fdI(3%ng?th>Rp|d{?@FVZ%91b$$YM}dF+j65VO10)vWTJ)gb>y&Ac~;KzQ`us zV8et(**778f*ObclL*oRQBd17iwV%ufD$&fK^9T4l|ZA3grslKnd$jE=ggTuot*r6 zuc~g{ckaFQRlTap#Lni1BVM*o*sC8tI;kr>Q#gs`yJ*@zFB(&GHa+)VNIqC>AE@m( zm3!yF^O7A^EbU^(kbAdf_fC^IkU~R+trc zsser_A~V(Ii?n;xayaA2NUlRrk9{&>j^qgzjo5qH5heMJ2R-dvJ+3}>ax5JqF(~z{DIZ=v$>N=r%LGM(vHovVSwTx$s((SapmBWkKZu=0BBc)jR<>L3zU zY_Eln_uS(N&%yqZ+uBZomgVdf(<=r@nR8R(>;Xt^hflMN9O8np5>!Ta*nah8W5t$0 zm7uOjrrd7yZKO$B!u_@sTrPNd)+|4L5o_#KA9U!*ZwEb-!_T%6 zj4&28x-r_6hn7};E(BxfV9C90SpO;wGgu!164vuv+GKaXe5F#b%Vx{j-zCZ`UuU6m zEnt5S^Y=sh|F5)^tiugC<)0cSGPrefw;qQ=uwK08Oqurd@FPKl9ZluO-Bl&Y^;s^l zCO!%E729EbbB3^rytwrT>(Fg2r#|kxXsNcX3m1({piRvR0%(#joWJiY0qeZi+|Nl$ zm(wovU3RX&KWukgn_XckAm#TYwWlZ8D zzbj3bgzl1c2XaNH(J=`vJgV{#^4iUYC4dG--EGI+OFM!HRSNApx*||jEgz84xd^02 zrK)06dEc=lqy3F+J2u#Lbny%28^gX@_T5d>G}@Cc>r5%g4Wgm?PYS&xK%--14Vj7Y zZWG?|$Jzi}?*3J=UE%M+5xFh$=b4zdN=DQbf~po?*gw6Skwec;tkNc@NT&tHp ztL7ISrTdCfgp^O+q}t;?x7bjPXn?NYzXgaCnu06n!Edxy{DbvzKV^0JAy&c_n)R7|os|1q?us7odUhuRLE! z-?0G+@^nkP5yNL7TPaZopdYy?TZ_*wHJh~XIAtw-i!{}}r_4^^e6{u#OZzF}ZV_3z zrg=4JY$nDr0GTM4#K*ZM@%y#NwjA!-BwR>t%pPQ?AMagoN!xdo`tR%S zl@DaL%);K|Z6^)O^$)39VUi={fBs@y77h;WwMO|*iym*3n189Oo_K`y-twCxVqeVj zt*^|K)+7==apF7X3Q%N?DEfXbS_M+aCzVXZCt~ZD|8@Po#~+YiODo%iZ&QfaQZd{M z*EuRYO<2h7G7Y4%0=aLb(%wn7A1!H2eNghYia{djGRZpgNi&T}vt~qscwrl`y9EK1 z&^F;Ew4Gq~@|7E{Q-PBGlID;0=~_P-d_3$xlwi(y3}3W8J-j#cEPgzMaZfgGR5 z(>2(rkz?`JN85$a{v`hCmh_`jN5@-apePW1>D^aG*S9wQ0odsq>Ix5fw$E^^BC>D* zjv!KHgLyH-%c?=Cn8CEL6Eue(`c~#! zn`Q-z3hNba^;c4^#u0mP%SC(3V6tszS(zd^w#uiee{zti`(^`Bs&2=^f7Vkw98QJbc7GHT-CM2%U3oi3)++tShREW5;VO^F|96a zfr>71E!99v!QriD0fypF-D*wH*x_hgsNdXYHL3RXOE!eNGlI%Qv~@X)_|#jpt8mgB zo)f&IBh&1l&;S?oG6&7)?N-mR$NyLuw5G!_Uy1Vds$CViX>bK19;^IL{~U*BNYz_p z&TH?J_m(-Q7_GmU{qAT+B6N;3I@5GKlNG>rkh2}SN4dHv`F4OoR(+$lV6>P$ zm=WaXd$>^UWKgyN;)BE0fm(uqA8S#+_r*a$5Li_vV?BK#S|Tc)?oe zfc>t*@Mq4q8h%@N{3vm>`jTtqdpEy*8mYEWxDTfv^C*M5T)CESTRBNqN3;o0*=jJy z>cFzTild2jbl>WhA7fvc*7nMPeT=qv145gjhMIREpX^5@vQ=_THIJtK!Tol7DIFc* z5Yb<*nw`%IxIuu3oB?1=m`ap2p+3liGq$($PFEdx^A2tOTvQ*lv93;Sn?PK*+RvwEvdtjQVR2?)yUE+j26OPdA#ZoGD@xq`NrGav5e$dcTO0I-lqGc>-M7kL;;HtG9NC5 z8N+&oogKvf4%YcRN4iK4AN2#j&>WQNCoDxtVY-J&gD+~R6JK5|#e#|>V-?S_CGK-g zyAvHM=Jbt`++Dt3L(z2T?dxz257Wz?^?8Vd%=!iLxqA$<9J=~>Kntfe!#Ile-xIHI cdG|pmUNj->`ELIvKQZt@I=VaDMx4s{6XgTSE&u=k literal 0 HcmV?d00001 From 5004f951b592b017017d25eded21157cf4b59390 Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 23 Feb 2024 07:44:50 +0000 Subject: [PATCH 062/128] added non-linear documentation --- doc/calibrations/nonlinear.rst | 93 ++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 doc/calibrations/nonlinear.rst diff --git a/doc/calibrations/nonlinear.rst b/doc/calibrations/nonlinear.rst new file mode 100644 index 0000000000..31e9a56776 --- /dev/null +++ b/doc/calibrations/nonlinear.rst @@ -0,0 +1,93 @@ + +===================== +Non-Linear correction +===================== + +The non-linear correction is a simple way to correct the non-linear behavior of the +sensor. Imagine a perfect light source that emits photons with a constant count rate. +An ideal detector would be able to measure this count rate independently of the exposure +time. However, in practice, detectors have a non-linear response to the incoming photons. +This means that the count rate measured by the detector is not proportional to the count +rate of the light source. The non-linear correction is a simple way to correct this +non-linear behavior. Most modern CCD cameras have a linear response to about 1% over +most of the dynamic range, so this correction is not necessary for most applications. +The correction parameters can be measured by the user, but care should be taken with +how you collect the calibration data, since the internal continuum light source used +for most flat-field calibrations is not a perfect light source. + +At present, the non-linear correction is only implemented for KCWI, which is already very +close to linear over most of the dynamic range of the CCD. If you have collected non-linear +calibration data with another instrument, please contact the developers to see if we can +implement this correction for your instrument. + +Calibrations required +--------------------- + +The non-linear correction requires a set of dedicated calibration data that can be used to measure +the non-linear response of the detector. This calibration data should be collected with +a continuum light source (usually internal to the instrument). We currently recommend that +you turn on the internal lamp, and leave it for 30 minutes to warm up and settle. The lamp +count rate will likely decay over time, so we recommend that you collect a series of exposures +that are bracketed by `reference` exposures of constant exposure time (also known as the +`bracketed repeat exposure` technique). The reference exposures are used to monitor the +temporal decay of the lamp count rate. Here is a screenshot to show the lamp decay as a +function of time. The points are the `reference exposures` and are colour-coded by the +wavelength of the light, and the solid lines are the best-fit exponential + 2D polynomial +decay curves. The bottom panel shows a residual of the fit. Thus, both the relative shape +and the intensity of the lamp decay can be monitored as a function of time. + +.. image:: ../figures/nonlinear_lamp_decay.png + +Between a set of reference exposures, you should +acquire a series of exposures with increasing exposure time. The exposure time should be +increased by a factor of 2 between each exposure. The exposure time should be chosen so that +the count rate is not too high, but also not too low. The counts should extend to at least 10% +of the maximum counts of the detector. The `reference` exposures should have an exposure time +that is close to the middle of the range of exposure times used for the other exposures. It is +often good practice to collect an even number of exposures at each exposure time; some shutters +move in opposite directions for adjacent exposures, and the true exposure time may depend on +the direction that the shutter is moving. + +To determine the non-linearity, we assume that the correction is quadratic, such that the +quadratic term is a small perturbation from linear response. The functional form of the +true count rate is then: + +.. math:: + + C_T \cdot t = C_M \cdot t (1 + b \cdot C_M \cdot t) + +where :math:`C_T` is the true count rate, :math:`C_M` is the measured count rate, :math:`t` +is the exposure time, and :math:`b` is the non-linearity coefficient. +The non-linearity coefficient can be determined by fitting +the measured count rate as a function of the exposure time. That that as the true count rate +tends to zero, the measured count rate tends to zero. The non-linearity coefficient can be +measured for each pixel on the detector, and it is a good idea to consider the non-linearity +coefficient for different amplifiers separately. The above equation can be written as a matrix +equation: + +.. math:: + + M \cdot x = e + M = \begin{bmatrix} + C_{M,1}t_1 & (C_{M,1}t_1)^2 \\ + C_{M,2}t_2 & (C_{M,2}t_2)^2 \\ + \vdots & \vdots \\ + C_{M,n}t_n & (C_{M,n}t_n)^2 \\ + \end{bmatrix} + x = \begin{bmatrix} + 1/C_T \\ + b/C_T \\ + \end{bmatrix} + e = \begin{bmatrix} + t_1 \\ + t_2 \\ + \vdots \\ + t_n \\ + \end{bmatrix} + +where :math:`M` is a matrix of measured count rates, :math:`x` is a vector of the non-linearity +coefficient and the true count rate, and :math:`e` is a vector of exposure times. The non-linearity +coefficient can be determined by inverting the matrix :math:`M`, and solving for :math:`x`. The +non-linearity coefficient can be determined for each pixel on the detector. The central value of +the distribution of non-linearity coefficients can be used as a fixed non-linearity coefficient +for each amplifier of the detector. From 2b201d68ce14e9f26bbba40046f5d369bad745b3 Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 23 Feb 2024 20:48:54 +0000 Subject: [PATCH 063/128] slice_subpixel clarification docs --- doc/coadd3d.rst | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/doc/coadd3d.rst b/doc/coadd3d.rst index 73b5b7822f..5651dd0ee2 100644 --- a/doc/coadd3d.rst +++ b/doc/coadd3d.rst @@ -205,10 +205,24 @@ direction (i.e. predominantly detector columns), spatial direction (i.e. the long axis of each slice; predominantly along detector rows), and ``slice_subpixel`` is the number of times to divide each of the slices (i.e. the short axis of each slice). Note that all three of these ``subpixel`` -definitions are perpendicular to each other in the datacube. Each of these parameters -governs the number of subpixels in the corresponding dimensions of the datacube. - -As an alternative, you can convert the spec2d frames into a datacube +definitions are perpendicular to each other in the datacube. + +While the ``spec_subpixel`` and ``spat_subpixel`` options are somewhat intuitive (i.e. the code is +dividing detector columns and rows into smaller subpixels), the ``slice_subpixel`` option may not be +immediately obvious, so consider the following example. Imagine the long edge of the slice aligned +East-West. The short edge of a single slice will span a Dec difference of 0.35 arcseconds in the case +of the Keck/KCWI Small slicer. ``slice_subpixel`` is effectively dividing this slice width further. +If ``slice_subpixel=7`` then this is creating seven subslices, each of width 0.05 arcseconds. The +importance of this becomes really noticeable when combined with the differential atmospheric +refraction (DAR) correction. Consider two wavelengths that have a relative DAR of 0.15 arcseconds. +In this case, choosing a value of ``slice_subpixel=1`` would shift the relative spatial positions by +0.35 arcseconds (i.e. the difference between adjacent slices) compared to the true difference of 0.15 +arcseconds. ``slice_subpixel`` divides the flux of the slice into evenly spaced rectangular bins, and +places each of these into a voxel of the final datacube. In the case of a 0.15 arcsecond shift, this +would mean that :math:`3/7` of the flux ends up in one output slice and the remaining :math:`4/7` of +the flux ends up in the adjacent slice. + +As an alternative to the ``subpixel`` method, you can convert the spec2d frames into a datacube with the ``NGP`` method. This algorithm is effectively a 3D histogram. This approach is faster than ``subpixel``, flux is conserved, and voxels are not correlated. However, this option suffers the same downsides as any histogram; the choice of bin sizes can change how the datacube appears. From b652be6b1e78878e1c5afa8bf4602f71e817d93f Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 26 Feb 2024 13:52:27 +0000 Subject: [PATCH 064/128] tweak slits method=gradient --- pypeit/spectrographs/gemini_gnirs.py | 6 ++++-- pypeit/spectrographs/gtc_osiris.py | 8 +++++++- pypeit/spectrographs/keck_kcwi.py | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/pypeit/spectrographs/gemini_gnirs.py b/pypeit/spectrographs/gemini_gnirs.py index dd56f426c3..719fee0215 100644 --- a/pypeit/spectrographs/gemini_gnirs.py +++ b/pypeit/spectrographs/gemini_gnirs.py @@ -612,7 +612,9 @@ def default_pypeit_par(cls): # Don't do 1D extraction for 3D data - it's meaningless because the DAR correction must be performed on the 3D data. par['reduce']['extraction']['skip_extraction'] = True # Because extraction occurs before the DAR correction, don't extract - #par['calibrations']['flatfield']['tweak_slits'] = False # Do not tweak the slit edges (we want to use the full slit) + # Tweak the slit edges using the gradient method for SlicerIFU + par['calibrations']['flatfield']['tweak_slits'] = True # Tweak the slit edges + par['calibrations']['flatfield']['tweak_method'] = 'gradient' # The gradient method is better for SlicerIFU. par['calibrations']['flatfield']['tweak_slits_thresh'] = 0.0 # Make sure the full slit is used (i.e. when the illumination fraction is > 0.5) par['calibrations']['flatfield']['tweak_slits_maxfrac'] = 0.0 # Make sure the full slit is used (i.e. no padding) par['calibrations']['flatfield']['slit_trim'] = 2 # Trim the slit edges @@ -716,7 +718,7 @@ def get_wcs(self, hdr, slits, platescale, wave0, dwv, spatial_scale=None): pxscl = spatial_scale / 3600.0 # 3600 is to convert arcsec to degrees # Get the typical slit length (this changes by ~0.3% over all slits, so a constant is fine for now) - slitlength = int(np.round(np.median(slits.get_slitlengths(initial=True, median=True)))) + slitlength = int(np.round(np.median(slits.get_slitlengths(median=True)))) # Get RA/DEC raval = self.get_meta_value([hdr], 'ra') diff --git a/pypeit/spectrographs/gtc_osiris.py b/pypeit/spectrographs/gtc_osiris.py index f622ad99de..d8c97295d9 100644 --- a/pypeit/spectrographs/gtc_osiris.py +++ b/pypeit/spectrographs/gtc_osiris.py @@ -471,6 +471,12 @@ def default_pypeit_par(cls): par['calibrations']['tilts']['spat_order'] = 1 par['calibrations']['tilts']['spec_order'] = 1 + # Tweak the slit edges using the gradient method for SlicerIFU + par['calibrations']['flatfield']['tweak_slits'] = True # Tweak the slit edges + par['calibrations']['flatfield']['tweak_method'] = 'gradient' # The gradient method is better for SlicerIFU. + par['calibrations']['flatfield']['tweak_slits_thresh'] = 0.0 # Make sure the full slit is used (i.e. when the illumination fraction is > 0.5) + par['calibrations']['flatfield']['tweak_slits_maxfrac'] = 0.0 # Make sure the full slit is used (i.e. no padding) + # Make sure that this is reduced as a slit (as opposed to fiber) spectrograph par['reduce']['cube']['slit_spec'] = True par['reduce']['cube']['combine'] = False # Make separate spec3d files from the input spec2d files @@ -527,7 +533,7 @@ def get_wcs(self, hdr, slits, platescale, wave0, dwv, spatial_scale=None): pxscl = spatial_scale / 3600.0 # 3600 is to convert arcsec to degrees # Get the typical slit length (this changes by ~0.3% over all slits, so a constant is fine for now) - slitlength = int(np.round(np.median(slits.get_slitlengths(initial=True, median=True)))) + slitlength = int(np.round(np.median(slits.get_slitlengths(median=True)))) # Get RA/DEC raval = self.get_meta_value([hdr], 'ra') diff --git a/pypeit/spectrographs/keck_kcwi.py b/pypeit/spectrographs/keck_kcwi.py index 4859ce29ae..1f48fbafe2 100644 --- a/pypeit/spectrographs/keck_kcwi.py +++ b/pypeit/spectrographs/keck_kcwi.py @@ -635,7 +635,7 @@ def get_wcs(self, hdr, slits, platescale, wave0, dwv, spatial_scale=None): pxscl = spatial_scale / 3600.0 # 3600 is to convert arcsec to degrees # Get the typical slit length (this changes by ~0.3% over all slits, so a constant is fine for now) - slitlength = int(np.round(np.median(slits.get_slitlengths(initial=True, median=True)))) + slitlength = int(np.round(np.median(slits.get_slitlengths(median=True)))) # Get RA/DEC ra = self.compound_meta([hdr], 'ra') From fda945cdfe77b7d33306f40c9032d81e54150fff Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 26 Feb 2024 14:05:30 +0000 Subject: [PATCH 065/128] SlicerIFU -> tweak slits --- pypeit/alignframe.py | 4 ++-- pypeit/calibrations.py | 2 +- pypeit/coadd3d.py | 14 +++++++------- pypeit/find_objects.py | 10 +++++----- pypeit/flatfield.py | 11 +++++------ pypeit/images/rawimage.py | 8 ++++---- pypeit/scattlight.py | 2 +- pypeit/slittrace.py | 2 +- 8 files changed, 26 insertions(+), 27 deletions(-) diff --git a/pypeit/alignframe.py b/pypeit/alignframe.py index 9a28491d21..2cfc6b28d8 100644 --- a/pypeit/alignframe.py +++ b/pypeit/alignframe.py @@ -181,8 +181,8 @@ def build_traces(self, show_peaks=False, debug=False): dict: self.align_dict """ # Generate slits - slitid_img_init = self.slits.slit_img(initial=True) - left, right, _ = self.slits.select_edges(initial=True) + slitid_img_init = self.slits.slit_img() + left, right, _ = self.slits.select_edges() align_prof = dict({}) # Go through the slits diff --git a/pypeit/calibrations.py b/pypeit/calibrations.py index 07f15a32cf..2fac6c8184 100644 --- a/pypeit/calibrations.py +++ b/pypeit/calibrations.py @@ -599,7 +599,7 @@ def get_scattlight(self): spatbin = parse.parse_binning(binning)[1] pad = self.par['scattlight_pad'] // spatbin - offslitmask = self.slits.slit_img(pad=pad, initial=True, flexure=None) == -1 + offslitmask = self.slits.slit_img(pad=pad, flexure=None) == -1 # Get starting parameters for the scattered light model x0, bounds = self.spectrograph.scattered_light_archive(binning, dispname) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 984f95870e..0fdf7324b3 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -836,8 +836,8 @@ def add_grating_corr(self, flatfile, waveimg, slits, spat_flexure=None): msgs.info("Calculating relative sensitivity for grating correction") # Load the Flat file flatimages = flatfield.FlatImages.from_file(flatfile, chk_version=self.chk_version) - total_illum = flatimages.fit2illumflat(slits, finecorr=False, frametype='illum', initial=True, spat_flexure=spat_flexure) * \ - flatimages.fit2illumflat(slits, finecorr=True, frametype='illum', initial=True, spat_flexure=spat_flexure) + total_illum = flatimages.fit2illumflat(slits, finecorr=False, frametype='illum', spat_flexure=spat_flexure) * \ + flatimages.fit2illumflat(slits, finecorr=True, frametype='illum', spat_flexure=spat_flexure) flatframe = flatimages.pixelflat_raw / total_illum if flatimages.pixelflat_spec_illum is None: # Calculate the relative scale @@ -948,7 +948,7 @@ def get_alignments(self, spec2DObj, slits, spat_flexure=None): msgs.info("Using slit edges for astrometric transform") # If nothing better was provided, use the slit edges if alignments is None: - left, right, _ = slits.select_edges(initial=True, flexure=spat_flexure) + left, right, _ = slits.select_edges(flexure=spat_flexure) locations = [0.0, 1.0] traces = np.append(left[:, None, :], right[:, None, :], axis=1) else: @@ -1013,8 +1013,8 @@ def load(self): # Initialise the slit edges msgs.info("Constructing slit image") slits = spec2DObj.slits - slitid_img_init = slits.slit_img(pad=0, initial=True, flexure=spat_flexure) - slits_left, slits_right, _ = slits.select_edges(initial=True, flexure=spat_flexure) + slitid_img_init = slits.slit_img(pad=0, flexure=spat_flexure) + slits_left, slits_right, _ = slits.select_edges(flexure=spat_flexure) # The order of operations below proceeds as follows: # (1) Get science image @@ -1107,7 +1107,7 @@ def load(self): crval_wv = self.cubepar['wave_min'] if self.cubepar['wave_min'] is not None else wave0 cd_wv = self.cubepar['wave_delta'] if self.cubepar['wave_delta'] is not None else dwv self.all_wcs.append(self.spec.get_wcs(spec2DObj.head0, slits, detector.platescale, crval_wv, cd_wv)) - ra_img, dec_img, minmax = slits.get_radec_image(self.all_wcs[ff], alignSplines, spec2DObj.tilts, initial=True, flexure=spat_flexure) + ra_img, dec_img, minmax = slits.get_radec_image(self.all_wcs[ff], alignSplines, spec2DObj.tilts, flexure=spat_flexure) # Extract wavelength and delta wavelength arrays from the images wave_ext = waveimg[onslit_gpm] @@ -1207,7 +1207,7 @@ def load(self): else: outfile = datacube.get_output_filename(fil, self.cubepar['output_filename'], self.combine, ff + 1) # Get the coordinate bounds - slitlength = int(np.round(np.median(slits.get_slitlengths(initial=True, median=True)))) + slitlength = int(np.round(np.median(slits.get_slitlengths(median=True)))) numwav = int((np.max(waveimg) - wave0) / dwv) bins = self.spec.get_datacube_bins(slitlength, minmax, numwav) # Set the wavelength range of the white light image. diff --git a/pypeit/find_objects.py b/pypeit/find_objects.py index 1ba353e92c..e9600c776c 100644 --- a/pypeit/find_objects.py +++ b/pypeit/find_objects.py @@ -968,7 +968,7 @@ class SlicerIFUFindObjects(MultiSlitFindObjects): def __init__(self, sciImg, slits, spectrograph, par, objtype, **kwargs): super().__init__(sciImg, slits, spectrograph, par, objtype, **kwargs) - def initialize_slits(self, slits, initial=True): + def initialize_slits(self, slits, initial=False): """ Gather all the :class:`~pypeit.slittrace.SlitTraceSet` attributes that we'll use here in :class:`FindObjects`. Identical to the parent but the @@ -982,7 +982,7 @@ def initialize_slits(self, slits, initial=True): Use the initial definition of the slits. If False, tweaked slits are used. """ - super().initialize_slits(slits, initial=True) + super().initialize_slits(slits) def global_skysub(self, skymask=None, update_crmask=True, previous_sky=None, show_fit=False, show=False, show_objs=False, objs_not_masked=False, @@ -1070,7 +1070,7 @@ def joint_skysub(self, skymask=None, update_crmask=True, trim_edg=(0,0), # Use the FWHM map determined from the arc lines to convert the science frame # to have the same effective spectral resolution. - fwhm_map = self.wv_calib.build_fwhmimg(self.tilts, self.slits, initial=True, spat_flexure=self.spat_flexure_shift) + fwhm_map = self.wv_calib.build_fwhmimg(self.tilts, self.slits, spat_flexure=self.spat_flexure_shift) thismask = thismask & (fwhm_map != 0.0) # Need to include S/N for deconvolution sciimg = skysub.convolve_skymodel(self.sciImg.image, fwhm_map, thismask) @@ -1079,8 +1079,8 @@ def joint_skysub(self, skymask=None, update_crmask=True, trim_edg=(0,0), model_ivar = self.sciImg.ivar sl_ref = self.par['calibrations']['flatfield']['slit_illum_ref_idx'] # Prepare the slitmasks for the relative spectral illumination - slitmask = self.slits.slit_img(pad=0, initial=True, flexure=self.spat_flexure_shift) - slitmask_trim = self.slits.slit_img(pad=-3, initial=True, flexure=self.spat_flexure_shift) + slitmask = self.slits.slit_img(pad=0, flexure=self.spat_flexure_shift) + slitmask_trim = self.slits.slit_img(pad=-3, flexure=self.spat_flexure_shift) for nn in range(numiter): msgs.info("Performing iterative joint sky subtraction - ITERATION {0:d}/{1:d}".format(nn+1, numiter)) # TODO trim_edg is in the parset so it should be passed in here via trim_edg=tuple(self.par['reduce']['trim_edge']), diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index ac9c551884..73305ae881 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -1415,7 +1415,7 @@ def spatial_fit_finecorr(self, normed, onslit_tweak, slit_idx, slit_spat, gpm, s onslit_tweak_trim = self.slits.slit_img(pad=-slit_trim, slitidx=slit_idx, initial=False) == slit_spat # Setup slitimg = (slit_spat + 1) * onslit_tweak.astype(int) - 1 # Need to +1 and -1 so that slitimg=-1 when off the slit - left, right, msk = self.slits.select_edges(initial=True, flexure=self.wavetilts.spat_flexure) + left, right, msk = self.slits.select_edges(flexure=self.wavetilts.spat_flexure) this_left = left[:, slit_idx] this_right = right[:, slit_idx] slitlen = int(np.median(this_right - this_left)) @@ -1424,7 +1424,6 @@ def spatial_fit_finecorr(self, normed, onslit_tweak, slit_idx, slit_spat, gpm, s this_slit = np.where(onslit_tweak & self.rawflatimg.select_flag(invert=True) & (self.waveimg!=0.0)) this_wave = self.waveimg[this_slit] xpos_img = self.slits.spatial_coordinate_image(slitidx=slit_idx, - initial=True, slitid_img=slitimg, flexure_shift=self.wavetilts.spat_flexure) # Generate the trimmed versions for fitting @@ -1916,14 +1915,14 @@ def illum_profile_spectral(rawimg, waveimg, slits, slit_illum_ref_idx=0, smooth_ gpm = gpmask if (gpmask is not None) else np.ones_like(rawimg, dtype=bool) modelimg = model if (model is not None) else rawimg.copy() # Setup the slits - slitid_img_init = slits.slit_img(pad=0, initial=True, flexure=flexure) - slitid_img_trim = slits.slit_img(pad=-trim, initial=True, flexure=flexure) + slitid_img = slits.slit_img(pad=0, flexure=flexure) + slitid_img_trim = slits.slit_img(pad=-trim, flexure=flexure) scaleImg = np.ones_like(rawimg) modelimg_copy = modelimg.copy() # Obtain the minimum and maximum wavelength of all slits mnmx_wv = np.zeros((slits.nslits, 2)) for slit_idx, slit_spat in enumerate(slits.spat_id): - onslit_init = (slitid_img_init == slit_spat) + onslit_init = (slitid_img == slit_spat) mnmx_wv[slit_idx, 0] = np.min(waveimg[onslit_init]) mnmx_wv[slit_idx, 1] = np.max(waveimg[onslit_init]) wavecen = np.mean(mnmx_wv, axis=1) @@ -1958,7 +1957,7 @@ def illum_profile_spectral(rawimg, waveimg, slits, slit_illum_ref_idx=0, smooth_ for ss in range(1, slits.spat_id.size): # Calculate the region of overlap onslit_b = (slitid_img_trim == slits.spat_id[wvsrt[ss]]) - onslit_b_init = (slitid_img_init == slits.spat_id[wvsrt[ss]]) + onslit_b_init = (slitid_img == slits.spat_id[wvsrt[ss]]) onslit_b_olap = onslit_b & gpm & (waveimg >= mnmx_wv[wvsrt[ss], 0]) & (waveimg <= mnmx_wv[wvsrt[ss], 1]) & skymask_now hist, edge = np.histogram(waveimg[onslit_b_olap], bins=wavebins, weights=modelimg_copy[onslit_b_olap]) cntr, edge = np.histogram(waveimg[onslit_b_olap], bins=wavebins) diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index a7cb4d7c34..5f8fee22ef 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -1216,7 +1216,7 @@ def subtract_scattlight(self, msscattlight, slits, debug=False): f" {tmp[13]}, {tmp[14]}, {tmp[15]}]) # Polynomial terms (coefficients of spec**index)\n" print(strprint) pad = msscattlight.pad // spatbin - offslitmask = slits.slit_img(pad=pad, initial=True, flexure=None) == -1 + offslitmask = slits.slit_img(pad=pad, flexure=None) == -1 from matplotlib import pyplot as plt _frame = self.image[ii, ...] vmin, vmax = 0, np.max(scatt_img) @@ -1241,7 +1241,7 @@ def subtract_scattlight(self, msscattlight, slits, debug=False): elif self.par["scattlight"]["method"] == "frame": # Calculate a model specific for this frame pad = msscattlight.pad // spatbin - offslitmask = slits.slit_img(pad=pad, initial=True, flexure=None) == -1 + offslitmask = slits.slit_img(pad=pad, flexure=None) == -1 # Get starting parameters for the scattered light model x0, bounds = self.spectrograph.scattered_light_archive(binning, dispname) # Perform a fit to the scattered light @@ -1265,11 +1265,11 @@ def subtract_scattlight(self, msscattlight, slits, debug=False): # Check if a fine correction to the scattered light should be applied if do_finecorr: pad = self.par['scattlight']['finecorr_pad'] // spatbin - offslitmask = slits.slit_img(pad=pad, initial=True, flexure=None) == -1 + offslitmask = slits.slit_img(pad=pad, flexure=None) == -1 # Check if the user wishes to mask some inter-slit regions if self.par['scattlight']['finecorr_mask'] is not None: # Get the central trace of each slit - left, right, _ = slits.select_edges(initial=True, flexure=None) + left, right, _ = slits.select_edges(flexure=None) centrace = 0.5*(left+right) # Now mask user-defined inter-slit regions offslitmask = scattlight.mask_slit_regions(offslitmask, centrace, diff --git a/pypeit/scattlight.py b/pypeit/scattlight.py index a6f149a6d4..675da0d07b 100644 --- a/pypeit/scattlight.py +++ b/pypeit/scattlight.py @@ -122,7 +122,7 @@ def show(self, image=None, slits=None, mask=False, wcs_match=True): wcs_match : :obj:`bool`, optional Use a reference image for the WCS and match all image in other channels to it. """ - offslitmask = slits.slit_img(pad=0, initial=True, flexure=None) == -1 if mask else 1 + offslitmask = slits.slit_img(pad=0, flexure=None) == -1 if mask else 1 # Prepare the frames _data = self.scattlight_raw if image is None else image diff --git a/pypeit/slittrace.py b/pypeit/slittrace.py index 93b4b7df32..9405b51ad2 100644 --- a/pypeit/slittrace.py +++ b/pypeit/slittrace.py @@ -479,7 +479,7 @@ def get_slitlengths(self, initial=False, median=False): slitlen = right - left return np.median(slitlen, axis=1) if median else slitlen - def get_radec_image(self, wcs, alignSplines, tilts, slit_compute=None, slice_offset=None, initial=True, flexure=None): + def get_radec_image(self, wcs, alignSplines, tilts, slit_compute=None, slice_offset=None, initial=False, flexure=None): """Generate an RA and DEC image for every pixel in the frame NOTE: This function is currently only used for SlicerIFU reductions. From d7968257cee097014448dc697a0764f201041d70 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 27 Feb 2024 16:54:16 +0000 Subject: [PATCH 066/128] no padding --- pypeit/spectrographs/keck_kcwi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/spectrographs/keck_kcwi.py b/pypeit/spectrographs/keck_kcwi.py index 1f48fbafe2..df5c6a3fb6 100644 --- a/pypeit/spectrographs/keck_kcwi.py +++ b/pypeit/spectrographs/keck_kcwi.py @@ -291,7 +291,7 @@ def default_pypeit_par(cls): # Set the slit edge parameters par['calibrations']['slitedges']['fit_order'] = 4 - par['calibrations']['slitedges']['pad'] = 2 # Need to pad out the tilts for the astrometric transform when creating a datacube. + par['calibrations']['slitedges']['pad'] = 0 # Do not pad the slits - this ensures that the tweak_edges method=gradient guarantees that the edges are defined at the maximum gradient. par['calibrations']['slitedges']['edge_thresh'] = 5 # 5 works well with a range of setups tested by RJC (mostly 1x1 binning) # KCWI has non-uniform spectral resolution across the field-of-view From 48fb279f94c33e496869c417f45a6fa76e1b5585 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 27 Feb 2024 16:55:31 +0000 Subject: [PATCH 067/128] no padding --- pypeit/spectrographs/gemini_gnirs.py | 2 +- pypeit/spectrographs/gtc_osiris.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pypeit/spectrographs/gemini_gnirs.py b/pypeit/spectrographs/gemini_gnirs.py index 719fee0215..5a88298847 100644 --- a/pypeit/spectrographs/gemini_gnirs.py +++ b/pypeit/spectrographs/gemini_gnirs.py @@ -618,7 +618,7 @@ def default_pypeit_par(cls): par['calibrations']['flatfield']['tweak_slits_thresh'] = 0.0 # Make sure the full slit is used (i.e. when the illumination fraction is > 0.5) par['calibrations']['flatfield']['tweak_slits_maxfrac'] = 0.0 # Make sure the full slit is used (i.e. no padding) par['calibrations']['flatfield']['slit_trim'] = 2 # Trim the slit edges - par['calibrations']['slitedges']['pad'] = 2 # Need to pad out the tilts for the astrometric transform when creating a datacube. + par['calibrations']['slitedges']['pad'] = 0 # Do not pad the slits - this ensures that the tweak_edges method=gradient guarantees that the edges are defined at the maximum gradient. # Decrease the wave tilts order, given the shorter slits of the IFU par['calibrations']['tilts']['spat_order'] = 1 diff --git a/pypeit/spectrographs/gtc_osiris.py b/pypeit/spectrographs/gtc_osiris.py index d8c97295d9..78bc81fa21 100644 --- a/pypeit/spectrographs/gtc_osiris.py +++ b/pypeit/spectrographs/gtc_osiris.py @@ -472,6 +472,7 @@ def default_pypeit_par(cls): par['calibrations']['tilts']['spec_order'] = 1 # Tweak the slit edges using the gradient method for SlicerIFU + par['calibrations']['slitedges']['pad'] = 0 # Do not pad the slits - this ensures that the tweak_edges method=gradient guarantees that the edges are defined at the maximum gradient. par['calibrations']['flatfield']['tweak_slits'] = True # Tweak the slit edges par['calibrations']['flatfield']['tweak_method'] = 'gradient' # The gradient method is better for SlicerIFU. par['calibrations']['flatfield']['tweak_slits_thresh'] = 0.0 # Make sure the full slit is used (i.e. when the illumination fraction is > 0.5) From d40325c5e968c0f291c3480630334df676255486 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 27 Feb 2024 21:27:18 +0000 Subject: [PATCH 068/128] rename init --- pypeit/coadd3d.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 0fdf7324b3..ee7fba354d 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -1013,7 +1013,7 @@ def load(self): # Initialise the slit edges msgs.info("Constructing slit image") slits = spec2DObj.slits - slitid_img_init = slits.slit_img(pad=0, flexure=spat_flexure) + slitid_img = slits.slit_img(pad=0, flexure=spat_flexure) slits_left, slits_right, _ = slits.select_edges(flexure=spat_flexure) # The order of operations below proceeds as follows: @@ -1039,7 +1039,7 @@ def load(self): bpmmask = spec2DObj.bpmmask # Mask the edges of the spectrum where the sky model is bad - sky_is_good = datacube.make_good_skymask(slitid_img_init, spec2DObj.tilts) + sky_is_good = datacube.make_good_skymask(slitid_img, spec2DObj.tilts) # TODO :: Really need to write some detailed information in the docs about all of the various corrections that can optionally be applied @@ -1072,7 +1072,7 @@ def load(self): if self.mnmx_wv is None: self.mnmx_wv = np.zeros((len(self.spec2d), slits.nslits, 2)) for slit_idx, slit_spat in enumerate(slits.spat_id): - onslit_init = (slitid_img_init == slit_spat) + onslit_init = (slitid_img == slit_spat) self.mnmx_wv[ff, slit_idx, 0] = np.min(waveimg[onslit_init]) self.mnmx_wv[ff, slit_idx, 1] = np.max(waveimg[onslit_init]) @@ -1095,7 +1095,7 @@ def load(self): # Construct a good pixel mask # TODO: This should use the mask function to figure out which elements are masked. - onslit_gpm = (slitid_img_init > 0) & (bpmmask.mask == 0) & sky_is_good + onslit_gpm = (slitid_img > 0) & (bpmmask.mask == 0) & sky_is_good # Generate the alignment splines, and then retrieve images of the RA and Dec of every pixel, # and the number of spatial pixels in each slit @@ -1196,7 +1196,7 @@ def load(self): wghts = self.weights[ff] * np.ones(sciImg.shape) # Get the slit image and then unset pixels in the slit image that are bad - slitid_img_gpm = slitid_img_init * onslit_gpm.astype(int) + slitid_img_gpm = slitid_img * onslit_gpm.astype(int) # If individual frames are to be output without aligning them, # there's no need to store information, just make the cubes now From 916b6293a1915d57a5384331994cead2f7db7f0d Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 28 Feb 2024 18:53:38 +0000 Subject: [PATCH 069/128] todo add --- pypeit/calibrations.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pypeit/calibrations.py b/pypeit/calibrations.py index 2fac6c8184..de502ff62b 100644 --- a/pypeit/calibrations.py +++ b/pypeit/calibrations.py @@ -758,6 +758,8 @@ def get_flats(self): msgs.info('Creating slit-illumination flat calibration frame using files: ') for f in raw_illum_files: msgs.prindent(f'{Path(f).name}') + # TODO BEFORE PR MERGE :: Need to check if the tweak slits is in self.slits + embed() illum_flat = buildimage.buildimage_fromlist(self.spectrograph, self.det, self.par['illumflatframe'], raw_illum_files, dark=self.msdark, bias=self.msbias, scattlight=self.msscattlight, From a214ed4c8dfe86a81a722051cc112b3870f4530e Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 28 Feb 2024 21:27:42 +0000 Subject: [PATCH 070/128] rm tweak bias --- pypeit/flatfield.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index 73305ae881..0443a9750f 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -1102,16 +1102,17 @@ def fit(self, spat_illum_only=False, doqa=True, debug=False): # image for all slits. Fix this... # Update the onslit mask - _slitid_img = self.slits.slit_img(slitidx=slit_idx, initial=False) + _slitid_img = self.slits.slit_img(pad=1, slitidx=slit_idx, initial=False) onslit_tweak = _slitid_img == slit_spat - spat_coo_tweak = self.slits.spatial_coordinate_image(slitidx=slit_idx, - slitid_img=_slitid_img) + # Note, we need to get the full image with the coordinates similar to spat_coo_init, otherwise, the + # tweaked locations are biased. + spat_coo_tweak = self.slits.spatial_coordinate_image(slitidx=slit_idx, full=True, slitid_img=_slitid_img) # Construct the empirical illumination profile # TODO This is extremely inefficient, because we only need to re-fit the illumflat, but # spatial_fit does both the reconstruction of the illumination function and the bspline fitting. # Only the b-spline fitting needs be reddone with the new tweaked spatial coordinates, so that would - # save a ton of runtime. It is not a trivial change becauase the coords are sorted, etc. + # save a ton of runtime. It is not a trivial change because the coords are sorted, etc. exit_status, spat_coo_data, spat_flat_data, spat_bspl, spat_gpm_fit, \ spat_flat_fit, spat_flat_data_raw = self.spatial_fit( norm_spec, spat_coo_tweak, median_slit_widths[slit_idx], spat_gpm, gpm, debug=False) From 9ce48e4e1ed981d0a12ed64ad6af675c96e5e841 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 29 Feb 2024 17:17:55 +0000 Subject: [PATCH 071/128] rm todo --- pypeit/calibrations.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pypeit/calibrations.py b/pypeit/calibrations.py index de502ff62b..b6e953b20f 100644 --- a/pypeit/calibrations.py +++ b/pypeit/calibrations.py @@ -758,8 +758,7 @@ def get_flats(self): msgs.info('Creating slit-illumination flat calibration frame using files: ') for f in raw_illum_files: msgs.prindent(f'{Path(f).name}') - # TODO BEFORE PR MERGE :: Need to check if the tweak slits is in self.slits - embed() + illum_flat = buildimage.buildimage_fromlist(self.spectrograph, self.det, self.par['illumflatframe'], raw_illum_files, dark=self.msdark, bias=self.msbias, scattlight=self.msscattlight, From f483ecb5781916e0574ded07b7f25295460469c2 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 2 Mar 2024 13:45:19 +0000 Subject: [PATCH 072/128] rm padding --- pypeit/flatfield.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index 0443a9750f..078eea5aca 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -1102,7 +1102,7 @@ def fit(self, spat_illum_only=False, doqa=True, debug=False): # image for all slits. Fix this... # Update the onslit mask - _slitid_img = self.slits.slit_img(pad=1, slitidx=slit_idx, initial=False) + _slitid_img = self.slits.slit_img(slitidx=slit_idx, initial=False) onslit_tweak = _slitid_img == slit_spat # Note, we need to get the full image with the coordinates similar to spat_coo_init, otherwise, the # tweaked locations are biased. From d59990e6dab13fbbc68bd0c3b53d63a3c36cb43c Mon Sep 17 00:00:00 2001 From: rcooke Date: Sun, 3 Mar 2024 12:39:07 +0000 Subject: [PATCH 073/128] docs --- pypeit/coadd3d.py | 2 ++ pypeit/core/datacube.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 16899f1576..d260848c5f 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -495,6 +495,8 @@ def __init__(self, spec2dfiles, par, skysub_frame=None, sensfile=None, scale_cor # Initialise the lists of ra_offsets and dec_offsets self.ra_offsets = [0.0]*self.numfiles self.dec_offsets = [0.0]*self.numfiles + if self.grating_corr is None: + self.grating_corr = [None] * self.numfiles # Check on Spectrograph input if spectrograph is None: diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 2ab1356fc4..9fda907bfd 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -268,7 +268,7 @@ def extract_point_source(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, # Set the user-defined radius wid = boxcar_radius / np.sqrt(arcsecSQ) # Set the radius of the extraction boxcar for the sky determination - msgs.info("Using a boxcar width of {:0.2f} arcsec".format(wid*np.sqrt(arcsecSQ))) + msgs.info("Using a boxcar radius of {:0.2f} arcsec".format(wid*np.sqrt(arcsecSQ))) widsky = 2 * wid # Setup the coordinates of the mask From 43f1d685f20b8009e754560d953a82e5c4e4c4ad Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 7 Mar 2024 08:00:34 +0000 Subject: [PATCH 074/128] fix wcs --- pypeit/coadd3d.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 2cd6f4d57d..612d91562b 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -93,7 +93,7 @@ class DataCube(datamodel.DataContainer): 'spectrograph', 'spect_meta', '_ivar', # This is set internally, and should be accessed with self.ivar - '_wcs' # This is set internally, and should be accessed with self.wcs + '_wcs' ] def __init__(self, flux, sig, bpm, wave, PYP_SPEC, blaze_wave, blaze_spec, sensfunc=None, @@ -200,7 +200,7 @@ def from_file(cls, ifile, verbose=True, chk_version=True, **kwargs): self.spectrograph = load_spectrograph(self.PYP_SPEC) self.spect_meta = self.spectrograph.parse_spec_header(hdu[0].header) self._ivar = None - self.wcs = wcs.WCS(hdu[1].header) + self._wcs = wcs.WCS(hdu[1].header) return self @property @@ -239,7 +239,7 @@ def extract_spec(self, parset, outname=None, boxcar_radius=None, overwrite=False # Datacube's are counts/second, so set the exposure time to 1 exptime = 1.0 # TODO :: Avoid transposing these large cubes - sobjs = datacube.extract_point_source(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self.wcs, + sobjs = datacube.extract_point_source(self.wave, self.flux.T, self.ivar.T, self.bpm.T, self._wcs, exptime=exptime, pypeline=self.spectrograph.pypeline, fluxed=self.fluxed, boxcar_radius=boxcar_radius, optfwhm=fwhm, whitelight_range=parset['cube']['whitelight_range']) From 8db670a1d104055291af8f9a2387f91975131696 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 9 Mar 2024 08:56:41 +0000 Subject: [PATCH 075/128] add debug --- pypeit/flatfield.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index 078eea5aca..7a2308378c 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -1867,7 +1867,7 @@ def show_flats(image_list, wcs_match=True, slits=None, waveimg=None): # TODO :: This could possibly be moved to core.flat def illum_profile_spectral(rawimg, waveimg, slits, slit_illum_ref_idx=0, smooth_npix=None, polydeg=None, - model=None, gpmask=None, skymask=None, trim=3, flexure=None, maxiter=5): + model=None, gpmask=None, skymask=None, trim=3, flexure=None, maxiter=5, debug=False): """ Determine the relative spectral illumination of all slits. Currently only used for image slicer IFUs. @@ -1900,6 +1900,8 @@ def illum_profile_spectral(rawimg, waveimg, slits, slit_illum_ref_idx=0, smooth_ Spatial flexure maxiter : :obj:`int` Maximum number of iterations to perform + debug : :obj:`bool` + Show the results of the relative spectral illumination correction Returns ------- @@ -2009,7 +2011,6 @@ def illum_profile_spectral(rawimg, waveimg, slits, slit_illum_ref_idx=0, smooth_ modelimg_copy /= relscl_model if max(abs(1/minv), abs(maxv)) < 1.005: # Relative accuracy of 0.5% is sufficient break - debug = False if debug: embed() ricp = rawimg.copy() From 470477531c5437ba219461925c66341079b0bc3d Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 26 Mar 2024 21:31:41 +0000 Subject: [PATCH 076/128] add bpm for white light --- pypeit/core/datacube.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 66b3c419df..7688753ade 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -596,13 +596,16 @@ def get_whitelight_range(wavemin, wavemax, wl_range): return wlrng -def make_whitelight_fromcube(cube, wave=None, wavemin=None, wavemax=None): +def make_whitelight_fromcube(cube, bpmcube, wave=None, wavemin=None, wavemax=None): """ Generate a white light image using an input cube. Args: cube (`numpy.ndarray`_): 3D datacube (the final element contains the wavelength dimension) + bpmcube (`numpy.ndarray`_): + 3D bad pixel mask cube (the final element contains the wavelength dimension). + A value of 1 indicates a bad pixel. wave (`numpy.ndarray`_, optional): 1D wavelength array. Only required if wavemin or wavemax are not None. @@ -619,7 +622,6 @@ def make_whitelight_fromcube(cube, wave=None, wavemin=None, wavemax=None): A whitelight image of the input cube (of type `numpy.ndarray`_). """ # Make a wavelength cut, if requested - cutcube = cube.copy() if wavemin is not None or wavemax is not None: # Make some checks on the input if wave is None: @@ -635,10 +637,15 @@ def make_whitelight_fromcube(cube, wave=None, wavemin=None, wavemax=None): ww = np.where((wave >= wavemin) & (wave <= wavemax))[0] wmin, wmax = ww[0], ww[-1]+1 cutcube = cube[:, :, wmin:wmax] + # Cut the bad pixel mask and convert it to a good pixel mask + cutgpmcube = np.logical_not(bpmcube[:, :, wmin:wmax]) + else: + cutcube = cube.copy() + cutgpmcube = np.logical_not(bpmcube) # Now sum along the wavelength axis - nrmval = np.sum(cutcube != 0.0, axis=2) - nrmval[nrmval == 0.0] = 1.0 - wl_img = np.sum(cutcube, axis=2) / nrmval + nrmval = np.sum(cutgpmcube, axis=2) + nrmval[nrmval == 0] = 1.0 + wl_img = np.sum(cutcube*cutgpmcube, axis=2) / nrmval return wl_img @@ -1594,7 +1601,7 @@ def generate_cube_subpixel(output_wcs, bins, sciImg, ivarImg, waveImg, slitid_im whitelight_range[0], whitelight_range[1])) # Get the output filename for the white light image out_whitelight = get_output_whitelight_filename(outfile) - whitelight_img = make_whitelight_fromcube(flxcube, wave=wave, wavemin=whitelight_range[0], wavemax=whitelight_range[1]) + whitelight_img = make_whitelight_fromcube(flxcube, bpmcube, wave=wave, wavemin=whitelight_range[0], wavemax=whitelight_range[1]) msgs.info("Saving white light image as: {0:s}".format(out_whitelight)) img_hdu = fits.PrimaryHDU(whitelight_img.T, header=whitelight_wcs.to_header()) img_hdu.writeto(out_whitelight, overwrite=overwrite) @@ -1698,8 +1705,7 @@ def subpixellate(output_wcs, bins, sciImg, ivarImg, waveImg, slitid_img_gpm, wgh Returns: :obj:`tuple`: Three or four `numpy.ndarray`_ objects containing (1) the datacube generated from the subpixellated inputs, (2) the corresponding - variance cube, (3) the corresponding bad pixel mask cube, and (4) the - residual cube. The latter is only returned if debug is True. + variance cube, and (3) the corresponding bad pixel mask cube. """ # Check the inputs for combinations of lists or not _sciImg, _ivarImg, _waveImg, _gpmImg, _wghtImg, _all_wcs, _tilts, _slits, _astrom_trans, _all_dar, _ra_offset, _dec_offset = \ From cacae299fb6853a491a7952c40b87c7c5472ee77 Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 27 Mar 2024 20:52:32 +0000 Subject: [PATCH 077/128] flatfield improvements --- pypeit/flatfield.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index 7a2308378c..488068d83d 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -1163,7 +1163,7 @@ def fit(self, spat_illum_only=False, doqa=True, debug=False): spat_model[onslit_padded] = spat_bspl.value(spat_coo_final[onslit_padded])[0] specspat_illum = np.fmax(spec_model, 1.0) * spat_model norm_spatspec = rawflat / specspat_illum - self.spatial_fit_finecorr(norm_spatspec, onslit_tweak, slit_idx, slit_spat, gpm, doqa=doqa) + spat_illum_fine = self.spatial_fit_finecorr(norm_spatspec, onslit_tweak, slit_idx, slit_spat, gpm, doqa=doqa)[onslit_tweak] # ---------------------------------------------------------- # Construct the illumination profile with the tweaked edges @@ -1404,6 +1404,11 @@ def spatial_fit_finecorr(self, normed, onslit_tweak, slit_idx, slit_spat, gpm, s A positive number trims the slit edges, a negative number pads the slit edges. doqa : :obj:`bool`, optional: Save the QA? + + Returns + ------- + illumflat_finecorr: `numpy.ndarray`_ + An image (same shape as normed) containing the fine correction to the spatial illumination profile """ # TODO :: Include fit_order in the parset?? fit_order = np.array([3, 6]) @@ -1467,7 +1472,7 @@ def spatial_fit_finecorr(self, normed, onslit_tweak, slit_idx, slit_spat, gpm, s normed[np.logical_not(onslit_tweak)] = 1 # For the QA, make everything off the slit equal to 1 spatillum_finecorr_qa(normed, illumflat_finecorr, this_left, this_right, ypos_fit, this_slit_trim, outfile=outfile, title=title, half_slen=slitlen//2) - return + return illumflat_finecorr def extract_structure(self, rawflat_orig, slit_trim=3): """ @@ -1576,7 +1581,8 @@ def spectral_illumination(self, gpm=None, debug=False): slit_illum_ref_idx=self.flatpar['slit_illum_ref_idx'], model=None, gpmask=gpm, skymask=None, trim=trim, flexure=self.wavetilts.spat_flexure, - smooth_npix=self.flatpar['slit_illum_smooth_npix']) + smooth_npix=self.flatpar['slit_illum_smooth_npix'], + debug=debug) def tweak_slit_edges(self, left, right, spat_coo, norm_flat, method='threshold', thresh=0.93, maxfrac=0.1, debug=False): """ @@ -2025,12 +2031,24 @@ def illum_profile_spectral(rawimg, waveimg, slits, slit_illum_ref_idx=0, smooth_ scale_ref = histScl * norm plt.subplot(211) plt.plot(wave_ref, this_spec) + plt.xlim([3600, 4500]) plt.subplot(212) plt.plot(wave_ref, scale_ref) + plt.xlim([3600, 4500]) plt.subplot(211) plt.plot(wave_ref, spec_ref, 'k--') + plt.xlim([3600, 4500]) + plt.show() + # Plot the relative scales of each slit + scales_med, scales_avg = np.zeros(slits.spat_id.size), np.zeros(slits.spat_id.size) + for ss in range(slits.spat_id.size): + onslit_ref_trim = (slitid_img_trim == slits.spat_id[ss]) & gpm & skymask_now & (waveimg>3628) & (waveimg<4510) + scales_med[ss] = np.median(ricp[onslit_ref_trim]/scaleImg[onslit_ref_trim]) + scales_avg[ss] = np.mean(ricp[onslit_ref_trim]/scaleImg[onslit_ref_trim]) + plt.plot(slits.spat_id, scales_med, 'bo-', label='Median') + plt.plot(slits.spat_id, scales_avg, 'ro-', label='Mean') + plt.legend() plt.show() - return scaleImg From 98e3dcaf719863ad1a4dc30e9d58d90e9bdad0a2 Mon Sep 17 00:00:00 2001 From: Ryan Cooke Date: Wed, 27 Mar 2024 21:34:41 +0000 Subject: [PATCH 078/128] Apply suggestions from code review Co-authored-by: Vasco Schiavo <115561717+VascoSch92@users.noreply.github.com> --- pypeit/core/procimg.py | 2 +- pypeit/images/rawimage.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/pypeit/core/procimg.py b/pypeit/core/procimg.py index 1ce8b977b4..1805fea67a 100644 --- a/pypeit/core/procimg.py +++ b/pypeit/core/procimg.py @@ -1376,7 +1376,7 @@ def nonlinear_counts(counts, ampimage, nonlinearity_coeffs): r""" Apply a nonlinearity correction to the provided counts. - The nonlinearity correction is applied to the provided counts using the + The nonlinearity correction is applied to the provided ``counts`` using the hard-coded parameters in the provided ``nonlinearity_coeffs``. The correction is applied to the provided ``counts`` using the following equation: diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index a7cb4d7c34..dd2714efef 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -310,7 +310,6 @@ def correct_nonlinear(self): Apply a non-linear correction to the image. This is a simple wrapper for :func:`~pypeit.core.procimg.nonlinear_counts`. - """ step = inspect.stack()[0][3] if self.steps[step]: From a897d2b9b3c0e39780b5b1abecd6513466e31868 Mon Sep 17 00:00:00 2001 From: rcooke Date: Thu, 28 Mar 2024 19:23:39 +0000 Subject: [PATCH 079/128] update flatfield --- pypeit/spectrographs/keck_kcwi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pypeit/spectrographs/keck_kcwi.py b/pypeit/spectrographs/keck_kcwi.py index df5c6a3fb6..cdf4a20b10 100644 --- a/pypeit/spectrographs/keck_kcwi.py +++ b/pypeit/spectrographs/keck_kcwi.py @@ -309,7 +309,7 @@ def default_pypeit_par(cls): # Relative illumination correction par['calibrations']['flatfield']['slit_illum_relative'] = True # Calculate the relative slit illumination par['calibrations']['flatfield']['slit_illum_ref_idx'] = 14 # The reference index - this should probably be the same for the science frame - par['calibrations']['flatfield']['slit_illum_smooth_npix'] = 5 # Sufficiently small value so less structure in relative weights + par['calibrations']['flatfield']['slit_illum_smooth_npix'] = 10 # Sufficiently small value so less structure in relative weights # LACosmics parameters par['scienceframe']['process']['sigclip'] = 4.0 @@ -948,7 +948,7 @@ def default_pypeit_par(cls): par['calibrations']['scattlight_pad'] = 6 # This is the unbinned number of pixels to pad par['calibrations']['pixelflatframe']['process']['subtract_scattlight'] = True par['calibrations']['illumflatframe']['process']['subtract_scattlight'] = True - par['scienceframe']['process']['subtract_scattlight'] = True + par['scienceframe']['process']['subtract_scattlight'] = False par['scienceframe']['process']['scattlight']['finecorr_method'] = 'median' par['scienceframe']['process']['scattlight']['finecorr_pad'] = 4 # This is the unbinned number of pixels to pad par['scienceframe']['process']['scattlight']['finecorr_order'] = 2 From db2fe46e3e86098a1bc5ee13a3b5b1fe5fc3a9f0 Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 12 Apr 2024 12:42:14 +0100 Subject: [PATCH 080/128] rm copy --- pypeit/core/flat.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pypeit/core/flat.py b/pypeit/core/flat.py index 3c15dd5aaf..018606f82c 100644 --- a/pypeit/core/flat.py +++ b/pypeit/core/flat.py @@ -530,8 +530,8 @@ def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, debug=False): ' ({0:.2f} pixels)'.format(right_shift * slitwidth)) # Calculate the tweak for the left edge - new_left = np.copy(left) + left_shift * slitwidth - new_right = np.copy(right) + right_shift * slitwidth + new_left = left + left_shift * slitwidth + new_right = right + right_shift * slitwidth # Calculate the value of the threshold at the new slit edges left_thresh = np.interp(left_shift, spat_coo, norm_flat) From 18c8eb748beb34386a81b6e70f65fa2aebf772bc Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 12 Apr 2024 12:49:39 +0100 Subject: [PATCH 081/128] rm initialise --- pypeit/find_objects.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/pypeit/find_objects.py b/pypeit/find_objects.py index fdeae69e35..646145eeba 100644 --- a/pypeit/find_objects.py +++ b/pypeit/find_objects.py @@ -972,22 +972,6 @@ class SlicerIFUFindObjects(MultiSlitFindObjects): def __init__(self, sciImg, slits, spectrograph, par, objtype, **kwargs): super().__init__(sciImg, slits, spectrograph, par, objtype, **kwargs) - def initialize_slits(self, slits, initial=False): - """ - Gather all the :class:`~pypeit.slittrace.SlitTraceSet` attributes that - we'll use here in :class:`FindObjects`. Identical to the parent but the - slits are not trimmed. - - Args: - slits (:class:`~pypeit.slittrace.SlitTraceSet`): - SlitTraceSet object containing the slit boundaries that will be - initialized. - initial (:obj:`bool`, optional): - Use the initial definition of the slits. If False, - tweaked slits are used. - """ - super().initialize_slits(slits) - def global_skysub(self, skymask=None, bkg_redux_sciimg=None, update_crmask=True, previous_sky=None, show_fit=False, show=False, show_objs=False, objs_not_masked=False, reinit_bpm: bool = True): From b98d75889f2c54f4eb30380b1c5957a2e842c100 Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 12 Apr 2024 12:51:14 +0100 Subject: [PATCH 082/128] fix patterns --- pypeit/core/procimg.py | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/pypeit/core/procimg.py b/pypeit/core/procimg.py index 1805fea67a..c8a7d41436 100644 --- a/pypeit/core/procimg.py +++ b/pypeit/core/procimg.py @@ -790,6 +790,7 @@ def subtract_pattern(rawframe, datasec_img, oscansec_img, frequency=None, axis=1 frequency = np.mean(frq) # Perform the overscan subtraction for each amplifier + full_model = np.zeros_like(frame_orig) # Store the model pattern for all amplifiers in this array for aa, amp in enumerate(amps): # Get the frequency to use for this amplifier if isinstance(frequency, list): @@ -800,9 +801,9 @@ def subtract_pattern(rawframe, datasec_img, oscansec_img, frequency=None, axis=1 use_fr = frequency # Extract overscan - overscan, os_slice = rect_slice_with_mask(frame_orig, tmp_oscan, amp) + overscan, os_slice = rect_slice_with_mask(frame_orig.copy(), tmp_oscan, amp) # Extract overscan+data - oscandata, osd_slice = rect_slice_with_mask(frame_orig, tmp_oscan+tmp_data, amp) + oscandata, osd_slice = rect_slice_with_mask(frame_orig.copy(), tmp_oscan+tmp_data, amp) # Subtract the DC offset overscan -= np.median(overscan, axis=1)[:, np.newaxis] @@ -831,7 +832,7 @@ def subtract_pattern(rawframe, datasec_img, oscansec_img, frequency=None, axis=1 tmpamp = np.fft.rfft(overscan, axis=1) idx = (np.arange(overscan.shape[0]), np.argmax(np.abs(tmpamp), axis=1)) # Convert result to amplitude and phase - amps = (np.abs(tmpamp))[idx] * (2.0 / overscan.shape[1]) + ampls = (np.abs(tmpamp))[idx] * (2.0 / overscan.shape[1]) # STEP 2 - Using the model frequency, calculate how amplitude depends on pixel row (usually constant) # Use the above to as initial guess parameters for a chi-squared minimisation of the amplitudes @@ -854,7 +855,7 @@ def subtract_pattern(rawframe, datasec_img, oscansec_img, frequency=None, axis=1 try: # Now fit it popt, pcov = scipy.optimize.curve_fit( - cosfunc, cent[wgd], hist[wgd], p0=[amps[ii], 0.0], + cosfunc, cent[wgd], hist[wgd], p0=[ampls[ii], 0.0], bounds=([0, -np.inf],[np.inf, np.inf]) ) except ValueError: @@ -897,21 +898,15 @@ def subtract_pattern(rawframe, datasec_img, oscansec_img, frequency=None, axis=1 model_pattern[ii, :] = cosfunc_full(xdata_all, amp_mod[ii], frq_mod[ii], popt[0]) # Estimate the improvement of the effective read noise - tmp = outframe.copy() - tmp[osd_slice] -= model_pattern - mod_oscan, _ = rect_slice_with_mask(tmp, tmp_oscan, amp) - old_ron = astropy.stats.sigma_clipped_stats(overscan, sigma=5)[-1] - new_ron = astropy.stats.sigma_clipped_stats(overscan-mod_oscan, sigma=5)[-1] + full_model[osd_slice] = model_pattern + old_ron = astropy.stats.sigma_clipped_stats(overscan, sigma=5, stdfunc='mad_std')[-1] + new_ron = astropy.stats.sigma_clipped_stats(overscan-full_model[os_slice], sigma=5, stdfunc='mad_std')[-1] msgs.info(f'Effective read noise of amplifier {amp} reduced by a factor of {old_ron/new_ron:.2f}x') - # Subtract the model pattern from the full datasec - outframe[osd_slice] -= model_pattern - # Transpose if the input frame if applied along a different axis if axis == 0: - outframe = outframe.T - # Return the result - return outframe + return (outframe - full_model).T + return outframe - full_model def pattern_frequency(frame, axis=1): From f4bee40f55106e1babef43474b4dd8431e031a87 Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 12 Apr 2024 12:52:33 +0100 Subject: [PATCH 083/128] doc hotfix --- doc/calibrations/slit_tracing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/calibrations/slit_tracing.rst b/doc/calibrations/slit_tracing.rst index 84bbdbd574..af2b1ba969 100644 --- a/doc/calibrations/slit_tracing.rst +++ b/doc/calibrations/slit_tracing.rst @@ -369,7 +369,7 @@ case for low-dispersion data, e.g. LRISb 300 grism spectra .. code-block:: ini [calibrations] - [[slits]] + [[slitedges]] smash_range = 0.5,1. Algorithm From fe28589139aea82983b83978d4bdbcd078f47881 Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 12 Apr 2024 17:31:25 +0100 Subject: [PATCH 084/128] scipy convolution module --- pypeit/core/flat.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pypeit/core/flat.py b/pypeit/core/flat.py index 018606f82c..eb13d44bac 100644 --- a/pypeit/core/flat.py +++ b/pypeit/core/flat.py @@ -12,7 +12,6 @@ import scipy.interpolate import scipy.ndimage import matplotlib.pyplot as plt -from astropy import convolution from IPython import embed @@ -517,9 +516,11 @@ def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, debug=False): # Calculate the gradient of the normalized flat profile grad_norm_flat = np.gradient(norm_flat) # Smooth with a Gaussian kernel + # The standard deviation of the kernel is set to be one detector pixel. Since the norm_flat array is oversampled, + # we need to set the kernel width (sig_res) to be the oversampling factor. sig_res = norm_flat.size / slitwidth - gauss_kernel = convolution.Gaussian1DKernel(sig_res) - grad_norm_flat_smooth = convolution.convolve(grad_norm_flat, gauss_kernel, boundary='extend') + # The scipy.ndimage module is faster than the astropy convolution module + grad_norm_flat_smooth = scipy.ndimage.gaussian_filter1d(grad_norm_flat, sig_res, mode='nearest') # Find the location of the minimum/maximum gradient - this is the amount of shift required left_shift = spat_coo[np.argmax(grad_norm_flat_smooth)] @@ -527,7 +528,7 @@ def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, debug=False): msgs.info('Tweaking left slit boundary by {0:.1f}%'.format(100 * left_shift) + ' ({0:.2f} pixels)'.format(left_shift * slitwidth)) msgs.info('Tweaking right slit boundary by {0:.1f}%'.format(100 * right_shift) + - ' ({0:.2f} pixels)'.format(right_shift * slitwidth)) + ' ({0:.2f} pixels)'.format(right_shift * slitwidth)) # Calculate the tweak for the left edge new_left = left + left_shift * slitwidth From e94e037ee122b1cf2f828928fc7d34a4d6ea69e1 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 30 Apr 2024 19:48:40 +0100 Subject: [PATCH 085/128] add maxfrac --- pypeit/core/flat.py | 30 +++++++++++++++++++++++++----- pypeit/flatfield.py | 2 +- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/pypeit/core/flat.py b/pypeit/core/flat.py index eb13d44bac..46495f56f2 100644 --- a/pypeit/core/flat.py +++ b/pypeit/core/flat.py @@ -469,7 +469,7 @@ def poly_map(rawimg, rawivar, waveimg, slitmask, slitmask_trim, modelimg, deg=3, return modelmap, relscale -def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, debug=False): +def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, maxfrac=0.1, debug=False): r""" Adjust slit edges based on the gradient of the normalized flat-field illumination profile. @@ -489,6 +489,12 @@ def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, debug=False): norm_flat (`numpy.ndarray`_) Normalized flat data that provide the slit illumination profile. Shape is :math:`(N_{\rm flat},)`. + maxfrac (:obj:`float`, optional): + The maximum fraction of the slit width that the slit edge + can be adjusted by this algorithm. If ``maxfrac = 0.1``, + this means the maximum change in the slit width (either + narrowing or broadening) is 20% (i.e., 10% for either + edge). debug (:obj:`bool`, optional): If True, the function will output plots to test if the fitting is working correctly. @@ -525,10 +531,24 @@ def tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, debug=False): # Find the location of the minimum/maximum gradient - this is the amount of shift required left_shift = spat_coo[np.argmax(grad_norm_flat_smooth)] right_shift = spat_coo[np.argmin(grad_norm_flat_smooth)]-1.0 - msgs.info('Tweaking left slit boundary by {0:.1f}%'.format(100 * left_shift) + - ' ({0:.2f} pixels)'.format(left_shift * slitwidth)) - msgs.info('Tweaking right slit boundary by {0:.1f}%'.format(100 * right_shift) + - ' ({0:.2f} pixels)'.format(right_shift * slitwidth)) + + # Check if the shift is within the allowed range + if np.abs(left_shift) > maxfrac: + msgs.warn('Left slit edge shift of {0:.1f}% exceeds the maximum allowed of {1:.1f}%'.format( + 100*left_shift, 100*maxfrac) + msgs.newline() + + 'The left edge will not be tweaked.') + left_shift = 0.0 + else: + msgs.info('Tweaking left slit boundary by {0:.1f}%'.format(100 * left_shift) + + ' ({0:.2f} pixels)'.format(left_shift * slitwidth)) + if np.abs(right_shift) > maxfrac: + msgs.warn('Right slit edge shift of {0:.1f}% exceeds the maximum allowed of {1:.1f}%'.format( + 100*right_shift, 100*maxfrac) + msgs.newline() + + 'The right edge will not be tweaked.') + right_shift = 0.0 + else: + msgs.info('Tweaking right slit boundary by {0:.1f}%'.format(100 * right_shift) + + ' ({0:.2f} pixels)'.format(right_shift * slitwidth)) # Calculate the tweak for the left edge new_left = left + left_shift * slitwidth diff --git a/pypeit/flatfield.py b/pypeit/flatfield.py index 488068d83d..432ed4d469 100644 --- a/pypeit/flatfield.py +++ b/pypeit/flatfield.py @@ -1644,7 +1644,7 @@ def tweak_slit_edges(self, left, right, spat_coo, norm_flat, method='threshold', return flat.tweak_slit_edges_threshold(left, right, spat_coo, norm_flat, thresh=thresh, maxfrac=maxfrac, debug=debug) elif method == "gradient": - return flat.tweak_slit_edges_gradient(left, right, spat_coo, norm_flat) + return flat.tweak_slit_edges_gradient(left, right, spat_coo, norm_flat, maxfrac=maxfrac, debug=debug) else: msgs.error("Method for tweaking slit edges not recognized: {0}".format(method)) From 562686129093e3d972f9f87a050f834d932413b9 Mon Sep 17 00:00:00 2001 From: jhennawi Date: Sat, 1 Jun 2024 17:34:13 -0700 Subject: [PATCH 086/128] refactoring pypeit image --- pypeit/images/buildimage.py | 27 +++++--- pypeit/images/combineimage.py | 115 ++++++++++++---------------------- 2 files changed, 60 insertions(+), 82 deletions(-) diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index b9ecfa9339..38fd2f6dea 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -10,11 +10,13 @@ from pypeit import msgs from pypeit.par import pypeitpar +from pypeit.images import rawimage from pypeit.images import combineimage from pypeit.images import pypeitimage from pypeit.core.framematch import valid_frametype + class ArcImage(pypeitimage.PypeItCalibrationImage): """ Simple DataContainer for the Arc Image @@ -160,7 +162,10 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= scattlight=None, flatimages=None, maxiters=5, ignore_saturation=True, slits=None, mosaic=None, calib_dir=None, setup=None, calib_id=None): """ - Perform basic image processing on a list of images and combine the results. + Perform basic image processing on a list of images and combine the results. All + core processing steps for each image are handled by :class:`~pypeit.images.rawimage.RawImage` and + image combination is handled by :class:`~pypeit.images.combineimage.CombineImage`. + This function can be used to process both single images, lists of images, and detector mosaics. .. warning:: @@ -246,15 +251,23 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= # Should the detectors be reformatted into a single image mosaic? if mosaic is None: mosaic = isinstance(det, tuple) and frame_par['frametype'] not in ['bias', 'dark'] - + + rawImage_list = [] + # Loop on the files + for ifile in file_list: + # Load raw image + rawImage = rawimage.RawImage(ifile, spectrograph, det) + # Process + rawImage_list.append(rawImage.process( + frame_par['process'], scattlight=scattlight, bias=bias, + bpm=bpm, dark=dark, flatimages=flatimages, slits=slits, mosaic=mosaic)) + # Do it - combineImage = combineimage.CombineImage(spectrograph, det, frame_par['process'], file_list) - pypeitImage = combineImage.run(bias=bias, bpm=bpm, dark=dark, flatimages=flatimages, scattlight=scattlight, - sigma_clip=frame_par['process']['clip'], + combineImage = combineimage.CombineImage(rawImage_list, frame_par['process']) + pypeitImage = combineImage.run(sigma_clip=frame_par['process']['clip'], sigrej=frame_par['process']['comb_sigrej'], maxiters=maxiters, ignore_saturation=ignore_saturation, - slits=slits, combine_method=frame_par['process']['combine'], - mosaic=mosaic) + combine_method=frame_par['process']['combine']) # Return class type, if returning any of the frame_image_classes cls = frame_image_classes[frame_par['frametype']] \ diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index ffb0b20247..70596822a5 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -16,28 +16,19 @@ from pypeit.par import pypeitpar from pypeit import utils from pypeit.images import pypeitimage -from pypeit.images import rawimage from pypeit.images import imagebitmask class CombineImage: """ - Process and combine detector images. - - All core processing steps for each image are handled by - :class:`~pypeit.images.rawimage.RawImage`. This class can be used to - process both single images, lists of images, and detector mosaics. + Process and combine detector images. Args: - spectrograph (:class:`~pypeit.spectrographs.spectrograph.Spectrograph`): - Spectrograph used to take the data. - det (:obj:`int`, :obj:`tuple`): - The 1-indexed detector number(s) to process. If a tuple, it must - include detectors viable as a mosaic for the provided spectrograph; - see :func:`~pypeit.spectrographs.spectrograph.Spectrograph.allowed_mosaics`. + Parameters that dictate the processing of the images. + rawImages (:obj:`list`): + Either a single :class:`~pypeit.images.rawimage.RawImage` object or a list of one or more + of these objects to be combined into a an image. par (:class:`~pypeit.par.pypeitpar.ProcessImagesPar`): Parameters that dictate the processing of the images. - files (:obj:`str`, array-like): - A set of one or more images to process and combine. Attributes: spectrograph (:class:`~pypeit.spectrographs.spectrograph.Spectrograph`): @@ -46,24 +37,22 @@ class CombineImage: The 1-indexed detector number(s) to process. par (:class:`~pypeit.par.pypeitpar.ProcessImagesPar`): Parameters that dictate the processing of the images. - files (:obj:`list`): - A set of one or more images to process and combine. + rawImages (:obj:`list`): + A list of one or more :class:`~pypeit.images.rawimage.RawImage` objects + to be combined. """ - def __init__(self, spectrograph, det, par, files): - self.spectrograph = spectrograph - self.det = det + def __init__(self, rawImages, par): if not isinstance(par, pypeitpar.ProcessImagesPar): msgs.error('Provided ParSet for must be type ProcessImagesPar.') self.par = par # This musts be named this way as it is frequently a child - self.files = list(files) if hasattr(files, '__len__') else [files] - # NOTE: nfiles is a property method. Defining files above must come + self.rawImages = list(rawImages) if hasattr(rawImages, '__len__') else [rawImages] + # NOTE: nimgs is a property method. Defining rawImages above must come # before this check! - if self.nfiles == 0: + if self.nimgs == 0: msgs.error('CombineImage requires a list of files to instantiate') - def run(self, bias=None, scattlight=None, flatimages=None, ignore_saturation=False, sigma_clip=True, - bpm=None, sigrej=None, maxiters=5, slits=None, dark=None, combine_method='mean', mosaic=False): + def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, combine_method='mean'): r""" Process and combine all images. @@ -133,14 +122,6 @@ def run(self, bias=None, scattlight=None, flatimages=None, ignore_saturation=Fal in images of the same shape. Args: - bias (:class:`~pypeit.images.buildimage.BiasImage`, optional): - Bias image for bias subtraction; passed directly to - :func:`~pypeit.images.rawimage.RawImage.process` for all images. - scattlight (:class:`~pypeit.scattlight.ScatteredLight`, optional): - Scattered light model to be used to determine scattered light. - flatimages (:class:`~pypeit.flatfield.FlatImages`, optional): - Flat-field images for flat fielding; passed directly to - :func:`~pypeit.images.rawimage.RawImage.process` for all images. ignore_saturation (:obj:`bool`, optional): If True, turn off the saturation flag in the individual images before stacking. This avoids having such values set to 0, which @@ -149,9 +130,6 @@ def run(self, bias=None, scattlight=None, flatimages=None, ignore_saturation=Fal sigma_clip (:obj:`bool`, optional): When ``combine_method='mean'``, perform a sigma-clip the data; see :func:`~pypeit.core.combine.weighted_combine`. - bpm (`numpy.ndarray`_, optional): - Bad pixel mask; passed directly to - :func:`~pypeit.images.rawimage.RawImage.process` for all images. sigrej (:obj:`float`, optional): When ``combine_method='mean'``, this sets the sigma-rejection thresholds used when sigma-clipping the image combination. @@ -165,12 +143,6 @@ def run(self, bias=None, scattlight=None, flatimages=None, ignore_saturation=Fal rejection iterations. If None, rejection iterations continue until no more data are rejected; see :func:`~pypeit.core.combine.weighted_combine``. - slits (:class:`~pypeit.slittrace.SlitTraceSet`, optional): - Slit edge trace locations; passed directly to - :func:`~pypeit.images.rawimage.RawImage.process` for all images. - dark (:class:`~pypeit.images.buildimage.DarkImage`, optional): - Dark-current image; passed directly to - :func:`~pypeit.images.rawimage.RawImage.process` for all images. combine_method (:obj:`str`, optional): Method used to combine images. Must be ``'mean'`` or ``'median'``; see above. @@ -184,60 +156,53 @@ def run(self, bias=None, scattlight=None, flatimages=None, ignore_saturation=Fal all the processed images. """ # Check the input (i.e., bomb out *before* it does any processing) - if self.nfiles == 0: + if self.nimgs == 0: msgs.error('Object contains no files to process!') - if self.nfiles > 1 and combine_method not in ['mean', 'median']: + if self.nimgs > 1 and combine_method not in ['mean', 'median']: msgs.error(f'Unknown image combination method, {combine_method}. Must be ' '"mean" or "median".') # Loop on the files - for kk, ifile in enumerate(self.files): - # Load raw image - rawImage = rawimage.RawImage(ifile, self.spectrograph, self.det) - # Process - pypeitImage = rawImage.process(self.par, scattlight=scattlight, bias=bias, bpm=bpm, dark=dark, - flatimages=flatimages, slits=slits, mosaic=mosaic) - - if self.nfiles == 1: + for kk, rawImage in enumerate(self.rawImages): + if self.nimgs == 1: # Only 1 file, so we're done - pypeitImage.files = self.files - return pypeitImage + return rawImage elif kk == 0: # Allocate arrays to collect data for each frame - shape = (self.nfiles,) + pypeitImage.shape + shape = (self.nimgs,) + rawImage.shape img_stack = np.zeros(shape, dtype=float) scl_stack = np.ones(shape, dtype=float) rn2img_stack = np.zeros(shape, dtype=float) basev_stack = np.zeros(shape, dtype=float) gpm_stack = np.zeros(shape, dtype=bool) - lampstat = [None]*self.nfiles - exptime = np.zeros(self.nfiles, dtype=float) + lampstat = [None]*self.nimgs + exptime = np.zeros(self.nimgs, dtype=float) # Save the lamp status # TODO: As far as I can tell, this is the *only* place rawheadlist # is used. Is there a way we can get this from fitstbl instead? - lampstat[kk] = self.spectrograph.get_lamps_status(pypeitImage.rawheadlist) + lampstat[kk] = rawImage.spectrograph.get_lamps_status(rawImage.rawheadlist) # Save the exposure time to check if it's consistent for all images. - exptime[kk] = pypeitImage.exptime + exptime[kk] = rawImage.exptime # Processed image - img_stack[kk] = pypeitImage.image + img_stack[kk] = rawImage.image # Get the count scaling - if pypeitImage.img_scale is not None: - scl_stack[kk] = pypeitImage.img_scale + if rawImage.img_scale is not None: + scl_stack[kk] = rawImage.img_scale # Read noise squared image - if pypeitImage.rn2img is not None: - rn2img_stack[kk] = pypeitImage.rn2img * scl_stack[kk]**2 + if rawImage.rn2img is not None: + rn2img_stack[kk] = rawImage.rn2img * scl_stack[kk]**2 # Processing variance image - if pypeitImage.base_var is not None: - basev_stack[kk] = pypeitImage.base_var * scl_stack[kk]**2 + if rawImage.base_var is not None: + basev_stack[kk] = rawImage.base_var * scl_stack[kk]**2 # Final mask for this image # TODO: This seems kludgy to me. Why not just pass ignore_saturation # to process_one and ignore the saturation when the mask is actually # built, rather than untoggling the bit here? if ignore_saturation: # Important for calibrations as we don't want replacement by 0 - pypeitImage.update_mask('SATURATION', action='turn_off') + rawImage.update_mask('SATURATION', action='turn_off') # Get a simple boolean good-pixel mask for all the unmasked pixels - gpm_stack[kk] = pypeitImage.select_flag(invert=True) + gpm_stack[kk] = rawImage.select_flag(invert=True) # Check that the lamps being combined are all the same: if not lampstat[1:] == lampstat[:-1]: @@ -266,7 +231,7 @@ def run(self, bias=None, scattlight=None, flatimages=None, ignore_saturation=Fal # Coadd them if combine_method == 'mean': - weights = np.ones(self.nfiles, dtype=float)/self.nfiles + weights = np.ones(self.nimgs, dtype=float)/self.nimgs img_list_out, var_list_out, gpm, nframes \ = combine.weighted_combine(weights, [img_stack, scl_stack], # images to stack @@ -310,14 +275,14 @@ def run(self, bias=None, scattlight=None, flatimages=None, ignore_saturation=Fal # Build the combined image comb = pypeitimage.PypeItImage(image=comb_img, ivar=utils.inverse(comb_var), nimg=nframes, - amp_img=pypeitImage.amp_img, det_img=pypeitImage.det_img, + amp_img=rawImage.amp_img, det_img=rawImage.det_img, rn2img=comb_rn2, base_var=comb_basev, img_scale=comb_scl, # NOTE: This *must* be a boolean. bpm=np.logical_not(gpm), # NOTE: The detector is needed here so # that we can get the dark current later. - detector=pypeitImage.detector, - PYP_SPEC=self.spectrograph.name, + detector=rawImage.detector, + PYP_SPEC=rawImage.spectrograph.name, units='e-' if self.par['apply_gain'] else 'ADU', exptime=comb_texp, noise_floor=self.par['noise_floor'], shot_noise=self.par['shot_noise']) @@ -325,8 +290,8 @@ def run(self, bias=None, scattlight=None, flatimages=None, ignore_saturation=Fal # Internals # TODO: Do we need these? comb.files = self.files - comb.rawheadlist = pypeitImage.rawheadlist - comb.process_steps = pypeitImage.process_steps + comb.rawheadlist = rawImage.rawheadlist + comb.process_steps = rawImage.process_steps # Build the base level mask comb.build_mask(saturation='default', mincounts='default') @@ -338,10 +303,10 @@ def run(self, bias=None, scattlight=None, flatimages=None, ignore_saturation=Fal return comb @property - def nfiles(self): + def nimgs(self): """ The number of files in :attr:`files`. """ - return len(self.files) if isinstance(self.files, (np.ndarray, list)) else 0 + return len(self.rawImages) if isinstance(self.rawImages, (np.ndarray, list)) else 0 From 383ac4845850a16608632a8e3d50d1ba9d4ccef2 Mon Sep 17 00:00:00 2001 From: jhennawi Date: Sat, 1 Jun 2024 17:41:23 -0700 Subject: [PATCH 087/128] new --- pypeit/images/buildimage.py | 3 ++- pypeit/images/combineimage.py | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index 38fd2f6dea..1b74f63eb3 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -263,11 +263,12 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= bpm=bpm, dark=dark, flatimages=flatimages, slits=slits, mosaic=mosaic)) # Do it - combineImage = combineimage.CombineImage(rawImage_list, frame_par['process']) + combineImage = combineimage.CombineImage(rawImage_list, spectrograph, frame_par['process']) pypeitImage = combineImage.run(sigma_clip=frame_par['process']['clip'], sigrej=frame_par['process']['comb_sigrej'], maxiters=maxiters, ignore_saturation=ignore_saturation, combine_method=frame_par['process']['combine']) + combineImage.files = file_list # Return class type, if returning any of the frame_image_classes cls = frame_image_classes[frame_par['frametype']] \ diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index 70596822a5..db50057ea9 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -27,6 +27,8 @@ class CombineImage: rawImages (:obj:`list`): Either a single :class:`~pypeit.images.rawimage.RawImage` object or a list of one or more of these objects to be combined into a an image. + spectrograph (:class:`~pypeit.spectrographs.spectrograph.Spectrograph`): + Spectrograph used to take the data. par (:class:`~pypeit.par.pypeitpar.ProcessImagesPar`): Parameters that dictate the processing of the images. @@ -42,11 +44,13 @@ class CombineImage: to be combined. """ - def __init__(self, rawImages, par): + def __init__(self, rawImages, spectrograph, par): if not isinstance(par, pypeitpar.ProcessImagesPar): msgs.error('Provided ParSet for must be type ProcessImagesPar.') - self.par = par # This musts be named this way as it is frequently a child self.rawImages = list(rawImages) if hasattr(rawImages, '__len__') else [rawImages] + self.spectrograph = spectrograph + self.par = par # This musts be named this way as it is frequently a child + # NOTE: nimgs is a property method. Defining rawImages above must come # before this check! if self.nimgs == 0: @@ -181,7 +185,7 @@ def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, # Save the lamp status # TODO: As far as I can tell, this is the *only* place rawheadlist # is used. Is there a way we can get this from fitstbl instead? - lampstat[kk] = rawImage.spectrograph.get_lamps_status(rawImage.rawheadlist) + lampstat[kk] = self.spectrograph.get_lamps_status(rawImage.rawheadlist) # Save the exposure time to check if it's consistent for all images. exptime[kk] = rawImage.exptime # Processed image @@ -282,14 +286,14 @@ def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, # NOTE: The detector is needed here so # that we can get the dark current later. detector=rawImage.detector, - PYP_SPEC=rawImage.spectrograph.name, + PYP_SPEC=self.spectrograph.name, units='e-' if self.par['apply_gain'] else 'ADU', exptime=comb_texp, noise_floor=self.par['noise_floor'], shot_noise=self.par['shot_noise']) # Internals # TODO: Do we need these? - comb.files = self.files + #comb.files = self.files comb.rawheadlist = rawImage.rawheadlist comb.process_steps = rawImage.process_steps From db7634398c38873f5ebbfc653eca15061b03dad5 Mon Sep 17 00:00:00 2001 From: jhennawi Date: Sat, 1 Jun 2024 18:05:15 -0700 Subject: [PATCH 088/128] refactored image combining to work on a set of image objects --- pypeit/images/buildimage.py | 2 -- pypeit/images/combineimage.py | 6 ++++-- pypeit/images/pypeitimage.py | 7 ++++--- pypeit/images/rawimage.py | 1 + 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index 1b74f63eb3..bbafc6f3e3 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -268,8 +268,6 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= sigrej=frame_par['process']['comb_sigrej'], maxiters=maxiters, ignore_saturation=ignore_saturation, combine_method=frame_par['process']['combine']) - combineImage.files = file_list - # Return class type, if returning any of the frame_image_classes cls = frame_image_classes[frame_par['frametype']] \ if frame_par['frametype'] in frame_image_classes.keys() else None diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index db50057ea9..bc9d0439f6 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -165,11 +165,12 @@ def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, if self.nimgs > 1 and combine_method not in ['mean', 'median']: msgs.error(f'Unknown image combination method, {combine_method}. Must be ' '"mean" or "median".') - + file_list = [] # Loop on the files for kk, rawImage in enumerate(self.rawImages): if self.nimgs == 1: # Only 1 file, so we're done + rawImage.files = [rawImage.filename] return rawImage elif kk == 0: # Allocate arrays to collect data for each frame @@ -207,6 +208,7 @@ def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, rawImage.update_mask('SATURATION', action='turn_off') # Get a simple boolean good-pixel mask for all the unmasked pixels gpm_stack[kk] = rawImage.select_flag(invert=True) + file_list.append(rawImage.filename) # Check that the lamps being combined are all the same: if not lampstat[1:] == lampstat[:-1]: @@ -293,7 +295,7 @@ def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, # Internals # TODO: Do we need these? - #comb.files = self.files + comb.files = file_list comb.rawheadlist = rawImage.rawheadlist comb.process_steps = rawImage.process_steps diff --git a/pypeit/images/pypeitimage.py b/pypeit/images/pypeitimage.py index 91d8f118e0..cb9bb1a28f 100644 --- a/pypeit/images/pypeitimage.py +++ b/pypeit/images/pypeitimage.py @@ -127,7 +127,8 @@ class PypeItImage(datamodel.DataContainer): 'shot_noise': dict(otype=bool, descr='Shot-noise included in variance'), 'spat_flexure': dict(otype=float, descr='Shift, in spatial pixels, between this image ' - 'and SlitTrace')} + 'and SlitTrace'), + 'filename': dict(otype=str, descr='Filename for the image'),} """Data model components.""" internals = ['process_steps', 'files', 'rawheadlist'] @@ -162,8 +163,8 @@ def from_pypeitimage(cls, pypeitImage): def __init__(self, image, ivar=None, nimg=None, amp_img=None, det_img=None, rn2img=None, base_var=None, img_scale=None, fullmask=None, detector=None, spat_flexure=None, - PYP_SPEC=None, units=None, exptime=None, noise_floor=None, shot_noise=None, - bpm=None, crmask=None, usermask=None, clean_mask=False): + filename=None, PYP_SPEC=None, units=None, exptime=None, noise_floor=None, + shot_noise=None, bpm=None, crmask=None, usermask=None, clean_mask=False): if image is None: msgs.error('Must provide an image when instantiating PypeItImage.') diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index 8108c4b828..eb7c84324c 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -677,6 +677,7 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl shot_noise=self.par['shot_noise'], bpm=_bpm.astype(bool)) + pypeitImage.filename = self.filename pypeitImage.rawheadlist = self.headarr pypeitImage.process_steps = [key for key in self.steps.keys() if self.steps[key]] From 85917f7abfff0f32971bf2e3b176029c701fad59 Mon Sep 17 00:00:00 2001 From: jhennawi Date: Sun, 2 Jun 2024 14:16:26 -0700 Subject: [PATCH 089/128] removed unncessary parameter arguments --- pypeit/images/buildimage.py | 5 +---- pypeit/images/combineimage.py | 38 +++++++++++------------------------ 2 files changed, 13 insertions(+), 30 deletions(-) diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index bbafc6f3e3..dbd18d688b 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -264,10 +264,7 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= # Do it combineImage = combineimage.CombineImage(rawImage_list, spectrograph, frame_par['process']) - pypeitImage = combineImage.run(sigma_clip=frame_par['process']['clip'], - sigrej=frame_par['process']['comb_sigrej'], - maxiters=maxiters, ignore_saturation=ignore_saturation, - combine_method=frame_par['process']['combine']) + pypeitImage = combineImage.run(maxiters=maxiters, ignore_saturation=ignore_saturation) # Return class type, if returning any of the frame_image_classes cls = frame_image_classes[frame_par['frametype']] \ if frame_par['frametype'] in frame_image_classes.keys() else None diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index bc9d0439f6..22687e1c44 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -56,7 +56,8 @@ def __init__(self, rawImages, spectrograph, par): if self.nimgs == 0: msgs.error('CombineImage requires a list of files to instantiate') - def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, combine_method='mean'): + + def run(self, ignore_saturation=False, maxiters=5): r""" Process and combine all images. @@ -68,7 +69,7 @@ def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, file and returns the result. If there are multiple files, all the files are processed and the - processed images are combined based on the ``combine_method``, where the + processed images are combined based on the ``par['combine']``, where the options are: - 'mean': If ``sigma_clip`` is True, this is a sigma-clipped mean; @@ -131,39 +132,24 @@ def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, before stacking. This avoids having such values set to 0, which for certain images (e.g. flat calibrations) can have unintended consequences. - sigma_clip (:obj:`bool`, optional): - When ``combine_method='mean'``, perform a sigma-clip the data; - see :func:`~pypeit.core.combine.weighted_combine`. - sigrej (:obj:`float`, optional): - When ``combine_method='mean'``, this sets the sigma-rejection - thresholds used when sigma-clipping the image combination. - Ignored if ``sigma_clip`` is False. If None and ``sigma_clip`` - is True, the thresholds are determined automatically based on - the number of images provided; see - :func:`~pypeit.core.combine.weighted_combine``. maxiters (:obj:`int`, optional): - When ``combine_method='mean'``) and sigma-clipping + When ``par['combine']='mean'``) and sigma-clipping (``sigma_clip`` is True), this sets the maximum number of rejection iterations. If None, rejection iterations continue until no more data are rejected; see :func:`~pypeit.core.combine.weighted_combine``. - combine_method (:obj:`str`, optional): - Method used to combine images. Must be ``'mean'`` or - ``'median'``; see above. - mosaic (:obj:`bool`, optional): - If multiple detectors are being processes, mosaic them into a - single image. See - :func:`~pypeit.images.rawimage.RawImage.process`. Returns: :class:`~pypeit.images.pypeitimage.PypeItImage`: The combination of all the processed images. """ + + # Check the input (i.e., bomb out *before* it does any processing) if self.nimgs == 0: msgs.error('Object contains no files to process!') - if self.nimgs > 1 and combine_method not in ['mean', 'median']: - msgs.error(f'Unknown image combination method, {combine_method}. Must be ' + if self.nimgs > 1 and self.par['combine'] not in ['mean', 'median']: + msgs.error(f'Unknown image combination method, {self.par['combine']}. Must be ' '"mean" or "median".') file_list = [] # Loop on the files @@ -236,21 +222,21 @@ def run(self, ignore_saturation=False, sigma_clip=True, sigrej=None, maxiters=5, comb_texp = exptime[0] # Coadd them - if combine_method == 'mean': + if self.par['combine'] == 'mean': weights = np.ones(self.nimgs, dtype=float)/self.nimgs img_list_out, var_list_out, gpm, nframes \ = combine.weighted_combine(weights, [img_stack, scl_stack], # images to stack [rn2img_stack, basev_stack], # variances to stack - gpm_stack, sigma_clip=sigma_clip, + gpm_stack, sigma_clip=self.par['clip'], sigma_clip_stack=img_stack, # clipping based on img - sigrej=sigrej, maxiters=maxiters) + sigrej=self.par['comb_sigrej'], maxiters=maxiters) comb_img, comb_scl = img_list_out comb_rn2, comb_basev = var_list_out # Divide by the number of images that contributed to each pixel comb_scl[gpm] /= nframes[gpm] - elif combine_method == 'median': + elif self.par['combine'] == 'median': bpm_stack = np.logical_not(gpm_stack) nframes = np.sum(gpm_stack, axis=0) gpm = nframes > 0 From 2463c70f44963d4060efe133070b3b7c3bc7e96f Mon Sep 17 00:00:00 2001 From: jhennawi Date: Sun, 2 Jun 2024 14:53:57 -0700 Subject: [PATCH 090/128] fixed some issues with saturation masking --- pypeit/images/combineimage.py | 4 +++- pypeit/pypeit.py | 3 +++ pypeit/spectrographs/jwst_nirspec.py | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index 22687e1c44..f66d327f04 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -196,6 +196,8 @@ def run(self, ignore_saturation=False, maxiters=5): gpm_stack[kk] = rawImage.select_flag(invert=True) file_list.append(rawImage.filename) + # TODO JFH: This should not be here, but rather should be done in the Calibrations class. Putting in calibration specific + # lamp checking in an image combining class is not ideal. # Check that the lamps being combined are all the same: if not lampstat[1:] == lampstat[:-1]: msgs.warn("The following files contain different lamp status") @@ -286,7 +288,7 @@ def run(self, ignore_saturation=False, maxiters=5): comb.process_steps = rawImage.process_steps # Build the base level mask - comb.build_mask(saturation='default', mincounts='default') + comb.build_mask(saturation='default' if not ignore_saturation else None, mincounts='default') # Flag all pixels with no contributions from any of the stacked images. comb.update_mask('STCKMASK', indx=np.logical_not(gpm)) diff --git a/pypeit/pypeit.py b/pypeit/pypeit.py index 389639a613..b4a48f7e62 100644 --- a/pypeit/pypeit.py +++ b/pypeit/pypeit.py @@ -789,6 +789,9 @@ def objfind_one(self, frames, det, bg_frames=None, std_outfile=None): bkg_redux_sciimg = sciImg # Build the background image bg_file_list = self.fitstbl.frame_paths(bg_frames) + # TODO I think we should create a separate self.par['bkgframe'] parameter set to hold the image + # processing parameters for the background frames. This would allow the user to specify different + # parameters for the background frames than for the science frames. bgimg = buildimage.buildimage_fromlist(self.spectrograph, det, frame_par, bg_file_list, bpm=self.caliBrate.msbpm, bias=self.caliBrate.msbias, diff --git a/pypeit/spectrographs/jwst_nirspec.py b/pypeit/spectrographs/jwst_nirspec.py index 1a5fb586e8..088670fa39 100644 --- a/pypeit/spectrographs/jwst_nirspec.py +++ b/pypeit/spectrographs/jwst_nirspec.py @@ -255,6 +255,22 @@ def allowed_mosaics(self): """ return [(1,2)] + + + def get_lamps_status(self, headarr): + """ + Return a string containing the information on the lamp status. + + Args: + headarr (:obj:`list`): + A list of 1 or more `astropy.io.fits.Header`_ objects. + + Returns: + :obj:`str`: A string that uniquely represents the lamp status. + """ + # TODO: JFH This is a hack to deal with the usage of this method in combineimage, which is not where it should be. + return None + def get_rawimage(self, raw_file, det): """ Read raw images and generate a few other bits and pieces From eba291fa85e447dca9be46a1735f27968afcfeef Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Mon, 3 Jun 2024 17:11:07 -0700 Subject: [PATCH 091/128] test fix --- pypeit/images/combineimage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index f66d327f04..49e5d3158e 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -149,7 +149,7 @@ def run(self, ignore_saturation=False, maxiters=5): if self.nimgs == 0: msgs.error('Object contains no files to process!') if self.nimgs > 1 and self.par['combine'] not in ['mean', 'median']: - msgs.error(f'Unknown image combination method, {self.par['combine']}. Must be ' + msgs.error(f'Unknown image combination method, {self.par["combine"]}. Must be ' '"mean" or "median".') file_list = [] # Loop on the files From 68aad1002bf07723788661681fc0b3e527b10f91 Mon Sep 17 00:00:00 2001 From: jhennawi Date: Sun, 9 Jun 2024 13:45:03 -0700 Subject: [PATCH 092/128] some updates --- pypeit/images/combineimage.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index 49e5d3158e..587ff350f9 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -23,11 +23,10 @@ class CombineImage: Process and combine detector images. Args: - Parameters that dictate the processing of the images. - rawImages (:obj:`list`): - Either a single :class:`~pypeit.images.rawimage.RawImage` object or a list of one or more + rawImages (:obj:`list`, :class:`~pypeit.images.pypeitimage.PypeItImage): + Either a single :class:`~pypeit.images.pypeitimage.PypeItImage` object or a list of one or more of these objects to be combined into a an image. - spectrograph (:class:`~pypeit.spectrographs.spectrograph.Spectrograph`): + spectrograph (:class:`~pypeit.spectrographs.spectrograph.Spectrograph`): Spectrograph used to take the data. par (:class:`~pypeit.par.pypeitpar.ProcessImagesPar`): Parameters that dictate the processing of the images. From ac14e6ac2c9a7900f848f3d9af0bbcf8b8c8eda9 Mon Sep 17 00:00:00 2001 From: Dusty Reichwein Date: Mon, 17 Jun 2024 15:35:59 -0700 Subject: [PATCH 093/128] Use extension_helpers to enable OpenMP support in bspline package to avoid windows install problem. --- bin/pypeit_c_enabled | 17 ++++++++- pypeit/bspline/setup_package.py | 66 +++++++-------------------------- 2 files changed, 28 insertions(+), 55 deletions(-) diff --git a/bin/pypeit_c_enabled b/bin/pypeit_c_enabled index 8a21ba246b..b07c54d19b 100755 --- a/bin/pypeit_c_enabled +++ b/bin/pypeit_c_enabled @@ -13,11 +13,24 @@ else: print('Successfully imported bspline C utilities.') try: - from pypeit.bspline.setup_package import extra_compile_args + + # Check for whether OpenMP support is enabled, by seeing if the bspline + # extension was compiled with it. + # + # The extension_helpers code that is run to figure out OMP support runs + # multiple tests to determine compiler version, some of which output to stderr. + # To make the output pretty we redirect those to /dev/null (or equivalent) + import os + import sys + devnull_fd = os.open(os.devnull,os.O_WRONLY) + os.dup2(devnull_fd,sys.stderr.fileno()) + + from pypeit.bspline.setup_package import get_extensions + bspline_extension = get_extensions()[0] except: print("Can't check status of OpenMP support") else: - if '-fopenmp' in extra_compile_args: + if 'openmp' in bspline_extension.extra_compile_args: print('OpenMP compiler support detected.') else: print('OpenMP compiler support not detected. Bspline utilities single-threaded.') diff --git a/pypeit/bspline/setup_package.py b/pypeit/bspline/setup_package.py index 415759c0c1..f085c7e055 100644 --- a/pypeit/bspline/setup_package.py +++ b/pypeit/bspline/setup_package.py @@ -1,50 +1,9 @@ import os import sys -import tempfile, subprocess, shutil from setuptools import Extension +from extension_helpers import add_openmp_flags_if_available -# the most reliable way to check for openmp support in the C compiler is to try to build -# some test code with the -fopenmp flag. openmp provides a big performance boost, but some -# systems, notably apple's version of clang that xcode provides, don't support it out of the box. - -# see http://openmp.org/wp/openmp-compilers/ -omp_test = \ -r""" -#include -#include -int main() { -#pragma omp parallel -printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads()); -} -""" - -def check_for_openmp(): - tmpdir = tempfile.mkdtemp() - curdir = os.getcwd() - os.chdir(tmpdir) - - if 'CC' in os.environ: - c_compiler = os.environ['CC'] - else: - c_compiler = 'gcc' - - filename = r'test.c' - with open(filename, 'w') as file: - file.write(omp_test) - with open(os.devnull, 'w') as fnull: - result = subprocess.call([c_compiler, '-fopenmp', filename], - stdout=fnull, stderr=fnull) - - os.chdir(curdir) - # clean up test code - shutil.rmtree(tmpdir) - - # return code from compiler process is 0 if it completed successfully - if result == 0: - return True - else: - return False C_BSPLINE_PKGDIR = os.path.relpath(os.path.dirname(__file__)) @@ -55,16 +14,17 @@ def check_for_openmp(): if not sys.platform.startswith('win'): extra_compile_args.append('-fPIC') -if check_for_openmp(): - extra_compile_args.append('-fopenmp') - extra_link_args = ['-fopenmp'] -else: - extra_link_args = [] def get_extensions(): - return [Extension(name='pypeit.bspline._bspline', sources=SRC_FILES, - extra_compile_args=extra_compile_args, language='c', - extra_link_args=extra_link_args, - export_symbols=['bspline_model', 'solution_arrays', - 'cholesky_band', 'cholesky_solve', - 'intrv'])] + extension = Extension(name='pypeit.bspline._bspline', sources=SRC_FILES, + extra_compile_args=extra_compile_args, language='c', + export_symbols=['bspline_model', 'solution_arrays', + 'cholesky_band', 'cholesky_solve', + 'intrv']) + + # extension_helpers will check for opnmp support by trying to build + # some test code with the appropriate flag. openmp provides a big performance boost, but some + # systems, notably apple's version of clang that xcode provides, don't support it out of the box. + + add_openmp_flags_if_available(extension) + return [extension] \ No newline at end of file From a9f96b017aaf66f11c1301850e4ee19af63ff7ff Mon Sep 17 00:00:00 2001 From: Dusty Reichwein Date: Mon, 17 Jun 2024 16:31:01 -0700 Subject: [PATCH 094/128] Fix bug detecting OpenMP support --- bin/pypeit_c_enabled | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/pypeit_c_enabled b/bin/pypeit_c_enabled index b07c54d19b..746e82cdc1 100755 --- a/bin/pypeit_c_enabled +++ b/bin/pypeit_c_enabled @@ -30,7 +30,8 @@ try: except: print("Can't check status of OpenMP support") else: - if 'openmp' in bspline_extension.extra_compile_args: + # Windows uses -openmp, other environments use -fopenmp + if any(['openmp' in arg for arg in bspline_extension.extra_compile_args]): print('OpenMP compiler support detected.') else: print('OpenMP compiler support not detected. Bspline utilities single-threaded.') From d24069c4ff5ca1ff54720592cc4657696b737cf0 Mon Sep 17 00:00:00 2001 From: Dusty Reichwein Date: Thu, 20 Jun 2024 12:53:38 -0700 Subject: [PATCH 095/128] Fixes for numpy 2.0 --- pypeit/core/wavecal/autoid.py | 2 +- pypeit/metadata.py | 2 +- pypeit/scripts/identify.py | 2 +- pypeit/utils.py | 60 ++++++++++++++++++++++++++++++++++- pypeit/wavecalib.py | 2 +- 5 files changed, 63 insertions(+), 5 deletions(-) diff --git a/pypeit/core/wavecal/autoid.py b/pypeit/core/wavecal/autoid.py index 4fcebb1add..09f195652f 100644 --- a/pypeit/core/wavecal/autoid.py +++ b/pypeit/core/wavecal/autoid.py @@ -3189,7 +3189,7 @@ def finalize_fit(self, detections): if self._outroot is not None: # Write IDs out_dict = dict(pix=use_tcent, IDs=self._all_patt_dict[str(slit)]['IDs']) - jdict = ltu.jsonify(out_dict) + jdict = utils.jsonify(out_dict) ltu.savejson(self._outroot + slittxt + '.json', jdict, easy_to_read=True, overwrite=True) msgs.info("Wrote: {:s}".format(self._outroot + slittxt + '.json')) diff --git a/pypeit/metadata.py b/pypeit/metadata.py index 3fc1d1b17d..e883c5f953 100644 --- a/pypeit/metadata.py +++ b/pypeit/metadata.py @@ -747,7 +747,7 @@ def unique_configurations(self, force=False, copy=False, rm_none=False): ignore_frames, ignore_indx = self.ignore_frames() # Find the indices of the frames not to ignore indx = np.arange(len(self.table)) - indx = indx[np.logical_not(np.in1d(indx, ignore_indx))] + indx = indx[np.logical_not(np.isin(indx, ignore_indx))] if len(indx) == 0: msgs.error('No frames to use to define configurations!') diff --git a/pypeit/scripts/identify.py b/pypeit/scripts/identify.py index 610241dc81..8b944e43fa 100644 --- a/pypeit/scripts/identify.py +++ b/pypeit/scripts/identify.py @@ -67,7 +67,7 @@ def main(args): from pypeit import slittrace from pypeit.images.buildimage import ArcImage from pypeit.core.wavecal import autoid - from linetools.utils import jsonify + from pypeit.utils import jsonify chk_version = not args.try_old diff --git a/pypeit/utils.py b/pypeit/utils.py index fbc6550c15..86d61f5f0e 100644 --- a/pypeit/utils.py +++ b/pypeit/utils.py @@ -1442,7 +1442,7 @@ def yamlify(obj, debug=False): obj = bool(obj) # elif isinstance(obj, bytes): # obj = obj.decode('utf-8') - elif isinstance(obj, (np.string_, str)): + elif isinstance(obj, (np.str_, str)): obj = str(obj) # Worry about colons! if ':' in obj: @@ -1484,6 +1484,64 @@ def yamlify(obj, debug=False): print(type(obj)) return obj +def jsonify(obj, debug=False): + """ Recursively process an object so it can be serialised in json + format. Taken from linetools. + + WARNING - the input object may be modified if it's a dictionary or + list! + + Parameters + ---------- + obj : any object + debug : bool, optional + + Returns + ------- + obj - the same obj is json_friendly format (arrays turned to + lists, np.int64 converted to int, np.float64 to float, and so on). + + """ + if isinstance(obj, np.float64): + obj = float(obj) + elif isinstance(obj, np.float32): + obj = float(obj) + elif isinstance(obj, np.int32): + obj = int(obj) + elif isinstance(obj, np.int64): + obj = int(obj) + elif isinstance(obj, np.int16): + obj = int(obj) + elif isinstance(obj, np.bool_): + obj = bool(obj) + elif isinstance(obj, np.str_): + obj = str(obj) + elif isinstance(obj, units.Quantity): + if obj.size == 1: + obj = dict(value=obj.value, unit=obj.unit.to_string()) + else: + obj = dict(value=obj.value.tolist(), unit=obj.unit.to_string()) + elif isinstance(obj, np.ndarray): # Must come after Quantity + obj = obj.tolist() + elif isinstance(obj, dict): + for key, value in obj.items(): + obj[key] = jsonify(value, debug=debug) + elif isinstance(obj, list): + for i,item in enumerate(obj): + obj[i] = jsonify(item, debug=debug) + elif isinstance(obj, tuple): + obj = list(obj) + for i,item in enumerate(obj): + obj[i] = jsonify(item, debug=debug) + obj = tuple(obj) + elif isinstance(obj, units.Unit): + obj = obj.name + elif obj is units.dimensionless_unscaled: + obj = 'dimensionless_unit' + + if debug: + print(type(obj)) + return obj def add_sub_dict(d, key): """ diff --git a/pypeit/wavecalib.py b/pypeit/wavecalib.py index db1b5b8aa0..d297afa160 100644 --- a/pypeit/wavecalib.py +++ b/pypeit/wavecalib.py @@ -10,7 +10,7 @@ import numpy as np from matplotlib import pyplot as plt -from linetools.utils import jsonify +from pypeit.utils import jsonify from astropy.table import Table from astropy.io import fits From 1deaeb38ca9d09554eadd7c3c8059ef62b30b72e Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 29 Jun 2024 13:26:45 +0100 Subject: [PATCH 096/128] Move lampstat check --- pypeit/images/buildimage.py | 27 +++++++++++++++++++++++++-- pypeit/images/combineimage.py | 28 ++-------------------------- pypeit/spectrographs/jwst_nirspec.py | 16 ---------------- 3 files changed, 27 insertions(+), 44 deletions(-) diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index dbd18d688b..e77da57a57 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -4,6 +4,8 @@ .. include:: ../include/links.rst """ +import os + from IPython import embed import numpy as np @@ -253,15 +255,36 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= mosaic = isinstance(det, tuple) and frame_par['frametype'] not in ['bias', 'dark'] rawImage_list = [] + lampstat = [None] * len(file_list) # Loop on the files - for ifile in file_list: + for ii, ifile in enumerate(file_list): # Load raw image rawImage = rawimage.RawImage(ifile, spectrograph, det) # Process rawImage_list.append(rawImage.process( frame_par['process'], scattlight=scattlight, bias=bias, bpm=bpm, dark=dark, flatimages=flatimages, slits=slits, mosaic=mosaic)) - + + # Save the lamp status + # TODO: Is there a way we can get this from fitstbl instead? + lampstat[ii] = spectrograph.get_lamps_status(rawImage_list[ii].rawheadlist) + + # Check that the lamps being combined are all the same: + if not lampstat[1:] == lampstat[:-1]: + msgs.warn("The following files contain different lamp status") + # Get the longest strings + maxlen = max([len("Filename")]+[len(os.path.split(x)[1]) for x in file_list]) + maxlmp = max([len("Lamp status")]+[len(x) for x in lampstat]) + strout = "{0:" + str(maxlen) + "} {1:s}" + # Print the messages + print(msgs.indent() + '-'*maxlen + " " + '-'*maxlmp) + print(msgs.indent() + strout.format("Filename", "Lamp status")) + print(msgs.indent() + '-'*maxlen + " " + '-'*maxlmp) + for ff, file in enumerate(file_list): + print(msgs.indent() + + strout.format(os.path.split(file)[1], " ".join(lampstat[ff].split("_")))) + print(msgs.indent() + '-'*maxlen + " " + '-'*maxlmp) + # Do it combineImage = combineimage.CombineImage(rawImage_list, spectrograph, frame_par['process']) pypeitImage = combineImage.run(maxiters=maxiters, ignore_saturation=ignore_saturation) diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index 587ff350f9..ffc7f8b990 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -4,8 +4,6 @@ .. include:: ../include/links.rst """ -import os - from IPython import embed import numpy as np @@ -18,6 +16,7 @@ from pypeit.images import pypeitimage from pypeit.images import imagebitmask + class CombineImage: """ Process and combine detector images. @@ -165,13 +164,8 @@ def run(self, ignore_saturation=False, maxiters=5): rn2img_stack = np.zeros(shape, dtype=float) basev_stack = np.zeros(shape, dtype=float) gpm_stack = np.zeros(shape, dtype=bool) - lampstat = [None]*self.nimgs exptime = np.zeros(self.nimgs, dtype=float) - # Save the lamp status - # TODO: As far as I can tell, this is the *only* place rawheadlist - # is used. Is there a way we can get this from fitstbl instead? - lampstat[kk] = self.spectrograph.get_lamps_status(rawImage.rawheadlist) # Save the exposure time to check if it's consistent for all images. exptime[kk] = rawImage.exptime # Processed image @@ -195,25 +189,7 @@ def run(self, ignore_saturation=False, maxiters=5): gpm_stack[kk] = rawImage.select_flag(invert=True) file_list.append(rawImage.filename) - # TODO JFH: This should not be here, but rather should be done in the Calibrations class. Putting in calibration specific - # lamp checking in an image combining class is not ideal. - # Check that the lamps being combined are all the same: - if not lampstat[1:] == lampstat[:-1]: - msgs.warn("The following files contain different lamp status") - # Get the longest strings - maxlen = max([len("Filename")]+[len(os.path.split(x)[1]) for x in self.files]) - maxlmp = max([len("Lamp status")]+[len(x) for x in lampstat]) - strout = "{0:" + str(maxlen) + "} {1:s}" - # Print the messages - print(msgs.indent() + '-'*maxlen + " " + '-'*maxlmp) - print(msgs.indent() + strout.format("Filename", "Lamp status")) - print(msgs.indent() + '-'*maxlen + " " + '-'*maxlmp) - for ff, file in enumerate(self.files): - print(msgs.indent() - + strout.format(os.path.split(file)[1], " ".join(lampstat[ff].split("_")))) - print(msgs.indent() + '-'*maxlen + " " + '-'*maxlmp) - - # Do a similar check for exptime + # Check that all exposure times are consistent if np.any(np.absolute(np.diff(exptime)) > 0): # TODO: This should likely throw an error instead! msgs.warn('Exposure time is not consistent for all images being combined! ' diff --git a/pypeit/spectrographs/jwst_nirspec.py b/pypeit/spectrographs/jwst_nirspec.py index 088670fa39..80a8abb2f3 100644 --- a/pypeit/spectrographs/jwst_nirspec.py +++ b/pypeit/spectrographs/jwst_nirspec.py @@ -254,22 +254,6 @@ def allowed_mosaics(self): ``PypeIt``. """ return [(1,2)] - - - - def get_lamps_status(self, headarr): - """ - Return a string containing the information on the lamp status. - - Args: - headarr (:obj:`list`): - A list of 1 or more `astropy.io.fits.Header`_ objects. - - Returns: - :obj:`str`: A string that uniquely represents the lamp status. - """ - # TODO: JFH This is a hack to deal with the usage of this method in combineimage, which is not where it should be. - return None def get_rawimage(self, raw_file, det): """ From 69700a3e9e481700de7a75c7f725b5c15a82600c Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 1 Jul 2024 10:45:52 +0100 Subject: [PATCH 097/128] Move lampstat check to calibrations --- pypeit/calibrations.py | 79 +++++++++++++++++++++++++++++++++++ pypeit/images/buildimage.py | 23 ---------- pypeit/images/combineimage.py | 1 + 3 files changed, 80 insertions(+), 23 deletions(-) diff --git a/pypeit/calibrations.py b/pypeit/calibrations.py index e8875595df..998f9a9cff 100644 --- a/pypeit/calibrations.py +++ b/pypeit/calibrations.py @@ -4,6 +4,7 @@ .. include common links, assuming primary doc root is up one directory .. include:: ../include/links.rst """ +import os from pathlib import Path from datetime import datetime from copy import deepcopy @@ -209,6 +210,44 @@ def __init__(self, fitstbl, par, spectrograph, caldir, qadir=None, self.success = False self.failed_step = None + def check_calibrations(self, file_list, check_lamps=True): + """ + Check if the input calibration files are consistent with each other. + This step is usually needed when combining calibration frames of a given type. + + Note: The exposure times are currently checked in the combine step, so they are not checked here. + + Parameters + ---------- + file_list : list + List of calibration files to check + check_lamps : bool, optional + Check if the lamp status is the same for all the files. Default is True. + """ + lampstat = [None] * len(file_list) + # Loop on the files + for ii, ifile in enumerate(file_list): + # Save the lamp status + headarr = deepcopy(self.spectrograph.get_headarr(ifile)) + lampstat[ii] = self.spectrograph.get_lamps_status(headarr) + + # Check that the lamps being combined are all the same + if check_lamps: + if not lampstat[1:] == lampstat[:-1]: + msgs.warn("The following files contain different lamp status") + # Get the longest strings + maxlen = max([len("Filename")] + [len(os.path.split(x)[1]) for x in file_list]) + maxlmp = max([len("Lamp status")] + [len(x) for x in lampstat]) + strout = "{0:" + str(maxlen) + "} {1:s}" + # Print the messages + print(msgs.indent() + '-' * maxlen + " " + '-' * maxlmp) + print(msgs.indent() + strout.format("Filename", "Lamp status")) + print(msgs.indent() + '-' * maxlen + " " + '-' * maxlmp) + for ff, file in enumerate(file_list): + print(msgs.indent() + + strout.format(os.path.split(file)[1], " ".join(lampstat[ff].split("_")))) + print(msgs.indent() + '-' * maxlen + " " + '-' * maxlmp) + def find_calibrations(self, frametype, frameclass): """ Find calibration files and identifiers. @@ -334,6 +373,9 @@ def get_arc(self): # Reset the BPM self.get_bpm(frame=raw_files[0]) + # Perform a check on the files + self.check_calibrations(raw_files) + # Otherwise, create the processed file. msgs.info(f'Preparing a {frame["class"].calib_type} calibration frame.') self.msarc = buildimage.buildimage_fromlist(self.spectrograph, self.det, @@ -377,6 +419,9 @@ def get_tiltimg(self): # Reset the BPM self.get_bpm(frame=raw_files[0]) + # Perform a check on the files + self.check_calibrations(raw_files) + # Otherwise, create the processed file. msgs.info(f'Preparing a {frame["class"].calib_type} calibration frame.') self.mstilt = buildimage.buildimage_fromlist(self.spectrograph, self.det, @@ -426,6 +471,9 @@ def get_align(self): # Reset the BPM self.get_bpm(frame=raw_files[0]) + # Perform a check on the files + self.check_calibrations(raw_files) + # Otherwise, create the processed file. msgs.info(f'Preparing a {frame["class"].calib_type} calibration frame.') msalign = buildimage.buildimage_fromlist(self.spectrograph, self.det, @@ -473,6 +521,9 @@ def get_bias(self): self.msbias = frame['class'].from_file(cal_file, chk_version=self.chk_version) return self.msbias + # Perform a check on the files + self.check_calibrations(raw_files) + # Otherwise, create the processed file. msgs.info(f'Preparing a {frame["class"].calib_type} calibration frame.') self.msbias = buildimage.buildimage_fromlist(self.spectrograph, self.det, @@ -523,6 +574,9 @@ def get_dark(self): # there any reason why creation of the bpm should come after the dark, # or can we change the order? + # Perform a check on the files + self.check_calibrations(raw_files) + # Otherwise, create the processed file. self.msdark = buildimage.buildimage_fromlist(self.spectrograph, self.det, self.par['darkframe'], raw_files, @@ -597,6 +651,9 @@ def get_scattlight(self): # Reset the BPM self.get_bpm(frame=raw_scattlight_files[0]) + # Perform a check on the files + self.check_calibrations(raw_scattlight_files) + binning = self.fitstbl[scatt_idx[0]]['binning'] dispname = self.fitstbl[scatt_idx[0]]['dispname'] scattlightImage = buildimage.buildimage_fromlist(self.spectrograph, self.det, @@ -725,6 +782,10 @@ def get_flats(self): if len(raw_pixel_files) > 0: # Reset the BPM self.get_bpm(frame=raw_pixel_files[0]) + + # Perform a check on the files + self.check_calibrations(raw_pixel_files) + msgs.info('Creating pixel-flat calibration frame using files: ') for f in raw_pixel_files: msgs.prindent(f'{Path(f).name}') @@ -737,6 +798,10 @@ def get_flats(self): if len(raw_lampoff_files) > 0: # Reset the BPM self.get_bpm(frame=raw_lampoff_files[0]) + + # Perform a check on the files + self.check_calibrations(raw_lampoff_files) + msgs.info('Subtracting lamp off flats using files: ') for f in raw_lampoff_files: msgs.prindent(f'{Path(f).name}') @@ -763,6 +828,10 @@ def get_flats(self): if not pix_is_illum and len(raw_illum_files) > 0: # Reset the BPM self.get_bpm(frame=raw_illum_files[0]) + + # Perform a check on the files + self.check_calibrations(raw_illum_files) + msgs.info('Creating slit-illumination flat calibration frame using files: ') for f in raw_illum_files: msgs.prindent(f'{Path(f).name}') @@ -775,6 +844,10 @@ def get_flats(self): for f in raw_lampoff_files: msgs.prindent(f'{Path(f).name}') if lampoff_flat is None: + # Perform a check on the files + self.check_calibrations(raw_lampoff_files) + + # Build the image lampoff_flat = buildimage.buildimage_fromlist(self.spectrograph, self.det, self.par['lampoffflatsframe'], raw_lampoff_files, @@ -889,6 +962,9 @@ def get_slits(self): # Reset the BPM self.get_bpm(frame=raw_trace_files[0]) + # Perform a check on the files + self.check_calibrations(raw_trace_files) + traceImage = buildimage.buildimage_fromlist(self.spectrograph, self.det, self.par['traceframe'], raw_trace_files, bias=self.msbias, bpm=self.msbpm, @@ -903,6 +979,9 @@ def get_slits(self): # Reset the BPM self.get_bpm(frame=raw_trace_files[0]) + # Perform a check on the files + self.check_calibrations(raw_lampoff_files) + lampoff_flat = buildimage.buildimage_fromlist(self.spectrograph, self.det, self.par['lampoffflatsframe'], raw_lampoff_files, dark=self.msdark, diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index e77da57a57..74f894d4c3 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -4,8 +4,6 @@ .. include:: ../include/links.rst """ -import os - from IPython import embed import numpy as np @@ -255,7 +253,6 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= mosaic = isinstance(det, tuple) and frame_par['frametype'] not in ['bias', 'dark'] rawImage_list = [] - lampstat = [None] * len(file_list) # Loop on the files for ii, ifile in enumerate(file_list): # Load raw image @@ -265,26 +262,6 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= frame_par['process'], scattlight=scattlight, bias=bias, bpm=bpm, dark=dark, flatimages=flatimages, slits=slits, mosaic=mosaic)) - # Save the lamp status - # TODO: Is there a way we can get this from fitstbl instead? - lampstat[ii] = spectrograph.get_lamps_status(rawImage_list[ii].rawheadlist) - - # Check that the lamps being combined are all the same: - if not lampstat[1:] == lampstat[:-1]: - msgs.warn("The following files contain different lamp status") - # Get the longest strings - maxlen = max([len("Filename")]+[len(os.path.split(x)[1]) for x in file_list]) - maxlmp = max([len("Lamp status")]+[len(x) for x in lampstat]) - strout = "{0:" + str(maxlen) + "} {1:s}" - # Print the messages - print(msgs.indent() + '-'*maxlen + " " + '-'*maxlmp) - print(msgs.indent() + strout.format("Filename", "Lamp status")) - print(msgs.indent() + '-'*maxlen + " " + '-'*maxlmp) - for ff, file in enumerate(file_list): - print(msgs.indent() - + strout.format(os.path.split(file)[1], " ".join(lampstat[ff].split("_")))) - print(msgs.indent() + '-'*maxlen + " " + '-'*maxlmp) - # Do it combineImage = combineimage.CombineImage(rawImage_list, spectrograph, frame_par['process']) pypeitImage = combineImage.run(maxiters=maxiters, ignore_saturation=ignore_saturation) diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index ffc7f8b990..a1b45b3f6f 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -190,6 +190,7 @@ def run(self, ignore_saturation=False, maxiters=5): file_list.append(rawImage.filename) # Check that all exposure times are consistent + # TODO: JFH suggests that we move this to calibrations.check_calibrations if np.any(np.absolute(np.diff(exptime)) > 0): # TODO: This should likely throw an error instead! msgs.warn('Exposure time is not consistent for all images being combined! ' From 9b4552e43062e065f5e7a48872e6b7a94c4df0e2 Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Mon, 1 Jul 2024 08:07:46 -0700 Subject: [PATCH 098/128] calib group hotfix --- pypeit/metadata.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/pypeit/metadata.py b/pypeit/metadata.py index 3fc1d1b17d..d9955d8550 100644 --- a/pypeit/metadata.py +++ b/pypeit/metadata.py @@ -1033,18 +1033,28 @@ def _set_calib_group_bits(self): Set the calibration group bit based on the string values of the 'calib' column. """ - # NOTE: This is a hack to ensure the type of the *elements* of the calib - # column are all strings, but that the type of the column remains as - # "object". I'm calling this a hack because doing this is easier than + # Ensure that the type of the *elements* of the calib column are all + # strings, but that the type of the column remains as "object". + # NOTE: This is effectively a hack because doing this is easier than # trying to track down everywhere calib is changed to values that may or # may not be integers instead of strings. self['calib'] = np.array([str(c) for c in self['calib']], dtype=object) + # Collect and expand any lists # group_names = np.unique(np.concatenate( # [s.split(',') for s in self['calib'] if s not in ['all', 'None']])) - # DP changed to below because np.concatenate does not accept an empty list, - # which is the case when calib is None for all frames. This should avoid the code to crash - group_names = np.unique(sum([s.split(',') for s in self['calib'] if s not in ['all', 'None']], [])) + # NOTE: The above doesn't always work because np.concatenate does not + # accept an empty list, which is the case when calib is None or 'all' + # for all frames. + group_names = np.unique(sum([s.split(',') for s in self['calib'] + if s not in ['all', 'None']], [])) + + # If all the calibration groups are set to None or 'all', group_names + # can be an empty list. But we need to identify at least one + # calibration group, so I insert a mock value. + if group_names.size == 0: + group_names = np.array(['0'], dtype=object) + # Expand any ranges keep_group = np.ones(group_names.size, dtype=bool) added_groups = [] @@ -1053,6 +1063,7 @@ def _set_calib_group_bits(self): # Parse the range keep_group[i] = False added_groups += [str(n) for n in parse.str2list(name)] + # Combine and find the unique *integer* identifiers group_names = np.unique(np.asarray(added_groups + (group_names[keep_group]).tolist()).astype(int)) From bd00631a10b996f76d40b550cb4586cc3732dd87 Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Mon, 1 Jul 2024 08:16:34 -0700 Subject: [PATCH 099/128] changes --- doc/releases/1.16.1dev.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/releases/1.16.1dev.rst b/doc/releases/1.16.1dev.rst index 33b59d4259..06bda74e28 100644 --- a/doc/releases/1.16.1dev.rst +++ b/doc/releases/1.16.1dev.rst @@ -40,5 +40,6 @@ Under-the-hood Improvements Bug Fixes --------- -- None +- Fixed a fault caused when all frames in a pypeit file are identified as being + part of ``all`` calibration groups. From c3efb938300637f09ff61143c3441d80602c0e51 Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Mon, 1 Jul 2024 10:53:23 -0700 Subject: [PATCH 100/128] testing --- pypeit/images/rawimage.py | 61 +++++++++++++++++++++++++++++++++++++++ pypeit/pypeit.py | 4 +-- 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index e4c5fd9fef..0c3cae1825 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -507,6 +507,9 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # for developers to *re*process an image multiple times from scratch # with different parameters to test changes. + from pathlib import Path + testnan = Path(self.filename).name == 'g0018.fits' + # Set input to attributes self.par = par if bpm is not None: @@ -543,6 +546,10 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # - Convert from ADU to electron counts. if self.par['apply_gain']: self.apply_gain() + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='apply gain') + exit() # Apply additive corrections. The order matters and is fixed. # @@ -550,11 +557,19 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # step *must* be done before subtract_overscan if self.par['use_pattern']: self.subtract_pattern() + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='subtract pattern') + exit() # - Estimate the readnoise using the overscan regions. NOTE: This # needs to be done *after* any pattern subtraction. if self.par['empirical_rn'] or not np.all(self.ronoise > 0): self.estimate_readnoise() + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='estimate readnoise') + exit() # - Initialize the variance images. Starts with the shape and # orientation of the raw image. Note that the readnoise variance @@ -567,6 +582,10 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # is added to the variance. if self.par['use_overscan']: self.subtract_overscan() + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='subtract overscan') + exit() # TODO: Do we need to keep trim and orient as optional? @@ -574,11 +593,19 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # var, and datasec_img. if self.par['trim']: self.trim() + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='trim') + exit() # - Re-orient to PypeIt convention. This re-orients the image, rn2img, # proc_var, var, and datasec_img. if self.par['orient']: self.orient() + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='orient') + exit() # - Check the shape of the bpm if self.bpm.shape != self.image.shape: @@ -611,6 +638,10 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # Bias frame. Shape and orientation must match *processed* image,. # Uncertainty from the bias subtraction is added to the variance. self.subtract_bias(bias) + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='subtract bias') + exit() # TODO: Checking for count (well-depth) saturation should be done here. # TODO :: Non-linearity correction should be done here. @@ -629,12 +660,20 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # from the image being processed. If available, uncertainty from # the dark subtraction is added to the processing variance. self.subtract_dark() + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='subtract dark') + exit() # Create the mosaic images. This *must* come after trimming and # orienting and before determining the spatial flexure shift and # applying any flat-fielding. if self.nimg > 1 and mosaic: self.build_mosaic() + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='build mosaic') + exit() # Calculate flexure, if slits are provided and the correction is # requested. NOTE: This step must come after trim, orient (just like @@ -647,11 +686,19 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # - Subtract scattered light... this needs to be done before flatfielding. if self.par['subtract_scattlight']: self.subtract_scattlight(scattlight, slits) + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='subtract scattlight') + exit() # Flat-field the data. This propagates the flat-fielding corrections to # the variance. The returned bpm is propagated to the PypeItImage # bitmask below. flat_bpm = self.flatfield(flatimages, slits=slits, debug=debug) if self.use_flat else None + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='flatfield') + exit() # Calculate the inverse variance self.ivar = self.build_ivar() @@ -660,12 +707,20 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl if self.par['subtract_continuum']: # Calculate a simple smooth continuum image, and subtract this from the frame self.subtract_continuum() + if testnan: + if not np.all(np.isfinite(self.image)): + embed(header='subtract continuum') + exit() # Generate a PypeItImage. # NOTE: To reconstruct the variance model, you need base_var, image, # img_scale, noise_floor, and shot_noise. _det, _image, _ivar, _datasec_img, _det_img, _rn2img, _base_var, _img_scale, _bpm \ = self._squeeze() + if testnan: + if not np.all(np.isfinite(_image)): + embed(header='squeeze') + exit() # NOTE: BPM MUST BE A BOOLEAN! pypeitImage = pypeitimage.PypeItImage(_image, ivar=_ivar, amp_img=_datasec_img, det_img=_det_img, rn2img=_rn2img, base_var=_base_var, @@ -677,6 +732,10 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl noise_floor=self.par['noise_floor'], shot_noise=self.par['shot_noise'], bpm=_bpm.astype(bool)) + + if testnan: + embed(header='pypeitImage') + exit() pypeitImage.rawheadlist = self.headarr pypeitImage.process_steps = [key for key in self.steps.keys() if self.steps[key]] @@ -1396,3 +1455,5 @@ def build_mosaic(self): def __repr__(self): return f'<{self.__class__.__name__}: file={self.filename}, nimg={self.nimg}, ' \ f'steps={self.steps}>' + + diff --git a/pypeit/pypeit.py b/pypeit/pypeit.py index 863bd8e597..a4e354954a 100644 --- a/pypeit/pypeit.py +++ b/pypeit/pypeit.py @@ -705,8 +705,8 @@ def calib_one(self, frames, det): msgs.info(f'Building/loading calibrations for detector {det}') # Instantiate Calibrations class - user_slits=slittrace.merge_user_slit(self.par['rdx']['slitspatnum'], - self.par['rdx']['maskIDs']) + user_slits = slittrace.merge_user_slit(self.par['rdx']['slitspatnum'], + self.par['rdx']['maskIDs']) caliBrate = calibrations.Calibrations.get_instance( self.fitstbl, self.par['calibrations'], self.spectrograph, self.calibrations_path, qadir=self.qa_path, From 2e9c757c78604996d0021cc57074ec25ab00a658 Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Mon, 1 Jul 2024 10:56:33 -0700 Subject: [PATCH 101/128] allow for empty 2d wavecal hdu extension --- pypeit/wavecalib.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pypeit/wavecalib.py b/pypeit/wavecalib.py index db1b5b8aa0..d76fa9baf4 100644 --- a/pypeit/wavecalib.py +++ b/pypeit/wavecalib.py @@ -217,7 +217,8 @@ def from_hdu(cls, hdu, chk_version=True, **kwargs): # Parse all the WAVE2DFIT extensions # TODO: It would be good to have the WAVE2DFIT extensions follow the # same naming convention as the WAVEFIT extensions... - wave2d_fits = [fitting.PypeItFit.from_hdu(hdu[e], chk_version=chk_version) + wave2d_fits = [fitting.PypeItFit() if len(hdu[e].data) == 0 + else fitting.PypeItFit.from_hdu(hdu[e], chk_version=chk_version) for e in ext if 'WAVE2DFIT' in e] if len(wave2d_fits) > 0: d['wv_fit2d'] = np.asarray(wave2d_fits) From 1f0ed7f3e539185883cd04936a957debd2d69ee0 Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Tue, 2 Jul 2024 09:25:56 -0700 Subject: [PATCH 102/128] interrupt --- doc/help/run_pypeit.rst | 2 +- doc/pypeit_par.rst | 4 ++-- pypeit/images/buildimage.py | 4 ++++ pypeit/images/rawimage.py | 4 ---- pypeit/pypeit.py | 3 ++- pypeit/scripts/show_2dspec.py | 6 ++++++ 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/doc/help/run_pypeit.rst b/doc/help/run_pypeit.rst index 33669bf891..24771a70a0 100644 --- a/doc/help/run_pypeit.rst +++ b/doc/help/run_pypeit.rst @@ -4,7 +4,7 @@ usage: run_pypeit [-h] [-v VERBOSITY] [-r REDUX_PATH] [-m] [-s] [-o] [-c] pypeit_file - ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.16.1.dev84+g643dd5acc + ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.16.1.dev91+gdb63cc025 ## ## Available spectrographs include: ## bok_bc, gemini_flamingos1, gemini_flamingos2, gemini_gmos_north_e2v, diff --git a/doc/pypeit_par.rst b/doc/pypeit_par.rst index db0e4ae1c8..69d855ab0c 100644 --- a/doc/pypeit_par.rst +++ b/doc/pypeit_par.rst @@ -5296,11 +5296,11 @@ Alterations to the default parameters are: find_trim_edge = 0, 0, maxnumber_sci = 5 maxnumber_std = 1 - find_fwhm = 4.4 + find_fwhm = np.float64(4.4) [[skysub]] sky_sigrej = 4.0 [[extraction]] - boxcar_radius = 1.9 + boxcar_radius = np.float64(1.9) use_2dmodel_mask = False [flexure] spec_method = boxcar diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index b9ecfa9339..cf5c998212 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -248,6 +248,7 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= mosaic = isinstance(det, tuple) and frame_par['frametype'] not in ['bias', 'dark'] # Do it + testnan = len(file_list) == 1 and 'g0018.fits' in file_list[0] combineImage = combineimage.CombineImage(spectrograph, det, frame_par['process'], file_list) pypeitImage = combineImage.run(bias=bias, bpm=bpm, dark=dark, flatimages=flatimages, scattlight=scattlight, sigma_clip=frame_par['process']['clip'], @@ -255,6 +256,9 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= maxiters=maxiters, ignore_saturation=ignore_saturation, slits=slits, combine_method=frame_par['process']['combine'], mosaic=mosaic) + if testnan: + embed() + exit() # Return class type, if returning any of the frame_image_classes cls = frame_image_classes[frame_par['frametype']] \ diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index 0c3cae1825..bfddc7071d 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -733,10 +733,6 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl shot_noise=self.par['shot_noise'], bpm=_bpm.astype(bool)) - if testnan: - embed(header='pypeitImage') - exit() - pypeitImage.rawheadlist = self.headarr pypeitImage.process_steps = [key for key in self.steps.keys() if self.steps[key]] diff --git a/pypeit/pypeit.py b/pypeit/pypeit.py index a4e354954a..68bcd193ec 100644 --- a/pypeit/pypeit.py +++ b/pypeit/pypeit.py @@ -760,7 +760,8 @@ def objfind_one(self, frames, det, bg_frames=None, std_outfile=None): # Is this a standard star? self.std_redux = self.objtype == 'standard' - frame_par = self.par['calibrations']['standardframe'] if self.std_redux else self.par['scienceframe'] + frame_par = self.par['calibrations']['standardframe'] \ + if self.std_redux else self.par['scienceframe'] # Get the standard trace if need be if self.std_redux is False and std_outfile is not None: diff --git a/pypeit/scripts/show_2dspec.py b/pypeit/scripts/show_2dspec.py index 6c54be71f0..d877d40c78 100644 --- a/pypeit/scripts/show_2dspec.py +++ b/pypeit/scripts/show_2dspec.py @@ -248,6 +248,9 @@ def main(args): waveimg = spec2DObj.waveimg img_gpm = spec2DObj.select_flag(invert=True) + if not np.any(img_gpm): + msgs.warn('The full science image is masked!') + model_gpm = img_gpm.copy() if args.ignore_extract_mask: model_gpm |= spec2DObj.select_flag(flag='EXTRACT') @@ -306,6 +309,9 @@ def main(args): cut_min = mean - 1.0 * sigma cut_max = mean + 4.0 * sigma chname_sci = args.prefix+f'sciimg-{detname}' + embed() + exit() + # Clear all channels at the beginning viewer, ch_sci = display.show_image(sciimg, chname=chname_sci, waveimg=waveimg, clear=_clear, cuts=(cut_min, cut_max)) From c6c6c506775bf94f5fa6c1081fa65ad5ff8090cc Mon Sep 17 00:00:00 2001 From: Dusty Reichwein Date: Tue, 2 Jul 2024 13:13:53 -0700 Subject: [PATCH 103/128] Update caching to handle the case where pygit2 is installed but PypeIt is not in a git repo --- pypeit/cache.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pypeit/cache.py b/pypeit/cache.py index b761b19f09..52379cf6ad 100644 --- a/pypeit/cache.py +++ b/pypeit/cache.py @@ -63,13 +63,22 @@ def git_branch(): """ Return the name/hash of the currently checked out branch - + Returns: - :obj:`str`: Branch name or hash + :obj:`str`: Branch name or hash. Defaults to "develop" if PypeIt is not currently in a repository + or pygit2 is inot installed. + """ - if Repository is None: + if Repository is not None: + try: + repo = Repository(resources.files('pypeit')) + except Exception as e: + # PypeIt not in a git repo + repo = None + + if Repository is None or repo is None: return 'develop' if '.dev' in __version__ else __version__ - repo = Repository(resources.files('pypeit')) + return str(repo.head.target) if repo.head_is_detached else str(repo.head.shorthand) From ef14dc1f6bd2786abc8a33e8922289c9dc66346d Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Wed, 3 Jul 2024 12:53:51 -0700 Subject: [PATCH 104/128] testing edits --- pypeit/core/findobj_skymask.py | 111 ++++++++++++++++++--------------- pypeit/core/skysub.py | 9 ++- pypeit/find_objects.py | 44 ++++++------- pypeit/images/buildimage.py | 12 ++-- pypeit/images/rawimage.py | 55 ---------------- 5 files changed, 95 insertions(+), 136 deletions(-) diff --git a/pypeit/core/findobj_skymask.py b/pypeit/core/findobj_skymask.py index 8d5ba51880..fe56f70bc4 100644 --- a/pypeit/core/findobj_skymask.py +++ b/pypeit/core/findobj_skymask.py @@ -66,57 +66,68 @@ def create_skymask(sobjs, thismask, slit_left, slit_righ, box_rad_pix=None, trim global sky subtraction (True means the pixel is usable for sky subtraction, False means it should be masked when subtracting sky). """ + # Number of objects nobj = len(sobjs) - ximg, _ = pixels.ximg_and_edgemask(slit_left, slit_righ, thismask, trim_edg=trim_edg) - # How many pixels wide is the slit at each Y? - xsize = slit_righ - slit_left - #nsamp = np.ceil(np.median(xsize)) # JFH Changed 07-07-19 - nsamp = np.ceil(xsize.max()) + if nobj == 0: + msgs.info('No objects were detected. The entire slit will be used for sky subtraction.') + return thismask[thismask] - # Objmask + # Compute the object mask skymask_objsnr = np.copy(thismask) - if nobj == 0: - msgs.info('No objects were detected. The entire slit will be used to determine the sky subtraction.') - else: - # Compute some inputs for the object mask - xtmp = (np.arange(nsamp) + 0.5)/nsamp - # threshold for object finding - for iobj in range(nobj): - # this will skip also sobjs with THRESHOLD=0, because are the same that have smash_snr=0. - if (sobjs[iobj].smash_snr != 0.) and (sobjs[iobj].smash_snr != None): - qobj = np.zeros_like(xtmp) - sep = np.abs(xtmp-sobjs[iobj].SPAT_FRACPOS) - sep_inc = sobjs[iobj].maskwidth/nsamp - close = sep <= sep_inc - # This is an analytical SNR profile with a Gaussian shape. - # JFH modified to use SNR here instead of smash peakflux. I believe that the 2.77 is supposed to be - # 2.355**2/2, i.e. the argument of a gaussian with sigma = FWHM/2.35 - qobj[close] = sobjs[iobj].smash_snr * \ - np.exp(np.fmax(-2.77*(sep[close]*nsamp)**2/sobjs[iobj].FWHM**2, -9.0)) - skymask_objsnr[thismask] &= np.interp(ximg[thismask], xtmp, qobj) < skymask_snr_thresh - # FWHM + # Create an image with pixel values equal to the fraction of the spatial + # position along the slit, ranging from 0 -> 1 + ximg, _ = pixels.ximg_and_edgemask(slit_left, slit_righ, thismask, trim_edg=trim_edg) + # Maximum spatial width rounded up + nsamp = np.ceil(np.amax(slit_righ - slit_left)) + # Fractional position within the maximum spatial width + xtmp = (np.arange(nsamp) + 0.5)/nsamp + # threshold for object finding + for iobj in range(nobj): + # this will skip also sobjs with THRESHOLD=0, because are the same that have smash_snr=0. + if sobjs[iobj].smash_snr is None or sobjs[iobj].smash_snr <= 0.: + continue + # Select pixels within the defined width of the object + sep = np.absolute(xtmp-sobjs[iobj].SPAT_FRACPOS) + sep_inc = sobjs[iobj].maskwidth/nsamp + close = sep <= sep_inc + # This is an analytical SNR profile with a Gaussian shape. + # JFH modified to use SNR here instead of smash peakflux. I believe that + # the 2.77 is supposed to be 2.355**2/2, i.e. the argument of a gaussian + # with sigma = FWHM/2.35 + qobj = np.zeros_like(xtmp) + qobj[close] = sobjs[iobj].smash_snr * \ + np.exp(np.fmax(-2.77*(sep[close]*nsamp)**2/sobjs[iobj].FWHM**2, -9.0)) + skymask_objsnr[thismask] &= np.interp(ximg[thismask], xtmp, qobj) < skymask_snr_thresh + + # Compute the FWHM mask skymask_fwhm = np.copy(thismask) - if nobj > 0: - nspec, nspat = thismask.shape - # spatial position everywhere along image - spat_img = np.outer(np.ones(nspec, dtype=int),np.arange(nspat, dtype=int)) - # Boxcar radius? - if box_rad_pix is not None: - msgs.info("Using boxcar radius for masking") - # Loop me - for iobj in range(nobj): - # Create a mask for the pixels that will contribute to the object - skymask_radius = box_rad_pix if box_rad_pix is not None else sobjs[iobj].FWHM - msgs.info(f"Masking around object {iobj+1} within a radius = {skymask_radius} pixels") - slit_img = np.outer(sobjs[iobj].TRACE_SPAT, np.ones(nspat)) # central trace replicated spatially - objmask_now = thismask & (spat_img > (slit_img - skymask_radius)) & (spat_img < (slit_img + skymask_radius)) - skymask_fwhm &= np.invert(objmask_now) - - # Check that we have not performed too much masking - if (np.sum(skymask_fwhm)/np.sum(thismask) < 0.10): - msgs.warn('More than 90% of usable area on this slit would be masked and not used by global sky subtraction. ' - 'Something is probably wrong with object finding for this slit. Not masking object for global sky subtraction.') - skymask_fwhm = np.copy(thismask) + nspec, nspat = thismask.shape + # spatial position everywhere along image +# spat_img = np.outer(np.ones(nspec, dtype=int),np.arange(nspat, dtype=int)) + spat_img = np.tile(np.arange(nspat, dtype=int), (nspec,1)) + # Boxcar radius? + if box_rad_pix is not None: + msgs.info("Using boxcar radius for masking") + # Loop me + for iobj in range(nobj): + # Create a mask for the pixels that will contribute to the object + skymask_radius = box_rad_pix if box_rad_pix is not None else sobjs[iobj].FWHM + msgs.info(f"Masking around object {iobj+1} within a radius = {skymask_radius} pixels") +# slit_img = np.outer(sobjs[iobj].TRACE_SPAT, np.ones(nspat)) # central trace replicated spatially + slit_img = np.tile(sobjs[iobj].TRACE_SPAT, (nspat,1)).T + objmask_now = thismask \ + & (spat_img > slit_img - skymask_radius) \ + & (spat_img < slit_img + skymask_radius) + skymask_fwhm &= np.logical_not(objmask_now) + + # Check that we have not performed too much masking + # TODO: There is this hard-coded check here, and then there is a similar + # check in skysub.global_skysub. Do we need both? + if np.sum(skymask_fwhm)/np.sum(thismask) < 0.10: + msgs.warn('More than 90% of usable area on this slit would be masked and not used by ' + 'global sky subtraction. Something is probably wrong with object finding for ' + 'this slit. Not masking object for global sky subtraction.') + skymask_fwhm = np.copy(thismask) # Still have to make the skymask # # TODO -- Make sure this is right @@ -135,8 +146,10 @@ def create_skymask(sobjs, thismask, slit_left, slit_righ, box_rad_pix=None, trim # computation from objs_in_slit is not necessarily that reliable and when large amounts of masking are performed # on narrow slits/orders, we have problems. We should revisit this after object finding is refactored since # maybe then the fwhm estimates will be more robust. - if box_rad_pix is None and np.all([sobj.smash_snr is not None for sobj in sobjs]) \ - and np.all([sobj.smash_snr != 0. for sobj in sobjs]) and not np.all(skymask_objsnr == thismask): + if box_rad_pix is None \ + and np.all([sobj.smash_snr is not None for sobj in sobjs]) \ + and np.all([sobj.smash_snr != 0. for sobj in sobjs]) \ + and not np.all(skymask_objsnr == thismask): # TODO This is a kludge until we refactor this routine. Basically mask design objects that are not auto-ID # always have smash_snr undefined. If there is a hybrid situation of auto-ID and maskdesign, the logic # here does not really make sense. Soution would be to compute thershold and smash_snr for all objects. diff --git a/pypeit/core/skysub.py b/pypeit/core/skysub.py index 91acc0f2bc..a5114d886c 100644 --- a/pypeit/core/skysub.py +++ b/pypeit/core/skysub.py @@ -136,11 +136,14 @@ def global_skysub(image, ivar, tilts, thismask, slit_left, slit_righ, inmask=Non msgs.error("Type of inmask should be bool and is of type: {:}".format(inmask.dtype)) # Sky pixels for fitting - gpm = thismask & (ivar > 0.0) & inmask & np.logical_not(edgmask) & np.isfinite(image) & np.isfinite(ivar) + gpm = thismask & (ivar > 0.0) & inmask & np.logical_not(edgmask) \ + & np.isfinite(image) & np.isfinite(ivar) bad_pixel_frac = np.sum(thismask & np.logical_not(gpm))/np.sum(thismask) if bad_pixel_frac > max_mask_frac: - msgs.warn('This slit/order has {:5.3f}% of the pixels masked, which exceeds the threshold of {:f}%. '.format(100.0*bad_pixel_frac, 100.0*max_mask_frac) - + msgs.newline() + 'There is likely a problem with this slit. Giving up on global sky-subtraction.') + msgs.warn(f'This slit/order has {100.0*bad_pixel_frac:.3f}% of the pixels masked, which ' + f'exceeds the threshold of {100.0*max_mask_frac:.3f}%.' + + msgs.newline() + 'There is likely a problem with this slit. Giving up on ' + 'global sky-subtraction.') return np.zeros(np.sum(thismask)) # Sub arrays diff --git a/pypeit/find_objects.py b/pypeit/find_objects.py index 120a800bcc..6ca9dbbeed 100644 --- a/pypeit/find_objects.py +++ b/pypeit/find_objects.py @@ -253,28 +253,29 @@ def create_skymask(self, sobjs_obj): subtraction. True = usable for sky subtraction, False = should be masked when sky subtracting. """ - # Masking options - boxcar_rad_pix = None - + # Instantiate the mask skymask = np.ones_like(self.sciImg.image, dtype=bool) - gdslits = np.where(np.invert(self.reduce_bpm))[0] - if sobjs_obj.nobj > 0: - for slit_idx in gdslits: - slit_spat = self.slits.spat_id[slit_idx] - qa_title ="Generating skymask for slit # {:d}".format(slit_spat) - msgs.info(qa_title) - thismask = self.slitmask == slit_spat - this_sobjs = sobjs_obj.SLITID == slit_spat - # Boxcar mask? - if self.par['reduce']['skysub']['mask_by_boxcar']: - boxcar_rad_pix = self.par['reduce']['extraction']['boxcar_radius'] / \ - self.get_platescale(slitord_id=self.slits.slitord_id[slit_idx]) - # Do it - skymask[thismask] = findobj_skymask.create_skymask(sobjs_obj[this_sobjs], thismask, - self.slits_left[:,slit_idx], - self.slits_right[:,slit_idx], - box_rad_pix=boxcar_rad_pix, - trim_edg=self.par['reduce']['findobj']['find_trim_edge']) + if sobjs_obj.nobj == 0: + # No objects found, so entire image contains sky + return skymask + + # Build the mask for each slit + boxcar_rad_pix = None + gdslits = np.where(np.logical_not(self.reduce_bpm))[0] + for slit_idx in gdslits: + slit_spat = self.slits.spat_id[slit_idx] + msgs.info(f'Generating skymask for slit # {slit_spat}') + thismask = self.slitmask == slit_spat + this_sobjs = sobjs_obj.SLITID == slit_spat + # Boxcar mask? + if self.par['reduce']['skysub']['mask_by_boxcar']: + boxcar_rad_pix = self.par['reduce']['extraction']['boxcar_radius'] / \ + self.get_platescale(slitord_id=self.slits.slitord_id[slit_idx]) + # Do it + skymask[thismask] = findobj_skymask.create_skymask( + sobjs_obj[this_sobjs], thismask, self.slits_left[:,slit_idx], + self.slits_right[:,slit_idx], box_rad_pix=boxcar_rad_pix, + trim_edg=self.par['reduce']['findobj']['find_trim_edge']) # Return return skymask @@ -592,6 +593,7 @@ def global_skysub(self, skymask=None, bkg_redux_sciimg=None, pos_mask=not self.bkg_redux and not objs_not_masked, max_mask_frac=self.par['reduce']['skysub']['max_mask_frac'], show_fit=show_fit) + # Mask if something went wrong if np.sum(global_sky[thismask]) == 0.: msgs.warn("Bad fit to sky. Rejecting slit: {:d}".format(slit_spat)) diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index cf5c998212..e156638728 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -157,8 +157,8 @@ def construct_file_name(cls, calib_key, calib_dir=None, basename=None): def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm=None, dark=None, - scattlight=None, flatimages=None, maxiters=5, ignore_saturation=True, slits=None, - mosaic=None, calib_dir=None, setup=None, calib_id=None): + scattlight=None, flatimages=None, maxiters=5, ignore_saturation=True, + slits=None, mosaic=None, calib_dir=None, setup=None, calib_id=None): """ Perform basic image processing on a list of images and combine the results. @@ -248,17 +248,13 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= mosaic = isinstance(det, tuple) and frame_par['frametype'] not in ['bias', 'dark'] # Do it - testnan = len(file_list) == 1 and 'g0018.fits' in file_list[0] combineImage = combineimage.CombineImage(spectrograph, det, frame_par['process'], file_list) - pypeitImage = combineImage.run(bias=bias, bpm=bpm, dark=dark, flatimages=flatimages, scattlight=scattlight, - sigma_clip=frame_par['process']['clip'], + pypeitImage = combineImage.run(bias=bias, bpm=bpm, dark=dark, flatimages=flatimages, + scattlight=scattlight, sigma_clip=frame_par['process']['clip'], sigrej=frame_par['process']['comb_sigrej'], maxiters=maxiters, ignore_saturation=ignore_saturation, slits=slits, combine_method=frame_par['process']['combine'], mosaic=mosaic) - if testnan: - embed() - exit() # Return class type, if returning any of the frame_image_classes cls = frame_image_classes[frame_par['frametype']] \ diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index bfddc7071d..b71bf20b62 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -507,9 +507,6 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # for developers to *re*process an image multiple times from scratch # with different parameters to test changes. - from pathlib import Path - testnan = Path(self.filename).name == 'g0018.fits' - # Set input to attributes self.par = par if bpm is not None: @@ -546,10 +543,6 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # - Convert from ADU to electron counts. if self.par['apply_gain']: self.apply_gain() - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='apply gain') - exit() # Apply additive corrections. The order matters and is fixed. # @@ -557,19 +550,11 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # step *must* be done before subtract_overscan if self.par['use_pattern']: self.subtract_pattern() - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='subtract pattern') - exit() # - Estimate the readnoise using the overscan regions. NOTE: This # needs to be done *after* any pattern subtraction. if self.par['empirical_rn'] or not np.all(self.ronoise > 0): self.estimate_readnoise() - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='estimate readnoise') - exit() # - Initialize the variance images. Starts with the shape and # orientation of the raw image. Note that the readnoise variance @@ -582,10 +567,6 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # is added to the variance. if self.par['use_overscan']: self.subtract_overscan() - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='subtract overscan') - exit() # TODO: Do we need to keep trim and orient as optional? @@ -593,19 +574,11 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # var, and datasec_img. if self.par['trim']: self.trim() - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='trim') - exit() # - Re-orient to PypeIt convention. This re-orients the image, rn2img, # proc_var, var, and datasec_img. if self.par['orient']: self.orient() - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='orient') - exit() # - Check the shape of the bpm if self.bpm.shape != self.image.shape: @@ -638,10 +611,6 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # Bias frame. Shape and orientation must match *processed* image,. # Uncertainty from the bias subtraction is added to the variance. self.subtract_bias(bias) - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='subtract bias') - exit() # TODO: Checking for count (well-depth) saturation should be done here. # TODO :: Non-linearity correction should be done here. @@ -660,20 +629,12 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # from the image being processed. If available, uncertainty from # the dark subtraction is added to the processing variance. self.subtract_dark() - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='subtract dark') - exit() # Create the mosaic images. This *must* come after trimming and # orienting and before determining the spatial flexure shift and # applying any flat-fielding. if self.nimg > 1 and mosaic: self.build_mosaic() - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='build mosaic') - exit() # Calculate flexure, if slits are provided and the correction is # requested. NOTE: This step must come after trim, orient (just like @@ -686,19 +647,11 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl # - Subtract scattered light... this needs to be done before flatfielding. if self.par['subtract_scattlight']: self.subtract_scattlight(scattlight, slits) - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='subtract scattlight') - exit() # Flat-field the data. This propagates the flat-fielding corrections to # the variance. The returned bpm is propagated to the PypeItImage # bitmask below. flat_bpm = self.flatfield(flatimages, slits=slits, debug=debug) if self.use_flat else None - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='flatfield') - exit() # Calculate the inverse variance self.ivar = self.build_ivar() @@ -707,20 +660,12 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl if self.par['subtract_continuum']: # Calculate a simple smooth continuum image, and subtract this from the frame self.subtract_continuum() - if testnan: - if not np.all(np.isfinite(self.image)): - embed(header='subtract continuum') - exit() # Generate a PypeItImage. # NOTE: To reconstruct the variance model, you need base_var, image, # img_scale, noise_floor, and shot_noise. _det, _image, _ivar, _datasec_img, _det_img, _rn2img, _base_var, _img_scale, _bpm \ = self._squeeze() - if testnan: - if not np.all(np.isfinite(_image)): - embed(header='squeeze') - exit() # NOTE: BPM MUST BE A BOOLEAN! pypeitImage = pypeitimage.PypeItImage(_image, ivar=_ivar, amp_img=_datasec_img, det_img=_det_img, rn2img=_rn2img, base_var=_base_var, From c6a7576a6a54ff140706861e04c3cab30a08203b Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Wed, 3 Jul 2024 12:57:19 -0700 Subject: [PATCH 105/128] clean up --- pypeit/images/rawimage.py | 6 ++---- pypeit/scripts/show_2dspec.py | 2 -- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index b71bf20b62..f3118fb8c3 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -677,7 +677,7 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl noise_floor=self.par['noise_floor'], shot_noise=self.par['shot_noise'], bpm=_bpm.astype(bool)) - + pypeitImage.rawheadlist = self.headarr pypeitImage.process_steps = [key for key in self.steps.keys() if self.steps[key]] @@ -1395,6 +1395,4 @@ def build_mosaic(self): def __repr__(self): return f'<{self.__class__.__name__}: file={self.filename}, nimg={self.nimg}, ' \ - f'steps={self.steps}>' - - + f'steps={self.steps}>' \ No newline at end of file diff --git a/pypeit/scripts/show_2dspec.py b/pypeit/scripts/show_2dspec.py index d877d40c78..07d9b6ae32 100644 --- a/pypeit/scripts/show_2dspec.py +++ b/pypeit/scripts/show_2dspec.py @@ -309,8 +309,6 @@ def main(args): cut_min = mean - 1.0 * sigma cut_max = mean + 4.0 * sigma chname_sci = args.prefix+f'sciimg-{detname}' - embed() - exit() # Clear all channels at the beginning viewer, ch_sci = display.show_image(sciimg, chname=chname_sci, waveimg=waveimg, From 48c28dc4c8fe21d777d2e88687f076bb079e7beb Mon Sep 17 00:00:00 2001 From: Dusty Reichwein Date: Wed, 3 Jul 2024 13:07:22 -0700 Subject: [PATCH 106/128] Preserve name of standard star data files when loaded from cache. --- pypeit/core/flux_calib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/core/flux_calib.py b/pypeit/core/flux_calib.py index b94e1bdf4d..816f06be08 100644 --- a/pypeit/core/flux_calib.py +++ b/pypeit/core/flux_calib.py @@ -411,7 +411,7 @@ def get_standard_spectrum(star_type=None, star_mag=None, ra=None, dec=None): # Pull star spectral model from archive msgs.info("Getting archival standard spectrum") # Grab closest standard within a tolerance - std_dict = find_standard_file(ra, dec) + std_dict = find_standard_file(ra, dec,to_pkg='symlink') elif (star_mag is not None) and (star_type is not None): ## using vega spectrum From 28c1d4379b0d44b730393438e4ef45d1f8e73dbb Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Wed, 3 Jul 2024 13:42:50 -0700 Subject: [PATCH 107/128] change default for use_repr --- doc/pypeit_par.rst | 4 ++-- pypeit/par/parset.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/pypeit_par.rst b/doc/pypeit_par.rst index 69d855ab0c..db0e4ae1c8 100644 --- a/doc/pypeit_par.rst +++ b/doc/pypeit_par.rst @@ -5296,11 +5296,11 @@ Alterations to the default parameters are: find_trim_edge = 0, 0, maxnumber_sci = 5 maxnumber_std = 1 - find_fwhm = np.float64(4.4) + find_fwhm = 4.4 [[skysub]] sky_sigrej = 4.0 [[extraction]] - boxcar_radius = np.float64(1.9) + boxcar_radius = 1.9 use_2dmodel_mask = False [flexure] spec_method = boxcar diff --git a/pypeit/par/parset.py b/pypeit/par/parset.py index a2f8202153..10b660f415 100644 --- a/pypeit/par/parset.py +++ b/pypeit/par/parset.py @@ -345,7 +345,7 @@ def _data_table_string(data_table, delimeter='print'): return '\n'.join(row_string)+'\n' @staticmethod - def _data_string(data, use_repr=True, verbatim=False): + def _data_string(data, use_repr=False, verbatim=False): """ Convert a single datum into a string From b880ecee01c40cec77355c897971889ef95c9b1c Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Thu, 11 Jul 2024 11:08:14 -0700 Subject: [PATCH 108/128] update doc, change log --- doc/help/run_pypeit.rst | 2 +- doc/releases/1.16.1dev.rst | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/help/run_pypeit.rst b/doc/help/run_pypeit.rst index 24771a70a0..60a98ddfc7 100644 --- a/doc/help/run_pypeit.rst +++ b/doc/help/run_pypeit.rst @@ -4,7 +4,7 @@ usage: run_pypeit [-h] [-v VERBOSITY] [-r REDUX_PATH] [-m] [-s] [-o] [-c] pypeit_file - ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.16.1.dev91+gdb63cc025 + ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.16.1.dev97+g2ab5988a9 ## ## Available spectrographs include: ## bok_bc, gemini_flamingos1, gemini_flamingos2, gemini_gmos_north_e2v, diff --git a/doc/releases/1.16.1dev.rst b/doc/releases/1.16.1dev.rst index 33b59d4259..fe68fc7496 100644 --- a/doc/releases/1.16.1dev.rst +++ b/doc/releases/1.16.1dev.rst @@ -13,6 +13,8 @@ Installation Changes Dependency Changes ------------------ +- Support added for numpy>=2.0.0; numpy<=2.0.0 should still be supported + Functionality/Performance Improvements and Additions ---------------------------------------------------- From 304d424402ef5382d0ab9fc402e55b6124206b52 Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Thu, 11 Jul 2024 11:14:54 -0700 Subject: [PATCH 109/128] no end line --- pypeit/images/rawimage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index f3118fb8c3..e4c5fd9fef 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -1395,4 +1395,4 @@ def build_mosaic(self): def __repr__(self): return f'<{self.__class__.__name__}: file={self.filename}, nimg={self.nimg}, ' \ - f'steps={self.steps}>' \ No newline at end of file + f'steps={self.steps}>' From ec1043c5961bfae7e22d721791b078fe67b5a69f Mon Sep 17 00:00:00 2001 From: Adolfo Carvalho Date: Mon, 15 Jul 2024 14:28:27 -0700 Subject: [PATCH 110/128] fixed issue with full_template where multi-trace arxivs were not flattened --- pypeit/core/wavecal/autoid.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/core/wavecal/autoid.py b/pypeit/core/wavecal/autoid.py index 4fcebb1add..7980016910 100644 --- a/pypeit/core/wavecal/autoid.py +++ b/pypeit/core/wavecal/autoid.py @@ -1150,7 +1150,7 @@ def full_template(spec, lamps, par, ok_mask, det, binspectral, nsnippet=2, slit_ ncomb = temp_spec.size # Remove the continuum before adding the padding to obs_spec_i _, _, _, _, obs_spec_cont_sub = wvutils.arc_lines_from_spec(obs_spec_i) - _, _, _, _, templ_spec_cont_sub = wvutils.arc_lines_from_spec(temp_spec) + _, _, _, _, templ_spec_cont_sub = wvutils.arc_lines_from_spec(temp_spec.reshape(-1)) # Pad pad_spec = np.zeros_like(temp_spec) nspec = len(obs_spec_i) From b9baa540ed174d250d3d0a09e5ca41c275510807 Mon Sep 17 00:00:00 2001 From: Kyle Westfall Date: Wed, 17 Jul 2024 07:53:02 -0700 Subject: [PATCH 111/128] changes --- doc/releases/1.16.1dev.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/releases/1.16.1dev.rst b/doc/releases/1.16.1dev.rst index fe68fc7496..7a37b14fd2 100644 --- a/doc/releases/1.16.1dev.rst +++ b/doc/releases/1.16.1dev.rst @@ -42,5 +42,5 @@ Under-the-hood Improvements Bug Fixes --------- -- None +- Allow for empty 2D wavecal solution in HDU extension of WaveCalib file From 885cb1823f63bc1a41bd9bf4305109e04891a05a Mon Sep 17 00:00:00 2001 From: Dusty Reichwein Date: Wed, 17 Jul 2024 18:48:11 -0700 Subject: [PATCH 112/128] Update docs for Windows install --- doc/help/run_pypeit.rst | 2 +- doc/include/keck_deimos.sorted.rst | 10 ++--- doc/installing.rst | 24 ++++++++++++ doc/pypeit_par.rst | 62 +++++++++++++++--------------- doc/releases/1.16.1dev.rst | 2 +- 5 files changed, 62 insertions(+), 38 deletions(-) diff --git a/doc/help/run_pypeit.rst b/doc/help/run_pypeit.rst index 60a98ddfc7..43f5329f63 100644 --- a/doc/help/run_pypeit.rst +++ b/doc/help/run_pypeit.rst @@ -4,7 +4,7 @@ usage: run_pypeit [-h] [-v VERBOSITY] [-r REDUX_PATH] [-m] [-s] [-o] [-c] pypeit_file - ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.16.1.dev97+g2ab5988a9 + ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.16.1.dev97+g2ab5988a9.d20240708 ## ## Available spectrographs include: ## bok_bc, gemini_flamingos1, gemini_flamingos2, gemini_gmos_north_e2v, diff --git a/doc/include/keck_deimos.sorted.rst b/doc/include/keck_deimos.sorted.rst index 828519122f..4e41db2257 100644 --- a/doc/include/keck_deimos.sorted.rst +++ b/doc/include/keck_deimos.sorted.rst @@ -12,17 +12,17 @@ filename | frametype | ra | dec | target | dispname | decker | binning | mjd | airmass | exptime | dispangle | amp | filter1 | lampstat01 | dateobs | utc | frameno | calib DE.20170527.06713.fits | arc,tilt | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.077631 | 1.41291034 | 1.0 | 8099.98291016 | SINGLE:B | OG550 | Kr Xe Ar Ne | 2017-05-27 | 01:51:53.87 | 30 | 0 d0527_0030.fits.gz | arc,tilt | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.077631 | 1.41291034 | 1.0 | 8099.98291016 | SINGLE:B | OG550 | Kr Xe Ar Ne | 2017-05-27 | 01:51:53.87 | 30 | 0 - d0527_0031.fits.gz | pixelflat,illumflat,trace | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.07851 | 1.41291034 | 4.0 | 8099.98291016 | SINGLE:B | OG550 | Qz | 2017-05-27 | 01:53:10.93 | 31 | 0 DE.20170527.06790.fits | pixelflat,illumflat,trace | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.07851 | 1.41291034 | 4.0 | 8099.98291016 | SINGLE:B | OG550 | Qz | 2017-05-27 | 01:53:10.93 | 31 | 0 - DE.20170527.06864.fits | pixelflat,illumflat,trace | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.079356 | 1.41291034 | 4.0 | 8099.98291016 | SINGLE:B | OG550 | Qz | 2017-05-27 | 01:54:24.03 | 32 | 0 + d0527_0031.fits.gz | pixelflat,illumflat,trace | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.07851 | 1.41291034 | 4.0 | 8099.98291016 | SINGLE:B | OG550 | Qz | 2017-05-27 | 01:53:10.93 | 31 | 0 d0527_0032.fits.gz | pixelflat,illumflat,trace | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.079356 | 1.41291034 | 4.0 | 8099.98291016 | SINGLE:B | OG550 | Qz | 2017-05-27 | 01:54:24.03 | 32 | 0 - d0527_0033.fits.gz | pixelflat,illumflat,trace | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.080211 | 1.41291034 | 4.0 | 8099.98291016 | SINGLE:B | OG550 | Qz | 2017-05-27 | 01:55:36.93 | 33 | 0 + DE.20170527.06864.fits | pixelflat,illumflat,trace | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.079356 | 1.41291034 | 4.0 | 8099.98291016 | SINGLE:B | OG550 | Qz | 2017-05-27 | 01:54:24.03 | 32 | 0 DE.20170527.06936.fits | pixelflat,illumflat,trace | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.080211 | 1.41291034 | 4.0 | 8099.98291016 | SINGLE:B | OG550 | Qz | 2017-05-27 | 01:55:36.93 | 33 | 0 + d0527_0033.fits.gz | pixelflat,illumflat,trace | 57.99999999999999 | 45.0 | DOME PHLAT | 830G | LongMirr | 1,1 | 57900.080211 | 1.41291034 | 4.0 | 8099.98291016 | SINGLE:B | OG550 | Qz | 2017-05-27 | 01:55:36.93 | 33 | 0 DE.20170527.37601.fits | science | 261.0363749999999 | 19.028166666666667 | P261_OFF | 830G | LongMirr | 1,1 | 57900.435131 | 1.03078874 | 1200.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 10:26:41.61 | 80 | 0 - d0527_0081.fits.gz | science | 261.0363749999999 | 19.028166666666667 | P261_OFF | 830G | LongMirr | 1,1 | 57900.449842 | 1.01267696 | 1200.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 10:47:52.92 | 81 | 0 DE.20170527.38872.fits | science | 261.0363749999999 | 19.028166666666667 | P261_OFF | 830G | LongMirr | 1,1 | 57900.449842 | 1.01267696 | 1200.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 10:47:52.92 | 81 | 0 - DE.20170527.41775.fits | science | 261.0362916666666 | 19.028888888888886 | P261_OFF | 830G | LongMirr | 1,1 | 57900.483427 | 1.00093023 | 1200.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 11:36:15.35 | 83 | 0 + d0527_0081.fits.gz | science | 261.0363749999999 | 19.028166666666667 | P261_OFF | 830G | LongMirr | 1,1 | 57900.449842 | 1.01267696 | 1200.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 10:47:52.92 | 81 | 0 d0527_0083.fits.gz | science | 261.0362916666666 | 19.028888888888886 | P261_OFF | 830G | LongMirr | 1,1 | 57900.483427 | 1.00093023 | 1200.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 11:36:15.35 | 83 | 0 + DE.20170527.41775.fits | science | 261.0362916666666 | 19.028888888888886 | P261_OFF | 830G | LongMirr | 1,1 | 57900.483427 | 1.00093023 | 1200.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 11:36:15.35 | 83 | 0 DE.20170527.43045.fits | science | 261.0362916666666 | 19.028888888888886 | P261_OFF | 830G | LongMirr | 1,1 | 57900.498135 | 1.00838805 | 1200.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 11:57:25.35 | 84 | 0 DE.20170527.44316.fits | science | 261.0362916666666 | 19.028888888888886 | P261_OFF | 830G | LongMirr | 1,1 | 57900.512854 | 1.02377681 | 1200.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 12:18:36.71 | 85 | 0 DE.20170527.53184.fits | science | 349.99316666666664 | -5.16575 | Feige 110 | 830G | LongMirr | 1,1 | 57900.615484 | 1.42505162 | 45.0 | 8099.98291016 | SINGLE:B | OG550 | Off | 2017-05-27 | 14:46:24.88 | 93 | 0 diff --git a/doc/installing.rst b/doc/installing.rst index 79e92d9de6..549ee4c744 100644 --- a/doc/installing.rst +++ b/doc/installing.rst @@ -222,6 +222,30 @@ for x86-64: Solutions/Recommendations/Feedback for these installation options are welcome; please `Submit an issue`_. +User Installation on Windows +--------------------------------------------- + +#. Download `Python for Windows `_. + +#. Run the installer. + + * Make sure "Add python.exe to Path" or "Add Python to environment variables" is selected before installing. + * If you have Admin privileges click "Disable path length limit" after the installation succeeds. + +#. Downloand and run the `Visual Studio build tools `_ installer. + + * Only "Desktop Development with C++" needs to be checked. + * Click install + +#. Create a virtual environment as in `Setup a clean python environment `__ and install PypeIt as described above. + +If running ``python`` on Windows brings up a window for the Microsoft Store you may want to change the application alias. +This is under ``Settings -> Apps -> App execution aliases`` on Windows 10 and ``Settings -> Apps -> Advanced app settings -> App execution aliases`` +on Windows 11. Disable the ``App Installer`` options for the ``python.exe`` and ``python3.exe`` executables. + +An alternative for running under Windows is to install the `Windows Subsystem for Linux (WSL) `_. +This in effect allows you to run PypeIt under Linux under Windows. + ---- .. _data_installation: diff --git a/doc/pypeit_par.rst b/doc/pypeit_par.rst index db0e4ae1c8..61283b0fc1 100644 --- a/doc/pypeit_par.rst +++ b/doc/pypeit_par.rst @@ -582,21 +582,21 @@ Collate1DPar Keywords Class Instantiation: :class:`~pypeit.par.pypeitpar.Collate1DPar` -========================= =============== ======= ============================================ ================================================================================================================================================================================================================================================================================================================================================================================================================== -Key Type Options Default Description -========================= =============== ======= ============================================ ================================================================================================================================================================================================================================================================================================================================================================================================================== -``dry_run`` bool .. False If set, the script will display the matching File and Object Ids but will not flux, coadd or archive. -``exclude_serendip`` bool .. False Whether to exclude SERENDIP objects from collating. -``exclude_slit_trace_bm`` list, str .. A list of slit trace bitmask bits that should be excluded. -``flux`` bool .. False If set, the script will flux calibrate using archived sensfuncs before coadding. -``ignore_flux`` bool .. False If set, the script will only coadd non-fluxed spectra even if flux data is present. Otherwise fluxed spectra are coadded if all spec1ds have been fluxed calibrated. -``match_using`` str .. ``ra/dec`` Determines how 1D spectra are matched as being the same object. Must be either 'pixel' or 'ra/dec'. -``outdir`` str .. ``/Users/westfall/Work/packages/pypeit/doc`` The path where all coadded output files and report files will be placed. -``refframe`` str .. .. Perform reference frame correction prior to coadding. Options are: observed, heliocentric, barycentric -``spec1d_outdir`` str .. .. The path where all modified spec1d files are placed. These are only created if flux calibration or refframe correction are asked for. -``tolerance`` str, float, int .. 1.0 The tolerance used when comparing the coordinates of objects. If two objects are within this distance from each other, they are considered the same object. If match_using is 'ra/dec' (the default) this is an angular distance. The defaults units are arcseconds but other units supported by astropy.coordinates.Angle can be used (`e.g.`, '0.003d' or '0h1m30s'). If match_using is 'pixel' this is a float. -``wv_rms_thresh`` float .. .. If set, any objects with a wavelength RMS > this value are skipped, else all wavelength RMS values are accepted. -========================= =============== ======= ============================================ ================================================================================================================================================================================================================================================================================================================================================================================================================== +========================= =============== ======= =============================== ================================================================================================================================================================================================================================================================================================================================================================================================================== +Key Type Options Default Description +========================= =============== ======= =============================== ================================================================================================================================================================================================================================================================================================================================================================================================================== +``dry_run`` bool .. False If set, the script will display the matching File and Object Ids but will not flux, coadd or archive. +``exclude_serendip`` bool .. False Whether to exclude SERENDIP objects from collating. +``exclude_slit_trace_bm`` list, str .. A list of slit trace bitmask bits that should be excluded. +``flux`` bool .. False If set, the script will flux calibrate using archived sensfuncs before coadding. +``ignore_flux`` bool .. False If set, the script will only coadd non-fluxed spectra even if flux data is present. Otherwise fluxed spectra are coadded if all spec1ds have been fluxed calibrated. +``match_using`` str .. ``ra/dec`` Determines how 1D spectra are matched as being the same object. Must be either 'pixel' or 'ra/dec'. +``outdir`` str .. ``/home/dusty/work/PypeIt/doc`` The path where all coadded output files and report files will be placed. +``refframe`` str .. .. Perform reference frame correction prior to coadding. Options are: observed, heliocentric, barycentric +``spec1d_outdir`` str .. .. The path where all modified spec1d files are placed. These are only created if flux calibration or refframe correction are asked for. +``tolerance`` str, float, int .. 1.0 The tolerance used when comparing the coordinates of objects. If two objects are within this distance from each other, they are considered the same object. If match_using is 'ra/dec' (the default) this is an angular distance. The defaults units are arcseconds but other units supported by astropy.coordinates.Angle can be used (`e.g.`, '0.003d' or '0h1m30s'). If match_using is 'pixel' this is a float. +``wv_rms_thresh`` float .. .. If set, any objects with a wavelength RMS > this value are skipped, else all wavelength RMS values are accepted. +========================= =============== ======= =============================== ================================================================================================================================================================================================================================================================================================================================================================================================================== ---- @@ -649,22 +649,22 @@ ReduxPar Keywords Class Instantiation: :class:`~pypeit.par.pypeitpar.ReduxPar` -====================== ============== ======= ============================================ ========================================================================================================================================================================================================================================================================================================================================================================================================== -Key Type Options Default Description -====================== ============== ======= ============================================ ========================================================================================================================================================================================================================================================================================================================================================================================================== -``calwin`` int, float .. 0 The window of time in hours to search for calibration frames for a science frame -``chk_version`` bool .. True If True enforce strict PypeIt version checking to ensure that all files were created with the current version of PypeIt. If set to False, the code will attempt to read out-of-date files and keep going. Beware (!!) that this can lead to unforeseen bugs that either cause the code to crash or lead to erroneous results. I.e., you really need to know what you are doing if you set this to False! -``detnum`` int, list .. .. Restrict reduction to a list of detector indices. In case of mosaic reduction (currently only available for Gemini/GMOS and Keck/DEIMOS) ``detnum`` should be a list of tuples of the detector indices that are mosaiced together. E.g., for Gemini/GMOS ``detnum`` would be ``[(1,2,3)]`` and for Keck/DEIMOS it would be ``[(1, 5), (2, 6), (3, 7), (4, 8)]`` -``ignore_bad_headers`` bool .. False Ignore bad headers (NOT recommended unless you know it is safe). -``maskIDs`` str, int, list .. .. Restrict reduction to a set of slitmask IDs Example syntax -- ``maskIDs = 818006,818015`` This must be used with detnum (for now). -``qadir`` str .. ``QA`` Directory relative to calling directory to write quality assessment files. -``quicklook`` bool .. False Run a quick look reduction? This is usually good if you want to quickly reduce the data (usually at the telescope in real time) to get an initial estimate of the data quality. -``redux_path`` str .. ``/Users/westfall/Work/packages/pypeit/doc`` Path to folder for performing reductions. Default is the current working directory. -``scidir`` str .. ``Science`` Directory relative to calling directory to write science files. -``slitspatnum`` str, list .. .. Restrict reduction to a set of slit DET:SPAT values (closest slit is used). Example syntax -- slitspatnum = DET01:175,DET01:205 or MSC02:2234 If you are re-running the code, (i.e. modifying one slit) you *must* have the precise SPAT_ID index. -``sortroot`` str .. .. A filename given to output the details of the sorted files. If None, the default is the root name of the pypeit file. If off, no output is produced. -``spectrograph`` str .. .. Spectrograph that provided the data to be reduced. See :ref:`instruments` for valid options. -====================== ============== ======= ============================================ ========================================================================================================================================================================================================================================================================================================================================================================================================== +====================== ============== ======= =============================== ========================================================================================================================================================================================================================================================================================================================================================================================================== +Key Type Options Default Description +====================== ============== ======= =============================== ========================================================================================================================================================================================================================================================================================================================================================================================================== +``calwin`` int, float .. 0 The window of time in hours to search for calibration frames for a science frame +``chk_version`` bool .. True If True enforce strict PypeIt version checking to ensure that all files were created with the current version of PypeIt. If set to False, the code will attempt to read out-of-date files and keep going. Beware (!!) that this can lead to unforeseen bugs that either cause the code to crash or lead to erroneous results. I.e., you really need to know what you are doing if you set this to False! +``detnum`` int, list .. .. Restrict reduction to a list of detector indices. In case of mosaic reduction (currently only available for Gemini/GMOS and Keck/DEIMOS) ``detnum`` should be a list of tuples of the detector indices that are mosaiced together. E.g., for Gemini/GMOS ``detnum`` would be ``[(1,2,3)]`` and for Keck/DEIMOS it would be ``[(1, 5), (2, 6), (3, 7), (4, 8)]`` +``ignore_bad_headers`` bool .. False Ignore bad headers (NOT recommended unless you know it is safe). +``maskIDs`` str, int, list .. .. Restrict reduction to a set of slitmask IDs Example syntax -- ``maskIDs = 818006,818015`` This must be used with detnum (for now). +``qadir`` str .. ``QA`` Directory relative to calling directory to write quality assessment files. +``quicklook`` bool .. False Run a quick look reduction? This is usually good if you want to quickly reduce the data (usually at the telescope in real time) to get an initial estimate of the data quality. +``redux_path`` str .. ``/home/dusty/work/PypeIt/doc`` Path to folder for performing reductions. Default is the current working directory. +``scidir`` str .. ``Science`` Directory relative to calling directory to write science files. +``slitspatnum`` str, list .. .. Restrict reduction to a set of slit DET:SPAT values (closest slit is used). Example syntax -- slitspatnum = DET01:175,DET01:205 or MSC02:2234 If you are re-running the code, (i.e. modifying one slit) you *must* have the precise SPAT_ID index. +``sortroot`` str .. .. A filename given to output the details of the sorted files. If None, the default is the root name of the pypeit file. If off, no output is produced. +``spectrograph`` str .. .. Spectrograph that provided the data to be reduced. See :ref:`instruments` for valid options. +====================== ============== ======= =============================== ========================================================================================================================================================================================================================================================================================================================================================================================================== ---- diff --git a/doc/releases/1.16.1dev.rst b/doc/releases/1.16.1dev.rst index fe68fc7496..e51ab2aec0 100644 --- a/doc/releases/1.16.1dev.rst +++ b/doc/releases/1.16.1dev.rst @@ -42,5 +42,5 @@ Under-the-hood Improvements Bug Fixes --------- -- None +- Fix "The system cannot find the file specified" errors when installing on Windows. From 62ddd8a0a3d5f2f02be2f2d0cd31c0050bd22b22 Mon Sep 17 00:00:00 2001 From: jhennawi Date: Fri, 19 Jul 2024 21:27:18 +0900 Subject: [PATCH 113/128] Updated docs on check_calibraitons --- pypeit/calibrations.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pypeit/calibrations.py b/pypeit/calibrations.py index 998f9a9cff..9c89d4bf9f 100644 --- a/pypeit/calibrations.py +++ b/pypeit/calibrations.py @@ -214,6 +214,7 @@ def check_calibrations(self, file_list, check_lamps=True): """ Check if the input calibration files are consistent with each other. This step is usually needed when combining calibration frames of a given type. + This routine currently only prints out warning messages if the calibration files are not consistent. Note: The exposure times are currently checked in the combine step, so they are not checked here. @@ -224,6 +225,7 @@ def check_calibrations(self, file_list, check_lamps=True): check_lamps : bool, optional Check if the lamp status is the same for all the files. Default is True. """ + lampstat = [None] * len(file_list) # Loop on the files for ii, ifile in enumerate(file_list): From 0373f38a0a0fd26b55cf7bf3dbe252c68f2d3611 Mon Sep 17 00:00:00 2001 From: jhennawi Date: Fri, 19 Jul 2024 21:28:17 +0900 Subject: [PATCH 114/128] Tuned up buildimage to just loop over the file. --- pypeit/images/buildimage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index 0d587f2f67..12050ea17e 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -254,7 +254,7 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= rawImage_list = [] # Loop on the files - for ii, ifile in enumerate(file_list): + for ifile in file_list: # Load raw image rawImage = rawimage.RawImage(ifile, spectrograph, det) # Process From 58391cdd14305c3f07b3d01af67db9aff1b47ec3 Mon Sep 17 00:00:00 2001 From: jhennawi Date: Fri, 19 Jul 2024 21:40:24 +0900 Subject: [PATCH 115/128] addressing PR comments. --- pypeit/images/buildimage.py | 2 +- pypeit/images/combineimage.py | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/pypeit/images/buildimage.py b/pypeit/images/buildimage.py index 12050ea17e..14c4f3d1d9 100644 --- a/pypeit/images/buildimage.py +++ b/pypeit/images/buildimage.py @@ -263,7 +263,7 @@ def buildimage_fromlist(spectrograph, det, frame_par, file_list, bias=None, bpm= bpm=bpm, dark=dark, flatimages=flatimages, slits=slits, mosaic=mosaic)) # Do it - combineImage = combineimage.CombineImage(rawImage_list, spectrograph, frame_par['process']) + combineImage = combineimage.CombineImage(rawImage_list, frame_par['process']) pypeitImage = combineImage.run(maxiters=maxiters, ignore_saturation=ignore_saturation) # Return class type, if returning any of the frame_image_classes cls = frame_image_classes[frame_par['frametype']] \ diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index a1b45b3f6f..9bf3ce33c4 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -25,14 +25,10 @@ class CombineImage: rawImages (:obj:`list`, :class:`~pypeit.images.pypeitimage.PypeItImage): Either a single :class:`~pypeit.images.pypeitimage.PypeItImage` object or a list of one or more of these objects to be combined into a an image. - spectrograph (:class:`~pypeit.spectrographs.spectrograph.Spectrograph`): - Spectrograph used to take the data. par (:class:`~pypeit.par.pypeitpar.ProcessImagesPar`): Parameters that dictate the processing of the images. Attributes: - spectrograph (:class:`~pypeit.spectrographs.spectrograph.Spectrograph`): - Spectrograph used to take the data. det (:obj:`int`, :obj:`tuple`): The 1-indexed detector number(s) to process. par (:class:`~pypeit.par.pypeitpar.ProcessImagesPar`): @@ -42,11 +38,10 @@ class CombineImage: to be combined. """ - def __init__(self, rawImages, spectrograph, par): + def __init__(self, rawImages, par): if not isinstance(par, pypeitpar.ProcessImagesPar): msgs.error('Provided ParSet for must be type ProcessImagesPar.') self.rawImages = list(rawImages) if hasattr(rawImages, '__len__') else [rawImages] - self.spectrograph = spectrograph self.par = par # This musts be named this way as it is frequently a child # NOTE: nimgs is a property method. Defining rawImages above must come @@ -244,6 +239,7 @@ def run(self, ignore_saturation=False, maxiters=5): noise_floor=self.par['noise_floor']) # Build the combined image + embed() comb = pypeitimage.PypeItImage(image=comb_img, ivar=utils.inverse(comb_var), nimg=nframes, amp_img=rawImage.amp_img, det_img=rawImage.det_img, rn2img=comb_rn2, base_var=comb_basev, img_scale=comb_scl, @@ -252,7 +248,7 @@ def run(self, ignore_saturation=False, maxiters=5): # NOTE: The detector is needed here so # that we can get the dark current later. detector=rawImage.detector, - PYP_SPEC=self.spectrograph.name, + PYP_SPEC=rawImage.PYP_SPEC, units='e-' if self.par['apply_gain'] else 'ADU', exptime=comb_texp, noise_floor=self.par['noise_floor'], shot_noise=self.par['shot_noise']) From 13f0dc4bb88bd1d5d93e0701cbd95c519fd58d5b Mon Sep 17 00:00:00 2001 From: jhennawi Date: Fri, 19 Jul 2024 21:55:40 +0900 Subject: [PATCH 116/128] addressing PR comments. --- pypeit/images/pypeitimage.py | 4 ++++ pypeit/images/rawimage.py | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pypeit/images/pypeitimage.py b/pypeit/images/pypeitimage.py index 79ea14187d..dc8e07b591 100644 --- a/pypeit/images/pypeitimage.py +++ b/pypeit/images/pypeitimage.py @@ -91,6 +91,9 @@ class PypeItImage(datamodel.DataContainer): :class:`~pypeit.images.rawimage.RawImage.process`. """ + # TODO These docs are confusing. The __init__ method needs to be documented just as it is for + # every other class that we have written in PypeIt, i.e. the arguments all need to be documented. They are not + # documented here and instead we have the odd Args documentation above. version = '1.3.0' """Datamodel version number""" @@ -161,6 +164,7 @@ def from_pypeitimage(cls, pypeitImage): # Done return self + # TODO This init method needs proper docs, which includes every optional argument. See my comment above. def __init__(self, image, ivar=None, nimg=None, amp_img=None, det_img=None, rn2img=None, base_var=None, img_scale=None, fullmask=None, detector=None, spat_flexure=None, filename=None, PYP_SPEC=None, units=None, exptime=None, noise_floor=None, diff --git a/pypeit/images/rawimage.py b/pypeit/images/rawimage.py index 1afaca5e40..831a9a7c94 100644 --- a/pypeit/images/rawimage.py +++ b/pypeit/images/rawimage.py @@ -676,9 +676,9 @@ def process(self, par, bpm=None, scattlight=None, flatimages=None, bias=None, sl exptime=self.exptime, noise_floor=self.par['noise_floor'], shot_noise=self.par['shot_noise'], - bpm=_bpm.astype(bool)) + bpm=_bpm.astype(bool), + filename=self.filename) - pypeitImage.filename = self.filename pypeitImage.rawheadlist = self.headarr pypeitImage.process_steps = [key for key in self.steps.keys() if self.steps[key]] From 461260febdd23fbf37e8c38a6f1113927ad0af6d Mon Sep 17 00:00:00 2001 From: jhennawi Date: Fri, 19 Jul 2024 22:08:27 +0900 Subject: [PATCH 117/128] adressing pr comments --- pypeit/images/combineimage.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pypeit/images/combineimage.py b/pypeit/images/combineimage.py index 9bf3ce33c4..635cb4905d 100644 --- a/pypeit/images/combineimage.py +++ b/pypeit/images/combineimage.py @@ -239,7 +239,6 @@ def run(self, ignore_saturation=False, maxiters=5): noise_floor=self.par['noise_floor']) # Build the combined image - embed() comb = pypeitimage.PypeItImage(image=comb_img, ivar=utils.inverse(comb_var), nimg=nframes, amp_img=rawImage.amp_img, det_img=rawImage.det_img, rn2img=comb_rn2, base_var=comb_basev, img_scale=comb_scl, From 59f2a2151e516484a87107155ab139c7dbe66d75 Mon Sep 17 00:00:00 2001 From: Dusty Reichwein Date: Fri, 19 Jul 2024 14:43:59 -0700 Subject: [PATCH 118/128] Updating docs on how to enable OpenMP for Macs, based on discussion in the developers slack. --- doc/help/run_pypeit.rst | 2 +- doc/installing.rst | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/help/run_pypeit.rst b/doc/help/run_pypeit.rst index 43f5329f63..2870d8a61a 100644 --- a/doc/help/run_pypeit.rst +++ b/doc/help/run_pypeit.rst @@ -4,7 +4,7 @@ usage: run_pypeit [-h] [-v VERBOSITY] [-r REDUX_PATH] [-m] [-s] [-o] [-c] pypeit_file - ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.16.1.dev97+g2ab5988a9.d20240708 + ## PypeIt : The Python Spectroscopic Data Reduction Pipeline v1.16.1.dev109+g885cb1823 ## ## Available spectrographs include: ## bok_bc, gemini_flamingos1, gemini_flamingos2, gemini_gmos_north_e2v, diff --git a/doc/installing.rst b/doc/installing.rst index 549ee4c744..f782f4c49b 100644 --- a/doc/installing.rst +++ b/doc/installing.rst @@ -546,7 +546,8 @@ GCC 12.x via ``homebrew``, you would get ``pypeit`` to use it by doing, for exam .. code-block:: console - CC=gcc-12 pip install pypeit + $ export CC=gcc-12 + $ pip install pypeit Basically, ``pypeit`` checks the ``CC`` environment variable for what compiler to use so configure that as needed to use your desired compiler. The ``pypeit_c_enabled`` script can be used to check if From 5788e8a1e65e210a50460df7a06f66f824e7d0ef Mon Sep 17 00:00:00 2001 From: Dusty Reichwein Date: Fri, 19 Jul 2024 18:13:02 -0700 Subject: [PATCH 119/128] Rework from PR comments --- doc/installing.rst | 4 ++-- pypeit/bspline/setup_package.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/installing.rst b/doc/installing.rst index f782f4c49b..1772a7b8f7 100644 --- a/doc/installing.rst +++ b/doc/installing.rst @@ -542,11 +542,11 @@ will work single-threaded if OpenMP is not available. GCC supports OpenMP out of the box, however the ``clang`` compiler that Apple's XCode provides does not. So for optimal performance on Apple hardware, you will want to install GCC via ``homebrew`` or ``macports`` and specify its use when installing ``pypeit``. For example, if you installed -GCC 12.x via ``homebrew``, you would get ``pypeit`` to use it by doing, for example: +GCC via ``homebrew``, you would get ``pypeit`` to use it by doing, for example: .. code-block:: console - $ export CC=gcc-12 + $ export CC=/opt/homebrew/bin/gcc $ pip install pypeit Basically, ``pypeit`` checks the ``CC`` environment variable for what compiler to use so configure diff --git a/pypeit/bspline/setup_package.py b/pypeit/bspline/setup_package.py index f085c7e055..122cff8dc0 100644 --- a/pypeit/bspline/setup_package.py +++ b/pypeit/bspline/setup_package.py @@ -27,4 +27,4 @@ def get_extensions(): # systems, notably apple's version of clang that xcode provides, don't support it out of the box. add_openmp_flags_if_available(extension) - return [extension] \ No newline at end of file + return [extension] From 9c5bd24bc244c0abbd5344ab4c983c892f0e8d6c Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jul 2024 08:49:12 +0100 Subject: [PATCH 120/128] no error returned --- pypeit/core/flexure.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pypeit/core/flexure.py b/pypeit/core/flexure.py index b1d94a02a2..23fbaa9cb5 100644 --- a/pypeit/core/flexure.py +++ b/pypeit/core/flexure.py @@ -1218,7 +1218,8 @@ def calculate_image_phase(imref, imshift, gpm_ref=None, gpm_shift=None, maskval= if gpm_shift is None: gpm_shift = np.ones(imshift.shape, dtype=bool) if maskval is None else imshift != maskval # Get a crude estimate of the shift - shift = phase_cross_correlation(imref, imshift, reference_mask=gpm_ref, moving_mask=gpm_shift).astype(int) + shift = phase_cross_correlation(imref, imshift, reference_mask=gpm_ref, moving_mask=gpm_shift, + return_error=False).astype(int) # Extract the overlapping portion of the images exref = imref.copy() exshf = imshift.copy() From 35f0a7d74834a0cd7e3afbab8eb6d0803aab2619 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jul 2024 08:50:01 +0100 Subject: [PATCH 121/128] no error returned --- pypeit/core/flexure.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pypeit/core/flexure.py b/pypeit/core/flexure.py index 23fbaa9cb5..b1d94a02a2 100644 --- a/pypeit/core/flexure.py +++ b/pypeit/core/flexure.py @@ -1218,8 +1218,7 @@ def calculate_image_phase(imref, imshift, gpm_ref=None, gpm_shift=None, maskval= if gpm_shift is None: gpm_shift = np.ones(imshift.shape, dtype=bool) if maskval is None else imshift != maskval # Get a crude estimate of the shift - shift = phase_cross_correlation(imref, imshift, reference_mask=gpm_ref, moving_mask=gpm_shift, - return_error=False).astype(int) + shift = phase_cross_correlation(imref, imshift, reference_mask=gpm_ref, moving_mask=gpm_shift).astype(int) # Extract the overlapping portion of the images exref = imref.copy() exshf = imshift.copy() From b5811ef4853cc0f4b469a90536ae47a8b0e1a0f2 Mon Sep 17 00:00:00 2001 From: rcooke Date: Tue, 23 Jul 2024 14:48:55 +0100 Subject: [PATCH 122/128] phase shift with no errors --- pypeit/core/flexure.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pypeit/core/flexure.py b/pypeit/core/flexure.py index b1d94a02a2..23fbaa9cb5 100644 --- a/pypeit/core/flexure.py +++ b/pypeit/core/flexure.py @@ -1218,7 +1218,8 @@ def calculate_image_phase(imref, imshift, gpm_ref=None, gpm_shift=None, maskval= if gpm_shift is None: gpm_shift = np.ones(imshift.shape, dtype=bool) if maskval is None else imshift != maskval # Get a crude estimate of the shift - shift = phase_cross_correlation(imref, imshift, reference_mask=gpm_ref, moving_mask=gpm_shift).astype(int) + shift = phase_cross_correlation(imref, imshift, reference_mask=gpm_ref, moving_mask=gpm_shift, + return_error=False).astype(int) # Extract the overlapping portion of the images exref = imref.copy() exshf = imshift.copy() From 76062b440360bbcd88268bff6284e1a38c3f6173 Mon Sep 17 00:00:00 2001 From: rcooke Date: Wed, 24 Jul 2024 14:52:22 +0100 Subject: [PATCH 123/128] fix scikit-image argument update --- pypeit/core/flexure.py | 4 ++-- setup.cfg | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pypeit/core/flexure.py b/pypeit/core/flexure.py index 23fbaa9cb5..02265a3426 100644 --- a/pypeit/core/flexure.py +++ b/pypeit/core/flexure.py @@ -1218,8 +1218,8 @@ def calculate_image_phase(imref, imshift, gpm_ref=None, gpm_shift=None, maskval= if gpm_shift is None: gpm_shift = np.ones(imshift.shape, dtype=bool) if maskval is None else imshift != maskval # Get a crude estimate of the shift - shift = phase_cross_correlation(imref, imshift, reference_mask=gpm_ref, moving_mask=gpm_shift, - return_error=False).astype(int) + shift, _, _ = phase_cross_correlation(imref, imshift, reference_mask=gpm_ref, moving_mask=gpm_shift) + shift = shift.astype(int) # Extract the overlapping portion of the images exref = imref.copy() exshf = imshift.copy() diff --git a/setup.cfg b/setup.cfg index b2b145ce56..0f8d481f3a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -64,7 +64,7 @@ scripts = [options.extras_require] scikit-image = - scikit-image + scikit-image>=0.23 specutils = specutils>=1.13 test = From 87527face9f733e0adc99b2246b527e158e3be08 Mon Sep 17 00:00:00 2001 From: rcooke Date: Sat, 27 Jul 2024 08:03:22 +0100 Subject: [PATCH 124/128] fixed missing argument --- pypeit/core/datacube.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 7688753ade..3f9625ba9b 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -258,7 +258,7 @@ def extract_point_source(wave, flxcube, ivarcube, bpmcube, wcscube, exptime, # Generate a whitelight image, and fit a 2D Gaussian to estimate centroid and width msgs.info("Making white light image") - wl_img = make_whitelight_fromcube(_flxcube, wavemin=whitelight_range[0], wavemax=whitelight_range[1]) + wl_img = make_whitelight_fromcube(_flxcube, bpmcube, wave=wave, wavemin=whitelight_range[0], wavemax=whitelight_range[1]) popt, pcov, model = fitGaussian2D(wl_img, norm=True) if boxcar_radius is None: nsig = 4 # 4 sigma should be far enough... Note: percentage enclosed for 2D Gaussian = 1-np.exp(-0.5 * nsig**2) From 01416295f664500d078b6db4b4ea5cf52df78a3f Mon Sep 17 00:00:00 2001 From: rcooke Date: Fri, 9 Aug 2024 20:31:33 +0100 Subject: [PATCH 125/128] fix trc_name when None as input --- pypeit/alignframe.py | 3 +-- pypeit/display/display.py | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pypeit/alignframe.py b/pypeit/alignframe.py index 2cfc6b28d8..fb899525a9 100644 --- a/pypeit/alignframe.py +++ b/pypeit/alignframe.py @@ -316,8 +316,7 @@ def show_alignment(alignframe, align_traces=None, slits=None, clear=False): if slt%2 == 0: color = 'magenta' # Display the trace - display.show_trace(viewer, channel, align_traces[:, bar, slt], trc_name="", - color=color) + display.show_trace(viewer, channel, align_traces[:, bar, slt], color=color) class AlignmentSplines: diff --git a/pypeit/display/display.py b/pypeit/display/display.py index 2b53dc466f..948ca1f2f8 100644 --- a/pypeit/display/display.py +++ b/pypeit/display/display.py @@ -485,6 +485,7 @@ def show_trace(viewer, ch, trace, trc_name=None, maskdef_extr=None, manual_extr= ntrace = trace.shape[1] _maskdef_extr = ntrace*[False] if maskdef_extr is None else maskdef_extr _manual_extr = ntrace*[False] if manual_extr is None else manual_extr + _trc_name = ntrace*[''] if trc_name is None else trc_name # Show if yval is None: @@ -507,8 +508,8 @@ def show_trace(viewer, ch, trace, trc_name=None, maskdef_extr=None, manual_extr= # Text ohf = len(trace[:,i])//2 # Do it - canvas_list += [dict(type='text',args=(float(y[ohf,i]), float(trace[ohf,i]), str(trc_name[i])) if rotate - else (float(trace[ohf,i]), float(y[ohf,i]), str(trc_name[i])), + canvas_list += [dict(type='text',args=(float(y[ohf,i]), float(trace[ohf,i]), str(_trc_name[i])) if rotate + else (float(trace[ohf,i]), float(y[ohf,i]), str(_trc_name[i])), kwargs=dict(color=_color, fontsize=17., rot_deg=90.))] canvas.add('constructedcanvas', canvas_list) From 844c2a85bfe0ed0db03c362db484f6efcac1de23 Mon Sep 17 00:00:00 2001 From: rcooke Date: Mon, 12 Aug 2024 18:45:30 +0100 Subject: [PATCH 126/128] update release logs --- doc/releases/1.16.1dev.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/releases/1.16.1dev.rst b/doc/releases/1.16.1dev.rst index 632725788c..120e5f1595 100644 --- a/doc/releases/1.16.1dev.rst +++ b/doc/releases/1.16.1dev.rst @@ -52,3 +52,4 @@ Bug Fixes - Fixed a fault caused when all frames in a pypeit file are identified as being part of ``all`` calibration groups. - Allow for empty 2D wavecal solution in HDU extension of WaveCalib file +- Fixed a bug in the ginga display function, when the user doesn't provide the `trc_name` argument. \ No newline at end of file From 95776c98790b249e62f78216cdd8eff5b5c8cfca Mon Sep 17 00:00:00 2001 From: Debora Pelliccia Date: Wed, 15 May 2024 17:21:03 -1000 Subject: [PATCH 127/128] add kind=stable to argsort (cherry picked from commit e6abfcd5e66d9777c680fd22165721c963ba6dbd) --- pypeit/bitmask.py | 2 +- pypeit/bspline/bspline.py | 6 +++--- pypeit/coadd3d.py | 4 ++-- pypeit/core/arc.py | 4 ++-- pypeit/core/datacube.py | 4 ++-- pypeit/core/extract.py | 18 +++++++++--------- pypeit/core/findobj_skymask.py | 14 +++++++------- pypeit/core/fitting.py | 2 +- pypeit/core/flat.py | 6 +++--- pypeit/core/pydl.py | 6 +++--- pypeit/core/skysub.py | 12 ++++++------ pypeit/core/slitdesign_matching.py | 4 ++-- pypeit/core/telluric.py | 2 +- pypeit/core/wavecal/autoid.py | 2 +- pypeit/edgetrace.py | 4 ++-- pypeit/flatfield.py | 8 ++++---- pypeit/sampling.py | 2 +- pypeit/utils.py | 4 ++-- 18 files changed, 52 insertions(+), 52 deletions(-) diff --git a/pypeit/bitmask.py b/pypeit/bitmask.py index fd35e61c0f..cfa4eae9ca 100644 --- a/pypeit/bitmask.py +++ b/pypeit/bitmask.py @@ -575,7 +575,7 @@ def from_header(cls, hdr, prefix=None): # Fill in any missing bits keys, values, descr = cls._fill_sequence(keys, values, descr=descr) # Make sure the bits are sorted - srt = numpy.argsort(values) + srt = numpy.argsort(values, kind='stable') # Instantiate the BitMask return cls(keys[srt], descr=descr[srt]) diff --git a/pypeit/bspline/bspline.py b/pypeit/bspline/bspline.py index d4efc6c10b..2867460710 100644 --- a/pypeit/bspline/bspline.py +++ b/pypeit/bspline/bspline.py @@ -532,7 +532,7 @@ def value(self, x, x2=None, action=None, lower=None, upper=None): is good). """ # TODO: Is the sorting necessary? - xsort = x.argsort() + xsort = x.argsort(kind='stable') if action is None: action, lower, upper = self.action(x[xsort], x2=None if x2 is None else x2[xsort]) else: @@ -550,12 +550,12 @@ def value(self, x, x2=None, action=None, lower=None, upper=None): mask[(x < gb[self.nord-1]) | (x > gb[n])] = False hmm = (np.diff(goodbk) > 2).nonzero()[0] if hmm.size == 0: - return yfit[np.argsort(xsort)], mask + return yfit[np.argsort(xsort, kind='stable')], mask for jj in range(hmm.size): mask[(x >= self.breakpoints[goodbk[hmm[jj]]]) & (x <= self.breakpoints[goodbk[hmm[jj]+1]-1])] = False - return yfit[np.argsort(xsort)], mask + return yfit[np.argsort(xsort, kind='stable')], mask def maskpoints(self, err): """Perform simple logic of which breakpoints to mask. diff --git a/pypeit/coadd3d.py b/pypeit/coadd3d.py index 225747d76d..5638cb6f77 100644 --- a/pypeit/coadd3d.py +++ b/pypeit/coadd3d.py @@ -1116,11 +1116,11 @@ def load(self): dwav_ext = dwaveimg[onslit_gpm] # For now, work in sorted wavelengths - wvsrt = np.argsort(wave_ext) + wvsrt = np.argsort(wave_ext, kind='stable') wave_sort = wave_ext[wvsrt] dwav_sort = dwav_ext[wvsrt] # Here's an array to get back to the original ordering - resrt = np.argsort(wvsrt) + resrt = np.argsort(wvsrt, kind='stable') # Compute the DAR correction cosdec = np.cos(self.ifu_dec[ff] * np.pi / 180.0) diff --git a/pypeit/core/arc.py b/pypeit/core/arc.py index e69230cf28..086f7deb04 100644 --- a/pypeit/core/arc.py +++ b/pypeit/core/arc.py @@ -644,7 +644,7 @@ def detect_peaks(x, mph=None, mpd=1, threshold=0, edge='rising', ind = np.delete(ind, np.where(dx < threshold)[0]) # detect small peaks closer than minimum peak distance if ind.size and mpd > 1: - ind = ind[np.argsort(x[ind])][::-1] # sort ind by peak height + ind = ind[np.argsort(x[ind], kind='stable')][::-1] # sort ind by peak height idel = np.zeros(ind.size, dtype=bool) for i in range(ind.size): if not idel[i]: @@ -808,7 +808,7 @@ def iter_continuum(spec, gpm=None, fwhm=4.0, sigthresh = 2.0, sigrej=3.0, niter_ #cont_mask = np.ones_like(cont_mask) & gpm # Short circuit the masking and just mask the 0.70 most offending pixels peak_mask_ind = np.where(np.logical_not(peak_mask) & gpm)[0] - isort = np.argsort(np.abs(spec[peak_mask_ind]))[::-1] + isort = np.argsort(np.abs(spec[peak_mask_ind]), kind='stable')[::-1] peak_mask_new = np.ones_like(peak_mask) peak_mask_new[peak_mask_ind[isort[0:max_nmask]]] = False cont_mask = peak_mask_new & gpm diff --git a/pypeit/core/datacube.py b/pypeit/core/datacube.py index 3f9625ba9b..9288e06695 100644 --- a/pypeit/core/datacube.py +++ b/pypeit/core/datacube.py @@ -1754,7 +1754,7 @@ def subpixellate(output_wcs, bins, sciImg, ivarImg, waveImg, slitid_img_gpm, wgh yspl = this_tilts[wpix] * (this_slits.nspec - 1) tiltpos = np.add.outer(yspl, spec_y).flatten() wspl = this_wav[this_sl] - asrt = np.argsort(yspl) + asrt = np.argsort(yspl, kind='stable') wave_spl = interp1d(yspl[asrt], wspl[asrt], kind='linear', bounds_error=False, fill_value='extrapolate') # Calculate the wavelength at each subpixel this_wave_subpix = wave_spl(tiltpos) @@ -1769,7 +1769,7 @@ def subpixellate(output_wcs, bins, sciImg, ivarImg, waveImg, slitid_img_gpm, wgh # Transform this to spatial location spatpos_subpix = _astrom_trans[fr].transform(sl, spat_xx, spec_yy) spatpos = _astrom_trans[fr].transform(sl, wpix[1], wpix[0]) - ssrt = np.argsort(spatpos) + ssrt = np.argsort(spatpos, kind='stable') # Initialize the voxel coordinates for each spec2D pixel vox_coord = np.full((numpix, num_all_subpixels, 3), -1, dtype=float) # Loop over the subslices diff --git a/pypeit/core/extract.py b/pypeit/core/extract.py index 1c3777d61b..a820b27be5 100644 --- a/pypeit/core/extract.py +++ b/pypeit/core/extract.py @@ -644,7 +644,7 @@ def qa_fit_profile(x_tot, y_tot, model_tot, l_limit = None, closest = (dist[close]).argmin() model_samp[i] = (model[close])[closest] if nclose > 3: - s = yclose.argsort() + s = yclose.argsort(kind='stable') y50[i] = yclose[s[int(np.rint((nclose - 1)*0.5))]] y80[i] = yclose[s[int(np.rint((nclose - 1)*0.8))]] y20[i] = yclose[s[int(np.rint((nclose - 1)*0.2))]] @@ -656,7 +656,7 @@ def qa_fit_profile(x_tot, y_tot, model_tot, l_limit = None, else: ax.plot(plot_mid, y50, marker='o', color='lime', markersize=2, fillstyle = 'full', linestyle='None') - isort = x.argsort() + isort = x.argsort(kind='stable') ax.plot(x[isort], model[isort], color='red', linewidth=1.0) @@ -905,7 +905,7 @@ def fit_profile(image, ivar, waveimg, thismask, spat_img, trace_in, wave, spline_flux1[ispline] = spline_tmp cont_tmp, _ = c_answer.value(wave[ispline]) cont_flux1[ispline] = cont_tmp - isrt = np.argsort(wave[indsp]) + isrt = np.argsort(wave[indsp], kind='stable') s2_1_interp = scipy.interpolate.interp1d(wave[indsp][isrt], sn2[isrt],assume_sorted=False, bounds_error=False,fill_value = 0.0) sn2_1[ispline] = s2_1_interp(wave[ispline]) bmask = np.zeros(nspec,dtype='bool') @@ -952,7 +952,7 @@ def fit_profile(image, ivar, waveimg, thismask, spat_img, trace_in, wave, # Create the normalized object image if np.any(totmask): igd = (wave >= wave_min) & (wave <= wave_max) - isrt1 = np.argsort(wave[igd]) + isrt1 = np.argsort(wave[igd], kind='stable') #plt.plot(wave[igd][isrt1], spline_flux1[igd][isrt1]) #plt.show() spline_img_interp = scipy.interpolate.interp1d(wave[igd][isrt1],spline_flux1[igd][isrt1],assume_sorted=False, @@ -1018,7 +1018,7 @@ def fit_profile(image, ivar, waveimg, thismask, spat_img, trace_in, wave, inside, = np.where(IN_PIX.flatten()) - si = inside[np.argsort(sigma_x.flat[inside])] + si = inside[np.argsort(sigma_x.flat[inside], kind='stable')] sr = si[::-1] bset, bmask = fitting.iterfit(sigma_x.flat[si],norm_obj.flat[si], invvar = norm_ivar.flat[si], @@ -1075,7 +1075,7 @@ def fit_profile(image, ivar, waveimg, thismask, spat_img, trace_in, wave, return (profile_model, trace_in, fwhmfit, med_sn2) sigma_iter = 3 - isort = (xtemp.flat[si[inside]]).argsort() + isort = (xtemp.flat[si[inside]]).argsort(kind='stable') inside = si[inside[isort]] pb = np.ones(inside.size) @@ -1152,7 +1152,7 @@ def fit_profile(image, ivar, waveimg, thismask, spat_img, trace_in, wave, # Update the profile B-spline fit for the next iteration if iiter < sigma_iter-1: - ss = sigma_x.flat[inside].argsort() + ss = sigma_x.flat[inside].argsort(kind='stable') pb = (np.outer(area, np.ones(nspat,dtype=float))).flat[inside] keep = (bkpt >= sigma_x.flat[inside].min()) & (bkpt <= sigma_x.flat[inside].max()) if keep.sum() == 0: @@ -1176,7 +1176,7 @@ def fit_profile(image, ivar, waveimg, thismask, spat_img, trace_in, wave, xnew = trace_in fwhmfit = sigma*2.3548 - ss=sigma_x.flatten().argsort() + ss=sigma_x.flatten().argsort(kind='stable') inside, = np.where((sigma_x.flat[ss] >= min_sigma) & (sigma_x.flat[ss] <= max_sigma) & mask[ss] & @@ -1195,7 +1195,7 @@ def fit_profile(image, ivar, waveimg, thismask, spat_img, trace_in, wave, sigma_x_igood = sigma_x.flat[igood] yfit_out, _ = bset.value(sigma_x_igood) full_bsp[igood] = yfit_out - isrt2 = sigma_x_igood.argsort() + isrt2 = sigma_x_igood.argsort(kind='stable') (peak, peak_x, lwhm, rwhm) = findfwhm(yfit_out[isrt2] - median_fit, sigma_x_igood[isrt2]) diff --git a/pypeit/core/findobj_skymask.py b/pypeit/core/findobj_skymask.py index fe56f70bc4..24979b84cc 100644 --- a/pypeit/core/findobj_skymask.py +++ b/pypeit/core/findobj_skymask.py @@ -523,7 +523,7 @@ def ech_fill_in_orders(sobjs:specobjs.SpecObjs, uni_frac = gfrac[uni_ind] # Sort with respect to fractional slit location to guarantee that we have a similarly sorted list of objects later - isort_frac = uni_frac.argsort() + isort_frac = uni_frac.argsort(kind='stable') uni_obj_id = uni_obj_id[isort_frac] uni_frac = uni_frac[isort_frac] @@ -788,7 +788,7 @@ def ech_cutobj_on_snr( ## Loop over objects from highest SNR to lowest SNR. Apply the S/N constraints. Once we hit the maximum number # objects requested exit, except keep the hand apertures that were requested. - isort_SNR_max = np.argsort(np.median(SNR_arr,axis=0))[::-1] + isort_SNR_max = np.argsort(np.median(SNR_arr,axis=0), kind='stable')[::-1] for iobj in isort_SNR_max: hand_ap_flag = hand_flag[iobj] SNR_constraint = (SNR_arr[:,iobj].max() > max_snr) or ( @@ -800,7 +800,7 @@ def ech_cutobj_on_snr( sobjs_keep = sobjs_align[ikeep].copy() sobjs_keep.ECH_OBJID = iobj_keep sobjs_keep.OBJID = iobj_keep - sobjs_trim.add_sobj(sobjs_keep[np.argsort(sobjs_keep.SLITID)]) + sobjs_trim.add_sobj(sobjs_keep[np.argsort(sobjs_keep.SLITID, kind='stable')]) iobj_keep += 1 if not hand_ap_flag: iobj_keep_not_hand += 1 @@ -1700,7 +1700,7 @@ def orig_ech_objfind(image, ivar, slitmask, slit_left, slit_righ, order_vec, mas uni_frac = gfrac[uni_ind] # Sort with respect to fractional slit location to guarantee that we have a similarly sorted list of objects later - isort_frac = uni_frac.argsort() + isort_frac = uni_frac.argsort(kind='stable') uni_obj_id = uni_obj_id[isort_frac] uni_frac = uni_frac[isort_frac] @@ -1865,7 +1865,7 @@ def orig_ech_objfind(image, ivar, slitmask, slit_left, slit_righ, order_vec, mas ## Loop over objects from highest SNR to lowest SNR. Apply the S/N constraints. Once we hit the maximum number # objects requested exit, except keep the hand apertures that were requested. - isort_SNR_max = np.argsort(np.median(SNR_arr,axis=0))[::-1] + isort_SNR_max = np.argsort(np.median(SNR_arr,axis=0), kind='stable')[::-1] for iobj in isort_SNR_max: hand_ap_flag = int(np.round(slitfracpos_arr[0, iobj]*1000)) in hand_frac SNR_constraint = (SNR_arr[:,iobj].max() > max_snr) or (np.sum(SNR_arr[:,iobj] > min_snr) >= nabove_min_snr) @@ -1879,7 +1879,7 @@ def orig_ech_objfind(image, ivar, slitmask, slit_left, slit_righ, order_vec, mas # for spec in sobjs_keep: # spec.ECH_OBJID = iobj_keep # #spec.OBJID = iobj_keep - sobjs_trim.add_sobj(sobjs_keep[np.argsort(sobjs_keep.ECH_ORDERINDX)]) + sobjs_trim.add_sobj(sobjs_keep[np.argsort(sobjs_keep.ECH_ORDERINDX, kind='stable')]) iobj_keep += 1 if not hand_ap_flag: iobj_keep_not_hand += 1 @@ -2684,7 +2684,7 @@ def objs_in_slit(image, ivar, thismask, slit_left, slit_righ, # Sort objects according to their spatial location nobj = len(sobjs) spat_pixpos = sobjs.SPAT_PIXPOS - sobjs = sobjs[spat_pixpos.argsort()] + sobjs = sobjs[spat_pixpos.argsort(kind='stable')] # Assign integer objids sobjs.OBJID = np.arange(nobj) + 1 diff --git a/pypeit/core/fitting.py b/pypeit/core/fitting.py index 7f4346ebe4..eddc49ec07 100644 --- a/pypeit/core/fitting.py +++ b/pypeit/core/fitting.py @@ -943,7 +943,7 @@ def iterfit(xdata, ydata, invvar=None, inmask=None, upper=5, lower=5, x2=None, outmask = True else: outmask = np.ones(invvar.shape, dtype='bool') - xsort = xdata.argsort() + xsort = xdata.argsort(kind='stable') maskwork = (outmask & inmask & (invvar > 0.0))[xsort] # `maskwork` is in xsort order if 'oldset' in kwargs_bspline: sset = kwargs_bspline['oldset'] diff --git a/pypeit/core/flat.py b/pypeit/core/flat.py index 46495f56f2..bac66b4c9a 100644 --- a/pypeit/core/flat.py +++ b/pypeit/core/flat.py @@ -67,7 +67,7 @@ def sorted_flat_data(data, coo, gpm=None): # np.argsort sorts the data over the last axis. To avoid coo[gpm] # returning an array (which will happen if the gpm is not provided # as an argument), all the arrays are explicitly flattened. - srt = np.argsort(coo[gpm].ravel()) + srt = np.argsort(coo[gpm].ravel(), kind='stable') coo_data = coo[gpm].ravel()[srt] flat_data = data[gpm].ravel()[srt] return gpm, srt, coo_data, flat_data @@ -241,7 +241,7 @@ def construct_illum_profile(norm_spec, spat_coo, slitwidth, spat_gpm=None, spat_ plt.show() # Include the rejected data in the full image good-pixel mask - _spat_gpm[_spat_gpm] = spat_gpm_data_raw[np.argsort(spat_srt)] + _spat_gpm[_spat_gpm] = spat_gpm_data_raw[np.argsort(spat_srt, kind='stable')] # Recreate the illumination profile data _spat_gpm, spat_srt, spat_coo_data, spat_flat_data_raw \ = sorted_flat_data(norm_spec, spat_coo, gpm=_spat_gpm) @@ -434,7 +434,7 @@ def poly_map(rawimg, rawivar, waveimg, slitmask, slitmask_trim, modelimg, deg=3, slitmask_spatid = np.sort(slitmask_spatid[slitmask_spatid > 0]) # Create a spline between the raw data and the error - flxsrt = np.argsort(np.ravel(rawimg)) + flxsrt = np.argsort(np.ravel(rawimg), kind='stable') spl = scipy.interpolate.interp1d(np.ravel(rawimg)[flxsrt], np.ravel(rawivar)[flxsrt], kind='linear', bounds_error=False, fill_value=0.0, assume_sorted=True) modelmap = np.ones_like(rawimg) diff --git a/pypeit/core/pydl.py b/pypeit/core/pydl.py index b7916dfbd4..97c093ccea 100644 --- a/pypeit/core/pydl.py +++ b/pypeit/core/pydl.py @@ -55,7 +55,7 @@ def djs_maskinterp1(yval, mask, xval=None, const=False): if igood[ngood-1] != ny-1: ynew[igood[ngood-1]+1:ny] = ynew[igood[ngood-1]] else: - ii = xval.argsort() + ii = xval.argsort(kind='stable') ibad = (mask[ii] != 0).nonzero()[0] igood = (mask[ii] == 0).nonzero()[0] ynew[ii[ibad]] = np.interp(xval[ii[ibad]], xval[ii[igood]], @@ -882,7 +882,7 @@ def djs_reject(data, model, outmask=None, inmask=None, # Test if too many points rejected in this group. # if np.sum(badness[jj] != 0) > maxrej1[iloop]: - isort = badness[jj].argsort() + isort = badness[jj].argsort(kind='stable') # # Make the following points good again. # @@ -1656,7 +1656,7 @@ def spherematch(ra1, dec1, ra2, dec2, matchlength, chunksize=None, omatch1 = np.array(match1) omatch2 = np.array(match2) odistance12 = np.array(distance12) - s = odistance12.argsort() + s = odistance12.argsort(kind='stable') # # Retain only desired matches # diff --git a/pypeit/core/skysub.py b/pypeit/core/skysub.py index a5114d886c..d92a734b82 100644 --- a/pypeit/core/skysub.py +++ b/pypeit/core/skysub.py @@ -147,7 +147,7 @@ def global_skysub(image, ivar, tilts, thismask, slit_left, slit_righ, inmask=Non return np.zeros(np.sum(thismask)) # Sub arrays - isrt = np.argsort(piximg[thismask]) + isrt = np.argsort(piximg[thismask], kind='stable') pix = piximg[thismask][isrt] sky = image[thismask][isrt] sky_ivar = ivar[thismask][isrt] @@ -302,7 +302,7 @@ def skyoptimal(piximg, data, ivar, oprof, sigrej=3.0, npoly=1, spatial_img=None, whether a pixel is good (True) or was masked (False). """ - sortpix = piximg.argsort() + sortpix = piximg.argsort(kind='stable') nx = data.size nc = oprof.shape[0] @@ -328,7 +328,7 @@ def skyoptimal(piximg, data, ivar, oprof, sigrej=3.0, npoly=1, spatial_img=None, indx, = np.where(ivar[sortpix] > 0.0) ngood = indx.size good = sortpix[indx] - good = good[piximg[good].argsort()] + good = good[piximg[good].argsort(kind='stable')] relative, = np.where(relative_mask[good]) gpm = np.zeros(piximg.shape, dtype=bool) @@ -428,7 +428,7 @@ def optimal_bkpts(bkpts_optimal, bsp_min, piximg, sampmask, samp_frac=0.80, """ pix = piximg[sampmask] - isrt = pix.argsort() + isrt = pix.argsort(kind='stable') pix = pix[isrt] piximg_min = pix.min() piximg_max = pix.max() @@ -1319,11 +1319,11 @@ def ech_local_skysub_extract(sciimg, sciivar, fullmask, tilts, waveimg, # Compute the average SNR and find the brightest object snr_bar = np.mean(order_snr,axis=0) - srt_obj = snr_bar.argsort()[::-1] + srt_obj = snr_bar.argsort(kind='stable')[::-1] ibright = srt_obj[0] # index of the brightest object # Now extract the orders in descending order of S/N for the brightest object - srt_order_snr = order_snr[:,ibright].argsort()[::-1] + srt_order_snr = order_snr[:,ibright].argsort(kind='stable')[::-1] fwhm_here = np.zeros(norders) fwhm_was_fit = np.zeros(norders,dtype=bool) diff --git a/pypeit/core/slitdesign_matching.py b/pypeit/core/slitdesign_matching.py index eda3db0682..f12ce01b45 100644 --- a/pypeit/core/slitdesign_matching.py +++ b/pypeit/core/slitdesign_matching.py @@ -74,7 +74,7 @@ def best_offset(x_det, x_model, step=1, xlag_range=None): for j in range(xlag.size): x_det_lag = x_det+xlag[j] join = np.ma.concatenate([x_det_lag, x_model_trim]) - sind = np.argsort(join) + sind = np.argsort(join, kind='stable') nj = sind.size w1 = np.where(sind < x_det.size) @@ -90,7 +90,7 @@ def best_offset(x_det, x_model, step=1, xlag_range=None): offs = np.amin(np.absolute(x_det_lag[:, None] - x_model_trim[None, :]), axis=1) # use only nbest best matches - soffs = np.argsort(np.abs(offs)) + soffs = np.argsort(np.abs(offs), kind='stable') nbest2 = nbest if nbest Date: Tue, 13 Aug 2024 13:39:20 -1000 Subject: [PATCH 128/128] added to release --- doc/releases/1.16.1dev.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/releases/1.16.1dev.rst b/doc/releases/1.16.1dev.rst index a223665b4a..a725a302c7 100644 --- a/doc/releases/1.16.1dev.rst +++ b/doc/releases/1.16.1dev.rst @@ -55,4 +55,10 @@ Bug Fixes - Fixed a fault caused when all frames in a pypeit file are identified as being part of ``all`` calibration groups. - Allow for empty 2D wavecal solution in HDU extension of WaveCalib file -- Fixed a bug in the ginga display function, when the user doesn't provide the `trc_name` argument. \ No newline at end of file +- Fixed a bug in the ginga display function, when the user doesn't provide the `trc_name` argument. +- Fix a MAJOR BUT SUBTLE bug in the use of ``numpy.argsort``. When using ``numpy.argsort`` + the parameter kind='stable' should be used to ensure that a sorting algorithm more robust + than "quicksort" is used. + + +

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