diff --git a/.eslintrc.js b/.eslintrc.js index 7c71dc01c22..6e70df2ff27 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -52,6 +52,7 @@ module.exports = { 'useLastRunCommandKey', 'useCurrentMaintenanceRun', 'useDeckConfigurationQuery', + 'useAllCommandsAsPreSerializedList', ], message: 'The HTTP hook is deprecated. Utilize the equivalent notification wrapper (useNotifyX) instead.', diff --git a/abr-testing/abr_testing/data_collection/abr_calibration_logs.py b/abr-testing/abr_testing/data_collection/abr_calibration_logs.py index 11f37e8ab95..82d9d9c45bc 100644 --- a/abr-testing/abr_testing/data_collection/abr_calibration_logs.py +++ b/abr-testing/abr_testing/data_collection/abr_calibration_logs.py @@ -155,18 +155,10 @@ def upload_calibration_offsets( parser.add_argument( "email", metavar="EMAIL", type=str, nargs=1, help="opentrons gmail." ) - parser.add_argument( - "ip_or_all", - metavar="IP_OR_ALL", - type=str, - nargs=1, - help="Enter 'ALL' to read IPs.json or type full IP address of 1 robot.", - ) args = parser.parse_args() storage_directory = args.storage_directory[0] folder_name = args.folder_name[0] google_sheet_name = args.google_sheet_name[0] - ip_or_all = args.ip_or_all[0] email = args.email[0] # Connect to google drive. try: @@ -191,6 +183,7 @@ def upload_calibration_offsets( except FileNotFoundError: print(f"Add .json file with robot IPs to: {storage_directory}.") sys.exit() + ip_or_all = input("IP Address or ALL: ") if ip_or_all == "ALL": ip_address_list = ip_file["ip_address_list"] diff --git a/abr-testing/abr_testing/tools/abr_scale.py b/abr-testing/abr_testing/tools/abr_scale.py index 75c887d4ecc..d916c64c0d4 100644 --- a/abr-testing/abr_testing/tools/abr_scale.py +++ b/abr-testing/abr_testing/tools/abr_scale.py @@ -25,25 +25,7 @@ nargs=1, help="Name of google sheet and local csv to save data to.", ) - parser.add_argument("robot", metavar="ROBOT", type=str, nargs=1, help="Robot name.") - parser.add_argument( - "labware_name", - metavar="LABWARE_NAME", - type=str, - nargs=1, - help="Name of labware.", - ) - parser.add_argument( - "protocol_step", - metavar="PROTOCOL_STEP", - type=str, - nargs=1, - help="1 for empty plate, 2 for filled plate, 3 for end of protocol.", - ) args = parser.parse_args() - robot = args.robot[0] - labware = args.labware_name[0] - protocol_step = args.protocol_step[0] storage_directory = args.storage_directory[0] file_name = args.file_name[0] file_name_csv = file_name + ".csv" @@ -71,7 +53,9 @@ print("Connected to google sheet.") except FileNotFoundError: print("No google sheets credentials. Add credentials to storage notebook.") - + robot = input("Robot: ") + labware = input("Labware: ") + protocol_step = input("Measurement Step (1,2,3): ") # Scale Loop grams, is_stable = scale.read_mass() grams, is_stable = scale.read_mass() diff --git a/api-client/src/runs/commands/getCommandsAsPreSerializedList.ts b/api-client/src/runs/commands/getCommandsAsPreSerializedList.ts new file mode 100644 index 00000000000..420f984b280 --- /dev/null +++ b/api-client/src/runs/commands/getCommandsAsPreSerializedList.ts @@ -0,0 +1,22 @@ +import { GET, request } from '../../request' + +import type { ResponsePromise } from '../../request' +import type { HostConfig } from '../../types' +import type { + CommandsAsPreSerializedListData, + GetCommandsParams, +} from './types' + +export function getCommandsAsPreSerializedList( + config: HostConfig, + runId: string, + params: GetCommandsParams +): ResponsePromise { + return request( + GET, + `/runs/${runId}/commandsAsPreSerializedList`, + null, + config, + params + ) +} diff --git a/api-client/src/runs/commands/types.ts b/api-client/src/runs/commands/types.ts index acea40e1880..d0b443b297a 100644 --- a/api-client/src/runs/commands/types.ts +++ b/api-client/src/runs/commands/types.ts @@ -34,6 +34,12 @@ export interface CommandsData { links: CommandsLinks } +export interface CommandsAsPreSerializedListData { + data: string[] + meta: GetCommandsParams & { totalLength: number } + links: CommandsLinks +} + export interface CreateCommandParams { waitUntilComplete?: boolean timeout?: number diff --git a/api-client/src/runs/index.ts b/api-client/src/runs/index.ts index 1d62755d4c5..01653713c81 100644 --- a/api-client/src/runs/index.ts +++ b/api-client/src/runs/index.ts @@ -7,6 +7,7 @@ export { createCommand } from './commands/createCommand' export { createLiveCommand } from './commands/createLiveCommand' export { getCommand } from './commands/getCommand' export { getCommands } from './commands/getCommands' +export { getCommandsAsPreSerializedList } from './commands/getCommandsAsPreSerializedList' export { createRunAction } from './createRunAction' export * from './createLabwareOffset' export * from './createLabwareDefinition' diff --git a/api-client/src/system/__tests__/utils.test.ts b/api-client/src/system/__tests__/utils.test.ts new file mode 100644 index 00000000000..3121c061a59 --- /dev/null +++ b/api-client/src/system/__tests__/utils.test.ts @@ -0,0 +1,20 @@ +import { describe, expect, it } from 'vitest' +import { sanitizeFileName } from '../utils' + +describe('sanitizeFileName', () => { + it('returns original alphanumeric file name', () => { + expect(sanitizeFileName('an0ther_otie_logo.png')).toEqual( + 'an0ther_otie_logo.png' + ) + }) + + it('sanitizes a file name', () => { + expect( + sanitizeFileName( + `otie's birthday/party - (& the bouncy castle cost ~$100,000).jpeg` + ) + ).toEqual( + 'otie_s_birthday_party_-____the_bouncy_castle_cost___100_000_.jpeg' + ) + }) +}) diff --git a/api-client/src/system/createSplash.ts b/api-client/src/system/createSplash.ts index fd0b11bd575..abaa280b226 100644 --- a/api-client/src/system/createSplash.ts +++ b/api-client/src/system/createSplash.ts @@ -1,4 +1,5 @@ import { POST, request } from '../request' +import { sanitizeFileName } from './utils' import type { ResponsePromise } from '../request' import type { HostConfig } from '../types' @@ -6,8 +7,9 @@ export function createSplash( config: HostConfig, file: File ): ResponsePromise { - // sanitize file name to ensure no spaces - const renamedFile = new File([file], file.name.replace(' ', '_'), { + // sanitize file name to ensure no spaces or special characters + const newFileName = sanitizeFileName(file.name) + const renamedFile = new File([file], newFileName, { type: 'image/png', }) diff --git a/api-client/src/system/index.ts b/api-client/src/system/index.ts index 3c63202c31f..4dc86594d2c 100644 --- a/api-client/src/system/index.ts +++ b/api-client/src/system/index.ts @@ -3,3 +3,4 @@ export { createRegistration } from './createRegistration' export { createSplash } from './createSplash' export { getConnections } from './getConnections' export * from './types' +export * from './utils' diff --git a/api-client/src/system/utils.ts b/api-client/src/system/utils.ts new file mode 100644 index 00000000000..cc0eea11130 --- /dev/null +++ b/api-client/src/system/utils.ts @@ -0,0 +1,3 @@ +export function sanitizeFileName(fileName: string): string { + return fileName.replace(/[^a-zA-Z0-9-.]/gi, '_') +} diff --git a/api/release-notes.md b/api/release-notes.md index ca9523121b4..737b4063c9c 100644 --- a/api/release-notes.md +++ b/api/release-notes.md @@ -6,6 +6,31 @@ log][]. For a list of currently known issues, please see the [Opentrons issue tr --- +## Opentrons Robot Software Changes in 7.3.0 + +Welcome to the v7.3.0 release of the Opentrons robot software! + +### New Features + +- Runtime parameters: read, write, and use parameters in Python protocol runs. + +### Improved Features + +- Automatic tip tracking is now available for all nozzle configurations. +- Flex no longer shows unnecessary pipette calibration warnings. +- Python protocols can once again set labware offsets outside of Labware Position Check. + +### Changed Features + +- Calling `GET /runs/{id}/commands` for a JSON protocol no longer returns a full list of queued commands. Use protocol analysis to get a full list of commands. + +### Bug Fixes + +- Fixed an edge case where capitalizing part of a labware load name could cause unexpected behavior or collisions. +- Fixed Python packages installed on the OT-2 with `pip` not being found by `import` statements. + +--- + ## Opentrons Robot Software Changes in 7.2.2 Welcome to the v7.2.2 release of the Opentrons robot software! diff --git a/api/src/opentrons/hardware_control/instruments/ot3/gripper.py b/api/src/opentrons/hardware_control/instruments/ot3/gripper.py index 3f120f972a6..ba49ea7d5e7 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/gripper.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/gripper.py @@ -33,7 +33,7 @@ Geometry, ) -RECONFIG_KEYS = {"quirks"} +RECONFIG_KEYS = {"quirks", "grip_force_profile"} MAX_ACCEPTABLE_JAW_DISPLACEMENT: Final = 20 @@ -52,6 +52,7 @@ def __init__( config: GripperDefinition, gripper_cal_offset: GripperCalibrationOffset, gripper_id: str, + jaw_max_offset: Optional[float] = None, ) -> None: self._config = config self._model = config.model @@ -83,7 +84,7 @@ def __init__( self._log.info( f"loaded: {self._model}, gripper offset: {self._calibration_offset}" ) - self._jaw_max_offset: Optional[float] = None + self._jaw_max_offset = jaw_max_offset @property def grip_force_profile(self) -> GripForceProfile: @@ -325,11 +326,13 @@ def _reload_gripper( changed.add(k) if changed.intersection(RECONFIG_KEYS): # Something has changed that requires reconfig + # we shoud recalibrate the jaw as well return ( Gripper( new_config, cal_offset, attached_instr._gripper_id, + None, ), False, ) diff --git a/api/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py b/api/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py index cf2ba55e23d..e327306c19f 100644 --- a/api/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py +++ b/api/src/opentrons/hardware_control/instruments/ot3/gripper_handler.py @@ -51,6 +51,7 @@ def reset_gripper(self) -> None: og_gripper.config, load_gripper_calibration_offset(og_gripper.gripper_id), og_gripper.gripper_id, + og_gripper._jaw_max_offset, ) self._gripper = new_gripper diff --git a/api/src/opentrons/protocol_api/instrument_context.py b/api/src/opentrons/protocol_api/instrument_context.py index 316f5caa7ad..68e39888405 100644 --- a/api/src/opentrons/protocol_api/instrument_context.py +++ b/api/src/opentrons/protocol_api/instrument_context.py @@ -60,6 +60,8 @@ """The version after which a partial nozzle configuration became available for the 96 Channel Pipette.""" _PARTIAL_NOZZLE_CONFIGURATION_AUTOMATIC_TIP_TRACKING_IN = APIVersion(2, 18) """The version after which automatic tip tracking supported partially configured nozzle layouts.""" +_DISPOSAL_LOCATION_OFFSET_ADDED_IN = APIVersion(2, 18) +"""The version after which offsets for deck configured trash containers and changes to alternating tip drop behavior were introduced.""" class InstrumentContext(publisher.CommandPublisher): @@ -1086,16 +1088,22 @@ def drop_tip( well = maybe_well elif isinstance(location, (TrashBin, WasteChute)): + # In 2.16 and 2.17, we would always automatically use automatic alternate tip drop locations regardless + # of whether you explicitly passed the disposal location as a location or if none was provided. Now, in + # 2.18 and moving forward, passing it in will bypass the automatic behavior and instead go to the set + # offset or the XY center if none is provided. + if self.api_version < _DISPOSAL_LOCATION_OFFSET_ADDED_IN: + alternate_drop_location = True with publisher.publish_context( broker=self.broker, command=cmds.drop_tip_in_disposal_location( instrument=self, location=location ), ): - # TODO(jbl 2024-02-28) when adding 2.18 api version checks, set alternate_tip_drop - # if below that version for compatability self._core.drop_tip_in_disposal_location( - location, home_after=home_after + location, + home_after=home_after, + alternate_tip_drop=alternate_drop_location, ) self._last_tip_picked_up_from = None return self diff --git a/api/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py b/api/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py index 67d60eead86..8ce067963ab 100644 --- a/api/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py +++ b/api/src/opentrons/protocol_engine/commands/calibration/move_to_maintenance_position.py @@ -80,46 +80,25 @@ async def execute( ot3_api = ensure_ot3_hardware( self._hardware_api, ) - # the 96-channel mount is disengaged during gripper calibration and - # must be homed before the gantry position can be called + max_height_z_tip = ot3_api.get_instrument_max_height(Mount.LEFT) + # disengage the gripper z mount if present and enabled await ot3_api.prepare_for_mount_movement(Mount.LEFT) - current_position_mount = await ot3_api.gantry_position( + + await ot3_api.retract(Mount.LEFT) + current_pos = await ot3_api.gantry_position( Mount.LEFT, critical_point=CriticalPoint.MOUNT ) - max_height_z_mount = ot3_api.get_instrument_max_height( - Mount.LEFT, critical_point=CriticalPoint.MOUNT + await ot3_api.move_to( + mount=Mount.LEFT, + abs_position=Point(x=_ATTACH_POINT.x, y=_ATTACH_POINT.y, z=current_pos.z), + critical_point=CriticalPoint.MOUNT, ) - max_height_z_tip = ot3_api.get_instrument_max_height(Mount.LEFT) - # avoid using motion planning waypoints because we do not need to move the z at this moment - movement_points = [ - # move the z to the highest position - Point( - x=current_position_mount.x, - y=current_position_mount.y, - z=max_height_z_mount, - ), - # move in x,y without going down the z - Point(x=_ATTACH_POINT.x, y=_ATTACH_POINT.y, z=max_height_z_mount), - ] - - await ot3_api.prepare_for_mount_movement(Mount.LEFT) - for movement in movement_points: - await ot3_api.move_to( - mount=Mount.LEFT, - abs_position=movement, - critical_point=CriticalPoint.MOUNT, - ) if params.mount != MountType.EXTENSION: - - # disengage the gripper z to enable the e-brake, this prevents the gripper - # z from dropping when the right mount carriage gets released from the - # mount during 96-channel detach flow - if ot3_api.has_gripper(): - await ot3_api.disengage_axes([Axis.Z_G]) - if params.maintenancePosition == MaintenancePosition.ATTACH_INSTRUMENT: - mount_to_axis = Axis.by_mount(params.mount.to_hw_mount()) + mount = params.mount.to_hw_mount() + mount_to_axis = Axis.by_mount(mount) + await ot3_api.prepare_for_mount_movement(mount) await ot3_api.move_axes( { mount_to_axis: _INSTRUMENT_ATTACH_Z_POINT, @@ -134,6 +113,7 @@ async def execute( Axis.Z_R: max_motion_range + _RIGHT_MOUNT_Z_MARGIN, } ) + await ot3_api.disengage_axes([Axis.Z_L, Axis.Z_R]) return MoveToMaintenancePositionResult() diff --git a/api/src/opentrons/protocol_engine/commands/command.py b/api/src/opentrons/protocol_engine/commands/command.py index ad43128236d..fcdd7387355 100644 --- a/api/src/opentrons/protocol_engine/commands/command.py +++ b/api/src/opentrons/protocol_engine/commands/command.py @@ -13,6 +13,8 @@ TypeVar, Tuple, List, + Type, + Union, ) from pydantic import BaseModel, Field @@ -29,11 +31,11 @@ from ..state import StateView -CommandParamsT = TypeVar("CommandParamsT", bound=BaseModel) - -CommandResultT = TypeVar("CommandResultT", bound=BaseModel) - -CommandPrivateResultT = TypeVar("CommandPrivateResultT") +_ParamsT = TypeVar("_ParamsT", bound=BaseModel) +_ParamsT_contra = TypeVar("_ParamsT_contra", bound=BaseModel, contravariant=True) +_ResultT = TypeVar("_ResultT", bound=BaseModel) +_ResultT_co = TypeVar("_ResultT_co", bound=BaseModel, covariant=True) +_PrivateResultT_co = TypeVar("_PrivateResultT_co", covariant=True) class CommandStatus(str, Enum): @@ -58,7 +60,7 @@ class CommandIntent(str, Enum): FIXIT = "fixit" -class BaseCommandCreate(GenericModel, Generic[CommandParamsT]): +class BaseCommandCreate(GenericModel, Generic[_ParamsT]): """Base class for command creation requests. You shouldn't use this class directly; instead, use or define @@ -72,7 +74,7 @@ class BaseCommandCreate(GenericModel, Generic[CommandParamsT]): "execution behavior" ), ) - params: CommandParamsT = Field(..., description="Command execution data payload") + params: _ParamsT = Field(..., description="Command execution data payload") intent: Optional[CommandIntent] = Field( None, description=( @@ -97,7 +99,7 @@ class BaseCommandCreate(GenericModel, Generic[CommandParamsT]): ) -class BaseCommand(GenericModel, Generic[CommandParamsT, CommandResultT]): +class BaseCommand(GenericModel, Generic[_ParamsT, _ResultT]): """Base command model. You shouldn't use this class directly; instead, use or define @@ -127,8 +129,8 @@ class BaseCommand(GenericModel, Generic[CommandParamsT, CommandResultT]): ), ) status: CommandStatus = Field(..., description="Command execution status") - params: CommandParamsT = Field(..., description="Command execution data payload") - result: Optional[CommandResultT] = Field( + params: _ParamsT = Field(..., description="Command execution data payload") + result: Optional[_ResultT] = Field( None, description="Command execution result data, if succeeded", ) @@ -167,10 +169,15 @@ class BaseCommand(GenericModel, Generic[CommandParamsT, CommandResultT]): ), ) + _ImplementationCls: Union[ + Type[AbstractCommandImpl[_ParamsT, _ResultT]], + Type[AbstractCommandWithPrivateResultImpl[_ParamsT, _ResultT, object]], + ] + class AbstractCommandImpl( ABC, - Generic[CommandParamsT, CommandResultT], + Generic[_ParamsT_contra, _ResultT_co], ): """Abstract command creation and execution implementation. @@ -204,14 +211,14 @@ def __init__( pass @abstractmethod - async def execute(self, params: CommandParamsT) -> CommandResultT: + async def execute(self, params: _ParamsT_contra) -> _ResultT_co: """Execute the command, mapping data from execution into a response model.""" ... class AbstractCommandWithPrivateResultImpl( ABC, - Generic[CommandParamsT, CommandResultT, CommandPrivateResultT], + Generic[_ParamsT_contra, _ResultT_co, _PrivateResultT_co], ): """Abstract command creation and execution implementation if the command has private results. @@ -247,7 +254,7 @@ def __init__( @abstractmethod async def execute( - self, params: CommandParamsT - ) -> Tuple[CommandResultT, CommandPrivateResultT]: + self, params: _ParamsT_contra + ) -> Tuple[_ResultT_co, _PrivateResultT_co]: """Execute the command, mapping data from execution into a response model.""" ... diff --git a/api/src/opentrons/protocol_engine/state/change_notifier.py b/api/src/opentrons/protocol_engine/state/change_notifier.py deleted file mode 100644 index 3c72f277913..00000000000 --- a/api/src/opentrons/protocol_engine/state/change_notifier.py +++ /dev/null @@ -1,19 +0,0 @@ -"""Simple state change notification interface.""" -import asyncio - - -class ChangeNotifier: - """An interface tto emit or subscribe to state change notifications.""" - - def __init__(self) -> None: - """Initialize the ChangeNotifier with an internal Event.""" - self._event = asyncio.Event() - - def notify(self) -> None: - """Notify all `wait`'ers that the state has changed.""" - self._event.set() - - async def wait(self) -> None: - """Wait until the next state change notification.""" - self._event.clear() - await self._event.wait() diff --git a/api/src/opentrons/protocol_engine/state/commands.py b/api/src/opentrons/protocol_engine/state/commands.py index f9d7643b728..7500b16d631 100644 --- a/api/src/opentrons/protocol_engine/state/commands.py +++ b/api/src/opentrons/protocol_engine/state/commands.py @@ -362,6 +362,9 @@ def handle_action(self, action: Action) -> None: # noqa: C901 elif isinstance(action, StopAction): if not self._state.run_result: + if self._state.queue_status == QueueStatus.AWAITING_RECOVERY: + self._state.recovery_target_command_id = None + self._state.queue_status = QueueStatus.PAUSED if action.from_estop: self._state.stopped_by_estop = True diff --git a/api/src/opentrons/protocol_engine/state/state.py b/api/src/opentrons/protocol_engine/state/state.py index dcde17a7894..aa54383b379 100644 --- a/api/src/opentrons/protocol_engine/state/state.py +++ b/api/src/opentrons/protocol_engine/state/state.py @@ -8,11 +8,11 @@ from opentrons_shared_data.deck.dev_types import DeckDefinitionV5 from opentrons.protocol_engine.types import ModuleOffsetData +from opentrons.util.change_notifier import ChangeNotifier from ..resources import DeckFixedLabware from ..actions import Action, ActionHandler from .abstract_store import HasState, HandlesActions -from .change_notifier import ChangeNotifier from .commands import CommandState, CommandStore, CommandView from .addressable_areas import ( AddressableAreaState, diff --git a/api/src/opentrons/protocol_runner/create_simulating_runner.py b/api/src/opentrons/protocol_runner/create_simulating_runner.py index c6854662c06..392afa512f7 100644 --- a/api/src/opentrons/protocol_runner/create_simulating_runner.py +++ b/api/src/opentrons/protocol_runner/create_simulating_runner.py @@ -12,7 +12,7 @@ from opentrons_shared_data.robot.dev_types import RobotType -from .legacy_wrappers import LegacySimulatingContextCreator +from .python_protocol_wrappers import SimulatingContextCreator from .protocol_runner import create_protocol_runner, AbstractRunner @@ -62,7 +62,7 @@ async def create_simulating_runner( load_fixed_trash=should_load_fixed_trash(protocol_config), ) - simulating_legacy_context_creator = LegacySimulatingContextCreator( + simulating_context_creator = SimulatingContextCreator( hardware_api=simulating_hardware_api, protocol_engine=protocol_engine, ) @@ -71,7 +71,7 @@ async def create_simulating_runner( protocol_config=protocol_config, protocol_engine=protocol_engine, hardware_api=simulating_hardware_api, - legacy_context_creator=simulating_legacy_context_creator, + protocol_context_creator=simulating_context_creator, ) diff --git a/api/src/opentrons/protocol_runner/legacy_command_mapper.py b/api/src/opentrons/protocol_runner/legacy_command_mapper.py index 9243f50f70d..ababa892616 100644 --- a/api/src/opentrons/protocol_runner/legacy_command_mapper.py +++ b/api/src/opentrons/protocol_runner/legacy_command_mapper.py @@ -4,9 +4,24 @@ from datetime import datetime from typing import Dict, List, Optional, Tuple, Union +from opentrons.hardware_control.modules.types import ( + ModuleModel as HardwareModuleModel, + TemperatureModuleModel, + MagneticModuleModel, + ThermocyclerModuleModel, + HeaterShakerModuleModel, +) from opentrons_shared_data.pipette.dev_types import PipetteNameType from opentrons.types import MountType, DeckSlotName, Location from opentrons.legacy_commands import types as legacy_command_types +from opentrons.protocol_api import InstrumentContext +from opentrons.protocol_api.core.legacy.deck import FIXED_TRASH_ID +from opentrons.protocol_api.core.legacy.load_info import ( + LoadInfo as LegacyLoadInfo, + LabwareLoadInfo as LegacyLabwareLoadInfo, + InstrumentLoadInfo as LegacyInstrumentLoadInfo, + ModuleLoadInfo as LegacyModuleLoadInfo, +) from opentrons.protocol_engine import ( ProtocolEngineError, actions as pe_actions, @@ -19,22 +34,9 @@ ModuleDataProvider, pipette_data_provider, ) + from opentrons_shared_data.labware.labware_definition import LabwareDefinition from opentrons_shared_data.errors import ErrorCodes, EnumeratedError, PythonException -from opentrons.protocol_api.core.legacy.deck import FIXED_TRASH_ID - -from .legacy_wrappers import ( - LegacyLoadInfo, - LegacyInstrumentLoadInfo, - LegacyLabwareLoadInfo, - LegacyModuleLoadInfo, - LegacyPipetteContext, - LegacyModuleModel, - LegacyMagneticModuleModel, - LegacyTemperatureModuleModel, - LegacyThermocyclerModuleModel, - LegacyHeaterShakerModuleModel, -) class LegacyCommandParams(pe_commands.CustomParams): @@ -63,14 +65,14 @@ def __init__(self, wrapping_exc: BaseException) -> None: ) -_LEGACY_TO_PE_MODULE: Dict[LegacyModuleModel, pe_types.ModuleModel] = { - LegacyMagneticModuleModel.MAGNETIC_V1: pe_types.ModuleModel.MAGNETIC_MODULE_V1, - LegacyMagneticModuleModel.MAGNETIC_V2: pe_types.ModuleModel.MAGNETIC_MODULE_V2, - LegacyTemperatureModuleModel.TEMPERATURE_V1: pe_types.ModuleModel.TEMPERATURE_MODULE_V1, - LegacyTemperatureModuleModel.TEMPERATURE_V2: pe_types.ModuleModel.TEMPERATURE_MODULE_V2, - LegacyThermocyclerModuleModel.THERMOCYCLER_V1: pe_types.ModuleModel.THERMOCYCLER_MODULE_V1, - LegacyThermocyclerModuleModel.THERMOCYCLER_V2: pe_types.ModuleModel.THERMOCYCLER_MODULE_V2, - LegacyHeaterShakerModuleModel.HEATER_SHAKER_V1: pe_types.ModuleModel.HEATER_SHAKER_MODULE_V1, +_HARDWARE_TO_PE_MODULE: Dict[HardwareModuleModel, pe_types.ModuleModel] = { + MagneticModuleModel.MAGNETIC_V1: pe_types.ModuleModel.MAGNETIC_MODULE_V1, + MagneticModuleModel.MAGNETIC_V2: pe_types.ModuleModel.MAGNETIC_MODULE_V2, + TemperatureModuleModel.TEMPERATURE_V1: pe_types.ModuleModel.TEMPERATURE_MODULE_V1, + TemperatureModuleModel.TEMPERATURE_V2: pe_types.ModuleModel.TEMPERATURE_MODULE_V2, + ThermocyclerModuleModel.THERMOCYCLER_V1: pe_types.ModuleModel.THERMOCYCLER_MODULE_V1, + ThermocyclerModuleModel.THERMOCYCLER_V2: pe_types.ModuleModel.THERMOCYCLER_MODULE_V2, + HeaterShakerModuleModel.HEATER_SHAKER_V1: pe_types.ModuleModel.HEATER_SHAKER_MODULE_V1, } _HIGHER_ORDER_COMMAND_TYPES = { @@ -354,7 +356,7 @@ def _build_drop_tip( command_id: str, now: datetime, ) -> Tuple[pe_commands.CommandCreate, pe_commands.Command]: - pipette: LegacyPipetteContext = command["payload"]["instrument"] + pipette: InstrumentContext = command["payload"]["instrument"] well = command["payload"]["location"] mount = MountType(pipette.mount) # the following type checking suppression assumes the tiprack is not loaded on top of a module @@ -387,7 +389,7 @@ def _build_pick_up_tip( command_id: str, now: datetime, ) -> Tuple[pe_commands.CommandCreate, pe_commands.Command]: - pipette: LegacyPipetteContext = command["payload"]["instrument"] + pipette: InstrumentContext = command["payload"]["instrument"] location = command["payload"]["location"] well = location mount = MountType(pipette.mount) @@ -422,7 +424,7 @@ def _build_liquid_handling( command_id: str, now: datetime, ) -> Tuple[pe_commands.CommandCreate, pe_commands.Command]: - pipette: LegacyPipetteContext = command["payload"]["instrument"] + pipette: InstrumentContext = command["payload"]["instrument"] location = command["payload"]["location"] volume = command["payload"]["volume"] # TODO:(jr, 15.08.2022): aspirate and dispense commands with no specified labware @@ -533,7 +535,7 @@ def _build_blow_out( command_id: str, now: datetime, ) -> Tuple[pe_commands.CommandCreate, pe_commands.Command]: - pipette: LegacyPipetteContext = command["payload"]["instrument"] + pipette: InstrumentContext = command["payload"]["instrument"] location = command["payload"]["location"] flow_rate = pipette.flow_rate.blow_out # TODO:(jr, 15.08.2022): blow_out commands with no specified labware get filtered @@ -725,8 +727,8 @@ def _map_module_load( count = self._command_count["LOAD_MODULE"] command_id = f"commands.LOAD_MODULE-{count}" module_id = f"module-{count}" - requested_model = _LEGACY_TO_PE_MODULE[module_load_info.requested_model] - loaded_model = _LEGACY_TO_PE_MODULE[module_load_info.loaded_model] + requested_model = _HARDWARE_TO_PE_MODULE[module_load_info.requested_model] + loaded_model = _HARDWARE_TO_PE_MODULE[module_load_info.loaded_model] # This will fetch a V2 definition only. PAPI < v2.3 use V1 definitions. # When running a < v2.3 protocol, there will be a mismatch of definitions used diff --git a/api/src/opentrons/protocol_runner/legacy_context_plugin.py b/api/src/opentrons/protocol_runner/legacy_context_plugin.py index 7dd882f0fb7..baf6ccbc716 100644 --- a/api/src/opentrons/protocol_runner/legacy_context_plugin.py +++ b/api/src/opentrons/protocol_runner/legacy_context_plugin.py @@ -7,10 +7,10 @@ from opentrons.legacy_commands.types import CommandMessage as LegacyCommand from opentrons.legacy_broker import LegacyBroker +from opentrons.protocol_api.core.legacy.load_info import LoadInfo from opentrons.protocol_engine import AbstractPlugin, actions as pe_actions from opentrons.util.broker import ReadOnlyBroker -from .legacy_wrappers import LegacyLoadInfo from .legacy_command_mapper import LegacyCommandMapper from .thread_async_queue import ThreadAsyncQueue @@ -37,7 +37,7 @@ class LegacyContextPlugin(AbstractPlugin): def __init__( self, broker: LegacyBroker, - equipment_broker: ReadOnlyBroker[LegacyLoadInfo], + equipment_broker: ReadOnlyBroker[LoadInfo], legacy_command_mapper: Optional[LegacyCommandMapper] = None, ) -> None: """Initialize the plugin with its dependencies.""" @@ -122,15 +122,15 @@ def handle_action(self, action: pe_actions.Action) -> None: pass def _handle_legacy_command(self, command: LegacyCommand) -> None: - """Handle a command reported by the APIv2 protocol. + """Handle a command reported by the legacy APIv2 protocol. Used as a broker callback, so this will run in the APIv2 protocol's thread. """ pe_actions = self._legacy_command_mapper.map_command(command=command) self._actions_to_dispatch.put(pe_actions) - def _handle_equipment_loaded(self, load_info: LegacyLoadInfo) -> None: - """Handle an equipment load reported by the APIv2 protocol. + def _handle_equipment_loaded(self, load_info: LoadInfo) -> None: + """Handle an equipment load reported by the legacy APIv2 protocol. Used as a broker callback, so this will run in the APIv2 protocol's thread. """ diff --git a/api/src/opentrons/protocol_runner/protocol_runner.py b/api/src/opentrons/protocol_runner/protocol_runner.py index 9c097bbba2d..5a8b9134772 100644 --- a/api/src/opentrons/protocol_runner/protocol_runner.py +++ b/api/src/opentrons/protocol_runner/protocol_runner.py @@ -10,6 +10,7 @@ from opentrons import protocol_reader from opentrons.legacy_broker import LegacyBroker from opentrons.protocol_api import ParameterContext +from opentrons.protocol_api.core.legacy.load_info import LoadInfo from opentrons.protocol_reader import ( ProtocolSource, JsonProtocolConfig, @@ -28,13 +29,12 @@ from .json_file_reader import JsonFileReader from .json_translator import JsonTranslator from .legacy_context_plugin import LegacyContextPlugin -from .legacy_wrappers import ( +from .python_protocol_wrappers import ( LEGACY_PYTHON_API_VERSION_CUTOFF, LEGACY_JSON_SCHEMA_VERSION_CUTOFF, - LegacyFileReader, - LegacyContextCreator, - LegacyExecutor, - LegacyLoadInfo, + PythonAndLegacyFileReader, + ProtocolContextCreator, + PythonProtocolExecutor, ) from ..protocol_engine.errors import ProtocolCommandFailedError from ..protocol_engine.types import ( @@ -136,21 +136,26 @@ def __init__( protocol_engine: ProtocolEngine, hardware_api: HardwareControlAPI, task_queue: Optional[TaskQueue] = None, - legacy_file_reader: Optional[LegacyFileReader] = None, - legacy_context_creator: Optional[LegacyContextCreator] = None, - legacy_executor: Optional[LegacyExecutor] = None, + python_and_legacy_file_reader: Optional[PythonAndLegacyFileReader] = None, + protocol_context_creator: Optional[ProtocolContextCreator] = None, + python_protocol_executor: Optional[PythonProtocolExecutor] = None, post_run_hardware_state: PostRunHardwareState = PostRunHardwareState.HOME_AND_STAY_ENGAGED, drop_tips_after_run: bool = True, ) -> None: """Initialize the PythonAndLegacyRunner with its dependencies.""" super().__init__(protocol_engine) self._hardware_api = hardware_api - self._legacy_file_reader = legacy_file_reader or LegacyFileReader() - self._legacy_context_creator = legacy_context_creator or LegacyContextCreator( - hardware_api=hardware_api, - protocol_engine=protocol_engine, + self._protocol_file_reader = ( + python_and_legacy_file_reader or PythonAndLegacyFileReader() ) - self._legacy_executor = legacy_executor or LegacyExecutor() + self._protocol_context_creator = ( + protocol_context_creator + or ProtocolContextCreator( + hardware_api=hardware_api, + protocol_engine=protocol_engine, + ) + ) + self._protocol_executor = python_protocol_executor or PythonProtocolExecutor() # TODO(mc, 2022-01-11): replace task queue with specific implementations # of runner interface self._task_queue = task_queue or TaskQueue() @@ -185,14 +190,14 @@ async def load( # fixme(mm, 2022-12-23): This does I/O and compute-bound parsing that will block # the event loop. Jira RSS-165. - protocol = self._legacy_file_reader.read( + protocol = self._protocol_file_reader.read( protocol_source, labware_definitions, python_parse_mode ) self._parameter_context = ParameterContext(api_version=protocol.api_level) equipment_broker = None if protocol.api_level < LEGACY_PYTHON_API_VERSION_CUTOFF: - equipment_broker = Broker[LegacyLoadInfo]() + equipment_broker = Broker[LoadInfo]() self._protocol_engine.add_plugin( LegacyContextPlugin( broker=self._broker, equipment_broker=equipment_broker @@ -202,7 +207,7 @@ async def load( else: self._hardware_api.should_taskify_movement_execution(taskify=False) - context = self._legacy_context_creator.create( + context = self._protocol_context_creator.create( protocol=protocol, broker=self._broker, equipment_broker=equipment_broker, @@ -216,7 +221,7 @@ async def run_func() -> None: await self._protocol_engine.add_and_execute_command( request=initial_home_command ) - await self._legacy_executor.execute( + await self._protocol_executor.execute( protocol=protocol, context=context, parameter_context=self._parameter_context, @@ -417,9 +422,9 @@ def create_protocol_runner( task_queue: Optional[TaskQueue] = None, json_file_reader: Optional[JsonFileReader] = None, json_translator: Optional[JsonTranslator] = None, - legacy_file_reader: Optional[LegacyFileReader] = None, - legacy_context_creator: Optional[LegacyContextCreator] = None, - legacy_executor: Optional[LegacyExecutor] = None, + python_and_legacy_file_reader: Optional[PythonAndLegacyFileReader] = None, + protocol_context_creator: Optional[ProtocolContextCreator] = None, + python_protocol_executor: Optional[PythonProtocolExecutor] = None, post_run_hardware_state: PostRunHardwareState = PostRunHardwareState.HOME_AND_STAY_ENGAGED, drop_tips_after_run: bool = True, ) -> AnyRunner: @@ -443,9 +448,9 @@ def create_protocol_runner( protocol_engine=protocol_engine, hardware_api=hardware_api, task_queue=task_queue, - legacy_file_reader=legacy_file_reader, - legacy_context_creator=legacy_context_creator, - legacy_executor=legacy_executor, + python_and_legacy_file_reader=python_and_legacy_file_reader, + protocol_context_creator=protocol_context_creator, + python_protocol_executor=python_protocol_executor, post_run_hardware_state=post_run_hardware_state, drop_tips_after_run=drop_tips_after_run, ) diff --git a/api/src/opentrons/protocol_runner/legacy_wrappers.py b/api/src/opentrons/protocol_runner/python_protocol_wrappers.py similarity index 63% rename from api/src/opentrons/protocol_runner/legacy_wrappers.py rename to api/src/opentrons/protocol_runner/python_protocol_wrappers.py index 9783c877227..e0a345db0f0 100644 --- a/api/src/opentrons/protocol_runner/legacy_wrappers.py +++ b/api/src/opentrons/protocol_runner/python_protocol_wrappers.py @@ -1,23 +1,16 @@ -"""Wrappers for the legacy, Protocol API v2 execution pipeline.""" +"""Wrappers for Protocol API v2 execution pipeline.""" import asyncio from typing import Dict, Iterable, Optional, cast from anyio import to_thread from opentrons_shared_data.labware.dev_types import ( - LabwareDefinition as LegacyLabwareDefinition, + LabwareDefinition as LabwareDefinitionTypedDict, ) from opentrons_shared_data.labware.labware_definition import LabwareDefinition from opentrons.calibration_storage.helpers import uri_from_details from opentrons.hardware_control import HardwareControlAPI -from opentrons.hardware_control.modules.types import ( - ModuleModel as LegacyModuleModel, - TemperatureModuleModel as LegacyTemperatureModuleModel, - MagneticModuleModel as LegacyMagneticModuleModel, - ThermocyclerModuleModel as LegacyThermocyclerModuleModel, - HeaterShakerModuleModel as LegacyHeaterShakerModuleModel, -) from opentrons.legacy_broker import LegacyBroker from opentrons.protocol_engine import ProtocolEngine from opentrons.protocol_engine.types import RunTimeParamValuesType @@ -25,32 +18,20 @@ from opentrons.util.broker import Broker from opentrons.protocol_api import ( - ProtocolContext as LegacyProtocolContext, - InstrumentContext as LegacyPipetteContext, - ModuleContext as LegacyModuleContext, - Labware as LegacyLabware, - Well as LegacyWell, + ProtocolContext, ParameterContext, create_protocol_context, ) from opentrons.protocol_api.core.engine import ENGINE_CORE_API_VERSION -from opentrons.protocol_api.core.legacy.load_info import ( - LoadInfo as LegacyLoadInfo, - InstrumentLoadInfo as LegacyInstrumentLoadInfo, - LabwareLoadInfo as LegacyLabwareLoadInfo, - ModuleLoadInfo as LegacyModuleLoadInfo, -) +from opentrons.protocol_api.core.legacy.load_info import LoadInfo from opentrons.protocols.parse import PythonParseMode, parse from opentrons.protocols.execution.execute import run_protocol -from opentrons.protocols.types import ( - Protocol as LegacyProtocol, - JsonProtocol as LegacyJsonProtocol, - PythonProtocol as LegacyPythonProtocol, -) +from opentrons.protocols.types import Protocol, PythonProtocol + # The earliest Python Protocol API version ("apiLevel") where the protocol's simulation -# and execution will be handled by Protocol Engine, rather than the legacy machinery. +# and execution will be handled by Protocol Engine, rather than the previous direct hardware calls from protocol api. # # Note that even when simulation and execution are handled by the legacy machinery, # Protocol Engine still has some involvement for analyzing the simulation and @@ -63,7 +44,7 @@ LEGACY_JSON_SCHEMA_VERSION_CUTOFF = 6 -class LegacyFileReader: +class PythonAndLegacyFileReader: """Interface to read Protocol API v2 protocols prior to execution.""" @staticmethod @@ -71,16 +52,16 @@ def read( protocol_source: ProtocolSource, labware_definitions: Iterable[LabwareDefinition], python_parse_mode: PythonParseMode, - ) -> LegacyProtocol: + ) -> Protocol: """Read a PAPIv2 protocol into a data structure.""" protocol_file_path = protocol_source.main_file protocol_contents = protocol_file_path.read_text(encoding="utf-8") - legacy_labware_definitions: Dict[str, LegacyLabwareDefinition] = { + extra_labware: Dict[str, LabwareDefinitionTypedDict] = { uri_from_details( namespace=lw.namespace, load_name=lw.parameters.loadName, version=lw.version, - ): cast(LegacyLabwareDefinition, lw.dict(exclude_none=True)) + ): cast(LabwareDefinitionTypedDict, lw.dict(exclude_none=True)) for lw in labware_definitions } data_file_paths = [ @@ -92,7 +73,7 @@ def read( return parse( protocol_file=protocol_contents, filename=protocol_file_path.name, - extra_labware=legacy_labware_definitions, + extra_labware=extra_labware, extra_data={ data_path.name: data_path.read_bytes() for data_path in data_file_paths }, @@ -100,9 +81,7 @@ def read( ) -# TODO (spp, 2023-04-05): Remove 'legacy' wording since this is the context we are using -# for all python protocols. -class LegacyContextCreator: +class ProtocolContextCreator: """Interface to construct Protocol API v2 contexts.""" _USE_SIMULATING_CORE = False @@ -125,21 +104,17 @@ def __init__( def create( self, - protocol: LegacyProtocol, + protocol: Protocol, broker: Optional[LegacyBroker], - equipment_broker: Optional[Broker[LegacyLoadInfo]], - ) -> LegacyProtocolContext: + equipment_broker: Optional[Broker[LoadInfo]], + ) -> ProtocolContext: """Create a Protocol API v2 context.""" extra_labware = ( - protocol.extra_labware - if isinstance(protocol, LegacyPythonProtocol) - else None + protocol.extra_labware if isinstance(protocol, PythonProtocol) else None ) bundled_data = ( - protocol.bundled_data - if isinstance(protocol, LegacyPythonProtocol) - else None + protocol.bundled_data if isinstance(protocol, PythonProtocol) else None ) return create_protocol_context( @@ -156,7 +131,7 @@ def create( ) -class LegacySimulatingContextCreator(LegacyContextCreator): +class SimulatingContextCreator(ProtocolContextCreator): """Interface to construct PAPIv2 contexts using simulating implementations. Avoids some calls to the hardware API for performance. @@ -166,13 +141,13 @@ class LegacySimulatingContextCreator(LegacyContextCreator): _USE_SIMULATING_CORE = True -class LegacyExecutor: +class PythonProtocolExecutor: """Interface to execute Protocol API v2 protocols in a child thread.""" @staticmethod async def execute( - protocol: LegacyProtocol, - context: LegacyProtocolContext, + protocol: Protocol, + context: ProtocolContext, parameter_context: Optional[ParameterContext], run_time_param_values: Optional[RunTimeParamValuesType], ) -> None: @@ -180,29 +155,3 @@ async def execute( await to_thread.run_sync( run_protocol, protocol, context, parameter_context, run_time_param_values ) - - -__all__ = [ - # Re-exports of user-facing Python Protocol APIv2 stuff: - # TODO(mc, 2022-08-22): remove, no longer "legacy", so re-exports unnecessary - "LegacyProtocolContext", - "LegacyLabware", - "LegacyWell", - "LegacyPipetteContext", - "LegacyModuleContext", - # Re-exports of internal stuff: - "LegacyProtocol", - "LegacyJsonProtocol", - "LegacyPythonProtocol", - "LegacyLoadInfo", - "LegacyLabwareLoadInfo", - "LegacyInstrumentLoadInfo", - "LegacyModuleLoadInfo", - "LegacyModuleModel", - "LegacyMagneticModuleModel", - "LegacyTemperatureModuleModel", - "LegacyThermocyclerModuleModel", - "LegacyHeaterShakerModuleModel", - # legacy typed dicts - "LegacyLabwareDefinition", -] diff --git a/api/src/opentrons/util/change_notifier.py b/api/src/opentrons/util/change_notifier.py new file mode 100644 index 00000000000..e3ae1622c4c --- /dev/null +++ b/api/src/opentrons/util/change_notifier.py @@ -0,0 +1,47 @@ +"""Simple state change notification interface.""" +import asyncio + + +class ChangeNotifier: + """An interface to emit or subscribe to state change notifications.""" + + def __init__(self) -> None: + """Initialize the ChangeNotifier with an internal Event.""" + self._event = asyncio.Event() + + def notify(self) -> None: + """Notify all `wait`'ers that the state has changed.""" + self._event.set() + + async def wait(self) -> None: + """Wait until the next state change notification.""" + self._event.clear() + await self._event.wait() + + +class ChangeNotifier_ts(ChangeNotifier): + """ChangeNotifier initialized with Event_ts.""" + + def __init__(self) -> None: + """Initialize the ChangeNotifier_Ts with an internal Event_ts.""" + super().__init__() + self._event = Event_ts() + + +class Event_ts(asyncio.Event): + """asyncio.Event with threadsafe methods.""" + + def __init__(self) -> None: + """Initialize Event_ts with the active event_loop or event_loop_policy if not active.""" + super().__init__() + if self._loop is None: + self._loop: asyncio.AbstractEventLoop = asyncio.get_event_loop() + + def set(self) -> None: + """Primarily intended for calling from a thread not responsible for the event loop. + + Calling set() from the event loop thread will actually delay the execution of the set() until the + calling method either yields, awaits, or exits altogether. This is usually fine but might occasionally cause + unexpected behavior. + """ + self._loop.call_soon_threadsafe(super().set) diff --git a/api/tests/opentrons/hardware_control/test_gripper.py b/api/tests/opentrons/hardware_control/test_gripper.py index 0d01b225752..6066b8a74a1 100644 --- a/api/tests/opentrons/hardware_control/test_gripper.py +++ b/api/tests/opentrons/hardware_control/test_gripper.py @@ -74,6 +74,7 @@ def test_reload_instrument_cal_ot3(fake_offset: "GripperCalibrationOffset") -> N fake_gripper_conf, fake_offset, "fakeid123", + jaw_max_offset=15, ) # if only calibration is changed new_cal = instrument_calibration.GripperCalibrationOffset( @@ -87,10 +88,37 @@ def test_reload_instrument_cal_ot3(fake_offset: "GripperCalibrationOffset") -> N # it's the same gripper assert new_gripper == old_gripper + # jaw offset should persists as well + assert new_gripper._jaw_max_offset == old_gripper._jaw_max_offset # we said upstream could skip assert skip +@pytest.mark.ot3_only +def test_reload_instrument_cal_ot3_conf_changed( + fake_offset: "GripperCalibrationOffset", +) -> None: + old_gripper = gripper.Gripper( + fake_gripper_conf, + fake_offset, + "fakeid123", + jaw_max_offset=15, + ) + new_conf = fake_gripper_conf.copy( + update={"grip_force_profile": {"default_grip_force": 1}} + ) + assert new_conf != old_gripper.config + + new_gripper, skip = gripper._reload_gripper(new_conf, old_gripper, fake_offset) + + # it's not the same gripper + assert new_gripper != old_gripper + # do not pass in the old jaw max offse + assert not new_gripper._jaw_max_offset + # we said upstream could skip + assert not skip + + @pytest.mark.ot3_only def test_jaw_calibration_error_checking() -> None: subject = gripper.Gripper(fake_gripper_conf, fake_offset, "fakeid123") diff --git a/api/tests/opentrons/protocol_api/test_instrument_context.py b/api/tests/opentrons/protocol_api/test_instrument_context.py index 38ab8f5b54b..d0e18f6fda9 100644 --- a/api/tests/opentrons/protocol_api/test_instrument_context.py +++ b/api/tests/opentrons/protocol_api/test_instrument_context.py @@ -753,9 +753,14 @@ def test_drop_tip_to_randomized_trash_location( ) +@pytest.mark.parametrize( + ["api_version", "alternate_drop"], + [(APIVersion(2, 17), True), (APIVersion(2, 18), False)], +) def test_drop_tip_in_trash_bin( decoy: Decoy, mock_instrument_core: InstrumentCore, + alternate_drop: bool, subject: InstrumentContext, ) -> None: """It should drop a tip in a deck configured trash bin.""" @@ -767,14 +772,20 @@ def test_drop_tip_in_trash_bin( mock_instrument_core.drop_tip_in_disposal_location( trash_bin, home_after=None, + alternate_tip_drop=alternate_drop, ), times=1, ) +@pytest.mark.parametrize( + ["api_version", "alternate_drop"], + [(APIVersion(2, 17), True), (APIVersion(2, 18), False)], +) def test_drop_tip_in_waste_chute( decoy: Decoy, mock_instrument_core: InstrumentCore, + alternate_drop: bool, subject: InstrumentContext, ) -> None: """It should drop a tip in a deck configured trash bin or waste chute.""" @@ -786,6 +797,7 @@ def test_drop_tip_in_waste_chute( mock_instrument_core.drop_tip_in_disposal_location( waste_chute, home_after=None, + alternate_tip_drop=alternate_drop, ), times=1, ) diff --git a/api/tests/opentrons/protocol_engine/commands/calibration/test_move_to_maintenance_position.py b/api/tests/opentrons/protocol_engine/commands/calibration/test_move_to_maintenance_position.py index 8cc9017a021..df58ab7dbc0 100644 --- a/api/tests/opentrons/protocol_engine/commands/calibration/test_move_to_maintenance_position.py +++ b/api/tests/opentrons/protocol_engine/commands/calibration/test_move_to_maintenance_position.py @@ -1,6 +1,6 @@ """Test for Calibration Set Up Position Implementation.""" from __future__ import annotations -from typing import TYPE_CHECKING, Mapping +from typing import TYPE_CHECKING import pytest from decoy import Decoy @@ -32,106 +32,68 @@ def subject( @pytest.mark.ot3_only -@pytest.mark.parametrize( - "maintenance_position, verify_axes", - [ - ( - MaintenancePosition.ATTACH_INSTRUMENT, - {Axis.Z_L: 400}, - ), - ( - MaintenancePosition.ATTACH_PLATE, - {Axis.Z_L: 90, Axis.Z_R: 105}, - ), - ], -) -async def test_calibration_move_to_location_implementation( +@pytest.mark.parametrize("mount_type", [MountType.LEFT, MountType.RIGHT]) +async def test_calibration_move_to_location_implementatio_for_attach_instrument( decoy: Decoy, subject: MoveToMaintenancePositionImplementation, state_view: StateView, ot3_hardware_api: OT3API, - maintenance_position: MaintenancePosition, - verify_axes: Mapping[Axis, float], + mount_type: MountType, ) -> None: """Command should get a move to target location and critical point and should verify move_to call.""" params = MoveToMaintenancePositionParams( - mount=MountType.LEFT, maintenancePosition=maintenance_position + mount=mount_type, maintenancePosition=MaintenancePosition.ATTACH_INSTRUMENT ) decoy.when( await ot3_hardware_api.gantry_position( Mount.LEFT, critical_point=CriticalPoint.MOUNT ) - ).then_return(Point(x=1, y=2, z=3)) - - decoy.when( - ot3_hardware_api.get_instrument_max_height( - Mount.LEFT, critical_point=CriticalPoint.MOUNT - ) - ).then_return(250) + ).then_return(Point(x=1, y=2, z=250)) decoy.when(ot3_hardware_api.get_instrument_max_height(Mount.LEFT)).then_return(300) result = await subject.execute(params=params) assert result == MoveToMaintenancePositionResult() + hw_mount = mount_type.to_hw_mount() decoy.verify( - await ot3_hardware_api.move_to( - mount=Mount.LEFT, - abs_position=Point(x=1, y=2, z=250), - critical_point=CriticalPoint.MOUNT, - ), - times=1, - ) - - decoy.verify( + await ot3_hardware_api.prepare_for_mount_movement(Mount.LEFT), + await ot3_hardware_api.retract(Mount.LEFT), await ot3_hardware_api.move_to( mount=Mount.LEFT, abs_position=Point(x=0, y=110, z=250), critical_point=CriticalPoint.MOUNT, ), - times=1, - ) - - decoy.verify( + await ot3_hardware_api.prepare_for_mount_movement(hw_mount), await ot3_hardware_api.move_axes( - position=verify_axes, + position={Axis.by_mount(hw_mount): 400}, + ), + await ot3_hardware_api.disengage_axes( + [Axis.by_mount(hw_mount)], ), - times=1, ) - if params.maintenancePosition == MaintenancePosition.ATTACH_INSTRUMENT: - decoy.verify( - await ot3_hardware_api.disengage_axes( - list(verify_axes.keys()), - ), - times=1, - ) - @pytest.mark.ot3_only -async def test_calibration_move_to_location_implementation_for_gripper( +@pytest.mark.parametrize("mount_type", [MountType.LEFT, MountType.RIGHT]) +async def test_calibration_move_to_location_implementatio_for_attach_plate( decoy: Decoy, subject: MoveToMaintenancePositionImplementation, state_view: StateView, ot3_hardware_api: OT3API, + mount_type: MountType, ) -> None: """Command should get a move to target location and critical point and should verify move_to call.""" params = MoveToMaintenancePositionParams( - mount=MountType.LEFT, maintenancePosition=MaintenancePosition.ATTACH_INSTRUMENT + mount=mount_type, maintenancePosition=MaintenancePosition.ATTACH_PLATE ) decoy.when( await ot3_hardware_api.gantry_position( Mount.LEFT, critical_point=CriticalPoint.MOUNT ) - ).then_return(Point(x=1, y=2, z=3)) - - decoy.when( - ot3_hardware_api.get_instrument_max_height( - Mount.LEFT, critical_point=CriticalPoint.MOUNT - ) - ).then_return(250) + ).then_return(Point(x=1, y=2, z=250)) decoy.when(ot3_hardware_api.get_instrument_max_height(Mount.LEFT)).then_return(300) @@ -139,21 +101,56 @@ async def test_calibration_move_to_location_implementation_for_gripper( assert result == MoveToMaintenancePositionResult() decoy.verify( + await ot3_hardware_api.prepare_for_mount_movement(Mount.LEFT), + await ot3_hardware_api.retract(Mount.LEFT), await ot3_hardware_api.move_to( mount=Mount.LEFT, - abs_position=Point(x=1, y=2, z=250), + abs_position=Point(x=0, y=110, z=250), critical_point=CriticalPoint.MOUNT, ), - times=1, + await ot3_hardware_api.move_axes( + position={ + Axis.Z_L: 90, + Axis.Z_R: 105, + } + ), + await ot3_hardware_api.disengage_axes( + [Axis.Z_L, Axis.Z_R], + ), + ) + + +@pytest.mark.ot3_only +async def test_calibration_move_to_location_implementation_for_gripper( + decoy: Decoy, + subject: MoveToMaintenancePositionImplementation, + state_view: StateView, + ot3_hardware_api: OT3API, +) -> None: + """Command should get a move to target location and critical point and should verify move_to call.""" + params = MoveToMaintenancePositionParams( + mount=MountType.EXTENSION, + maintenancePosition=MaintenancePosition.ATTACH_INSTRUMENT, ) + decoy.when( + await ot3_hardware_api.gantry_position( + Mount.LEFT, critical_point=CriticalPoint.MOUNT + ) + ).then_return(Point(x=1, y=2, z=250)) + decoy.when(ot3_hardware_api.get_instrument_max_height(Mount.LEFT)).then_return(300) + + result = await subject.execute(params=params) + assert result == MoveToMaintenancePositionResult() + decoy.verify( + await ot3_hardware_api.prepare_for_mount_movement(Mount.LEFT), + await ot3_hardware_api.retract(Mount.LEFT), await ot3_hardware_api.move_to( mount=Mount.LEFT, abs_position=Point(x=0, y=110, z=250), critical_point=CriticalPoint.MOUNT, ), - times=1, ) decoy.verify( @@ -162,7 +159,6 @@ async def test_calibration_move_to_location_implementation_for_gripper( ), times=0, ) - decoy.verify( await ot3_hardware_api.disengage_axes( [Axis.Z_G], diff --git a/api/tests/opentrons/protocol_engine/execution/test_command_executor.py b/api/tests/opentrons/protocol_engine/execution/test_command_executor.py index 1cdb051164c..8f4433a9ebe 100644 --- a/api/tests/opentrons/protocol_engine/execution/test_command_executor.py +++ b/api/tests/opentrons/protocol_engine/execution/test_command_executor.py @@ -242,9 +242,7 @@ class _TestCommand(BaseCommand[_TestCommandParams, _TestCommandResult]): params: _TestCommandParams result: Optional[_TestCommandResult] - @property - def _ImplementationCls(self) -> Type[_TestCommandImpl]: - return TestCommandImplCls + _ImplementationCls: Type[_TestCommandImpl] = TestCommandImplCls command_params = _TestCommandParams() command_result = _TestCommandResult() @@ -407,9 +405,7 @@ class _TestCommand(BaseCommand[_TestCommandParams, _TestCommandResult]): params: _TestCommandParams result: Optional[_TestCommandResult] - @property - def _ImplementationCls(self) -> Type[_TestCommandImpl]: - return TestCommandImplCls + _ImplementationCls: Type[_TestCommandImpl] = TestCommandImplCls command_params = _TestCommandParams() diff --git a/api/tests/opentrons/protocol_engine/state/test_change_notifier.py b/api/tests/opentrons/protocol_engine/state/test_change_notifier.py deleted file mode 100644 index 4967e6d254e..00000000000 --- a/api/tests/opentrons/protocol_engine/state/test_change_notifier.py +++ /dev/null @@ -1,56 +0,0 @@ -"""Tests for the ChangeNotifier interface.""" -import asyncio -import pytest -from opentrons.protocol_engine.state.change_notifier import ChangeNotifier - - -async def test_single_subscriber() -> None: - """Test that a single subscriber can wait for a notification.""" - subject = ChangeNotifier() - result = asyncio.create_task(subject.wait()) - - # ensure that the wait actually waits by delaying and - # checking that the task has not resolved - await asyncio.sleep(0.1) - assert result.done() is False - - asyncio.get_running_loop().call_soon(subject.notify) - - await result - - -@pytest.mark.parametrize("_test_repetition", range(10)) -async def test_multiple_subscribers(_test_repetition: int) -> None: - """Test that multiple subscribers can wait for a notification. - - This test checks that the subscribers are awoken in the order they - subscribed. This may or may not be guarenteed according to the - implementations of both ChangeNotifier and the event loop. - This test functions as a canary, given that our code may relies - on this ordering for determinism. - - This test runs multiple times to check for flakyness. - """ - subject = ChangeNotifier() - results = [] - - async def _do_task_1() -> None: - await subject.wait() - results.append(1) - - async def _do_task_2() -> None: - await subject.wait() - results.append(2) - - async def _do_task_3() -> None: - await subject.wait() - results.append(3) - - task_1 = asyncio.create_task(_do_task_1()) - task_2 = asyncio.create_task(_do_task_2()) - task_3 = asyncio.create_task(_do_task_3()) - - asyncio.get_running_loop().call_soon(subject.notify) - await asyncio.gather(task_1, task_2, task_3) - - assert results == [1, 2, 3] diff --git a/api/tests/opentrons/protocol_engine/state/test_command_store_old.py b/api/tests/opentrons/protocol_engine/state/test_command_store_old.py index 60cdf27838f..7f376a0b019 100644 --- a/api/tests/opentrons/protocol_engine/state/test_command_store_old.py +++ b/api/tests/opentrons/protocol_engine/state/test_command_store_old.py @@ -638,6 +638,41 @@ def test_command_store_handles_stop_action( assert subject.state.command_history.get_setup_queue_ids() == OrderedSet() +def test_command_store_handles_stop_action_when_awaiting_recovery() -> None: + """It should mark the engine as non-gracefully stopped on StopAction.""" + subject = CommandStore(is_door_open=False, config=_make_config()) + + subject.handle_action( + PlayAction( + requested_at=datetime(year=2021, month=1, day=1), deck_configuration=[] + ) + ) + + subject.state.queue_status = QueueStatus.AWAITING_RECOVERY + + subject.handle_action(StopAction()) + + assert subject.state == CommandState( + command_history=CommandHistory(), + queue_status=QueueStatus.PAUSED, + run_result=RunResult.STOPPED, + run_completed_at=None, + is_door_blocking=False, + run_error=None, + finish_error=None, + failed_command=None, + command_error_recovery_types={}, + recovery_target_command_id=None, + run_started_at=datetime(year=2021, month=1, day=1), + latest_protocol_command_hash=None, + stopped_by_estop=False, + ) + assert subject.state.command_history.get_running_command() is None + assert subject.state.command_history.get_all_ids() == [] + assert subject.state.command_history.get_queue_ids() == OrderedSet() + assert subject.state.command_history.get_setup_queue_ids() == OrderedSet() + + def test_command_store_cannot_restart_after_should_stop() -> None: """It should reject a play action after finish.""" subject = CommandStore(is_door_open=False, config=_make_config()) diff --git a/api/tests/opentrons/protocol_engine/state/test_state_store.py b/api/tests/opentrons/protocol_engine/state/test_state_store.py index 515cbbd81e1..b853b47733f 100644 --- a/api/tests/opentrons/protocol_engine/state/test_state_store.py +++ b/api/tests/opentrons/protocol_engine/state/test_state_store.py @@ -6,10 +6,10 @@ from decoy import Decoy from opentrons_shared_data.deck.dev_types import DeckDefinitionV5 +from opentrons.util.change_notifier import ChangeNotifier from opentrons.protocol_engine.actions import PlayAction from opentrons.protocol_engine.state import State, StateStore, Config -from opentrons.protocol_engine.state.change_notifier import ChangeNotifier from opentrons.protocol_engine.types import DeckType diff --git a/api/tests/opentrons/protocol_runner/test_legacy_command_mapper.py b/api/tests/opentrons/protocol_runner/test_legacy_command_mapper.py index a0581001a82..ada52714ee6 100644 --- a/api/tests/opentrons/protocol_runner/test_legacy_command_mapper.py +++ b/api/tests/opentrons/protocol_runner/test_legacy_command_mapper.py @@ -7,7 +7,13 @@ from decoy import matchers, Decoy from opentrons.hardware_control.dev_types import PipetteDict +from opentrons.hardware_control.modules.types import TemperatureModuleModel from opentrons.legacy_commands.types import CommentMessage, PauseMessage, CommandMessage +from opentrons.protocol_api.core.legacy.load_info import ( + LabwareLoadInfo as LegacyLabwareLoadInfo, + InstrumentLoadInfo as LegacyInstrumentLoadInfo, + ModuleLoadInfo as LegacyModuleLoadInfo, +) from opentrons.protocol_engine import ( DeckSlotLocation, ModuleLocation, @@ -29,12 +35,6 @@ LegacyCommandMapper, LegacyCommandParams, ) -from opentrons.protocol_runner.legacy_wrappers import ( - LegacyInstrumentLoadInfo, - LegacyLabwareLoadInfo, - LegacyModuleLoadInfo, - LegacyTemperatureModuleModel, -) from opentrons_shared_data.labware.dev_types import LabwareDefinition from opentrons_shared_data.module.dev_types import ModuleDefinitionV3 from opentrons_shared_data.pipette.dev_types import PipetteNameType @@ -396,8 +396,8 @@ def test_map_module_load( """It should correctly map a module load.""" test_definition = ModuleDefinition.parse_obj(minimal_module_def) input = LegacyModuleLoadInfo( - requested_model=LegacyTemperatureModuleModel.TEMPERATURE_V1, - loaded_model=LegacyTemperatureModuleModel.TEMPERATURE_V2, + requested_model=TemperatureModuleModel.TEMPERATURE_V1, + loaded_model=TemperatureModuleModel.TEMPERATURE_V2, deck_slot=DeckSlotName.SLOT_1, configuration="conf", module_serial="module-serial", diff --git a/api/tests/opentrons/protocol_runner/test_legacy_context_plugin.py b/api/tests/opentrons/protocol_runner/test_legacy_context_plugin.py index f11676bcd37..368a34a297f 100644 --- a/api/tests/opentrons/protocol_runner/test_legacy_context_plugin.py +++ b/api/tests/opentrons/protocol_runner/test_legacy_context_plugin.py @@ -17,12 +17,10 @@ from opentrons.legacy_broker import LegacyBroker from opentrons.util.broker import ReadOnlyBroker +from opentrons.protocol_api.core.legacy.load_info import LoadInfo, LabwareLoadInfo + from opentrons.protocol_runner.legacy_command_mapper import LegacyCommandMapper from opentrons.protocol_runner.legacy_context_plugin import LegacyContextPlugin -from opentrons.protocol_runner.legacy_wrappers import ( - LegacyLoadInfo, - LegacyLabwareLoadInfo, -) from opentrons.types import DeckSlotName @@ -38,9 +36,9 @@ def mock_legacy_broker(decoy: Decoy) -> LegacyBroker: @pytest.fixture -def mock_equipment_broker(decoy: Decoy) -> ReadOnlyBroker[LegacyLoadInfo]: +def mock_equipment_broker(decoy: Decoy) -> ReadOnlyBroker[LoadInfo]: """Get a mocked out `equipment_broker: Broker` dependency.""" - return decoy.mock(cls=ReadOnlyBroker[LegacyLoadInfo]) + return decoy.mock(cls=ReadOnlyBroker[LoadInfo]) @pytest.fixture @@ -64,7 +62,7 @@ def mock_action_dispatcher(decoy: Decoy) -> pe_actions.ActionDispatcher: @pytest.fixture def subject( mock_legacy_broker: LegacyBroker, - mock_equipment_broker: ReadOnlyBroker[LegacyLoadInfo], + mock_equipment_broker: ReadOnlyBroker[LoadInfo], mock_legacy_command_mapper: LegacyCommandMapper, mock_state_view: StateView, mock_action_dispatcher: pe_actions.ActionDispatcher, @@ -92,7 +90,7 @@ def __exit__(self, type: object, value: object, traceback: object) -> None: async def test_broker_subscribe_unsubscribe( decoy: Decoy, mock_legacy_broker: LegacyBroker, - mock_equipment_broker: ReadOnlyBroker[LegacyLoadInfo], + mock_equipment_broker: ReadOnlyBroker[LoadInfo], subject: LegacyContextPlugin, ) -> None: """It should subscribe to the brokers on setup and unsubscribe on teardown.""" @@ -125,7 +123,7 @@ async def test_broker_subscribe_unsubscribe( async def test_command_broker_messages( decoy: Decoy, mock_legacy_broker: LegacyBroker, - mock_equipment_broker: ReadOnlyBroker[LegacyLoadInfo], + mock_equipment_broker: ReadOnlyBroker[LoadInfo], mock_legacy_command_mapper: LegacyCommandMapper, mock_action_dispatcher: pe_actions.ActionDispatcher, subject: LegacyContextPlugin, @@ -181,7 +179,7 @@ async def test_command_broker_messages( async def test_equipment_broker_messages( decoy: Decoy, mock_legacy_broker: LegacyBroker, - mock_equipment_broker: ReadOnlyBroker[LegacyLoadInfo], + mock_equipment_broker: ReadOnlyBroker[LoadInfo], mock_legacy_command_mapper: LegacyCommandMapper, mock_action_dispatcher: pe_actions.ActionDispatcher, subject: LegacyContextPlugin, @@ -199,9 +197,9 @@ async def test_equipment_broker_messages( subject.setup() - handler: Callable[[LegacyLabwareLoadInfo], None] = labware_handler_captor.value + handler: Callable[[LabwareLoadInfo], None] = labware_handler_captor.value - load_info = LegacyLabwareLoadInfo( + load_info = LabwareLoadInfo( labware_definition=minimal_labware_def, labware_namespace="some_namespace", labware_load_name="some_load_name", diff --git a/api/tests/opentrons/protocol_runner/test_protocol_runner.py b/api/tests/opentrons/protocol_runner/test_protocol_runner.py index 68e215bf3dd..6aa790bee98 100644 --- a/api/tests/opentrons/protocol_runner/test_protocol_runner.py +++ b/api/tests/opentrons/protocol_runner/test_protocol_runner.py @@ -8,15 +8,20 @@ from typing import List, cast, Optional, Union, Type from opentrons_shared_data.labware.labware_definition import LabwareDefinition +from opentrons_shared_data.labware.dev_types import ( + LabwareDefinition as LabwareDefinitionTypedDict, +) from opentrons_shared_data.protocol.models import ProtocolSchemaV6, ProtocolSchemaV7 from opentrons_shared_data.protocol.dev_types import ( JsonProtocol as LegacyJsonProtocolDict, ) from opentrons.hardware_control import API as HardwareAPI from opentrons.legacy_broker import LegacyBroker +from opentrons.protocol_api import ProtocolContext from opentrons.protocol_engine.types import PostRunHardwareState from opentrons.protocols.api_support.types import APIVersion from opentrons.protocols.parse import PythonParseMode +from opentrons.protocols.types import PythonProtocol, JsonProtocol from opentrons.util.broker import Broker from opentrons import protocol_reader @@ -42,14 +47,10 @@ from opentrons.protocol_runner.json_file_reader import JsonFileReader from opentrons.protocol_runner.json_translator import JsonTranslator from opentrons.protocol_runner.legacy_context_plugin import LegacyContextPlugin -from opentrons.protocol_runner.legacy_wrappers import ( - LegacyFileReader, - LegacyContextCreator, - LegacyExecutor, - LegacyPythonProtocol, - LegacyJsonProtocol, - LegacyProtocolContext, - LegacyLabwareDefinition, +from opentrons.protocol_runner.python_protocol_wrappers import ( + PythonAndLegacyFileReader, + ProtocolContextCreator, + PythonProtocolExecutor, ) @@ -84,21 +85,21 @@ def json_translator(decoy: Decoy) -> JsonTranslator: @pytest.fixture -def legacy_file_reader(decoy: Decoy) -> LegacyFileReader: - """Get a mocked out LegacyFileReader dependency.""" - return decoy.mock(cls=LegacyFileReader) +def python_and_legacy_file_reader(decoy: Decoy) -> PythonAndLegacyFileReader: + """Get a mocked out PythonAndLegacyFileReader dependency.""" + return decoy.mock(cls=PythonAndLegacyFileReader) @pytest.fixture -def legacy_context_creator(decoy: Decoy) -> LegacyContextCreator: - """Get a mocked out LegacyContextCreator dependency.""" - return decoy.mock(cls=LegacyContextCreator) +def protocol_context_creator(decoy: Decoy) -> ProtocolContextCreator: + """Get a mocked out ProtocolContextCreator dependency.""" + return decoy.mock(cls=ProtocolContextCreator) @pytest.fixture -def legacy_executor(decoy: Decoy) -> LegacyExecutor: - """Get a mocked out LegacyExecutor dependency.""" - return decoy.mock(cls=LegacyExecutor) +def python_protocol_executor(decoy: Decoy) -> PythonProtocolExecutor: + """Get a mocked out PythonProtocolExecutor dependency.""" + return decoy.mock(cls=PythonProtocolExecutor) @pytest.fixture(autouse=True) @@ -132,22 +133,22 @@ def json_runner_subject( @pytest.fixture -def legacy_python_runner_subject( +def python_runner_subject( protocol_engine: ProtocolEngine, hardware_api: HardwareAPI, task_queue: TaskQueue, - legacy_file_reader: LegacyFileReader, - legacy_context_creator: LegacyContextCreator, - legacy_executor: LegacyExecutor, + python_and_legacy_file_reader: PythonAndLegacyFileReader, + protocol_context_creator: ProtocolContextCreator, + python_protocol_executor: PythonProtocolExecutor, ) -> PythonAndLegacyRunner: """Get a PythonAndLegacyRunner test subject with mocked dependencies.""" return PythonAndLegacyRunner( protocol_engine=protocol_engine, hardware_api=hardware_api, task_queue=task_queue, - legacy_file_reader=legacy_file_reader, - legacy_context_creator=legacy_context_creator, - legacy_executor=legacy_executor, + python_and_legacy_file_reader=python_and_legacy_file_reader, + protocol_context_creator=protocol_context_creator, + python_protocol_executor=python_protocol_executor, ) @@ -182,9 +183,9 @@ def test_create_protocol_runner( task_queue: TaskQueue, json_file_reader: JsonFileReader, json_translator: JsonTranslator, - legacy_file_reader: LegacyFileReader, - legacy_context_creator: LegacyContextCreator, - legacy_executor: LegacyExecutor, + python_and_legacy_file_reader: PythonAndLegacyFileReader, + protocol_context_creator: ProtocolContextCreator, + python_protocol_executor: PythonProtocolExecutor, config: Optional[Union[JsonProtocolConfig, PythonProtocolConfig]], runner_type: Type[AnyRunner], ) -> None: @@ -206,7 +207,7 @@ def test_create_protocol_runner( "subject", [ (lazy_fixture("json_runner_subject")), - (lazy_fixture("legacy_python_runner_subject")), + (lazy_fixture("python_runner_subject")), (lazy_fixture("live_runner_subject")), ], ) @@ -226,7 +227,7 @@ def test_play_starts_run( "subject", [ (lazy_fixture("json_runner_subject")), - (lazy_fixture("legacy_python_runner_subject")), + (lazy_fixture("python_runner_subject")), (lazy_fixture("live_runner_subject")), ], ) @@ -245,7 +246,7 @@ def test_pause( "subject", [ (lazy_fixture("json_runner_subject")), - (lazy_fixture("legacy_python_runner_subject")), + (lazy_fixture("python_runner_subject")), (lazy_fixture("live_runner_subject")), ], ) @@ -268,7 +269,7 @@ async def test_stop( "subject", [ (lazy_fixture("json_runner_subject")), - (lazy_fixture("legacy_python_runner_subject")), + (lazy_fixture("python_runner_subject")), (lazy_fixture("live_runner_subject")), ], ) @@ -297,7 +298,7 @@ async def test_stop_when_run_never_started( "subject", [ (lazy_fixture("json_runner_subject")), - (lazy_fixture("legacy_python_runner_subject")), + (lazy_fixture("python_runner_subject")), (lazy_fixture("live_runner_subject")), ], ) @@ -521,12 +522,12 @@ async def test_load_json_runner( async def test_load_legacy_python( decoy: Decoy, - legacy_file_reader: LegacyFileReader, - legacy_context_creator: LegacyContextCreator, - legacy_executor: LegacyExecutor, + python_and_legacy_file_reader: PythonAndLegacyFileReader, + protocol_context_creator: ProtocolContextCreator, + python_protocol_executor: PythonProtocolExecutor, task_queue: TaskQueue, protocol_engine: ProtocolEngine, - legacy_python_runner_subject: PythonAndLegacyRunner, + python_runner_subject: PythonAndLegacyRunner, ) -> None: """It should load a legacy context-based Python protocol.""" labware_definition = LabwareDefinition.construct() # type: ignore[call-arg] @@ -541,9 +542,9 @@ async def test_load_legacy_python( content_hash="abc123", ) - extra_labware = {"definition-uri": cast(LegacyLabwareDefinition, {})} + extra_labware = {"definition-uri": cast(LabwareDefinitionTypedDict, {})} - legacy_protocol = LegacyPythonProtocol( + legacy_protocol = PythonProtocol( text="", contents="", filename="protocol.py", @@ -556,13 +557,13 @@ async def test_load_legacy_python( extra_labware=extra_labware, ) - legacy_context = decoy.mock(cls=LegacyProtocolContext) + protocol_context = decoy.mock(cls=ProtocolContext) decoy.when( await protocol_reader.extract_labware_definitions(legacy_protocol_source) ).then_return([labware_definition]) decoy.when( - legacy_file_reader.read( + python_and_legacy_file_reader.read( protocol_source=legacy_protocol_source, labware_definitions=[labware_definition], python_parse_mode=PythonParseMode.ALLOW_LEGACY_METADATA_AND_REQUIREMENTS, @@ -570,14 +571,14 @@ async def test_load_legacy_python( ).then_return(legacy_protocol) broker_captor = matchers.Captor() decoy.when( - legacy_context_creator.create( + protocol_context_creator.create( protocol=legacy_protocol, broker=broker_captor, equipment_broker=matchers.IsA(Broker), ) - ).then_return(legacy_context) + ).then_return(protocol_context) - await legacy_python_runner_subject.load( + await python_runner_subject.load( legacy_protocol_source, python_parse_mode=PythonParseMode.ALLOW_LEGACY_METADATA_AND_REQUIREMENTS, run_time_param_values=None, @@ -591,7 +592,7 @@ async def test_load_legacy_python( task_queue.set_run_func(run_func_captor), ) - assert broker_captor.value is legacy_python_runner_subject.broker + assert broker_captor.value is python_runner_subject.broker # Verify that the run func calls the right things: run_func = run_func_captor.value @@ -600,10 +601,10 @@ async def test_load_legacy_python( await protocol_engine.add_and_execute_command( request=pe_commands.HomeCreate(params=pe_commands.HomeParams(axes=None)) ), - await legacy_executor.execute( + await python_protocol_executor.execute( protocol=legacy_protocol, - context=legacy_context, - parameter_context=legacy_python_runner_subject._parameter_context, + context=protocol_context, + parameter_context=python_runner_subject._parameter_context, run_time_param_values=None, ), ) @@ -611,13 +612,13 @@ async def test_load_legacy_python( async def test_load_python_with_pe_papi_core( decoy: Decoy, - legacy_file_reader: LegacyFileReader, - legacy_context_creator: LegacyContextCreator, + python_and_legacy_file_reader: PythonAndLegacyFileReader, + protocol_context_creator: ProtocolContextCreator, protocol_engine: ProtocolEngine, - legacy_python_runner_subject: PythonAndLegacyRunner, + python_runner_subject: PythonAndLegacyRunner, ) -> None: """It should load a legacy context-based Python protocol.""" - legacy_protocol_source = ProtocolSource( + protocol_source = ProtocolSource( directory=Path("/dev/null"), main_file=Path("/dev/null/abc.py"), files=[], @@ -627,7 +628,7 @@ async def test_load_python_with_pe_papi_core( content_hash="abc123", ) - legacy_protocol = LegacyPythonProtocol( + protocol = PythonProtocol( text="", contents="", filename="protocol.py", @@ -640,43 +641,43 @@ async def test_load_python_with_pe_papi_core( extra_labware=None, ) - legacy_context = decoy.mock(cls=LegacyProtocolContext) + protocol_context = decoy.mock(cls=ProtocolContext) decoy.when( - await protocol_reader.extract_labware_definitions(legacy_protocol_source) + await protocol_reader.extract_labware_definitions(protocol_source) ).then_return([]) decoy.when( - legacy_file_reader.read( - protocol_source=legacy_protocol_source, + python_and_legacy_file_reader.read( + protocol_source=protocol_source, labware_definitions=[], python_parse_mode=PythonParseMode.ALLOW_LEGACY_METADATA_AND_REQUIREMENTS, ) - ).then_return(legacy_protocol) + ).then_return(protocol) broker_captor = matchers.Captor() decoy.when( - legacy_context_creator.create( - protocol=legacy_protocol, broker=broker_captor, equipment_broker=None + protocol_context_creator.create( + protocol=protocol, broker=broker_captor, equipment_broker=None ) - ).then_return(legacy_context) + ).then_return(protocol_context) - await legacy_python_runner_subject.load( - legacy_protocol_source, + await python_runner_subject.load( + protocol_source, python_parse_mode=PythonParseMode.ALLOW_LEGACY_METADATA_AND_REQUIREMENTS, run_time_param_values=None, ) decoy.verify(protocol_engine.add_plugin(matchers.IsA(LegacyContextPlugin)), times=0) - assert broker_captor.value is legacy_python_runner_subject.broker + assert broker_captor.value is python_runner_subject.broker async def test_load_legacy_json( decoy: Decoy, - legacy_file_reader: LegacyFileReader, - legacy_context_creator: LegacyContextCreator, - legacy_executor: LegacyExecutor, + python_and_legacy_file_reader: PythonAndLegacyFileReader, + protocol_context_creator: ProtocolContextCreator, + python_protocol_executor: PythonProtocolExecutor, task_queue: TaskQueue, protocol_engine: ProtocolEngine, - legacy_python_runner_subject: PythonAndLegacyRunner, + python_runner_subject: PythonAndLegacyRunner, ) -> None: """It should load a legacy context-based JSON protocol.""" labware_definition = LabwareDefinition.construct() # type: ignore[call-arg] @@ -691,7 +692,7 @@ async def test_load_legacy_json( content_hash="abc123", ) - legacy_protocol = LegacyJsonProtocol( + legacy_protocol = JsonProtocol( text="{}", contents=cast(LegacyJsonProtocolDict, {}), filename="protocol.json", @@ -701,27 +702,27 @@ async def test_load_legacy_json( metadata={"protocolName": "A Very Impressive Protocol"}, ) - legacy_context = decoy.mock(cls=LegacyProtocolContext) + protocol_context = decoy.mock(cls=ProtocolContext) decoy.when( await protocol_reader.extract_labware_definitions(legacy_protocol_source) ).then_return([labware_definition]) decoy.when( - legacy_file_reader.read( + python_and_legacy_file_reader.read( protocol_source=legacy_protocol_source, labware_definitions=[labware_definition], python_parse_mode=PythonParseMode.ALLOW_LEGACY_METADATA_AND_REQUIREMENTS, ) ).then_return(legacy_protocol) decoy.when( - legacy_context_creator.create( + protocol_context_creator.create( legacy_protocol, broker=matchers.IsA(LegacyBroker), equipment_broker=matchers.IsA(Broker), ) - ).then_return(legacy_context) + ).then_return(protocol_context) - await legacy_python_runner_subject.load( + await python_runner_subject.load( legacy_protocol_source, python_parse_mode=PythonParseMode.ALLOW_LEGACY_METADATA_AND_REQUIREMENTS, run_time_param_values=None, @@ -742,10 +743,10 @@ async def test_load_legacy_json( await protocol_engine.add_and_execute_command( request=pe_commands.HomeCreate(params=pe_commands.HomeParams(axes=None)) ), - await legacy_executor.execute( + await python_protocol_executor.execute( protocol=legacy_protocol, - context=legacy_context, - parameter_context=legacy_python_runner_subject._parameter_context, + context=protocol_context, + parameter_context=python_runner_subject._parameter_context, run_time_param_values=None, ), ) @@ -756,16 +757,16 @@ async def test_run_python_runner( hardware_api: HardwareAPI, protocol_engine: ProtocolEngine, task_queue: TaskQueue, - legacy_python_runner_subject: PythonAndLegacyRunner, + python_runner_subject: PythonAndLegacyRunner, ) -> None: """It should run a protocol to completion.""" decoy.when(protocol_engine.state_view.commands.has_been_played()).then_return( False, True ) - assert legacy_python_runner_subject.was_started() is False - await legacy_python_runner_subject.run(deck_configuration=[]) - assert legacy_python_runner_subject.was_started() is True + assert python_runner_subject.was_started() is False + await python_runner_subject.run(deck_configuration=[]) + assert python_runner_subject.was_started() is True decoy.verify( protocol_engine.play(deck_configuration=[]), diff --git a/robot-server/tests/service/notifications/test_change_notifier.py b/api/tests/opentrons/util/test_change_notifier.py similarity index 88% rename from robot-server/tests/service/notifications/test_change_notifier.py rename to api/tests/opentrons/util/test_change_notifier.py index 4967e6d254e..7ab9f3d9013 100644 --- a/robot-server/tests/service/notifications/test_change_notifier.py +++ b/api/tests/opentrons/util/test_change_notifier.py @@ -1,7 +1,7 @@ """Tests for the ChangeNotifier interface.""" import asyncio import pytest -from opentrons.protocol_engine.state.change_notifier import ChangeNotifier +from opentrons.util.change_notifier import ChangeNotifier async def test_single_subscriber() -> None: @@ -24,12 +24,12 @@ async def test_multiple_subscribers(_test_repetition: int) -> None: """Test that multiple subscribers can wait for a notification. This test checks that the subscribers are awoken in the order they - subscribed. This may or may not be guarenteed according to the + subscribed. This may or may not be guaranteed according to the implementations of both ChangeNotifier and the event loop. - This test functions as a canary, given that our code may relies + This test functions as a canary, given that our code may rely on this ordering for determinism. - This test runs multiple times to check for flakyness. + This test runs multiple times to check for flakiness. """ subject = ChangeNotifier() results = [] diff --git a/app-shell/Makefile b/app-shell/Makefile index ec86ee924ff..88bbf74b9ad 100644 --- a/app-shell/Makefile +++ b/app-shell/Makefile @@ -171,18 +171,16 @@ _dist-collect-artifacts: # development ##################################################################### -.PHONY: clean-dev-autoupdate -clean-dev-autoupdate: - rm -f ./dev-app-update.yml -dev-app-update.yml: +.PHONY: dev-app-update-file +dev-app-update-file: cp ./dev-app-update-$(OPENTRONS_PROJECT).yml ./dev-app-update.yml .PHONY: dev dev: export NODE_ENV := development dev: export OPENTRONS_PROJECT := $(OPENTRONS_PROJECT) -dev: clean-dev-autoupdate ./dev-app-update.yml +dev: dev-app-update-file vite build $(electron) diff --git a/app-shell/build/release-notes.md b/app-shell/build/release-notes.md index 43db1bdfaf8..3234103cd1a 100644 --- a/app-shell/build/release-notes.md +++ b/app-shell/build/release-notes.md @@ -6,6 +6,42 @@ log][]. For a list of currently known issues, please see the [Opentrons issue tr --- +## Opentrons App Changes in 7.3.0 + +Welcome to the v7.3.0 release of the Opentrons App! This release adds support for Python protocols with runtime parameters, letting you change the behavior of a protocol each time you run it. + +Note: After updating, the app will prompt you to reanalyze all previously imported protocols. This is a one-time step and should not affect protocol behavior. + +### New Features + +Runtime Parameters + +- Available runtime parameters are shown on the protocol details screen. +- Both the Opentrons App and touchscreen let you enter new parameter values during run setup. +- The app highlights changed parameter values so you can confirm them before starting the run. +- The run preview (before the run) and run log (after the run) reflect changes to steps based on your chosen parameter values. + +Modules in Deck Configuration + +- You can now specify what slots modules occupy on Flex in deck configuration. +- When moving, Flex will avoid modules specified in deck configuration but not loaded in the protocol. +- Deck configuration must be compatible with the protocol's requirements before you start a run. + +### Improved Features + +- Lists of robots are now sorted alphabetically. + +### Removals + +- Removed the "Use older protocol analysis method" advanced setting for OT-2. If you need this type of analysis, use `opentrons_simulate` on the command line. + +### Bug Fixes + +- All run log steps now appear in the same font size. +- The app now properly sends custom labware definitions, along with the corresponding Python protocol, to Flex robots connected via USB. + +--- + ## Opentrons App Changes in 7.2.2 Welcome to the v7.2.2 release of the Opentrons App! diff --git a/app-shell/dev-app-update-robot-stack.yml b/app-shell/dev-app-update-robot-stack.yml index 9edb1ccde11..0561f4592d7 100644 --- a/app-shell/dev-app-update-robot-stack.yml +++ b/app-shell/dev-app-update-robot-stack.yml @@ -1,3 +1,3 @@ provider: generic -bucket: https://builds.opentrons.com/app/ +url: https://builds.opentrons.com/app/ channel: latest diff --git a/app-shell/src/main.ts b/app-shell/src/main.ts index 75f301fa718..1f44b0607b9 100644 --- a/app-shell/src/main.ts +++ b/app-shell/src/main.ts @@ -4,7 +4,6 @@ import electronDebug from 'electron-debug' import dns from 'dns' import contextMenu from 'electron-context-menu' import * as electronDevtoolsInstaller from 'electron-devtools-installer' -import { webusb } from 'usb' import { createUi, registerReloadUi } from './ui' import { initializeMenu } from './menu' @@ -18,7 +17,6 @@ import { registerSystemInfo } from './system-info' import { registerProtocolStorage } from './protocol-storage' import { getConfig, getStore, getOverrides, registerConfig } from './config' import { registerUsb } from './usb' -import { createUsbDeviceMonitor } from './system-info/usb-devices' import { registerNotify, closeAllNotifyConnections } from './notifications' import type { BrowserWindow } from 'electron' @@ -57,8 +55,6 @@ if (config.devtools) app.once('ready', installDevtools) app.once('window-all-closed', () => { log.debug('all windows closed, quitting the app') - webusb.removeEventListener('connect', () => createUsbDeviceMonitor()) - webusb.removeEventListener('disconnect', () => createUsbDeviceMonitor()) app.quit() closeAllNotifyConnections() .then(() => { @@ -77,8 +73,6 @@ function startUp(): void { log.error('Uncaught Promise rejection: ', { reason }) ) - webusb.addEventListener('connect', () => createUsbDeviceMonitor()) - webusb.addEventListener('disconnect', () => createUsbDeviceMonitor()) mainWindow = createUi() rendererLogger = createRendererLogger() diff --git a/app-testing/.gitignore b/app-testing/.gitignore index 90e4fc52e04..6ae4921e11a 100644 --- a/app-testing/.gitignore +++ b/app-testing/.gitignore @@ -1,5 +1,5 @@ .env results analysis_results/*.json -files/generated_protocols/* -!files/generated_protocols/.keepme +files/protocols/generated_protocols/* +!files/protocols/generated_protocols/.keepme diff --git a/app-testing/automation/data/protocol_registry.py b/app-testing/automation/data/protocol_registry.py index e3229168ae7..d22bd1620cc 100644 --- a/app-testing/automation/data/protocol_registry.py +++ b/app-testing/automation/data/protocol_registry.py @@ -1,4 +1,5 @@ import os +from pathlib import Path from typing import Optional from rich.console import Console @@ -42,21 +43,42 @@ def all_defined_protocols_with_overrides(self) -> list[ProtocolWithOverrides]: return [getattr(self.protocols_with_overrides, prop) for prop in dir(self.protocols_with_overrides) if "__" not in prop] +def all_stems() -> set[str]: + dir_path = Path(Path(__file__).resolve().parent.parent.parent, os.getenv("FILES_FOLDER", "files"), "protocols") + file_stems = {file.stem for file in dir_path.glob("*.py")} + return file_stems + + def main() -> None: console = Console() protocol_registry = ProtocolRegistry() console.print("protocols for APP_ANALYSIS_TEST_PROTOCOLS") - console.print(Panel('Formatted for .env APP_ANALYSIS_TEST_PROTOCOLS="')) - sorted_stems = sorted([p.file_stem for p in protocol_registry.all_defined_protocols()]) + console.print(Panel("Formatted for .env")) + regular_stems = sorted([p.file_stem for p in protocol_registry.all_defined_protocols()]) console.print('APP_ANALYSIS_TEST_PROTOCOLS="') - console.print(",\n".join(sorted_stems)) + console.print(",\n".join(regular_stems)) console.print('"') - console.print(Panel('Formatted for .env APP_ANALYSIS_TEST_PROTOCOLS_WITH_OVERRIDES="')) + override_stems = sorted([p.file_stem for p in protocol_registry.all_defined_protocols_with_overrides()]) console.print('APP_ANALYSIS_TEST_PROTOCOLS_WITH_OVERRIDES="') - sorted_stems = sorted([p.file_stem for p in protocol_registry.all_defined_protocols_with_overrides()]) - console.print(",\n".join(sorted_stems)) + console.print(",\n".join(override_stems)) console.print('"') + all_files = all_stems() + filtered_stems = {stem for stem in all_files if "overrides" not in stem.lower()} + found_override_stems = {stem for stem in all_files if "overrides" in stem.lower()} + # Finding and displaying differences + differences = filtered_stems - set(regular_stems) + if differences: + console.print(f"Stems in actual files not in mapping: {differences}") + else: + console.print("No differences between files and mapping.") + + differences = found_override_stems - set(override_stems) + if differences: + console.print(f"Override Stems in actual files not in mapping: {differences}") + else: + console.print("No differences between actual override protocols and the mapping.") + if __name__ == "__main__": main() diff --git a/app-testing/automation/data/protocol_with_overrides.py b/app-testing/automation/data/protocol_with_overrides.py index 44af790056c..f1410ac5f32 100644 --- a/app-testing/automation/data/protocol_with_overrides.py +++ b/app-testing/automation/data/protocol_with_overrides.py @@ -28,7 +28,7 @@ def create_protocols(self) -> None: new_file_name = f"{new_file_stem}.{self.file_extension}" # Create the full path for the new file # all generated files live at files/protocols/$GENERATED_PROTOCOLS_FOLDER - new_file_path = Path(self.file_path.parent.parent, GENERATED_PROTOCOLS_FOLDER, new_file_name) + new_file_path = Path(self.file_path.parent, GENERATED_PROTOCOLS_FOLDER, new_file_name) # Prepare the override string to prepend override_string = f'{self.override_variable_name} = "{override}"\n' # Write the new file with the override string prepended diff --git a/app-testing/automation/data/protocols.py b/app-testing/automation/data/protocols.py index b0e712af26d..136dacfe481 100644 --- a/app-testing/automation/data/protocols.py +++ b/app-testing/automation/data/protocols.py @@ -21,15 +21,6 @@ class Protocols: robot_error=False, ) - OT2_S_v6_P20S_P300M_HS_HSCollision: Protocol = Protocol( - file_stem="OT2_S_v6_P20S_P300M_HS_HSCollision", - file_extension="json", - robot="OT2", - app_error=False, - robot_error=False, - description="""This protocol gives an error in PD.8-Channel pipette cannot access labware8-Channel pipettes cannot access labware or tip racks to the left or right of a Heater-Shaker GEN1 module. Move labware to a different slot to access it with an 8-Channel pipette.If you export it anyway there are NOT analysis errors in the app side analysis.TODO on if there are robot side analysis errors but do not expect them?""", # noqa: E501 - ) - OT2_S_v6_P20S_P300M_TransferReTransferLiquid: Protocol = Protocol( file_stem="OT2_S_v6_P20S_P300M_TransferReTransferLiquid", file_extension="json", @@ -299,8 +290,8 @@ class Protocols: robot_error=False, ) - OT2_X_v2_17_P300M_P20S_HS_TC_TM_dispense_changes: Protocol = Protocol( - file_stem="OT2_X_v2_17_P300M_P20S_HS_TC_TM_dispense_changes", + OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes: Protocol = Protocol( + file_stem="OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes", file_extension="py", robot="OT2", app_error=True, @@ -308,32 +299,32 @@ class Protocols: app_analysis_error="ValueError [line 15]: Cannot dispense more than pipette max volume", # noqa: E501 ) - OT2_S_v2_14_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots: Protocol = Protocol( - file_stem="OT2_S_v2_14_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots", + OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots: Protocol = Protocol( + file_stem="OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots", file_extension="py", robot="OT2", app_error=False, robot_error=False, ) - OT2_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots: Protocol = Protocol( - file_stem="OT2_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots", + OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots: Protocol = Protocol( + file_stem="OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots", file_extension="py", robot="OT2", app_error=False, robot_error=False, ) - OT2_X_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots: Protocol = Protocol( - file_stem="OT2_X_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots", + OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots: Protocol = Protocol( + file_stem="OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots", file_extension="py", robot="OT2", app_error=False, robot_error=False, ) - OT2_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots: Protocol = Protocol( - file_stem="OT2_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots", + OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots: Protocol = Protocol( + file_stem="OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots", file_extension="py", robot="OT2", app_error=False, @@ -603,32 +594,24 @@ class Protocols: robot_error=False, ) - Flex_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots: Protocol = Protocol( - file_stem="Flex_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots", - file_extension="py", - robot="Flex", - app_error=False, - robot_error=False, - ) - - Flex_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots: Protocol = Protocol( - file_stem="Flex_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots", + Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots: Protocol = Protocol( + file_stem="Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots", file_extension="py", robot="Flex", app_error=False, robot_error=False, ) - Flex_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots: Protocol = Protocol( - file_stem="Flex_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots", + Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots: Protocol = Protocol( + file_stem="Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots", file_extension="py", robot="Flex", app_error=False, robot_error=False, ) - Flex_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots: Protocol = Protocol( - file_stem="Flex_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots", + Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots: Protocol = Protocol( + file_stem="Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots", file_extension="py", robot="Flex", app_error=False, diff --git a/app-testing/example.env b/app-testing/example.env index 3bddafd75ba..749dddc4cf6 100644 --- a/app-testing/example.env +++ b/app-testing/example.env @@ -18,8 +18,7 @@ TARGET=edge # dynamically generate with make print-protocols APP_ANALYSIS_TEST_PROTOCOLS=" -Flex_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots, -Flex_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots, +Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots, Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichment, Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichmentv4, Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAPrep24x, @@ -30,7 +29,7 @@ Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction, Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_OmegaHDQDNAExtraction, Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtraction, Flex_S_v2_15_P50M_P1000M_KAPALibraryQuantLongv2, -Flex_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots, +Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots, Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules, Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures, Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1, @@ -39,7 +38,7 @@ Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke, Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement, Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn, Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle, -Flex_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots, +Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots, Flex_S_v2_18_NO_PIPETTES_GoldenRTP, Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp, Flex_X_v2_16_NO_PIPETTES_MM_MagneticModuleInFlexProtocol, @@ -65,19 +64,21 @@ OT2_S_v2_12_NO_PIPETTES_Python310SyntaxRobotAnalysisOnlyError, OT2_S_v2_12_P300M_P20S_FailOnRun, OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3, OT2_S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release, -OT2_S_v2_14_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots, +OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots, OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3, -OT2_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots, +OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots, OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3, OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes, +OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots, OT2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock, OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3, OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume, OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes, OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume, OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting, -OT2_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots, +OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots, OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3, +OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes, OT2_S_v2_18_NO_PIPETTES_GoldenRTP_OT2, OT2_S_v2_18_None_None_duplicateChoiceValue, OT2_S_v2_2_P300S_None_MM1_MM2_EngageMagHeightFromBase, @@ -88,17 +89,14 @@ OT2_S_v3_P300SGen1_None_Gen1PipetteSimple, OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40, OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps, OT2_S_v6_P1000S_None_SimpleTransfer, -OT2_S_v6_P20S_P300M_HS_HSCollision, OT2_S_v6_P20S_P300M_TransferReTransferLiquid, OT2_S_v6_P300M_P20S_HS_Smoke620release, OT2_S_v6_P300M_P20S_MixTransferManyLiquids, OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer, OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError, OT2_X_v2_13_None_None_PythonSyntaxError, -OT2_X_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots, OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1, OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin2, -OT2_X_v2_17_P300M_P20S_HS_TC_TM_dispense_changes, OT2_X_v2_18_None_None_NoRTPdisplay_name, OT2_X_v2_18_None_None_StrRTPwith_unit, OT2_X_v2_18_None_None_duplicateRTPVariableName, @@ -107,7 +105,6 @@ OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests, OT2_X_v6_P20S_None_SimpleTransfer, OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods " - APP_ANALYSIS_TEST_PROTOCOLS_WITH_OVERRIDES=" Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP, Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice, diff --git a/app-testing/files/protocols/Flex_S_v2_14_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots.py b/app-testing/files/protocols/Flex_S_v2_14_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots.py deleted file mode 100644 index 37705eb1695..00000000000 --- a/app-testing/files/protocols/Flex_S_v2_14_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots.py +++ /dev/null @@ -1,14 +0,0 @@ -# Pulled from: https://github.com/Opentrons/opentrons/pull/14491 - - -requirements = { - "robotType": "Flex", - "apiLevel": "2.14", -} - - -def run(protocol): - thermocycler = protocol.load_module("thermocycler module gen2") - - assert protocol.loaded_modules == {"B1": thermocycler} - assert protocol.deck["A1"] == thermocycler diff --git a/app-testing/files/generated_protocols/.keepme b/app-testing/files/protocols/generated_protocols/.keepme similarity index 100% rename from app-testing/files/generated_protocols/.keepme rename to app-testing/files/protocols/generated_protocols/.keepme diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5887e734b5][OT2_P10S_P300M_TC1_TM_MM_2_11_Swift].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[004ebb2b82][OT2_S_v2_11_P10S_P300M_MM_TC1_TM_Swift].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5887e734b5][OT2_P10S_P300M_TC1_TM_MM_2_11_Swift].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[004ebb2b82][OT2_S_v2_11_P10S_P300M_MM_TC1_TM_Swift].json index 4895a857732..3417b861aee 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5887e734b5][OT2_P10S_P300M_TC1_TM_MM_2_11_Swift].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[004ebb2b82][OT2_S_v2_11_P10S_P300M_MM_TC1_TM_Swift].json @@ -14171,7 +14171,7 @@ "errors": [], "files": [ { - "name": "OT2_P10S_P300M_TC1_TM_MM_2_11_Swift.py", + "name": "OT2_S_v2_11_P10S_P300M_MM_TC1_TM_Swift.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0f71566d05][OT2_P20S_None_2_7_Walkthrough].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[011481812b][OT2_S_v2_7_P20S_None_Walkthrough].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0f71566d05][OT2_P20S_None_2_7_Walkthrough].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[011481812b][OT2_S_v2_7_P20S_None_Walkthrough].json index 81399f2c81c..00b66fb4ffe 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0f71566d05][OT2_P20S_None_2_7_Walkthrough].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[011481812b][OT2_S_v2_7_P20S_None_Walkthrough].json @@ -4256,7 +4256,7 @@ "errors": [], "files": [ { - "name": "OT2_P20S_None_2_7_Walkthrough.py", + "name": "OT2_S_v2_7_P20S_None_Walkthrough.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01dac3953][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoFixtures].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01dac3953][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoFixtures].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json index f478b321c65..c8790ada894 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01dac3953][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoFixtures].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0190369ce5][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures].json @@ -10424,7 +10424,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoFixtures.py", + "name": "Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1NoFixtures.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aaab7be350][OT2_P300M_P20S_2_16_aspirateDispenseMix0Volume].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aaab7be350][OT2_P300M_P20S_2_16_aspirateDispenseMix0Volume].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json index da67ad1f73c..e9ad117dd38 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[aaab7be350][OT2_P300M_P20S_2_16_aspirateDispenseMix0Volume].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0256665840][OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume].json @@ -2775,7 +2775,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_2_16_aspirateDispenseMix0Volume.py", + "name": "OT2_S_v2_16_P300M_P20S_aspirateDispenseMix0Volume.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cf3e610e54][OT2_P300M_P20S_TC_HS_TM_2_15_dispense_changes].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cf3e610e54][OT2_P300M_P20S_TC_HS_TM_2_15_dispense_changes].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json index 77bc98f5457..ab7e1ecff2e 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cf3e610e54][OT2_P300M_P20S_TC_HS_TM_2_15_dispense_changes].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[041ad55e7b][OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes].json @@ -2965,7 +2965,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_TC_HS_TM_2_15_dispense_changes.py", + "name": "OT2_S_v2_15_P300M_P20S_HS_TC_TM_dispense_changes.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8d6b8b90fd][OT2_None_None_TC_2_14_VerifyThermocyclerLoadedSlots].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09ba51132a][OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json similarity index 98% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8d6b8b90fd][OT2_None_None_TC_2_14_VerifyThermocyclerLoadedSlots].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09ba51132a][OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json index 7184a2d4598..73d929454d4 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8d6b8b90fd][OT2_None_None_TC_2_14_VerifyThermocyclerLoadedSlots].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[09ba51132a][OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json @@ -127,7 +127,7 @@ "errors": [], "files": [ { - "name": "OT2_None_None_TC_2_14_VerifyThermocyclerLoadedSlots.py", + "name": "OT2_S_v2_14_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a17df24cf][v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a17df24cf][v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json deleted file mode 100644 index 609202e05e8..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a17df24cf][v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterValueError [line 36]: Parameter must be set to one of the allowed values of {160.0, 100.0, 200.0}.", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be set to one of the allowed values of {160.0, 100.0, 200.0}.", - "errorCode": "4000", - "errorInfo": { - "args": "('Parameter must be set to one of the allowed values of {160.0, 100.0, 200.0}.',)", - "class": "ParameterValueError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices.py\", line 36, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 91, in add_float\n parameter = parameter_definition.create_float_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 202, in create_float_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 95, in value\n raise ParameterValueError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "default choice does not match a choice" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0ac062e151][OT2_P20S_P300M_HS_6_1_HS_WithCollision_Error].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0ac062e151][OT2_P20S_P300M_HS_6_1_HS_WithCollision_Error].json deleted file mode 100644 index 5667321899b..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0ac062e151][OT2_P20S_P300M_HS_6_1_HS_WithCollision_Error].json +++ /dev/null @@ -1,5336 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "loadPipette", - "notes": [], - "params": { - "mount": "left", - "pipetteName": "p300_single_gen2" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "loadPipette", - "notes": [], - "params": { - "mount": "right", - "pipetteName": "p300_multi_gen2" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "loadModule", - "notes": [], - "params": { - "location": { - "slotName": "1" - }, - "model": "heaterShakerModuleV1" - }, - "result": { - "definition": { - "calibrationPoint": { - "x": 12.0, - "y": 8.75, - "z": 68.275 - }, - "compatibleWith": [], - "dimensions": { - "bareOverallHeight": 82.0, - "overLabwareHeight": 0.0 - }, - "displayName": "Heater-Shaker Module GEN1", - "gripperOffsets": { - "default": { - "dropOffset": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "pickUpOffset": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - } - } - }, - "labwareOffset": { - "x": -0.125, - "y": 1.125, - "z": 68.275 - }, - "model": "heaterShakerModuleV1", - "moduleType": "heaterShakerModuleType", - "otSharedSchema": "module/schemas/2", - "quirks": [], - "slotTransforms": { - "ot2_short_trash": { - "3": { - "labwareOffset": [ - [ - -1, - 0, - 0, - 0 - ], - [ - -1, - 0, - 0, - 0 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ] - ] - }, - "6": { - "labwareOffset": [ - [ - -1, - 0, - 0, - 0 - ], - [ - -1, - 0, - 0, - 0 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ] - ] - }, - "9": { - "labwareOffset": [ - [ - -1, - 0, - 0, - 0 - ], - [ - -1, - 0, - 0, - 0 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ] - ] - } - }, - "ot2_standard": { - "3": { - "labwareOffset": [ - [ - -1, - 0, - 0, - 0 - ], - [ - -1, - 0, - 0, - 0 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ] - ] - }, - "6": { - "labwareOffset": [ - [ - -1, - 0, - 0, - 0 - ], - [ - -1, - 0, - 0, - 0 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ] - ] - }, - "9": { - "labwareOffset": [ - [ - -1, - 0, - 0, - 0 - ], - [ - -1, - 0, - 0, - 0 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ] - ] - } - }, - "ot3_standard": { - "A1": { - "labwareOffset": [ - [ - -49.325, - 0, - 0, - 1 - ], - [ - -1.125, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0.125, - 1 - ] - ] - }, - "A3": { - "labwareOffset": [ - [ - -49.325, - 0, - 0, - 1 - ], - [ - -1.125, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0.125, - 1 - ] - ] - }, - "B1": { - "labwareOffset": [ - [ - -49.325, - 0, - 0, - 1 - ], - [ - -1.125, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0.125, - 1 - ] - ] - }, - "B3": { - "labwareOffset": [ - [ - -49.325, - 0, - 0, - 1 - ], - [ - -1.125, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0.125, - 1 - ] - ] - }, - "C1": { - "labwareOffset": [ - [ - -49.325, - 0, - 0, - 1 - ], - [ - -1.125, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0.125, - 1 - ] - ] - }, - "C3": { - "labwareOffset": [ - [ - -49.325, - 0, - 0, - 1 - ], - [ - -1.125, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0.125, - 1 - ] - ] - }, - "D1": { - "labwareOffset": [ - [ - -49.325, - 0, - 0, - 1 - ], - [ - -1.125, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0.125, - 1 - ] - ] - }, - "D3": { - "labwareOffset": [ - [ - -49.325, - 0, - 0, - 1 - ], - [ - -1.125, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0, - 1 - ], - [ - 0, - 0, - 0.125, - 1 - ] - ] - } - } - } - }, - "model": "heaterShakerModuleV1" - }, - "status": "succeeded" - }, - { - "commandType": "loadLabware", - "notes": [], - "params": { - "displayName": "Opentrons 96 Tip Rack 300 µL", - "loadName": "opentrons_96_tiprack_300ul", - "location": { - "slotName": "2" - }, - "namespace": "opentrons", - "version": 1 - }, - "result": { - "definition": { - "allowedRoles": [], - "brand": { - "brand": "Opentrons", - "brandId": [], - "links": [ - "https://shop.opentrons.com/collections/opentrons-tips/products/opentrons-300ul-tips" - ] - }, - "cornerOffsetFromSlot": { - "x": 0, - "y": 0, - "z": 0 - }, - "dimensions": { - "xDimension": 127.76, - "yDimension": 85.48, - "zDimension": 64.49 - }, - "gripperOffsets": {}, - "groups": [ - { - "metadata": {}, - "wells": [ - "A1", - "A10", - "A11", - "A12", - "A2", - "A3", - "A4", - "A5", - "A6", - "A7", - "A8", - "A9", - "B1", - "B10", - "B11", - "B12", - "B2", - "B3", - "B4", - "B5", - "B6", - "B7", - "B8", - "B9", - "C1", - "C10", - "C11", - "C12", - "C2", - "C3", - "C4", - "C5", - "C6", - "C7", - "C8", - "C9", - "D1", - "D10", - "D11", - "D12", - "D2", - "D3", - "D4", - "D5", - "D6", - "D7", - "D8", - "D9", - "E1", - "E10", - "E11", - "E12", - "E2", - "E3", - "E4", - "E5", - "E6", - "E7", - "E8", - "E9", - "F1", - "F10", - "F11", - "F12", - "F2", - "F3", - "F4", - "F5", - "F6", - "F7", - "F8", - "F9", - "G1", - "G10", - "G11", - "G12", - "G2", - "G3", - "G4", - "G5", - "G6", - "G7", - "G8", - "G9", - "H1", - "H10", - "H11", - "H12", - "H2", - "H3", - "H4", - "H5", - "H6", - "H7", - "H8", - "H9" - ] - } - ], - "metadata": { - "displayCategory": "tipRack", - "displayName": "Opentrons 96 Tip Rack 300 µL", - "displayVolumeUnits": "µL", - "tags": [] - }, - "namespace": "opentrons", - "ordering": [ - [ - "A1", - "B1", - "C1", - "D1", - "E1", - "F1", - "G1", - "H1" - ], - [ - "A10", - "B10", - "C10", - "D10", - "E10", - "F10", - "G10", - "H10" - ], - [ - "A11", - "B11", - "C11", - "D11", - "E11", - "F11", - "G11", - "H11" - ], - [ - "A12", - "B12", - "C12", - "D12", - "E12", - "F12", - "G12", - "H12" - ], - [ - "A2", - "B2", - "C2", - "D2", - "E2", - "F2", - "G2", - "H2" - ], - [ - "A3", - "B3", - "C3", - "D3", - "E3", - "F3", - "G3", - "H3" - ], - [ - "A4", - "B4", - "C4", - "D4", - "E4", - "F4", - "G4", - "H4" - ], - [ - "A5", - "B5", - "C5", - "D5", - "E5", - "F5", - "G5", - "H5" - ], - [ - "A6", - "B6", - "C6", - "D6", - "E6", - "F6", - "G6", - "H6" - ], - [ - "A7", - "B7", - "C7", - "D7", - "E7", - "F7", - "G7", - "H7" - ], - [ - "A8", - "B8", - "C8", - "D8", - "E8", - "F8", - "G8", - "H8" - ], - [ - "A9", - "B9", - "C9", - "D9", - "E9", - "F9", - "G9", - "H9" - ] - ], - "parameters": { - "format": "96Standard", - "isMagneticModuleCompatible": false, - "isTiprack": true, - "loadName": "opentrons_96_tiprack_300ul", - "tipLength": 59.3, - "tipOverlap": 7.47 - }, - "schemaVersion": 2, - "stackingOffsetWithLabware": {}, - "stackingOffsetWithModule": {}, - "version": 1, - "wells": { - "A1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 74.24, - "z": 5.39 - }, - "A10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 74.24, - "z": 5.39 - }, - "A11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 74.24, - "z": 5.39 - }, - "A12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 74.24, - "z": 5.39 - }, - "A2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 74.24, - "z": 5.39 - }, - "A3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 74.24, - "z": 5.39 - }, - "A4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 74.24, - "z": 5.39 - }, - "A5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 74.24, - "z": 5.39 - }, - "A6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 74.24, - "z": 5.39 - }, - "A7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 74.24, - "z": 5.39 - }, - "A8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 74.24, - "z": 5.39 - }, - "A9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 74.24, - "z": 5.39 - }, - "B1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 65.24, - "z": 5.39 - }, - "B10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 65.24, - "z": 5.39 - }, - "B11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 65.24, - "z": 5.39 - }, - "B12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 65.24, - "z": 5.39 - }, - "B2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 65.24, - "z": 5.39 - }, - "B3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 65.24, - "z": 5.39 - }, - "B4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 65.24, - "z": 5.39 - }, - "B5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 65.24, - "z": 5.39 - }, - "B6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 65.24, - "z": 5.39 - }, - "B7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 65.24, - "z": 5.39 - }, - "B8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 65.24, - "z": 5.39 - }, - "B9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 65.24, - "z": 5.39 - }, - "C1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 56.24, - "z": 5.39 - }, - "C10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 56.24, - "z": 5.39 - }, - "C11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 56.24, - "z": 5.39 - }, - "C12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 56.24, - "z": 5.39 - }, - "C2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 56.24, - "z": 5.39 - }, - "C3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 56.24, - "z": 5.39 - }, - "C4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 56.24, - "z": 5.39 - }, - "C5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 56.24, - "z": 5.39 - }, - "C6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 56.24, - "z": 5.39 - }, - "C7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 56.24, - "z": 5.39 - }, - "C8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 56.24, - "z": 5.39 - }, - "C9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 56.24, - "z": 5.39 - }, - "D1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 47.24, - "z": 5.39 - }, - "D10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 47.24, - "z": 5.39 - }, - "D11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 47.24, - "z": 5.39 - }, - "D12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 47.24, - "z": 5.39 - }, - "D2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 47.24, - "z": 5.39 - }, - "D3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 47.24, - "z": 5.39 - }, - "D4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 47.24, - "z": 5.39 - }, - "D5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 47.24, - "z": 5.39 - }, - "D6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 47.24, - "z": 5.39 - }, - "D7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 47.24, - "z": 5.39 - }, - "D8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 47.24, - "z": 5.39 - }, - "D9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 47.24, - "z": 5.39 - }, - "E1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 38.24, - "z": 5.39 - }, - "E10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 38.24, - "z": 5.39 - }, - "E11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 38.24, - "z": 5.39 - }, - "E12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 38.24, - "z": 5.39 - }, - "E2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 38.24, - "z": 5.39 - }, - "E3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 38.24, - "z": 5.39 - }, - "E4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 38.24, - "z": 5.39 - }, - "E5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 38.24, - "z": 5.39 - }, - "E6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 38.24, - "z": 5.39 - }, - "E7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 38.24, - "z": 5.39 - }, - "E8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 38.24, - "z": 5.39 - }, - "E9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 38.24, - "z": 5.39 - }, - "F1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 29.24, - "z": 5.39 - }, - "F10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 29.24, - "z": 5.39 - }, - "F11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 29.24, - "z": 5.39 - }, - "F12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 29.24, - "z": 5.39 - }, - "F2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 29.24, - "z": 5.39 - }, - "F3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 29.24, - "z": 5.39 - }, - "F4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 29.24, - "z": 5.39 - }, - "F5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 29.24, - "z": 5.39 - }, - "F6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 29.24, - "z": 5.39 - }, - "F7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 29.24, - "z": 5.39 - }, - "F8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 29.24, - "z": 5.39 - }, - "F9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 29.24, - "z": 5.39 - }, - "G1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 20.24, - "z": 5.39 - }, - "G10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 20.24, - "z": 5.39 - }, - "G11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 20.24, - "z": 5.39 - }, - "G12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 20.24, - "z": 5.39 - }, - "G2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 20.24, - "z": 5.39 - }, - "G3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 20.24, - "z": 5.39 - }, - "G4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 20.24, - "z": 5.39 - }, - "G5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 20.24, - "z": 5.39 - }, - "G6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 20.24, - "z": 5.39 - }, - "G7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 20.24, - "z": 5.39 - }, - "G8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 20.24, - "z": 5.39 - }, - "G9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 20.24, - "z": 5.39 - }, - "H1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 11.24, - "z": 5.39 - }, - "H10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 11.24, - "z": 5.39 - }, - "H11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 11.24, - "z": 5.39 - }, - "H12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 11.24, - "z": 5.39 - }, - "H2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 11.24, - "z": 5.39 - }, - "H3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 11.24, - "z": 5.39 - }, - "H4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 11.24, - "z": 5.39 - }, - "H5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 11.24, - "z": 5.39 - }, - "H6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 11.24, - "z": 5.39 - }, - "H7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 11.24, - "z": 5.39 - }, - "H8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 11.24, - "z": 5.39 - }, - "H9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 11.24, - "z": 5.39 - } - } - } - }, - "status": "succeeded" - }, - { - "commandType": "loadLabware", - "notes": [], - "params": { - "displayName": "H/S", - "loadName": "opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep", - "location": {}, - "namespace": "opentrons", - "version": 1 - }, - "result": { - "definition": { - "allowedRoles": [], - "brand": { - "brand": "Opentrons", - "brandId": [], - "links": [] - }, - "cornerOffsetFromSlot": { - "x": 0, - "y": 0, - "z": 0 - }, - "dimensions": { - "xDimension": 127.6, - "yDimension": 85.3, - "zDimension": 42.25 - }, - "gripperOffsets": {}, - "groups": [ - { - "brand": { - "brand": "NEST", - "brandId": [ - "503001", - "503501" - ], - "links": [ - "https://www.nest-biotech.com/deep-well-plates/59253726.html" - ] - }, - "metadata": { - "displayCategory": "wellPlate", - "displayName": "NEST 96 Deepwell Plate 2mL", - "wellBottomShape": "v" - }, - "wells": [ - "A1", - "A10", - "A11", - "A12", - "A2", - "A3", - "A4", - "A5", - "A6", - "A7", - "A8", - "A9", - "B1", - "B10", - "B11", - "B12", - "B2", - "B3", - "B4", - "B5", - "B6", - "B7", - "B8", - "B9", - "C1", - "C10", - "C11", - "C12", - "C2", - "C3", - "C4", - "C5", - "C6", - "C7", - "C8", - "C9", - "D1", - "D10", - "D11", - "D12", - "D2", - "D3", - "D4", - "D5", - "D6", - "D7", - "D8", - "D9", - "E1", - "E10", - "E11", - "E12", - "E2", - "E3", - "E4", - "E5", - "E6", - "E7", - "E8", - "E9", - "F1", - "F10", - "F11", - "F12", - "F2", - "F3", - "F4", - "F5", - "F6", - "F7", - "F8", - "F9", - "G1", - "G10", - "G11", - "G12", - "G2", - "G3", - "G4", - "G5", - "G6", - "G7", - "G8", - "G9", - "H1", - "H10", - "H11", - "H12", - "H2", - "H3", - "H4", - "H5", - "H6", - "H7", - "H8", - "H9" - ] - } - ], - "metadata": { - "displayCategory": "aluminumBlock", - "displayName": "Opentrons 96 Deep Well Adapter with NEST Deep Well Plate 2 mL", - "displayVolumeUnits": "µL", - "tags": [] - }, - "namespace": "opentrons", - "ordering": [ - [ - "A1", - "B1", - "C1", - "D1", - "E1", - "F1", - "G1", - "H1" - ], - [ - "A10", - "B10", - "C10", - "D10", - "E10", - "F10", - "G10", - "H10" - ], - [ - "A11", - "B11", - "C11", - "D11", - "E11", - "F11", - "G11", - "H11" - ], - [ - "A12", - "B12", - "C12", - "D12", - "E12", - "F12", - "G12", - "H12" - ], - [ - "A2", - "B2", - "C2", - "D2", - "E2", - "F2", - "G2", - "H2" - ], - [ - "A3", - "B3", - "C3", - "D3", - "E3", - "F3", - "G3", - "H3" - ], - [ - "A4", - "B4", - "C4", - "D4", - "E4", - "F4", - "G4", - "H4" - ], - [ - "A5", - "B5", - "C5", - "D5", - "E5", - "F5", - "G5", - "H5" - ], - [ - "A6", - "B6", - "C6", - "D6", - "E6", - "F6", - "G6", - "H6" - ], - [ - "A7", - "B7", - "C7", - "D7", - "E7", - "F7", - "G7", - "H7" - ], - [ - "A8", - "B8", - "C8", - "D8", - "E8", - "F8", - "G8", - "H8" - ], - [ - "A9", - "B9", - "C9", - "D9", - "E9", - "F9", - "G9", - "H9" - ] - ], - "parameters": { - "format": "96Standard", - "isMagneticModuleCompatible": false, - "isTiprack": false, - "loadName": "opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep", - "quirks": [] - }, - "schemaVersion": 2, - "stackingOffsetWithLabware": {}, - "stackingOffsetWithModule": {}, - "version": 1, - "wells": { - "A1": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 14.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A10": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 95.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A11": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 104.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A12": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 113.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A2": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 23.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A3": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 32.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A4": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 41.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A5": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 50.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A6": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 59.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A7": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 68.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A8": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 77.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "A9": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 86.3, - "xDimension": 8.2, - "y": 74.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B1": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 14.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B10": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 95.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B11": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 104.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B12": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 113.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B2": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 23.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B3": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 32.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B4": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 41.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B5": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 50.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B6": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 59.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B7": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 68.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B8": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 77.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "B9": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 86.3, - "xDimension": 8.2, - "y": 65.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C1": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 14.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C10": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 95.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C11": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 104.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C12": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 113.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C2": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 23.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C3": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 32.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C4": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 41.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C5": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 50.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C6": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 59.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C7": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 68.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C8": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 77.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "C9": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 86.3, - "xDimension": 8.2, - "y": 56.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D1": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 14.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D10": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 95.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D11": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 104.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D12": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 113.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D2": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 23.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D3": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 32.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D4": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 41.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D5": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 50.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D6": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 59.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D7": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 68.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D8": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 77.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "D9": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 86.3, - "xDimension": 8.2, - "y": 47.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E1": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 14.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E10": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 95.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E11": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 104.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E12": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 113.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E2": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 23.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E3": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 32.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E4": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 41.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E5": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 50.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E6": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 59.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E7": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 68.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E8": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 77.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "E9": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 86.3, - "xDimension": 8.2, - "y": 38.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F1": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 14.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F10": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 95.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F11": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 104.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F12": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 113.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F2": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 23.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F3": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 32.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F4": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 41.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F5": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 50.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F6": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 59.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F7": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 68.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F8": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 77.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "F9": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 86.3, - "xDimension": 8.2, - "y": 29.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G1": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 14.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G10": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 95.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G11": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 104.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G12": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 113.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G2": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 23.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G3": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 32.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G4": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 41.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G5": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 50.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G6": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 59.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G7": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 68.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G8": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 77.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "G9": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 86.3, - "xDimension": 8.2, - "y": 20.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H1": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 14.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H10": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 95.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H11": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 104.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H12": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 113.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H2": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 23.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H3": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 32.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H4": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 41.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H5": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 50.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H6": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 59.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H7": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 68.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H8": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 77.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - }, - "H9": { - "depth": 38, - "shape": "rectangular", - "totalLiquidVolume": 2000, - "x": 86.3, - "xDimension": 8.2, - "y": 11.15, - "yDimension": 8.2, - "z": 4.25 - } - } - } - }, - "status": "succeeded" - }, - { - "commandType": "loadLabware", - "notes": [], - "params": { - "displayName": "Opentrons 96 Tip Rack 300 µL (1)", - "loadName": "opentrons_96_tiprack_300ul", - "location": { - "slotName": "4" - }, - "namespace": "opentrons", - "version": 1 - }, - "result": { - "definition": { - "allowedRoles": [], - "brand": { - "brand": "Opentrons", - "brandId": [], - "links": [ - "https://shop.opentrons.com/collections/opentrons-tips/products/opentrons-300ul-tips" - ] - }, - "cornerOffsetFromSlot": { - "x": 0, - "y": 0, - "z": 0 - }, - "dimensions": { - "xDimension": 127.76, - "yDimension": 85.48, - "zDimension": 64.49 - }, - "gripperOffsets": {}, - "groups": [ - { - "metadata": {}, - "wells": [ - "A1", - "A10", - "A11", - "A12", - "A2", - "A3", - "A4", - "A5", - "A6", - "A7", - "A8", - "A9", - "B1", - "B10", - "B11", - "B12", - "B2", - "B3", - "B4", - "B5", - "B6", - "B7", - "B8", - "B9", - "C1", - "C10", - "C11", - "C12", - "C2", - "C3", - "C4", - "C5", - "C6", - "C7", - "C8", - "C9", - "D1", - "D10", - "D11", - "D12", - "D2", - "D3", - "D4", - "D5", - "D6", - "D7", - "D8", - "D9", - "E1", - "E10", - "E11", - "E12", - "E2", - "E3", - "E4", - "E5", - "E6", - "E7", - "E8", - "E9", - "F1", - "F10", - "F11", - "F12", - "F2", - "F3", - "F4", - "F5", - "F6", - "F7", - "F8", - "F9", - "G1", - "G10", - "G11", - "G12", - "G2", - "G3", - "G4", - "G5", - "G6", - "G7", - "G8", - "G9", - "H1", - "H10", - "H11", - "H12", - "H2", - "H3", - "H4", - "H5", - "H6", - "H7", - "H8", - "H9" - ] - } - ], - "metadata": { - "displayCategory": "tipRack", - "displayName": "Opentrons 96 Tip Rack 300 µL", - "displayVolumeUnits": "µL", - "tags": [] - }, - "namespace": "opentrons", - "ordering": [ - [ - "A1", - "B1", - "C1", - "D1", - "E1", - "F1", - "G1", - "H1" - ], - [ - "A10", - "B10", - "C10", - "D10", - "E10", - "F10", - "G10", - "H10" - ], - [ - "A11", - "B11", - "C11", - "D11", - "E11", - "F11", - "G11", - "H11" - ], - [ - "A12", - "B12", - "C12", - "D12", - "E12", - "F12", - "G12", - "H12" - ], - [ - "A2", - "B2", - "C2", - "D2", - "E2", - "F2", - "G2", - "H2" - ], - [ - "A3", - "B3", - "C3", - "D3", - "E3", - "F3", - "G3", - "H3" - ], - [ - "A4", - "B4", - "C4", - "D4", - "E4", - "F4", - "G4", - "H4" - ], - [ - "A5", - "B5", - "C5", - "D5", - "E5", - "F5", - "G5", - "H5" - ], - [ - "A6", - "B6", - "C6", - "D6", - "E6", - "F6", - "G6", - "H6" - ], - [ - "A7", - "B7", - "C7", - "D7", - "E7", - "F7", - "G7", - "H7" - ], - [ - "A8", - "B8", - "C8", - "D8", - "E8", - "F8", - "G8", - "H8" - ], - [ - "A9", - "B9", - "C9", - "D9", - "E9", - "F9", - "G9", - "H9" - ] - ], - "parameters": { - "format": "96Standard", - "isMagneticModuleCompatible": false, - "isTiprack": true, - "loadName": "opentrons_96_tiprack_300ul", - "tipLength": 59.3, - "tipOverlap": 7.47 - }, - "schemaVersion": 2, - "stackingOffsetWithLabware": {}, - "stackingOffsetWithModule": {}, - "version": 1, - "wells": { - "A1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 74.24, - "z": 5.39 - }, - "A10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 74.24, - "z": 5.39 - }, - "A11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 74.24, - "z": 5.39 - }, - "A12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 74.24, - "z": 5.39 - }, - "A2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 74.24, - "z": 5.39 - }, - "A3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 74.24, - "z": 5.39 - }, - "A4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 74.24, - "z": 5.39 - }, - "A5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 74.24, - "z": 5.39 - }, - "A6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 74.24, - "z": 5.39 - }, - "A7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 74.24, - "z": 5.39 - }, - "A8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 74.24, - "z": 5.39 - }, - "A9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 74.24, - "z": 5.39 - }, - "B1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 65.24, - "z": 5.39 - }, - "B10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 65.24, - "z": 5.39 - }, - "B11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 65.24, - "z": 5.39 - }, - "B12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 65.24, - "z": 5.39 - }, - "B2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 65.24, - "z": 5.39 - }, - "B3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 65.24, - "z": 5.39 - }, - "B4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 65.24, - "z": 5.39 - }, - "B5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 65.24, - "z": 5.39 - }, - "B6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 65.24, - "z": 5.39 - }, - "B7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 65.24, - "z": 5.39 - }, - "B8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 65.24, - "z": 5.39 - }, - "B9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 65.24, - "z": 5.39 - }, - "C1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 56.24, - "z": 5.39 - }, - "C10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 56.24, - "z": 5.39 - }, - "C11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 56.24, - "z": 5.39 - }, - "C12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 56.24, - "z": 5.39 - }, - "C2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 56.24, - "z": 5.39 - }, - "C3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 56.24, - "z": 5.39 - }, - "C4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 56.24, - "z": 5.39 - }, - "C5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 56.24, - "z": 5.39 - }, - "C6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 56.24, - "z": 5.39 - }, - "C7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 56.24, - "z": 5.39 - }, - "C8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 56.24, - "z": 5.39 - }, - "C9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 56.24, - "z": 5.39 - }, - "D1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 47.24, - "z": 5.39 - }, - "D10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 47.24, - "z": 5.39 - }, - "D11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 47.24, - "z": 5.39 - }, - "D12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 47.24, - "z": 5.39 - }, - "D2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 47.24, - "z": 5.39 - }, - "D3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 47.24, - "z": 5.39 - }, - "D4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 47.24, - "z": 5.39 - }, - "D5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 47.24, - "z": 5.39 - }, - "D6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 47.24, - "z": 5.39 - }, - "D7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 47.24, - "z": 5.39 - }, - "D8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 47.24, - "z": 5.39 - }, - "D9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 47.24, - "z": 5.39 - }, - "E1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 38.24, - "z": 5.39 - }, - "E10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 38.24, - "z": 5.39 - }, - "E11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 38.24, - "z": 5.39 - }, - "E12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 38.24, - "z": 5.39 - }, - "E2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 38.24, - "z": 5.39 - }, - "E3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 38.24, - "z": 5.39 - }, - "E4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 38.24, - "z": 5.39 - }, - "E5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 38.24, - "z": 5.39 - }, - "E6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 38.24, - "z": 5.39 - }, - "E7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 38.24, - "z": 5.39 - }, - "E8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 38.24, - "z": 5.39 - }, - "E9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 38.24, - "z": 5.39 - }, - "F1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 29.24, - "z": 5.39 - }, - "F10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 29.24, - "z": 5.39 - }, - "F11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 29.24, - "z": 5.39 - }, - "F12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 29.24, - "z": 5.39 - }, - "F2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 29.24, - "z": 5.39 - }, - "F3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 29.24, - "z": 5.39 - }, - "F4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 29.24, - "z": 5.39 - }, - "F5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 29.24, - "z": 5.39 - }, - "F6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 29.24, - "z": 5.39 - }, - "F7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 29.24, - "z": 5.39 - }, - "F8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 29.24, - "z": 5.39 - }, - "F9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 29.24, - "z": 5.39 - }, - "G1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 20.24, - "z": 5.39 - }, - "G10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 20.24, - "z": 5.39 - }, - "G11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 20.24, - "z": 5.39 - }, - "G12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 20.24, - "z": 5.39 - }, - "G2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 20.24, - "z": 5.39 - }, - "G3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 20.24, - "z": 5.39 - }, - "G4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 20.24, - "z": 5.39 - }, - "G5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 20.24, - "z": 5.39 - }, - "G6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 20.24, - "z": 5.39 - }, - "G7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 20.24, - "z": 5.39 - }, - "G8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 20.24, - "z": 5.39 - }, - "G9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 20.24, - "z": 5.39 - }, - "H1": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 14.38, - "y": 11.24, - "z": 5.39 - }, - "H10": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 95.38, - "y": 11.24, - "z": 5.39 - }, - "H11": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 104.38, - "y": 11.24, - "z": 5.39 - }, - "H12": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 113.38, - "y": 11.24, - "z": 5.39 - }, - "H2": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 23.38, - "y": 11.24, - "z": 5.39 - }, - "H3": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 32.38, - "y": 11.24, - "z": 5.39 - }, - "H4": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 41.38, - "y": 11.24, - "z": 5.39 - }, - "H5": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 50.38, - "y": 11.24, - "z": 5.39 - }, - "H6": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 59.38, - "y": 11.24, - "z": 5.39 - }, - "H7": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 68.38, - "y": 11.24, - "z": 5.39 - }, - "H8": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 77.38, - "y": 11.24, - "z": 5.39 - }, - "H9": { - "depth": 59.3, - "diameter": 5.23, - "shape": "circular", - "totalLiquidVolume": 300, - "x": 86.38, - "y": 11.24, - "z": 5.39 - } - } - } - }, - "status": "succeeded" - }, - { - "commandType": "loadLabware", - "notes": [], - "params": { - "displayName": "1", - "loadName": "armadillo_96_wellplate_200ul_pcr_full_skirt", - "location": { - "slotName": "5" - }, - "namespace": "opentrons", - "version": 1 - }, - "result": { - "definition": { - "allowedRoles": [], - "brand": { - "brand": "Thermo Scientific", - "brandId": [ - "AB2396" - ], - "links": [ - "https://www.fishersci.com/shop/products/armadillo-96-well-pcr-plate-1/AB2396" - ] - }, - "cornerOffsetFromSlot": { - "x": 0, - "y": 0, - "z": 0 - }, - "dimensions": { - "xDimension": 127.76, - "yDimension": 85.48, - "zDimension": 16 - }, - "gripperOffsets": {}, - "groups": [ - { - "metadata": { - "wellBottomShape": "v" - }, - "wells": [ - "A1", - "A10", - "A11", - "A12", - "A2", - "A3", - "A4", - "A5", - "A6", - "A7", - "A8", - "A9", - "B1", - "B10", - "B11", - "B12", - "B2", - "B3", - "B4", - "B5", - "B6", - "B7", - "B8", - "B9", - "C1", - "C10", - "C11", - "C12", - "C2", - "C3", - "C4", - "C5", - "C6", - "C7", - "C8", - "C9", - "D1", - "D10", - "D11", - "D12", - "D2", - "D3", - "D4", - "D5", - "D6", - "D7", - "D8", - "D9", - "E1", - "E10", - "E11", - "E12", - "E2", - "E3", - "E4", - "E5", - "E6", - "E7", - "E8", - "E9", - "F1", - "F10", - "F11", - "F12", - "F2", - "F3", - "F4", - "F5", - "F6", - "F7", - "F8", - "F9", - "G1", - "G10", - "G11", - "G12", - "G2", - "G3", - "G4", - "G5", - "G6", - "G7", - "G8", - "G9", - "H1", - "H10", - "H11", - "H12", - "H2", - "H3", - "H4", - "H5", - "H6", - "H7", - "H8", - "H9" - ] - } - ], - "metadata": { - "displayCategory": "wellPlate", - "displayName": "Armadillo 96 Well Plate 200 µL PCR Full Skirt", - "displayVolumeUnits": "µL", - "tags": [] - }, - "namespace": "opentrons", - "ordering": [ - [ - "A1", - "B1", - "C1", - "D1", - "E1", - "F1", - "G1", - "H1" - ], - [ - "A10", - "B10", - "C10", - "D10", - "E10", - "F10", - "G10", - "H10" - ], - [ - "A11", - "B11", - "C11", - "D11", - "E11", - "F11", - "G11", - "H11" - ], - [ - "A12", - "B12", - "C12", - "D12", - "E12", - "F12", - "G12", - "H12" - ], - [ - "A2", - "B2", - "C2", - "D2", - "E2", - "F2", - "G2", - "H2" - ], - [ - "A3", - "B3", - "C3", - "D3", - "E3", - "F3", - "G3", - "H3" - ], - [ - "A4", - "B4", - "C4", - "D4", - "E4", - "F4", - "G4", - "H4" - ], - [ - "A5", - "B5", - "C5", - "D5", - "E5", - "F5", - "G5", - "H5" - ], - [ - "A6", - "B6", - "C6", - "D6", - "E6", - "F6", - "G6", - "H6" - ], - [ - "A7", - "B7", - "C7", - "D7", - "E7", - "F7", - "G7", - "H7" - ], - [ - "A8", - "B8", - "C8", - "D8", - "E8", - "F8", - "G8", - "H8" - ], - [ - "A9", - "B9", - "C9", - "D9", - "E9", - "F9", - "G9", - "H9" - ] - ], - "parameters": { - "format": "96Standard", - "isMagneticModuleCompatible": true, - "isTiprack": false, - "loadName": "armadillo_96_wellplate_200ul_pcr_full_skirt" - }, - "schemaVersion": 2, - "stackingOffsetWithLabware": {}, - "stackingOffsetWithModule": {}, - "version": 1, - "wells": { - "A1": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 14.38, - "y": 74.24, - "z": 1.05 - }, - "A10": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 95.38, - "y": 74.24, - "z": 1.05 - }, - "A11": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 104.38, - "y": 74.24, - "z": 1.05 - }, - "A12": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 113.38, - "y": 74.24, - "z": 1.05 - }, - "A2": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 23.38, - "y": 74.24, - "z": 1.05 - }, - "A3": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 32.38, - "y": 74.24, - "z": 1.05 - }, - "A4": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 41.38, - "y": 74.24, - "z": 1.05 - }, - "A5": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 50.38, - "y": 74.24, - "z": 1.05 - }, - "A6": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 59.38, - "y": 74.24, - "z": 1.05 - }, - "A7": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 68.38, - "y": 74.24, - "z": 1.05 - }, - "A8": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 77.38, - "y": 74.24, - "z": 1.05 - }, - "A9": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 86.38, - "y": 74.24, - "z": 1.05 - }, - "B1": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 14.38, - "y": 65.24, - "z": 1.05 - }, - "B10": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 95.38, - "y": 65.24, - "z": 1.05 - }, - "B11": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 104.38, - "y": 65.24, - "z": 1.05 - }, - "B12": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 113.38, - "y": 65.24, - "z": 1.05 - }, - "B2": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 23.38, - "y": 65.24, - "z": 1.05 - }, - "B3": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 32.38, - "y": 65.24, - "z": 1.05 - }, - "B4": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 41.38, - "y": 65.24, - "z": 1.05 - }, - "B5": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 50.38, - "y": 65.24, - "z": 1.05 - }, - "B6": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 59.38, - "y": 65.24, - "z": 1.05 - }, - "B7": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 68.38, - "y": 65.24, - "z": 1.05 - }, - "B8": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 77.38, - "y": 65.24, - "z": 1.05 - }, - "B9": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 86.38, - "y": 65.24, - "z": 1.05 - }, - "C1": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 14.38, - "y": 56.24, - "z": 1.05 - }, - "C10": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 95.38, - "y": 56.24, - "z": 1.05 - }, - "C11": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 104.38, - "y": 56.24, - "z": 1.05 - }, - "C12": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 113.38, - "y": 56.24, - "z": 1.05 - }, - "C2": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 23.38, - "y": 56.24, - "z": 1.05 - }, - "C3": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 32.38, - "y": 56.24, - "z": 1.05 - }, - "C4": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 41.38, - "y": 56.24, - "z": 1.05 - }, - "C5": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 50.38, - "y": 56.24, - "z": 1.05 - }, - "C6": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 59.38, - "y": 56.24, - "z": 1.05 - }, - "C7": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 68.38, - "y": 56.24, - "z": 1.05 - }, - "C8": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 77.38, - "y": 56.24, - "z": 1.05 - }, - "C9": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 86.38, - "y": 56.24, - "z": 1.05 - }, - "D1": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 14.38, - "y": 47.24, - "z": 1.05 - }, - "D10": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 95.38, - "y": 47.24, - "z": 1.05 - }, - "D11": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 104.38, - "y": 47.24, - "z": 1.05 - }, - "D12": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 113.38, - "y": 47.24, - "z": 1.05 - }, - "D2": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 23.38, - "y": 47.24, - "z": 1.05 - }, - "D3": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 32.38, - "y": 47.24, - "z": 1.05 - }, - "D4": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 41.38, - "y": 47.24, - "z": 1.05 - }, - "D5": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 50.38, - "y": 47.24, - "z": 1.05 - }, - "D6": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 59.38, - "y": 47.24, - "z": 1.05 - }, - "D7": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 68.38, - "y": 47.24, - "z": 1.05 - }, - "D8": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 77.38, - "y": 47.24, - "z": 1.05 - }, - "D9": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 86.38, - "y": 47.24, - "z": 1.05 - }, - "E1": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 14.38, - "y": 38.24, - "z": 1.05 - }, - "E10": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 95.38, - "y": 38.24, - "z": 1.05 - }, - "E11": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 104.38, - "y": 38.24, - "z": 1.05 - }, - "E12": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 113.38, - "y": 38.24, - "z": 1.05 - }, - "E2": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 23.38, - "y": 38.24, - "z": 1.05 - }, - "E3": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 32.38, - "y": 38.24, - "z": 1.05 - }, - "E4": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 41.38, - "y": 38.24, - "z": 1.05 - }, - "E5": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 50.38, - "y": 38.24, - "z": 1.05 - }, - "E6": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 59.38, - "y": 38.24, - "z": 1.05 - }, - "E7": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 68.38, - "y": 38.24, - "z": 1.05 - }, - "E8": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 77.38, - "y": 38.24, - "z": 1.05 - }, - "E9": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 86.38, - "y": 38.24, - "z": 1.05 - }, - "F1": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 14.38, - "y": 29.24, - "z": 1.05 - }, - "F10": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 95.38, - "y": 29.24, - "z": 1.05 - }, - "F11": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 104.38, - "y": 29.24, - "z": 1.05 - }, - "F12": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 113.38, - "y": 29.24, - "z": 1.05 - }, - "F2": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 23.38, - "y": 29.24, - "z": 1.05 - }, - "F3": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 32.38, - "y": 29.24, - "z": 1.05 - }, - "F4": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 41.38, - "y": 29.24, - "z": 1.05 - }, - "F5": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 50.38, - "y": 29.24, - "z": 1.05 - }, - "F6": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 59.38, - "y": 29.24, - "z": 1.05 - }, - "F7": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 68.38, - "y": 29.24, - "z": 1.05 - }, - "F8": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 77.38, - "y": 29.24, - "z": 1.05 - }, - "F9": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 86.38, - "y": 29.24, - "z": 1.05 - }, - "G1": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 14.38, - "y": 20.24, - "z": 1.05 - }, - "G10": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 95.38, - "y": 20.24, - "z": 1.05 - }, - "G11": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 104.38, - "y": 20.24, - "z": 1.05 - }, - "G12": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 113.38, - "y": 20.24, - "z": 1.05 - }, - "G2": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 23.38, - "y": 20.24, - "z": 1.05 - }, - "G3": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 32.38, - "y": 20.24, - "z": 1.05 - }, - "G4": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 41.38, - "y": 20.24, - "z": 1.05 - }, - "G5": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 50.38, - "y": 20.24, - "z": 1.05 - }, - "G6": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 59.38, - "y": 20.24, - "z": 1.05 - }, - "G7": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 68.38, - "y": 20.24, - "z": 1.05 - }, - "G8": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 77.38, - "y": 20.24, - "z": 1.05 - }, - "G9": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 86.38, - "y": 20.24, - "z": 1.05 - }, - "H1": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 14.38, - "y": 11.24, - "z": 1.05 - }, - "H10": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 95.38, - "y": 11.24, - "z": 1.05 - }, - "H11": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 104.38, - "y": 11.24, - "z": 1.05 - }, - "H12": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 113.38, - "y": 11.24, - "z": 1.05 - }, - "H2": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 23.38, - "y": 11.24, - "z": 1.05 - }, - "H3": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 32.38, - "y": 11.24, - "z": 1.05 - }, - "H4": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 41.38, - "y": 11.24, - "z": 1.05 - }, - "H5": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 50.38, - "y": 11.24, - "z": 1.05 - }, - "H6": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 59.38, - "y": 11.24, - "z": 1.05 - }, - "H7": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 68.38, - "y": 11.24, - "z": 1.05 - }, - "H8": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 77.38, - "y": 11.24, - "z": 1.05 - }, - "H9": { - "depth": 14.95, - "diameter": 5.5, - "shape": "circular", - "totalLiquidVolume": 200, - "x": 86.38, - "y": 11.24, - "z": 1.05 - } - } - } - }, - "status": "succeeded" - }, - { - "commandType": "loadLiquid", - "notes": [], - "params": { - "volumeByWell": { - "A1": 100.0, - "A2": 100.0, - "A3": 100.0, - "B1": 100.0, - "B2": 100.0, - "B3": 100.0, - "C1": 100.0, - "C2": 100.0, - "C3": 100.0, - "D1": 100.0, - "D2": 100.0, - "D3": 100.0, - "E1": 100.0, - "E2": 100.0, - "E3": 100.0, - "F1": 100.0, - "F2": 100.0, - "F3": 100.0, - "G1": 100.0, - "G2": 100.0, - "G3": 100.0, - "H1": 100.0, - "H2": 100.0, - "H3": 100.0 - } - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "heaterShaker/closeLabwareLatch", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "heaterShaker/deactivateHeater", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "heaterShaker/deactivateShaker", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "protocolType": "json", - "schemaVersion": 6 - }, - "errors": [], - "files": [ - { - "name": "OT2_P20S_P300M_HS_6_1_HS_WithCollision_Error.json", - "role": "main" - }, - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - } - ], - "labware": [ - { - "definitionUri": "opentrons/opentrons_1_trash_1100ml_fixed/1", - "loadName": "opentrons_1_trash_1100ml_fixed", - "location": { - "slotName": "12" - } - }, - { - "definitionUri": "opentrons/opentrons_96_tiprack_300ul/1", - "displayName": "Opentrons 96 Tip Rack 300 µL", - "loadName": "opentrons_96_tiprack_300ul", - "location": { - "slotName": "2" - } - }, - { - "definitionUri": "opentrons/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/1", - "displayName": "H/S", - "loadName": "opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep", - "location": {} - }, - { - "definitionUri": "opentrons/opentrons_96_tiprack_300ul/1", - "displayName": "Opentrons 96 Tip Rack 300 µL (1)", - "loadName": "opentrons_96_tiprack_300ul", - "location": { - "slotName": "4" - } - }, - { - "definitionUri": "opentrons/armadillo_96_wellplate_200ul_pcr_full_skirt/1", - "displayName": "1", - "loadName": "armadillo_96_wellplate_200ul_pcr_full_skirt", - "location": { - "slotName": "5" - } - } - ], - "liquids": [ - { - "description": "", - "displayColor": "#b925ff", - "displayName": "Water" - } - ], - "metadata": { - "author": "", - "category": null, - "description": "", - "protocolName": "HS Collision", - "subcategory": null, - "tags": [] - }, - "modules": [ - { - "location": { - "slotName": "1" - }, - "model": "heaterShakerModuleV1" - } - ], - "pipettes": [ - { - "mount": "left", - "pipetteName": "p300_single_gen2" - }, - { - "mount": "right", - "pipetteName": "p300_multi_gen2" - } - ], - "robotType": "OT-2 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0affe60373][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0affe60373][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json index e413eb3c896..79195fd87fe 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0affe60373][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0affe60373][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 2, - "command_output": "Usage: python -m opentrons.cli analyze [OPTIONS] FILES...\nTry 'python -m opentrons.cli analyze --help' for help.\n\nError: Invalid value for 'FILES...': Path '/var/lib/ot/protocols/generated_protocols/Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum.py' does not exist.\n" + "detail": "ParameterDefinitionError [line 104]: Maximum is type 'str', but must be of parameter type 'int'", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterDefinitionError: Maximum is type 'str', but must be of parameter type 'int'", + "errorCode": "4000", + "errorInfo": { + "args": "(\"Maximum is type 'str', but must be of parameter type 'int'\",)", + "class": "ParameterDefinitionError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum.py\", line 104, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 56, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 266, in validate_options\n _validate_min_and_max(minimum, maximum, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 218, in _validate_min_and_max\n raise ParameterDefinitionError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Description Too Long 2.18" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6248d65532][OT2_P300M_P20S_TC_HS_TM_2_15_SmokeTestV3].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6248d65532][OT2_P300M_P20S_TC_HS_TM_2_15_SmokeTestV3].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json index 0fa87b61d1f..af14e1c5793 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6248d65532][OT2_P300M_P20S_TC_HS_TM_2_15_SmokeTestV3].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0c4ae179bb][OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -15295,7 +15295,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_TC_HS_TM_2_15_SmokeTestV3.py", + "name": "OT2_S_v2_15_P300M_P20S_HS_TC_TM_SmokeTestV3.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0de4401f66][v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0de4401f66][v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum].json deleted file mode 100644 index 6d089f38b52..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0de4401f66][v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterValueError [line 32]: Parameter must be between 1 and 3 inclusive.", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be between 1 and 3 inclusive.", - "errorCode": "4000", - "errorInfo": { - "args": "('Parameter must be between 1 and 3 inclusive.',)", - "class": "ParameterValueError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum.py\", line 32, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 55, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 104, in value\n raise ParameterValueError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Default not in range" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1312a4eb81][Flex_P100_96_HS_TM_2_15_Quick_Zymo_RNA_Bacteria].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10d250f82a][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtraction].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1312a4eb81][Flex_P100_96_HS_TM_2_15_Quick_Zymo_RNA_Bacteria].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10d250f82a][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtraction].json index 5ee46e4e231..6c84830df87 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1312a4eb81][Flex_P100_96_HS_TM_2_15_Quick_Zymo_RNA_Bacteria].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[10d250f82a][Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtraction].json @@ -13216,7 +13216,7 @@ ], "files": [ { - "name": "Flex_P100_96_HS_TM_2_15_Quick_Zymo_RNA_Bacteria.py", + "name": "Flex_S_v2_15_P1000_96_GRIP_HS_TM_QuickZymoMagbeadRNAExtraction.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ea2fdcec4][Flex_P1000MLeft_P50MRight_HS_MM_TC_TM_2_15_ABR3_Illumina_DNA_Enrichment].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[12a2a22254][Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichment].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ea2fdcec4][Flex_P1000MLeft_P50MRight_HS_MM_TC_TM_2_15_ABR3_Illumina_DNA_Enrichment].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[12a2a22254][Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichment].json index 54003322788..205a09ef18e 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7ea2fdcec4][Flex_P1000MLeft_P50MRight_HS_MM_TC_TM_2_15_ABR3_Illumina_DNA_Enrichment].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[12a2a22254][Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichment].json @@ -9555,7 +9555,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 50.0, "wellLocation": { "offset": { @@ -9581,7 +9581,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -9667,7 +9667,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -9693,7 +9693,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -9779,7 +9779,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -9805,7 +9805,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -9855,7 +9855,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 90.0, "wellLocation": { "offset": { @@ -9881,7 +9881,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 90.0, "wellLocation": { "offset": { @@ -9991,7 +9991,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 121.0, "wellLocation": { "offset": { @@ -10017,7 +10017,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.0, "wellLocation": { "offset": { @@ -10043,7 +10043,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 121.0, "wellLocation": { "offset": { @@ -10069,7 +10069,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.0, "wellLocation": { "offset": { @@ -10095,7 +10095,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 121.0, "wellLocation": { "offset": { @@ -10121,7 +10121,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.0, "wellLocation": { "offset": { @@ -10147,7 +10147,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 121.0, "wellLocation": { "offset": { @@ -10173,7 +10173,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.0, "wellLocation": { "offset": { @@ -10283,7 +10283,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -10309,7 +10309,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -10402,7 +10402,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10428,7 +10428,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10454,7 +10454,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10480,7 +10480,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10506,7 +10506,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10532,7 +10532,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10558,7 +10558,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10584,7 +10584,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10610,7 +10610,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10636,7 +10636,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10662,7 +10662,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10688,7 +10688,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -10714,7 +10714,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -10740,7 +10740,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -10766,7 +10766,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -10792,7 +10792,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -10842,7 +10842,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -10892,7 +10892,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -10918,7 +10918,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -10968,7 +10968,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -10994,7 +10994,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -11044,7 +11044,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -11070,7 +11070,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -11120,7 +11120,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -11146,7 +11146,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -11408,7 +11408,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -11434,7 +11434,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -11460,7 +11460,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -11486,7 +11486,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -11545,7 +11545,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -11569,7 +11569,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11701,7 +11701,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -11727,7 +11727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -11916,7 +11916,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -11975,7 +11975,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12025,7 +12025,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12060,7 +12060,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -12084,7 +12084,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12206,7 +12206,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12232,7 +12232,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12421,7 +12421,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12480,7 +12480,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12530,7 +12530,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12565,7 +12565,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -12589,7 +12589,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12711,7 +12711,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12737,7 +12737,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12926,7 +12926,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12985,7 +12985,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13035,7 +13035,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -13070,7 +13070,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -13094,7 +13094,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -13216,7 +13216,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -13242,7 +13242,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -13370,7 +13370,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -13396,7 +13396,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -13551,7 +13551,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13610,7 +13610,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13660,7 +13660,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -13695,7 +13695,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -13719,7 +13719,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -13829,7 +13829,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -13855,7 +13855,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -13890,7 +13890,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -14052,7 +14052,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -14078,7 +14078,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -14294,7 +14294,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -14320,7 +14320,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -14406,7 +14406,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -14432,7 +14432,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -14482,7 +14482,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14508,7 +14508,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14624,7 +14624,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -14650,7 +14650,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -14736,7 +14736,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14762,7 +14762,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14812,7 +14812,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -14838,7 +14838,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -15021,7 +15021,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -15047,7 +15047,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -15133,7 +15133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -15159,7 +15159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -15185,7 +15185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -15211,7 +15211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -15261,7 +15261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -15311,7 +15311,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -15337,7 +15337,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -15387,7 +15387,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -15413,7 +15413,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -15463,7 +15463,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -15489,7 +15489,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -15539,7 +15539,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -15565,7 +15565,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -15808,7 +15808,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15867,7 +15867,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15917,7 +15917,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15952,7 +15952,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -16084,7 +16084,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -16206,7 +16206,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -16241,7 +16241,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -16421,7 +16421,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16480,7 +16480,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16530,7 +16530,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16565,7 +16565,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -16697,7 +16697,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -16819,7 +16819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -16854,7 +16854,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -17034,7 +17034,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17093,7 +17093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17143,7 +17143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17178,7 +17178,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -17334,7 +17334,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -17360,7 +17360,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -17395,7 +17395,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -17563,7 +17563,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -17613,7 +17613,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -17663,7 +17663,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -17713,7 +17713,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -17763,7 +17763,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -17813,7 +17813,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -17863,7 +17863,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -17913,7 +17913,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -17963,7 +17963,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -17989,7 +17989,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -18015,7 +18015,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18258,7 +18258,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -18284,7 +18284,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -18341,7 +18341,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000MLeft_P50MRight_HS_MM_TC_TM_2_15_ABR3_Illumina_DNA_Enrichment.py", + "name": "Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichment.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[52a42597a5][OT2_P300M_P20S_MM_HS_TD_TC_6_1_AllMods_Error].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[52a42597a5][OT2_P300M_P20S_MM_HS_TD_TC_6_1_AllMods_Error].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json index b36a44a5457..a55bcdcad04 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[52a42597a5][OT2_P300M_P20S_MM_HS_TD_TC_6_1_AllMods_Error].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[134037b2aa][OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods].json @@ -7297,7 +7297,7 @@ ], "files": [ { - "name": "OT2_P300M_P20S_MM_HS_TD_TC_6_1_AllMods_Error.json", + "name": "OT2_X_v6_P300M_P20S_HS_MM_TM_TC_AllMods.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[37c9086bf4][Flex_P1000MLeft_P50MRight_HS_MM_TC_TM_2_15_ABR3_Illumina_DNA_Enrichment_v4].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1960aa7a4c][Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichmentv4].json similarity index 97% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[37c9086bf4][Flex_P1000MLeft_P50MRight_HS_MM_TC_TM_2_15_ABR3_Illumina_DNA_Enrichment_v4].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1960aa7a4c][Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichmentv4].json index 0693b30cc54..28e91a90e8e 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[37c9086bf4][Flex_P1000MLeft_P50MRight_HS_MM_TC_TM_2_15_ABR3_Illumina_DNA_Enrichment_v4].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1960aa7a4c][Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichmentv4].json @@ -11818,7 +11818,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -11844,7 +11844,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -11944,7 +11944,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -11970,7 +11970,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -12070,7 +12070,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -12096,7 +12096,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -12189,7 +12189,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12215,7 +12215,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12241,7 +12241,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -12267,7 +12267,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -12293,7 +12293,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -12319,7 +12319,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -12369,7 +12369,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12419,7 +12419,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -12445,7 +12445,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -12495,7 +12495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12521,7 +12521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12571,7 +12571,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -12597,7 +12597,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -12647,7 +12647,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12673,7 +12673,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -12819,7 +12819,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12845,7 +12845,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12871,7 +12871,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -12897,7 +12897,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -12923,7 +12923,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -12949,7 +12949,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -12999,7 +12999,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13049,7 +13049,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13075,7 +13075,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13125,7 +13125,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13151,7 +13151,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13201,7 +13201,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13227,7 +13227,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13277,7 +13277,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13303,7 +13303,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -13449,7 +13449,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -13475,7 +13475,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -13501,7 +13501,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -13527,7 +13527,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -13553,7 +13553,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -13579,7 +13579,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -13629,7 +13629,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13679,7 +13679,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13705,7 +13705,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13755,7 +13755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13781,7 +13781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13831,7 +13831,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13857,7 +13857,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13907,7 +13907,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13933,7 +13933,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -14215,7 +14215,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14241,7 +14241,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14291,7 +14291,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14317,7 +14317,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14376,7 +14376,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -14400,7 +14400,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14500,7 +14500,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14526,7 +14526,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14576,7 +14576,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14602,7 +14602,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14661,7 +14661,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -14685,7 +14685,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14785,7 +14785,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14811,7 +14811,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14861,7 +14861,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14887,7 +14887,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14946,7 +14946,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -14970,7 +14970,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -15102,7 +15102,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15128,7 +15128,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15204,7 +15204,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15230,7 +15230,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15306,7 +15306,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15332,7 +15332,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15514,7 +15514,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15573,7 +15573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15623,7 +15623,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15658,7 +15658,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -15682,7 +15682,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -15782,7 +15782,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15841,7 +15841,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15891,7 +15891,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15926,7 +15926,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -15950,7 +15950,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -16050,7 +16050,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16109,7 +16109,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16159,7 +16159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16194,7 +16194,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -16218,7 +16218,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -16340,7 +16340,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16366,7 +16366,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16442,7 +16442,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16468,7 +16468,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16544,7 +16544,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16570,7 +16570,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16752,7 +16752,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16811,7 +16811,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16861,7 +16861,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16896,7 +16896,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -16920,7 +16920,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -17020,7 +17020,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17079,7 +17079,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17129,7 +17129,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17164,7 +17164,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -17188,7 +17188,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -17288,7 +17288,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17347,7 +17347,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17397,7 +17397,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17432,7 +17432,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -17456,7 +17456,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -17578,7 +17578,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17604,7 +17604,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17680,7 +17680,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17706,7 +17706,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17782,7 +17782,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17808,7 +17808,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17990,7 +17990,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18049,7 +18049,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18099,7 +18099,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18134,7 +18134,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18158,7 +18158,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -18258,7 +18258,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18317,7 +18317,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18367,7 +18367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18402,7 +18402,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18426,7 +18426,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -18526,7 +18526,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18585,7 +18585,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18635,7 +18635,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18670,7 +18670,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18694,7 +18694,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -18816,7 +18816,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18842,7 +18842,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18918,7 +18918,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18944,7 +18944,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19020,7 +19020,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19046,7 +19046,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19174,7 +19174,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19200,7 +19200,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19300,7 +19300,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19326,7 +19326,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19426,7 +19426,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19452,7 +19452,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19600,7 +19600,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -19659,7 +19659,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -19709,7 +19709,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -19744,7 +19744,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -19768,7 +19768,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -19868,7 +19868,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -19927,7 +19927,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -19977,7 +19977,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -20012,7 +20012,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -20036,7 +20036,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -20136,7 +20136,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -20195,7 +20195,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -20245,7 +20245,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -20280,7 +20280,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -20304,7 +20304,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -20414,7 +20414,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -20440,7 +20440,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -20475,7 +20475,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -20621,7 +20621,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -20647,7 +20647,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -20682,7 +20682,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -20828,7 +20828,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -20854,7 +20854,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -20889,7 +20889,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -21051,7 +21051,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -21077,7 +21077,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -21153,7 +21153,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -21179,7 +21179,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -21255,7 +21255,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -21281,7 +21281,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -21499,7 +21499,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -21525,7 +21525,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -21625,7 +21625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -21651,7 +21651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -21751,7 +21751,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -21777,7 +21777,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -21863,7 +21863,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -21889,7 +21889,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -21939,7 +21939,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -21965,7 +21965,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -22041,7 +22041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -22067,7 +22067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -22117,7 +22117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -22143,7 +22143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -22219,7 +22219,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -22245,7 +22245,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -22295,7 +22295,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -22321,7 +22321,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -22437,7 +22437,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -22463,7 +22463,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -22539,7 +22539,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -22565,7 +22565,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -22641,7 +22641,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -22667,7 +22667,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -22753,7 +22753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -22779,7 +22779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -22829,7 +22829,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22855,7 +22855,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22931,7 +22931,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -22957,7 +22957,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -23007,7 +23007,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -23033,7 +23033,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -23109,7 +23109,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -23135,7 +23135,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -23185,7 +23185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -23211,7 +23211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -23387,7 +23387,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -23413,7 +23413,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -23513,7 +23513,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -23539,7 +23539,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -23639,7 +23639,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -23665,7 +23665,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -23751,7 +23751,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -23777,7 +23777,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -23803,7 +23803,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -23829,7 +23829,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -23879,7 +23879,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23929,7 +23929,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23955,7 +23955,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24005,7 +24005,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -24031,7 +24031,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24081,7 +24081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24107,7 +24107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24157,7 +24157,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -24183,7 +24183,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -24329,7 +24329,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -24355,7 +24355,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -24381,7 +24381,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -24407,7 +24407,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -24457,7 +24457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24507,7 +24507,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24533,7 +24533,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24583,7 +24583,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -24609,7 +24609,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24659,7 +24659,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24685,7 +24685,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24735,7 +24735,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -24761,7 +24761,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -24907,7 +24907,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -24933,7 +24933,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -24959,7 +24959,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -24985,7 +24985,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -25035,7 +25035,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -25085,7 +25085,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -25111,7 +25111,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -25161,7 +25161,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -25187,7 +25187,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -25237,7 +25237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -25263,7 +25263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -25313,7 +25313,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -25339,7 +25339,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -25584,7 +25584,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25643,7 +25643,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25693,7 +25693,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -25728,7 +25728,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -25874,7 +25874,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25933,7 +25933,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25983,7 +25983,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -26018,7 +26018,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -26164,7 +26164,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -26223,7 +26223,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -26273,7 +26273,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -26308,7 +26308,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -26440,7 +26440,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -26562,7 +26562,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -26597,7 +26597,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -26743,7 +26743,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -26865,7 +26865,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -26900,7 +26900,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -27046,7 +27046,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -27168,7 +27168,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -27203,7 +27203,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -27383,7 +27383,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -27442,7 +27442,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -27492,7 +27492,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -27527,7 +27527,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -27673,7 +27673,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -27732,7 +27732,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -27782,7 +27782,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -27817,7 +27817,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -27963,7 +27963,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -28022,7 +28022,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -28072,7 +28072,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -28107,7 +28107,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -28239,7 +28239,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -28361,7 +28361,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -28396,7 +28396,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -28542,7 +28542,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -28664,7 +28664,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -28699,7 +28699,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -28845,7 +28845,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -28967,7 +28967,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -29002,7 +29002,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -29182,7 +29182,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -29241,7 +29241,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -29291,7 +29291,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -29326,7 +29326,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -29472,7 +29472,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -29531,7 +29531,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -29581,7 +29581,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -29616,7 +29616,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -29762,7 +29762,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -29821,7 +29821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -29871,7 +29871,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -29906,7 +29906,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -30062,7 +30062,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -30088,7 +30088,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -30123,7 +30123,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -30269,7 +30269,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -30295,7 +30295,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -30330,7 +30330,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -30476,7 +30476,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -30502,7 +30502,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -30537,7 +30537,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -30705,7 +30705,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30755,7 +30755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30805,7 +30805,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30855,7 +30855,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30905,7 +30905,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30955,7 +30955,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31005,7 +31005,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31055,7 +31055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31105,7 +31105,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31131,7 +31131,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31157,7 +31157,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -31303,7 +31303,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31353,7 +31353,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31403,7 +31403,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31453,7 +31453,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31503,7 +31503,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31553,7 +31553,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31603,7 +31603,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31653,7 +31653,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31703,7 +31703,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31729,7 +31729,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31755,7 +31755,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -31901,7 +31901,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31951,7 +31951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -32001,7 +32001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -32051,7 +32051,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -32101,7 +32101,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -32151,7 +32151,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -32201,7 +32201,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -32251,7 +32251,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -32301,7 +32301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -32327,7 +32327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -32353,7 +32353,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -32571,7 +32571,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -32597,7 +32597,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -32697,7 +32697,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -32723,7 +32723,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -32823,7 +32823,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -32849,7 +32849,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -32991,7 +32991,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -33017,7 +33017,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -33043,7 +33043,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -33069,7 +33069,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -33095,7 +33095,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -33121,7 +33121,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -33147,7 +33147,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33173,7 +33173,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33199,7 +33199,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33225,7 +33225,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33251,7 +33251,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33277,7 +33277,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33303,7 +33303,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33329,7 +33329,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33355,7 +33355,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33381,7 +33381,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33407,7 +33407,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33433,7 +33433,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -33459,7 +33459,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33485,7 +33485,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33511,7 +33511,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33537,7 +33537,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33563,7 +33563,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33589,7 +33589,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33615,7 +33615,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33641,7 +33641,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33667,7 +33667,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33693,7 +33693,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33719,7 +33719,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33745,7 +33745,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33771,7 +33771,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33797,7 +33797,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33823,7 +33823,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33849,7 +33849,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33875,7 +33875,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33901,7 +33901,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33927,7 +33927,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33953,7 +33953,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -33979,7 +33979,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34005,7 +34005,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34031,7 +34031,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34057,7 +34057,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34083,7 +34083,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34109,7 +34109,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34135,7 +34135,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34161,7 +34161,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34187,7 +34187,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34213,7 +34213,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34239,7 +34239,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34265,7 +34265,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34291,7 +34291,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34317,7 +34317,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34343,7 +34343,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34369,7 +34369,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34395,7 +34395,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34421,7 +34421,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34447,7 +34447,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34473,7 +34473,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34499,7 +34499,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34525,7 +34525,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34551,7 +34551,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34577,7 +34577,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34603,7 +34603,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34629,7 +34629,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34655,7 +34655,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34681,7 +34681,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34707,7 +34707,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34733,7 +34733,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34759,7 +34759,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34785,7 +34785,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34811,7 +34811,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34837,7 +34837,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34863,7 +34863,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34889,7 +34889,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34915,7 +34915,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34941,7 +34941,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34967,7 +34967,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -34993,7 +34993,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35019,7 +35019,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35045,7 +35045,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35071,7 +35071,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35097,7 +35097,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35123,7 +35123,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35149,7 +35149,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35175,7 +35175,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35201,7 +35201,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35227,7 +35227,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35253,7 +35253,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35279,7 +35279,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35305,7 +35305,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -35331,7 +35331,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35357,7 +35357,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35383,7 +35383,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35409,7 +35409,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35435,7 +35435,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35461,7 +35461,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35487,7 +35487,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35513,7 +35513,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35539,7 +35539,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35565,7 +35565,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35591,7 +35591,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35617,7 +35617,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -35643,7 +35643,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -35669,7 +35669,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -35695,7 +35695,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -35721,7 +35721,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -35747,7 +35747,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -35773,7 +35773,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -35799,7 +35799,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 75.0, "wellLocation": { "offset": { @@ -35825,7 +35825,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 75.0, "wellLocation": { "offset": { @@ -35851,7 +35851,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 120.0, "wellLocation": { "offset": { @@ -35877,7 +35877,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 120.0, "wellLocation": { "offset": { @@ -35953,7 +35953,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 12.0, "wellLocation": { "offset": { @@ -35979,7 +35979,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 12.0, "wellLocation": { "offset": { @@ -36005,7 +36005,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 15.0, "wellLocation": { "offset": { @@ -36031,7 +36031,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 15.0, "wellLocation": { "offset": { @@ -36057,7 +36057,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 32.0, "wellLocation": { "offset": { @@ -36083,7 +36083,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 32.0, "wellLocation": { "offset": { @@ -36109,7 +36109,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 32.0, "wellLocation": { "offset": { @@ -36135,7 +36135,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 32.0, "wellLocation": { "offset": { @@ -36161,7 +36161,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 32.0, "wellLocation": { "offset": { @@ -36187,7 +36187,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 32.0, "wellLocation": { "offset": { @@ -36213,7 +36213,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 30.0, "wellLocation": { "offset": { @@ -36239,7 +36239,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 30.0, "wellLocation": { "offset": { @@ -36265,7 +36265,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 30.0, "wellLocation": { "offset": { @@ -36291,7 +36291,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 30.0, "wellLocation": { "offset": { @@ -36317,7 +36317,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 30.0, "wellLocation": { "offset": { @@ -36343,7 +36343,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 30.0, "wellLocation": { "offset": { @@ -36515,7 +36515,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -36541,7 +36541,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -36641,7 +36641,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -36667,7 +36667,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -36767,7 +36767,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -36793,7 +36793,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -36886,7 +36886,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -36912,7 +36912,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -36938,7 +36938,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -36964,7 +36964,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -36990,7 +36990,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -37016,7 +37016,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -37066,7 +37066,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -37116,7 +37116,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -37142,7 +37142,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -37192,7 +37192,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -37218,7 +37218,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -37268,7 +37268,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -37294,7 +37294,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -37344,7 +37344,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -37370,7 +37370,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -37516,7 +37516,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -37542,7 +37542,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -37568,7 +37568,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -37594,7 +37594,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -37620,7 +37620,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -37646,7 +37646,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -37696,7 +37696,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -37746,7 +37746,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -37772,7 +37772,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -37822,7 +37822,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -37848,7 +37848,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -37898,7 +37898,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -37924,7 +37924,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -37974,7 +37974,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -38000,7 +38000,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -38146,7 +38146,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -38172,7 +38172,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -38198,7 +38198,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -38224,7 +38224,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -38250,7 +38250,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -38276,7 +38276,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -38326,7 +38326,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -38376,7 +38376,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -38402,7 +38402,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -38452,7 +38452,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -38478,7 +38478,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -38528,7 +38528,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -38554,7 +38554,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -38604,7 +38604,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -38630,7 +38630,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -38912,7 +38912,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -38938,7 +38938,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -38988,7 +38988,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39014,7 +39014,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39073,7 +39073,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -39097,7 +39097,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -39197,7 +39197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39223,7 +39223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39273,7 +39273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39299,7 +39299,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39358,7 +39358,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -39382,7 +39382,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -39482,7 +39482,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39508,7 +39508,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39558,7 +39558,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39584,7 +39584,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39643,7 +39643,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -39667,7 +39667,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -39799,7 +39799,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39825,7 +39825,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39901,7 +39901,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -39927,7 +39927,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -40003,7 +40003,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -40029,7 +40029,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -40211,7 +40211,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -40270,7 +40270,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -40320,7 +40320,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -40355,7 +40355,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -40379,7 +40379,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -40479,7 +40479,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -40538,7 +40538,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -40588,7 +40588,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -40623,7 +40623,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -40647,7 +40647,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -40747,7 +40747,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -40806,7 +40806,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -40856,7 +40856,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -40891,7 +40891,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -40915,7 +40915,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -41037,7 +41037,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -41063,7 +41063,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -41139,7 +41139,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -41165,7 +41165,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -41241,7 +41241,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -41267,7 +41267,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -41449,7 +41449,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -41508,7 +41508,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -41558,7 +41558,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -41593,7 +41593,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -41617,7 +41617,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -41717,7 +41717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -41776,7 +41776,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -41826,7 +41826,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -41861,7 +41861,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -41885,7 +41885,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -41985,7 +41985,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -42044,7 +42044,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -42094,7 +42094,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -42129,7 +42129,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -42153,7 +42153,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -42275,7 +42275,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -42301,7 +42301,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -42377,7 +42377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -42403,7 +42403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -42479,7 +42479,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -42505,7 +42505,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -42687,7 +42687,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -42746,7 +42746,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -42796,7 +42796,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -42831,7 +42831,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -42855,7 +42855,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -42955,7 +42955,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -43014,7 +43014,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -43064,7 +43064,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43099,7 +43099,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -43123,7 +43123,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -43223,7 +43223,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -43282,7 +43282,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -43332,7 +43332,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43367,7 +43367,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -43391,7 +43391,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -43513,7 +43513,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43539,7 +43539,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43615,7 +43615,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43641,7 +43641,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43717,7 +43717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43743,7 +43743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43871,7 +43871,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43897,7 +43897,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -43997,7 +43997,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -44023,7 +44023,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -44123,7 +44123,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -44149,7 +44149,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -44297,7 +44297,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -44356,7 +44356,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -44406,7 +44406,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -44441,7 +44441,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -44465,7 +44465,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -44565,7 +44565,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -44624,7 +44624,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -44674,7 +44674,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -44709,7 +44709,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -44733,7 +44733,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -44833,7 +44833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -44892,7 +44892,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -44942,7 +44942,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -44977,7 +44977,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -45001,7 +45001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -45111,7 +45111,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -45137,7 +45137,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -45172,7 +45172,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -45318,7 +45318,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -45344,7 +45344,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -45379,7 +45379,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -45525,7 +45525,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -45551,7 +45551,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -45586,7 +45586,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -45748,7 +45748,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -45774,7 +45774,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -45850,7 +45850,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -45876,7 +45876,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -45952,7 +45952,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -45978,7 +45978,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -46196,7 +46196,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -46222,7 +46222,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -46322,7 +46322,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -46348,7 +46348,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -46448,7 +46448,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -46474,7 +46474,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -46560,7 +46560,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -46586,7 +46586,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -46636,7 +46636,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -46662,7 +46662,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -46738,7 +46738,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -46764,7 +46764,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -46814,7 +46814,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -46840,7 +46840,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -46916,7 +46916,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -46942,7 +46942,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -46992,7 +46992,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47018,7 +47018,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47134,7 +47134,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -47160,7 +47160,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -47236,7 +47236,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -47262,7 +47262,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -47338,7 +47338,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -47364,7 +47364,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -47450,7 +47450,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47476,7 +47476,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47526,7 +47526,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -47552,7 +47552,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -47628,7 +47628,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47654,7 +47654,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47704,7 +47704,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -47730,7 +47730,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -47806,7 +47806,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47832,7 +47832,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47882,7 +47882,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -47908,7 +47908,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -48084,7 +48084,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -48110,7 +48110,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -48210,7 +48210,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -48236,7 +48236,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -48336,7 +48336,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -48362,7 +48362,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -48448,7 +48448,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -48474,7 +48474,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -48500,7 +48500,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -48526,7 +48526,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -48576,7 +48576,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -48626,7 +48626,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -48652,7 +48652,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -48702,7 +48702,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -48728,7 +48728,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -48778,7 +48778,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -48804,7 +48804,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -48854,7 +48854,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -48880,7 +48880,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -49026,7 +49026,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -49052,7 +49052,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -49078,7 +49078,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -49104,7 +49104,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -49154,7 +49154,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49204,7 +49204,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49230,7 +49230,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49280,7 +49280,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -49306,7 +49306,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49356,7 +49356,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49382,7 +49382,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49432,7 +49432,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -49458,7 +49458,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -49604,7 +49604,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -49630,7 +49630,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -49656,7 +49656,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -49682,7 +49682,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -49732,7 +49732,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49782,7 +49782,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49808,7 +49808,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49858,7 +49858,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -49884,7 +49884,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49934,7 +49934,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -49960,7 +49960,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -50010,7 +50010,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -50036,7 +50036,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -50281,7 +50281,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -50340,7 +50340,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -50390,7 +50390,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -50425,7 +50425,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -50571,7 +50571,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -50630,7 +50630,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -50680,7 +50680,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -50715,7 +50715,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -50861,7 +50861,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -50920,7 +50920,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -50970,7 +50970,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -51005,7 +51005,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -51137,7 +51137,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -51259,7 +51259,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -51294,7 +51294,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -51440,7 +51440,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -51562,7 +51562,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -51597,7 +51597,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -51743,7 +51743,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -51865,7 +51865,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -51900,7 +51900,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -52080,7 +52080,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -52139,7 +52139,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -52189,7 +52189,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -52224,7 +52224,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -52370,7 +52370,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -52429,7 +52429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -52479,7 +52479,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -52514,7 +52514,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -52660,7 +52660,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -52719,7 +52719,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -52769,7 +52769,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -52804,7 +52804,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -52936,7 +52936,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -53058,7 +53058,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -53093,7 +53093,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -53239,7 +53239,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -53361,7 +53361,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -53396,7 +53396,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -53542,7 +53542,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -53664,7 +53664,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -53699,7 +53699,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -53879,7 +53879,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -53938,7 +53938,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -53988,7 +53988,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -54023,7 +54023,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -54169,7 +54169,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -54228,7 +54228,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -54278,7 +54278,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -54313,7 +54313,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -54459,7 +54459,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -54518,7 +54518,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -54568,7 +54568,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -54603,7 +54603,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -54759,7 +54759,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54785,7 +54785,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54820,7 +54820,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -54966,7 +54966,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54992,7 +54992,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -55027,7 +55027,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -55173,7 +55173,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -55199,7 +55199,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -55234,7 +55234,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -55402,7 +55402,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55452,7 +55452,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55502,7 +55502,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55552,7 +55552,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55602,7 +55602,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55652,7 +55652,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55702,7 +55702,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55752,7 +55752,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55802,7 +55802,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55828,7 +55828,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -55854,7 +55854,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -56000,7 +56000,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56050,7 +56050,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56100,7 +56100,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56150,7 +56150,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56200,7 +56200,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56250,7 +56250,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56300,7 +56300,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56350,7 +56350,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56400,7 +56400,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56426,7 +56426,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56452,7 +56452,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -56598,7 +56598,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56648,7 +56648,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56698,7 +56698,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56748,7 +56748,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56798,7 +56798,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56848,7 +56848,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56898,7 +56898,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56948,7 +56948,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -56998,7 +56998,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -57024,7 +57024,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -57050,7 +57050,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -57268,7 +57268,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -57294,7 +57294,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -57394,7 +57394,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -57420,7 +57420,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -57520,7 +57520,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -57546,7 +57546,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -57688,7 +57688,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -57714,7 +57714,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -57740,7 +57740,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -57766,7 +57766,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -57792,7 +57792,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -57818,7 +57818,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -57844,7 +57844,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -57870,7 +57870,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -57896,7 +57896,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -57922,7 +57922,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -57948,7 +57948,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -57974,7 +57974,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -58000,7 +58000,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -58026,7 +58026,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -58052,7 +58052,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -58078,7 +58078,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -58104,7 +58104,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -58130,7 +58130,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -58156,7 +58156,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58182,7 +58182,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58208,7 +58208,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58234,7 +58234,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58260,7 +58260,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58286,7 +58286,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58312,7 +58312,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58338,7 +58338,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58364,7 +58364,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58390,7 +58390,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58416,7 +58416,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58442,7 +58442,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58468,7 +58468,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58494,7 +58494,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58520,7 +58520,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58546,7 +58546,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58572,7 +58572,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58598,7 +58598,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58624,7 +58624,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58650,7 +58650,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58676,7 +58676,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58702,7 +58702,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58728,7 +58728,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58754,7 +58754,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58780,7 +58780,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58806,7 +58806,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58832,7 +58832,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58858,7 +58858,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58884,7 +58884,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58910,7 +58910,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58936,7 +58936,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58962,7 +58962,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -58988,7 +58988,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59014,7 +59014,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59040,7 +59040,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59066,7 +59066,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59092,7 +59092,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59118,7 +59118,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59144,7 +59144,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59170,7 +59170,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59196,7 +59196,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59222,7 +59222,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59248,7 +59248,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59274,7 +59274,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59300,7 +59300,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59326,7 +59326,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59352,7 +59352,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59378,7 +59378,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59404,7 +59404,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59430,7 +59430,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59456,7 +59456,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59482,7 +59482,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59508,7 +59508,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59534,7 +59534,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59560,7 +59560,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59586,7 +59586,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59612,7 +59612,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59638,7 +59638,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59664,7 +59664,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59690,7 +59690,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59716,7 +59716,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59742,7 +59742,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59768,7 +59768,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59794,7 +59794,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59820,7 +59820,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59846,7 +59846,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59872,7 +59872,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59898,7 +59898,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59924,7 +59924,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59950,7 +59950,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -59976,7 +59976,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -60002,7 +60002,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -60028,7 +60028,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60054,7 +60054,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60080,7 +60080,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60106,7 +60106,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60132,7 +60132,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60158,7 +60158,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60184,7 +60184,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60210,7 +60210,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60236,7 +60236,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60262,7 +60262,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60288,7 +60288,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60314,7 +60314,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -60340,7 +60340,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -60366,7 +60366,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -60392,7 +60392,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -60418,7 +60418,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -60444,7 +60444,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -60470,7 +60470,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -60496,7 +60496,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 75.0, "wellLocation": { "offset": { @@ -60522,7 +60522,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 75.0, "wellLocation": { "offset": { @@ -60548,7 +60548,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 120.0, "wellLocation": { "offset": { @@ -60574,7 +60574,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 120.0, "wellLocation": { "offset": { @@ -60650,7 +60650,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 12.0, "wellLocation": { "offset": { @@ -60676,7 +60676,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 12.0, "wellLocation": { "offset": { @@ -60702,7 +60702,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 15.0, "wellLocation": { "offset": { @@ -60728,7 +60728,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 15.0, "wellLocation": { "offset": { @@ -60754,7 +60754,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 32.0, "wellLocation": { "offset": { @@ -60780,7 +60780,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 32.0, "wellLocation": { "offset": { @@ -60806,7 +60806,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 32.0, "wellLocation": { "offset": { @@ -60832,7 +60832,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 32.0, "wellLocation": { "offset": { @@ -60858,7 +60858,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 32.0, "wellLocation": { "offset": { @@ -60884,7 +60884,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 32.0, "wellLocation": { "offset": { @@ -60910,7 +60910,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 30.0, "wellLocation": { "offset": { @@ -60936,7 +60936,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 30.0, "wellLocation": { "offset": { @@ -60962,7 +60962,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 30.0, "wellLocation": { "offset": { @@ -60988,7 +60988,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 30.0, "wellLocation": { "offset": { @@ -61014,7 +61014,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 30.0, "wellLocation": { "offset": { @@ -61040,7 +61040,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 30.0, "wellLocation": { "offset": { @@ -61212,7 +61212,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -61238,7 +61238,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -61338,7 +61338,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -61364,7 +61364,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -61464,7 +61464,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 101.0, "wellLocation": { "offset": { @@ -61490,7 +61490,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 101.0, "wellLocation": { "offset": { @@ -61583,7 +61583,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -61609,7 +61609,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -61635,7 +61635,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -61661,7 +61661,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -61687,7 +61687,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -61713,7 +61713,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -61763,7 +61763,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -61813,7 +61813,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -61839,7 +61839,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -61889,7 +61889,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -61915,7 +61915,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -61965,7 +61965,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -61991,7 +61991,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -62041,7 +62041,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -62067,7 +62067,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -62213,7 +62213,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -62239,7 +62239,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -62265,7 +62265,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -62291,7 +62291,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -62317,7 +62317,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -62343,7 +62343,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -62393,7 +62393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -62443,7 +62443,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -62469,7 +62469,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -62519,7 +62519,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -62545,7 +62545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -62595,7 +62595,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -62621,7 +62621,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -62671,7 +62671,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -62697,7 +62697,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -62843,7 +62843,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -62869,7 +62869,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -62895,7 +62895,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -62921,7 +62921,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -62947,7 +62947,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -62973,7 +62973,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 125.0, "wellLocation": { "offset": { @@ -63023,7 +63023,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -63073,7 +63073,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -63099,7 +63099,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -63149,7 +63149,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -63175,7 +63175,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -63225,7 +63225,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -63251,7 +63251,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 80.0, "wellLocation": { "offset": { @@ -63301,7 +63301,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 100.0, "wellLocation": { "offset": { @@ -63327,7 +63327,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -63609,7 +63609,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -63635,7 +63635,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -63685,7 +63685,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -63711,7 +63711,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -63770,7 +63770,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -63794,7 +63794,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -63894,7 +63894,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -63920,7 +63920,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -63970,7 +63970,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -63996,7 +63996,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64055,7 +64055,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -64079,7 +64079,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -64179,7 +64179,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64205,7 +64205,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64255,7 +64255,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64281,7 +64281,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64340,7 +64340,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -64364,7 +64364,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -64496,7 +64496,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64522,7 +64522,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64598,7 +64598,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64624,7 +64624,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64700,7 +64700,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64726,7 +64726,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -64908,7 +64908,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -64967,7 +64967,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -65017,7 +65017,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -65052,7 +65052,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -65076,7 +65076,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -65176,7 +65176,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -65235,7 +65235,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -65285,7 +65285,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -65320,7 +65320,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -65344,7 +65344,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -65444,7 +65444,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -65503,7 +65503,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -65553,7 +65553,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -65588,7 +65588,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -65612,7 +65612,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -65734,7 +65734,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -65760,7 +65760,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -65836,7 +65836,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -65862,7 +65862,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -65938,7 +65938,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -65964,7 +65964,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -66146,7 +66146,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -66205,7 +66205,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -66255,7 +66255,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -66290,7 +66290,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -66314,7 +66314,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -66414,7 +66414,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -66473,7 +66473,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -66523,7 +66523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -66558,7 +66558,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -66582,7 +66582,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -66682,7 +66682,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -66741,7 +66741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -66791,7 +66791,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -66826,7 +66826,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -66850,7 +66850,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -66972,7 +66972,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -66998,7 +66998,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -67074,7 +67074,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -67100,7 +67100,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -67176,7 +67176,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -67202,7 +67202,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -67384,7 +67384,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -67443,7 +67443,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -67493,7 +67493,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -67528,7 +67528,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -67552,7 +67552,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -67652,7 +67652,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -67711,7 +67711,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -67761,7 +67761,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -67796,7 +67796,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -67820,7 +67820,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -67920,7 +67920,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -67979,7 +67979,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -68029,7 +68029,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68064,7 +68064,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -68088,7 +68088,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -68210,7 +68210,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68236,7 +68236,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68312,7 +68312,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68338,7 +68338,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68414,7 +68414,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68440,7 +68440,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68568,7 +68568,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68594,7 +68594,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68694,7 +68694,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68720,7 +68720,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68820,7 +68820,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68846,7 +68846,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -68994,7 +68994,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -69053,7 +69053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -69103,7 +69103,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -69138,7 +69138,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -69162,7 +69162,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -69262,7 +69262,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -69321,7 +69321,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -69371,7 +69371,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -69406,7 +69406,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -69430,7 +69430,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -69530,7 +69530,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -69589,7 +69589,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -69639,7 +69639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -69674,7 +69674,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -69698,7 +69698,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -69808,7 +69808,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -69834,7 +69834,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -69869,7 +69869,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -70015,7 +70015,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -70041,7 +70041,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -70076,7 +70076,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -70222,7 +70222,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 50.0, "wellLocation": { "offset": { @@ -70248,7 +70248,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 50.0, "wellLocation": { "offset": { @@ -70283,7 +70283,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 57.0, "wellLocation": { "offset": { "x": 0.0, @@ -70445,7 +70445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -70471,7 +70471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -70547,7 +70547,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -70573,7 +70573,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -70649,7 +70649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 23.0, "wellLocation": { "offset": { @@ -70675,7 +70675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 23.0, "wellLocation": { "offset": { @@ -70893,7 +70893,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -70919,7 +70919,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -71019,7 +71019,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -71045,7 +71045,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -71145,7 +71145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 22.0, "wellLocation": { "offset": { @@ -71171,7 +71171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 22.0, "wellLocation": { "offset": { @@ -71257,7 +71257,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -71283,7 +71283,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -71333,7 +71333,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -71359,7 +71359,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -71435,7 +71435,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -71461,7 +71461,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -71511,7 +71511,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -71537,7 +71537,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -71613,7 +71613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 4.0, "wellLocation": { "offset": { @@ -71639,7 +71639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 4.0, "wellLocation": { "offset": { @@ -71689,7 +71689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -71715,7 +71715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -71831,7 +71831,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -71857,7 +71857,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -71933,7 +71933,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -71959,7 +71959,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -72035,7 +72035,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 5.0, "wellLocation": { "offset": { @@ -72061,7 +72061,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 5.0, "wellLocation": { "offset": { @@ -72147,7 +72147,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -72173,7 +72173,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -72223,7 +72223,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -72249,7 +72249,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -72325,7 +72325,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -72351,7 +72351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -72401,7 +72401,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -72427,7 +72427,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -72503,7 +72503,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -72529,7 +72529,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -72579,7 +72579,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 45.0, "wellLocation": { "offset": { @@ -72605,7 +72605,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 45.0, "wellLocation": { "offset": { @@ -72781,7 +72781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -72807,7 +72807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -72907,7 +72907,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -72933,7 +72933,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -73033,7 +73033,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 46.0, "wellLocation": { "offset": { @@ -73059,7 +73059,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 46.0, "wellLocation": { "offset": { @@ -73145,7 +73145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -73171,7 +73171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -73197,7 +73197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -73223,7 +73223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -73273,7 +73273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -73323,7 +73323,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -73349,7 +73349,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -73399,7 +73399,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -73425,7 +73425,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -73475,7 +73475,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -73501,7 +73501,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -73551,7 +73551,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -73577,7 +73577,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -73723,7 +73723,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -73749,7 +73749,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -73775,7 +73775,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -73801,7 +73801,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -73851,7 +73851,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -73901,7 +73901,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -73927,7 +73927,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -73977,7 +73977,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -74003,7 +74003,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74053,7 +74053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74079,7 +74079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74129,7 +74129,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -74155,7 +74155,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -74301,7 +74301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -74327,7 +74327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.5, "wellLocation": { "offset": { @@ -74353,7 +74353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -74379,7 +74379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 40.5, "wellLocation": { "offset": { @@ -74429,7 +74429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74479,7 +74479,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74505,7 +74505,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74555,7 +74555,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -74581,7 +74581,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74631,7 +74631,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74657,7 +74657,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74707,7 +74707,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -74733,7 +74733,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -74978,7 +74978,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -75037,7 +75037,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -75087,7 +75087,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -75122,7 +75122,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -75268,7 +75268,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -75327,7 +75327,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -75377,7 +75377,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -75412,7 +75412,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -75558,7 +75558,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -75617,7 +75617,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -75667,7 +75667,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -75702,7 +75702,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -75834,7 +75834,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -75956,7 +75956,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -75991,7 +75991,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -76137,7 +76137,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -76259,7 +76259,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -76294,7 +76294,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -76440,7 +76440,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -76562,7 +76562,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -76597,7 +76597,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -76777,7 +76777,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -76836,7 +76836,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -76886,7 +76886,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -76921,7 +76921,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -77067,7 +77067,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -77126,7 +77126,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -77176,7 +77176,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -77211,7 +77211,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -77357,7 +77357,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -77416,7 +77416,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -77466,7 +77466,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -77501,7 +77501,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -77633,7 +77633,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -77755,7 +77755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -77790,7 +77790,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -77936,7 +77936,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -78058,7 +78058,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -78093,7 +78093,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -78239,7 +78239,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -78361,7 +78361,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -78396,7 +78396,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -78576,7 +78576,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -78635,7 +78635,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -78685,7 +78685,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -78720,7 +78720,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -78866,7 +78866,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -78925,7 +78925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -78975,7 +78975,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -79010,7 +79010,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -79156,7 +79156,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -79215,7 +79215,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -79265,7 +79265,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -79300,7 +79300,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -79456,7 +79456,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -79482,7 +79482,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -79517,7 +79517,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -79663,7 +79663,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -79689,7 +79689,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -79724,7 +79724,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -79870,7 +79870,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -79896,7 +79896,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -79931,7 +79931,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -80099,7 +80099,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80149,7 +80149,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80199,7 +80199,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80249,7 +80249,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80299,7 +80299,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80349,7 +80349,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80399,7 +80399,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80449,7 +80449,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80499,7 +80499,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80525,7 +80525,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80551,7 +80551,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -80697,7 +80697,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80747,7 +80747,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80797,7 +80797,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80847,7 +80847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80897,7 +80897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80947,7 +80947,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -80997,7 +80997,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81047,7 +81047,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81097,7 +81097,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81123,7 +81123,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81149,7 +81149,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -81295,7 +81295,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81345,7 +81345,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81395,7 +81395,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81445,7 +81445,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81495,7 +81495,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81545,7 +81545,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81595,7 +81595,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81645,7 +81645,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81695,7 +81695,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81721,7 +81721,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -81747,7 +81747,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -81965,7 +81965,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -81991,7 +81991,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -82091,7 +82091,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -82117,7 +82117,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -82217,7 +82217,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -82243,7 +82243,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -82385,7 +82385,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -82411,7 +82411,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -82437,7 +82437,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -82463,7 +82463,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -82489,7 +82489,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -82515,7 +82515,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -82541,7 +82541,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82567,7 +82567,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82593,7 +82593,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82619,7 +82619,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82645,7 +82645,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82671,7 +82671,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82697,7 +82697,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82723,7 +82723,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82749,7 +82749,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82775,7 +82775,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82801,7 +82801,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82827,7 +82827,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 125.0, "wellLocation": { "offset": { @@ -82853,7 +82853,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -82879,7 +82879,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -82905,7 +82905,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -82931,7 +82931,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -82957,7 +82957,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -82983,7 +82983,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83009,7 +83009,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83035,7 +83035,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83061,7 +83061,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83087,7 +83087,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83113,7 +83113,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83139,7 +83139,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83165,7 +83165,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83191,7 +83191,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83217,7 +83217,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83243,7 +83243,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83269,7 +83269,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83295,7 +83295,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83321,7 +83321,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83347,7 +83347,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83373,7 +83373,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83399,7 +83399,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83425,7 +83425,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83451,7 +83451,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83477,7 +83477,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83503,7 +83503,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83529,7 +83529,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83555,7 +83555,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83581,7 +83581,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83607,7 +83607,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83633,7 +83633,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83659,7 +83659,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83685,7 +83685,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83711,7 +83711,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83737,7 +83737,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83763,7 +83763,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83789,7 +83789,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83815,7 +83815,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83841,7 +83841,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83867,7 +83867,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83893,7 +83893,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83919,7 +83919,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83945,7 +83945,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83971,7 +83971,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -83997,7 +83997,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84023,7 +84023,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84049,7 +84049,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84075,7 +84075,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84101,7 +84101,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84127,7 +84127,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84153,7 +84153,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84179,7 +84179,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84205,7 +84205,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84231,7 +84231,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84257,7 +84257,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84283,7 +84283,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84309,7 +84309,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84335,7 +84335,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84361,7 +84361,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84387,7 +84387,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84413,7 +84413,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84439,7 +84439,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84465,7 +84465,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84491,7 +84491,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84517,7 +84517,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84543,7 +84543,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84569,7 +84569,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84595,7 +84595,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84621,7 +84621,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84647,7 +84647,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84673,7 +84673,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84699,7 +84699,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -84725,7 +84725,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84751,7 +84751,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84777,7 +84777,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84803,7 +84803,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84829,7 +84829,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84855,7 +84855,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84881,7 +84881,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84907,7 +84907,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84933,7 +84933,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84959,7 +84959,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -84985,7 +84985,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -85011,7 +85011,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -85037,7 +85037,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -85063,7 +85063,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -85089,7 +85089,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -85115,7 +85115,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -85141,7 +85141,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -85167,7 +85167,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 121.5, "wellLocation": { "offset": { @@ -85193,7 +85193,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 75.0, "wellLocation": { "offset": { @@ -85219,7 +85219,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 75.0, "wellLocation": { "offset": { @@ -85245,7 +85245,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 120.0, "wellLocation": { "offset": { @@ -85271,7 +85271,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 120.0, "wellLocation": { "offset": { @@ -85347,7 +85347,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 12.0, "wellLocation": { "offset": { @@ -85373,7 +85373,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 12.0, "wellLocation": { "offset": { @@ -85399,7 +85399,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 15.0, "wellLocation": { "offset": { @@ -85425,7 +85425,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 15.0, "wellLocation": { "offset": { @@ -85451,7 +85451,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 32.0, "wellLocation": { "offset": { @@ -85477,7 +85477,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 32.0, "wellLocation": { "offset": { @@ -85503,7 +85503,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 32.0, "wellLocation": { "offset": { @@ -85529,7 +85529,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 32.0, "wellLocation": { "offset": { @@ -85555,7 +85555,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 32.0, "wellLocation": { "offset": { @@ -85581,7 +85581,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 32.0, "wellLocation": { "offset": { @@ -85607,7 +85607,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 30.0, "wellLocation": { "offset": { @@ -85633,7 +85633,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 30.0, "wellLocation": { "offset": { @@ -85659,7 +85659,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 30.0, "wellLocation": { "offset": { @@ -85685,7 +85685,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 30.0, "wellLocation": { "offset": { @@ -85711,7 +85711,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 30.0, "wellLocation": { "offset": { @@ -85737,7 +85737,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 30.0, "wellLocation": { "offset": { @@ -85794,7 +85794,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000MLeft_P50MRight_HS_MM_TC_TM_2_15_ABR3_Illumina_DNA_Enrichment_v4.py", + "name": "Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAEnrichmentv4.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4e17da0b57][Flex_P1000_96_Gripper_TC_TM_HS_AnalysisError_GripperCollisionWithTips].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19c783e363][Flex_X_v8_P1000_96_HS_GRIP_TC_TM_GripperCollisionWithTips].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4e17da0b57][Flex_P1000_96_Gripper_TC_TM_HS_AnalysisError_GripperCollisionWithTips].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19c783e363][Flex_X_v8_P1000_96_HS_GRIP_TC_TM_GripperCollisionWithTips].json index babe140d830..f309752b497 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4e17da0b57][Flex_P1000_96_Gripper_TC_TM_HS_AnalysisError_GripperCollisionWithTips].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19c783e363][Flex_X_v8_P1000_96_HS_GRIP_TC_TM_GripperCollisionWithTips].json @@ -12269,7 +12269,7 @@ ], "files": [ { - "name": "Flex_P1000_96_Gripper_TC_TM_HS_AnalysisError_GripperCollisionWithTips.json", + "name": "Flex_X_v8_P1000_96_HS_GRIP_TC_TM_GripperCollisionWithTips.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3b1bfd0d2d][OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin2].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19ffa9c839][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin2].json similarity index 92% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3b1bfd0d2d][OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin2].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19ffa9c839][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin2].json index c27872bca47..f0d76705138 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3b1bfd0d2d][OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin2].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[19ffa9c839][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin2].json @@ -478,7 +478,7 @@ "errorInfo": { "args": "('trash bin in slot 12 prevents heaterShakerModuleV1 from using slot 9.',)", "class": "DeckConflictError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin2.py\", line 11, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 814, in load_module\n module_core = self._core.load_module(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/protocol.py\", line 423, in load_module\n deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/deck_conflict.py\", line 203, in check\n wrapped_deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/motion_planning/deck_conflict.py\", line 210, in check\n raise DeckConflictError(\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin2.py\", line 11, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 814, in load_module\n module_core = self._core.load_module(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/protocol.py\", line 423, in load_module\n deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/deck_conflict.py\", line 203, in check\n wrapped_deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/motion_planning/deck_conflict.py\", line 210, in check\n raise DeckConflictError(\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -488,7 +488,7 @@ ], "files": [ { - "name": "OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin2.py", + "name": "OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin2.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8df082e960][OT2_P300MLeft_MM_TM_2_4_Zymo].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1c19a2055c][OT2_S_v2_4_P300M_None_MM_TM_Zymo].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8df082e960][OT2_P300MLeft_MM_TM_2_4_Zymo].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1c19a2055c][OT2_S_v2_4_P300M_None_MM_TM_Zymo].json index e53c0ddba17..54039a6738b 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8df082e960][OT2_P300MLeft_MM_TM_2_4_Zymo].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1c19a2055c][OT2_S_v2_4_P300M_None_MM_TM_Zymo].json @@ -65086,7 +65086,7 @@ "errors": [], "files": [ { - "name": "OT2_P300MLeft_MM_TM_2_4_Zymo.py", + "name": "OT2_S_v2_4_P300M_None_MM_TM_Zymo.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1e5825a070][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1e5825a070][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum].json index 63a9a2b758a..20c34cf527c 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1e5825a070][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[1e5825a070][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 2, - "command_output": "Usage: python -m opentrons.cli analyze [OPTIONS] FILES...\nTry 'python -m opentrons.cli analyze --help' for help.\n\nError: Invalid value for 'FILES...': Path '/var/lib/ot/protocols/generated_protocols/Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum.py' does not exist.\n" + "detail": "ParameterDefinitionError [line 95]: Minimum is type 'str', but must be of parameter type 'int'", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterDefinitionError: Minimum is type 'str', but must be of parameter type 'int'", + "errorCode": "4000", + "errorInfo": { + "args": "(\"Minimum is type 'str', but must be of parameter type 'int'\",)", + "class": "ParameterDefinitionError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum.py\", line 95, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 56, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 266, in validate_options\n _validate_min_and_max(minimum, maximum, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 213, in _validate_min_and_max\n raise ParameterDefinitionError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Description Too Long 2.18" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[abbaf71ba3][v2_18_None_None_NoRTPdisplay_name].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[24a6b167a7][OT2_X_v2_18_None_None_NoRTPdisplay_name].json similarity index 92% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[abbaf71ba3][v2_18_None_None_NoRTPdisplay_name].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[24a6b167a7][OT2_X_v2_18_None_None_NoRTPdisplay_name].json index a4725aee484..1d6692d3961 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[abbaf71ba3][v2_18_None_None_NoRTPdisplay_name].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[24a6b167a7][OT2_X_v2_18_None_None_NoRTPdisplay_name].json @@ -28,7 +28,7 @@ "errorInfo": { "args": "(\"ParameterContext.add_int() missing 1 required positional argument: 'display_name'\",)", "class": "TypeError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_None_None_NoRTPdisplay_name.py\", line 11, in add_parameters\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_X_v2_18_None_None_NoRTPdisplay_name.py\", line 11, in add_parameters\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -37,6 +37,10 @@ } ], "files": [ + { + "name": "OT2_X_v2_18_None_None_NoRTPdisplay_name.py", + "role": "main" + }, { "name": "cpx_4_tuberack_100ul.json", "role": "labware" @@ -56,10 +60,6 @@ { "name": "sample_labware.json", "role": "labware" - }, - { - "name": "v2_18_None_None_NoRTPdisplay_name.py", - "role": "main" } ], "labware": [], diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[27c2119f32][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[27c2119f32][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json deleted file mode 100644 index 595a81fcacd..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[27c2119f32][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "AttributeError [line 39]: 'dict' object has no attribute 'isidentifier'", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "AttributeError: 'dict' object has no attribute 'isidentifier'", - "errorCode": "4000", - "errorInfo": { - "args": "(\"'dict' object has no attribute 'isidentifier'\",)", - "class": "AttributeError", - "name": "isidentifier", - "obj": "{}", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name.py\", line 39, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 91, in add_float\n parameter = parameter_definition.create_float_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 202, in create_float_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 57, in __init__\n self._variable_name = validation.ensure_variable_name(variable_name)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 30, in ensure_variable_name\n if not variable_name.isidentifier():\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Description Too Long 2.18" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e99c0a71d5][Flex_P1000_96_Gripper_2_16_TriggerPrepareForMountMovement].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json similarity index 97% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e99c0a71d5][Flex_P1000_96_Gripper_2_16_TriggerPrepareForMountMovement].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json index bd42f6ff8a7..cd97f5c0023 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e99c0a71d5][Flex_P1000_96_Gripper_2_16_TriggerPrepareForMountMovement].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2eaf98de6a][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement].json @@ -2,12 +2,14 @@ "commands": [ { "commandType": "home", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "loadModule", + "notes": [], "params": { "location": { "slotName": "B1" @@ -116,6 +118,7 @@ }, { "commandType": "loadModule", + "notes": [], "params": { "location": { "slotName": "A3" @@ -170,6 +173,7 @@ }, { "commandType": "loadModule", + "notes": [], "params": { "location": { "slotName": "D1" @@ -619,6 +623,7 @@ }, { "commandType": "loadModule", + "notes": [], "params": { "location": { "slotName": "C1" @@ -1070,12 +1075,14 @@ }, { "commandType": "thermocycler/openLid", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "heaterShaker/openLabwareLatch", + "notes": [], "params": {}, "result": { "pipetteRetracted": true @@ -1084,6 +1091,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_96_well_aluminum_block", "location": {}, @@ -2240,6 +2248,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_96_pcr_adapter", "location": {}, @@ -3396,6 +3405,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_2ml_deep", "location": { @@ -4662,6 +4672,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_100ul_pcr_full_skirt", "location": { @@ -5829,6 +5840,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_flex_96_tiprack_adapter", "location": { @@ -5891,6 +5903,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_flex_96_tiprack_1000ul", "location": {}, @@ -7040,6 +7053,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_flex_96_tiprack_1000ul", "location": { @@ -8191,6 +8205,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_flex_96_tiprack_1000ul", "location": { @@ -9342,6 +9357,7 @@ }, { "commandType": "loadPipette", + "notes": [], "params": { "mount": "left", "pipetteName": "p1000_96" @@ -9351,6 +9367,7 @@ }, { "commandType": "loadLiquid", + "notes": [], "params": { "volumeByWell": { "A1": 29000.0 @@ -9361,6 +9378,7 @@ }, { "commandType": "configureNozzleLayout", + "notes": [], "params": { "configurationParams": { "primaryNozzle": "A12", @@ -9372,6 +9390,7 @@ }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -9397,6 +9416,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9422,6 +9442,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -9446,6 +9467,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9471,6 +9493,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -9493,12 +9516,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -9524,6 +9549,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9549,6 +9575,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -9573,6 +9600,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9598,6 +9626,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -9620,12 +9649,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -9651,6 +9682,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9676,6 +9708,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -9700,6 +9733,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9725,6 +9759,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -9747,12 +9782,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -9778,6 +9815,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9803,6 +9841,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -9827,6 +9866,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9852,6 +9892,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -9874,12 +9915,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -9905,6 +9948,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9930,6 +9974,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -9954,6 +9999,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -9979,6 +10025,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -10001,12 +10048,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -10032,6 +10081,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10057,6 +10107,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -10081,6 +10132,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10106,6 +10158,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -10128,12 +10181,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -10159,6 +10214,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10184,6 +10240,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -10208,6 +10265,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10233,6 +10291,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -10255,12 +10314,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -10286,6 +10347,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10311,6 +10373,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -10335,6 +10398,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10360,6 +10424,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -10382,12 +10447,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -10413,6 +10480,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10438,6 +10506,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -10462,6 +10531,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10487,6 +10557,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -10509,12 +10580,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -10540,6 +10613,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10565,6 +10639,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -10589,6 +10664,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10614,6 +10690,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -10636,12 +10713,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -10667,6 +10746,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10692,6 +10772,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -10716,6 +10797,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10741,6 +10823,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -10763,12 +10846,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -10794,6 +10879,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10819,6 +10905,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -10843,6 +10930,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10868,6 +10956,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": true, @@ -10890,12 +10979,14 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "gripperWasteChute" @@ -10907,6 +10998,7 @@ }, { "commandType": "configureNozzleLayout", + "notes": [], "params": { "configurationParams": { "style": "ALL" @@ -10917,6 +11009,7 @@ }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -10942,6 +11035,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -10967,6 +11061,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -10991,6 +11086,7 @@ }, { "commandType": "moveToWell", + "notes": [], "params": { "forceDirect": false, "wellLocation": { @@ -11014,6 +11110,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 995.0, @@ -11039,6 +11136,7 @@ }, { "commandType": "moveToAddressableArea", + "notes": [], "params": { "addressableAreaName": "96ChannelWasteChute", "forceDirect": false, @@ -11060,6 +11158,7 @@ }, { "commandType": "blowOutInPlace", + "notes": [], "params": { "flowRate": 80.0 }, @@ -11068,6 +11167,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -11093,6 +11193,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -11117,6 +11218,7 @@ }, { "commandType": "moveToWell", + "notes": [], "params": { "forceDirect": false, "wellLocation": { @@ -11140,6 +11242,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 995.0, @@ -11165,6 +11268,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": false, @@ -11187,6 +11291,7 @@ }, { "commandType": "blowOutInPlace", + "notes": [], "params": { "flowRate": 80.0 }, @@ -11195,6 +11300,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 10.0, @@ -11220,6 +11326,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -11244,6 +11351,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 10.0, @@ -11269,6 +11377,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 15.0, @@ -11294,6 +11403,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "pushOut": 0.0, @@ -11320,6 +11430,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 15.0, @@ -11345,6 +11456,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "pushOut": 0.0, @@ -11371,6 +11483,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 15.0, @@ -11396,6 +11509,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "pushOut": 0.0, @@ -11422,6 +11536,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 15.0, @@ -11447,6 +11562,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "pushOut": 0.0, @@ -11473,6 +11589,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 15.0, @@ -11498,6 +11615,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 15.0, @@ -11523,6 +11641,7 @@ }, { "commandType": "dropTip", + "notes": [], "params": { "alternateDropLocation": false, "wellLocation": { @@ -11546,6 +11665,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "gripperWasteChute" @@ -11557,6 +11677,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -11566,6 +11687,7 @@ }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -11591,6 +11713,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -11616,6 +11739,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "pushOut": 0.0, @@ -11642,6 +11766,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -11667,6 +11792,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "pushOut": 0.0, @@ -11693,6 +11819,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -11718,6 +11845,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -11743,6 +11871,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 10.0, @@ -11768,6 +11897,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -11792,6 +11922,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 10.0, @@ -11817,6 +11948,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -11842,6 +11974,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 5.0, @@ -11867,6 +12000,7 @@ }, { "commandType": "touchTip", + "notes": [], "params": { "radius": 1.0, "speed": 60.0, @@ -11891,6 +12025,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashB3", "alternateDropLocation": false, @@ -11913,6 +12048,7 @@ }, { "commandType": "blowOutInPlace", + "notes": [], "params": { "flowRate": 80.0 }, @@ -11921,6 +12057,7 @@ }, { "commandType": "dropTip", + "notes": [], "params": { "alternateDropLocation": false, "wellLocation": { @@ -11944,6 +12081,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "gripperWasteChute" @@ -11955,6 +12093,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -11966,6 +12105,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -11977,6 +12117,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -11988,6 +12129,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -11999,6 +12141,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12010,6 +12153,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12021,6 +12165,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12032,6 +12177,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12043,6 +12189,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -12054,6 +12201,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12065,6 +12213,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12076,6 +12225,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12087,6 +12237,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -12098,6 +12249,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12109,6 +12261,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12120,6 +12273,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12129,6 +12283,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12140,6 +12295,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12149,6 +12305,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12160,6 +12317,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12169,6 +12327,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12180,6 +12339,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12189,6 +12349,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12200,6 +12361,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12209,6 +12371,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12218,6 +12381,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12227,6 +12391,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12236,6 +12401,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12247,6 +12413,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12258,6 +12425,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -12269,6 +12437,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12280,6 +12449,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12291,6 +12461,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12302,6 +12473,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -12313,6 +12485,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12324,6 +12497,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12335,6 +12509,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -12346,6 +12521,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12357,6 +12533,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12368,6 +12545,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12379,6 +12557,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -12390,6 +12569,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12401,6 +12581,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12412,6 +12593,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12421,6 +12603,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12432,6 +12615,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12441,6 +12625,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12452,6 +12637,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12461,6 +12647,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12472,6 +12659,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12481,6 +12669,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12492,6 +12681,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12501,6 +12691,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12510,6 +12701,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12519,6 +12711,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12528,6 +12721,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12539,6 +12733,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12550,6 +12745,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12561,6 +12757,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12572,6 +12769,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -12583,6 +12781,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12594,6 +12793,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12605,6 +12805,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -12616,6 +12817,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12627,6 +12829,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12638,6 +12841,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12649,6 +12853,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12660,6 +12865,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12671,6 +12877,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -12682,6 +12889,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12693,6 +12901,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -12704,6 +12913,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12715,6 +12925,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12724,6 +12935,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12735,6 +12947,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12744,6 +12957,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12755,6 +12969,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12764,6 +12979,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12775,6 +12991,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12784,6 +13001,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12795,6 +13013,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12804,6 +13023,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12813,6 +13033,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12822,6 +13043,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12831,6 +13053,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12842,6 +13065,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12851,6 +13075,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12862,6 +13087,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12871,6 +13097,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -12882,6 +13109,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12891,6 +13119,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -12902,6 +13131,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -12913,6 +13143,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12922,6 +13153,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12933,6 +13165,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12942,6 +13175,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -12953,6 +13187,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12962,6 +13197,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -12973,6 +13209,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -12982,6 +13219,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -12993,6 +13231,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13002,6 +13241,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -13013,6 +13253,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -13024,6 +13265,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13033,6 +13275,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13042,6 +13285,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13051,6 +13295,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13060,6 +13305,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13069,6 +13315,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13078,6 +13325,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13087,6 +13335,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13096,6 +13345,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13105,6 +13355,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13114,6 +13365,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13123,6 +13375,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13132,6 +13385,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -13143,6 +13397,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13152,6 +13407,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -13163,6 +13419,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13172,6 +13429,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -13183,6 +13441,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -13194,6 +13453,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13203,6 +13463,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -13214,6 +13475,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13223,6 +13485,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -13234,6 +13497,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13243,6 +13507,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -13254,6 +13519,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13263,6 +13529,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -13274,6 +13541,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13283,6 +13551,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -13294,6 +13563,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -13305,6 +13575,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13314,6 +13585,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13323,6 +13595,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13332,6 +13605,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13341,6 +13615,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13350,6 +13625,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13359,6 +13635,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13368,6 +13645,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13377,6 +13655,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13386,6 +13665,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13395,6 +13675,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13404,6 +13685,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13413,6 +13695,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -13424,6 +13707,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13433,6 +13717,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -13444,6 +13729,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13453,6 +13739,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -13464,6 +13751,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -13475,6 +13763,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13484,6 +13773,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -13495,6 +13785,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13504,6 +13795,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -13515,6 +13807,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13524,6 +13817,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -13535,6 +13829,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13544,6 +13839,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -13555,6 +13851,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13564,6 +13861,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -13575,6 +13873,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -13586,6 +13885,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13595,6 +13895,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13604,6 +13905,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13613,6 +13915,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13622,6 +13925,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13631,6 +13935,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13640,6 +13945,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13649,6 +13955,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13658,6 +13965,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13667,6 +13975,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13676,6 +13985,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13685,6 +13995,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13694,6 +14005,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -13705,6 +14017,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13714,6 +14027,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -13725,6 +14039,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13734,6 +14049,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C2" @@ -13745,6 +14061,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "B2" @@ -13756,6 +14073,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13765,6 +14083,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -13776,6 +14095,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13785,6 +14105,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "slotName": "C3" @@ -13796,6 +14117,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13805,6 +14127,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -13816,6 +14139,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13825,6 +14149,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -13836,6 +14161,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13845,6 +14171,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "C4" @@ -13856,6 +14183,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -13867,6 +14195,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13876,6 +14205,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13885,6 +14215,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13894,6 +14225,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13903,6 +14235,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13912,6 +14245,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13921,6 +14255,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13930,6 +14265,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13939,6 +14275,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13948,6 +14285,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13957,6 +14295,7 @@ }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": {}, "strategy": "usingGripper" @@ -13966,12 +14305,14 @@ }, { "commandType": "thermocycler/closeLid", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "thermocycler/setTargetBlockTemperature", + "notes": [], "params": { "celsius": 75.0, "holdTimeSeconds": 5.0 @@ -13983,12 +14324,14 @@ }, { "commandType": "thermocycler/waitForBlockTemperature", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "thermocycler/setTargetLidTemperature", + "notes": [], "params": { "celsius": 80.0 }, @@ -13999,24 +14342,28 @@ }, { "commandType": "thermocycler/waitForLidTemperature", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "thermocycler/deactivateBlock", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "thermocycler/deactivateLid", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "heaterShaker/openLabwareLatch", + "notes": [], "params": {}, "result": { "pipetteRetracted": true @@ -14025,12 +14372,14 @@ }, { "commandType": "heaterShaker/closeLabwareLatch", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "heaterShaker/setTargetTemperature", + "notes": [], "params": { "celsius": 75.0 }, @@ -14039,6 +14388,7 @@ }, { "commandType": "heaterShaker/setAndWaitForShakeSpeed", + "notes": [], "params": { "rpm": 1000.0 }, @@ -14049,24 +14399,28 @@ }, { "commandType": "heaterShaker/waitForTemperature", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "heaterShaker/deactivateHeater", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "heaterShaker/deactivateShaker", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "temperatureModule/setTargetTemperature", + "notes": [], "params": { "celsius": 80.0 }, @@ -14077,12 +14431,14 @@ }, { "commandType": "temperatureModule/waitForTemperature", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "temperatureModule/setTargetTemperature", + "notes": [], "params": { "celsius": 10.0 }, @@ -14093,18 +14449,21 @@ }, { "commandType": "temperatureModule/waitForTemperature", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "temperatureModule/deactivate", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "moveLabware", + "notes": [], "params": { "newLocation": { "addressableAreaName": "D4" @@ -14125,7 +14484,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000_96_Gripper_2_16_TriggerPrepareForMountMovement.py", + "name": "Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_TriggerPrepareForMountMovement.py", "role": "main" }, { @@ -14238,5 +14597,6 @@ "pipetteName": "p1000_96" } ], - "robotType": "OT-3 Standard" + "robotType": "OT-3 Standard", + "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08dfa462f][OT2_P300SLeft_MM1_MM_2_2_EngageMagHeightFromBase].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3251c6e175][OT2_S_v2_2_P300S_None_MM1_MM2_EngageMagHeightFromBase].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08dfa462f][OT2_P300SLeft_MM1_MM_2_2_EngageMagHeightFromBase].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3251c6e175][OT2_S_v2_2_P300S_None_MM1_MM2_EngageMagHeightFromBase].json index 1f5fb20889a..12e563ee366 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08dfa462f][OT2_P300SLeft_MM1_MM_2_2_EngageMagHeightFromBase].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3251c6e175][OT2_S_v2_2_P300S_None_MM1_MM2_EngageMagHeightFromBase].json @@ -1519,7 +1519,7 @@ "errors": [], "files": [ { - "name": "OT2_P300SLeft_MM1_MM_2_2_EngageMagHeightFromBase.py", + "name": "OT2_S_v2_2_P300S_None_MM1_MM2_EngageMagHeightFromBase.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[98bf2a2368][v2_18_NO_PIPETTES_DescriptionTooLongRTP].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[33db294a9b][Flex_X_v2_18_NO_PIPETTES_DescriptionTooLongRTP].json similarity index 95% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[98bf2a2368][v2_18_NO_PIPETTES_DescriptionTooLongRTP].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[33db294a9b][Flex_X_v2_18_NO_PIPETTES_DescriptionTooLongRTP].json index 7941715858e..a61a4a011ff 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[98bf2a2368][v2_18_NO_PIPETTES_DescriptionTooLongRTP].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[33db294a9b][Flex_X_v2_18_NO_PIPETTES_DescriptionTooLongRTP].json @@ -27,6 +27,10 @@ }, "errors": [], "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_DescriptionTooLongRTP.py", + "role": "main" + }, { "name": "cpx_4_tuberack_100ul.json", "role": "labware" @@ -46,10 +50,6 @@ { "name": "sample_labware.json", "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_DescriptionTooLongRTP.py", - "role": "main" } ], "labware": [], diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[38b5298c77][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[38b5298c77][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum].json index bf3cb2b3a98..94b4b0ec4eb 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[38b5298c77][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[38b5298c77][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 1, - "command_output": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.10/runpy.py\", line 187, in _run_module_as_main\n mod_name, mod_spec, code = _get_module_details(mod_name, _Error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 146, in _get_module_details\n return _get_module_details(pkg_main_name, error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 110, in _get_module_details\n __import__(pkg_name)\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/__init__.py\", line 9, in \n from .analyze import analyze\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/analyze.py\", line 31, in \n from opentrons.util.performance_helpers import track_analysis\n File \"/usr/local/lib/python3.10/site-packages/opentrons/util/performance_helpers.py\", line 4, in \n from opentrons_shared_data.performance.dev_types import (\nModuleNotFoundError: No module named 'opentrons_shared_data.performance'\n" + "detail": "ParameterValueError [line 32]: Parameter must be between 1 and 3 inclusive.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be between 1 and 3 inclusive.", + "errorCode": "4000", + "errorInfo": { + "args": "('Parameter must be between 1 and 3 inclusive.',)", + "class": "ParameterValueError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum.py\", line 32, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 56, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 104, in value\n raise ParameterValueError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_less_than_minimum.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Default not in range" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5fc4f3adbc][OT2_P20SRight_None_6_1_SimpleTransferError].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4389e3ab18][OT2_X_v6_P20S_None_SimpleTransfer].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5fc4f3adbc][OT2_P20SRight_None_6_1_SimpleTransferError].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4389e3ab18][OT2_X_v6_P20S_None_SimpleTransfer].json index a5d379ba794..b4b8520bb3a 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5fc4f3adbc][OT2_P20SRight_None_6_1_SimpleTransferError].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4389e3ab18][OT2_X_v6_P20S_None_SimpleTransfer].json @@ -1740,7 +1740,7 @@ ], "files": [ { - "name": "OT2_P20SRight_None_6_1_SimpleTransferError.json", + "name": "OT2_X_v6_P20S_None_SimpleTransfer.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[140ede3934][v2_18_NO_PIPETTES_GoldenRTP_OT2].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4458220422][OT2_S_v2_18_NO_PIPETTES_GoldenRTP_OT2].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[140ede3934][v2_18_NO_PIPETTES_GoldenRTP_OT2].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4458220422][OT2_S_v2_18_NO_PIPETTES_GoldenRTP_OT2].json index dd0ddada99c..0037466294b 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[140ede3934][v2_18_NO_PIPETTES_GoldenRTP_OT2].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4458220422][OT2_S_v2_18_NO_PIPETTES_GoldenRTP_OT2].json @@ -207,6 +207,10 @@ }, "errors": [], "files": [ + { + "name": "OT2_S_v2_18_NO_PIPETTES_GoldenRTP_OT2.py", + "role": "main" + }, { "name": "cpx_4_tuberack_100ul.json", "role": "labware" @@ -226,10 +230,6 @@ { "name": "sample_labware.json", "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_GoldenRTP_OT2.py", - "role": "main" } ], "labware": [], diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a23a1de3ce][OT2_P300M_P20S_TC_HS_TM_2_16_SmokeTestV3].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4a82419f1f][OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a23a1de3ce][OT2_P300M_P20S_TC_HS_TM_2_16_SmokeTestV3].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4a82419f1f][OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3].json index 01832c02dce..22da4b6635a 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a23a1de3ce][OT2_P300M_P20S_TC_HS_TM_2_16_SmokeTestV3].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4a82419f1f][OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -15549,7 +15549,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_TC_HS_TM_2_16_SmokeTestV3.py", + "name": "OT2_S_v2_16_P300M_P20S_HS_TC_TM_SmokeTestV3.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b20d3ccf8f][OT2_P300M_P20S_TC_HS_TM_2_17_dispense_changes].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b17883f74][OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b20d3ccf8f][OT2_P300M_P20S_TC_HS_TM_2_17_dispense_changes].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b17883f74][OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes].json index c6a45057ed3..4fb35baadae 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b20d3ccf8f][OT2_P300M_P20S_TC_HS_TM_2_17_dispense_changes].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4b17883f74][OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes].json @@ -2988,7 +2988,7 @@ ], "files": [ { - "name": "OT2_P300M_P20S_TC_HS_TM_2_17_dispense_changes.py", + "name": "OT2_S_v2_17_P300M_P20S_HS_TC_TM_dispense_changes.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cda954ef1e][Flex_None_None_MM_2_16_AnalysisError_MagneticModuleInFlexProtocol].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4cb705bdbf][Flex_X_v2_16_NO_PIPETTES_MM_MagneticModuleInFlexProtocol].json similarity index 98% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cda954ef1e][Flex_None_None_MM_2_16_AnalysisError_MagneticModuleInFlexProtocol].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4cb705bdbf][Flex_X_v2_16_NO_PIPETTES_MM_MagneticModuleInFlexProtocol].json index cdc0aca74d4..1f2a502c2ab 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cda954ef1e][Flex_None_None_MM_2_16_AnalysisError_MagneticModuleInFlexProtocol].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4cb705bdbf][Flex_X_v2_16_NO_PIPETTES_MM_MagneticModuleInFlexProtocol].json @@ -68,7 +68,7 @@ ], "files": [ { - "name": "Flex_None_None_MM_2_16_AnalysisError_MagneticModuleInFlexProtocol.py", + "name": "Flex_X_v2_16_NO_PIPETTES_MM_MagneticModuleInFlexProtocol.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4fadc166c0][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4fadc166c0][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json index d154fb760d8..b41923a6a2d 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4fadc166c0][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4fadc166c0][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 2, - "command_output": "Usage: python -m opentrons.cli analyze [OPTIONS] FILES...\nTry 'python -m opentrons.cli analyze --help' for help.\n\nError: Invalid value for 'FILES...': Path '/var/lib/ot/protocols/generated_protocols/Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name.py' does not exist.\n" + "detail": "ParameterNameError [line 39]: Variable name must be a string.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterNameError: Variable name must be a string.", + "errorCode": "4000", + "errorInfo": { + "args": "('Variable name must be a string.',)", + "class": "ParameterNameError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name.py\", line 39, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 93, in add_float\n parameter = parameter_definition.create_float_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 202, in create_float_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 57, in __init__\n self._variable_name = validation.ensure_variable_name(variable_name)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 46, in ensure_variable_name\n raise ParameterNameError(\"Variable name must be a string.\")\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_variable_name.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Description Too Long 2.18" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51a761307d][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51a761307d][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json index bf3cb2b3a98..b54f76e6b5f 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51a761307d][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51a761307d][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 1, - "command_output": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.10/runpy.py\", line 187, in _run_module_as_main\n mod_name, mod_spec, code = _get_module_details(mod_name, _Error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 146, in _get_module_details\n return _get_module_details(pkg_main_name, error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 110, in _get_module_details\n __import__(pkg_name)\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/__init__.py\", line 9, in \n from .analyze import analyze\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/analyze.py\", line 31, in \n from opentrons.util.performance_helpers import track_analysis\n File \"/usr/local/lib/python3.10/site-packages/opentrons/util/performance_helpers.py\", line 4, in \n from opentrons_shared_data.performance.dev_types import (\nModuleNotFoundError: No module named 'opentrons_shared_data.performance'\n" + "detail": "ParameterValueError [line 23]: Parameter must be between 1 and 3 inclusive.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be between 1 and 3 inclusive.", + "errorCode": "4000", + "errorInfo": { + "args": "('Parameter must be between 1 and 3 inclusive.',)", + "class": "ParameterValueError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum.py\", line 23, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 56, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 104, in value\n raise ParameterValueError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Default not in range" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5fa61df9e2][OT2_P300M_P20S_NoMod_6_1_MixTransferManyLiquids].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5fa61df9e2][OT2_P300M_P20S_NoMod_6_1_MixTransferManyLiquids].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json index a3065f29fa7..eb584b67d86 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5fa61df9e2][OT2_P300M_P20S_NoMod_6_1_MixTransferManyLiquids].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[51fc977577][OT2_S_v6_P300M_P20S_MixTransferManyLiquids].json @@ -5250,7 +5250,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_NoMod_6_1_MixTransferManyLiquids.json", + "name": "OT2_S_v6_P300M_P20S_MixTransferManyLiquids.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6b0e10c81f][OT2_P300S_None_2_16_verifyNoFloatingPointErrorInPipetting].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6b0e10c81f][OT2_P300S_None_2_16_verifyNoFloatingPointErrorInPipetting].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json index 66b3e6cd601..7a72c2ac8a8 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6b0e10c81f][OT2_P300S_None_2_16_verifyNoFloatingPointErrorInPipetting].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[54f717cfd1][OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting].json @@ -1769,7 +1769,7 @@ "errors": [], "files": [ { - "name": "OT2_P300S_None_2_16_verifyNoFloatingPointErrorInPipetting.py", + "name": "OT2_S_v2_16_P300S_None_verifyNoFloatingPointErrorInPipetting.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac35bb394d][Flex_None_None_2_16_AnalysisError_TrashBinInStagingAreaCol4].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[58750bf5fb][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4].json similarity index 75% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac35bb394d][Flex_None_None_2_16_AnalysisError_TrashBinInStagingAreaCol4].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[58750bf5fb][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4].json index 4beea85705a..c123a9162fc 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac35bb394d][Flex_None_None_2_16_AnalysisError_TrashBinInStagingAreaCol4].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[58750bf5fb][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4].json @@ -28,7 +28,7 @@ "errorInfo": { "args": "('Staging areas not permitted for trash bin.',)", "class": "ValueError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_None_None_2_16_AnalysisError_TrashBinInStagingAreaCol4.py\", line 15, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 512, in load_trash_bin\n raise ValueError(\"Staging areas not permitted for trash bin.\")\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4.py\", line 15, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 512, in load_trash_bin\n raise ValueError(\"Staging areas not permitted for trash bin.\")\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -38,7 +38,7 @@ ], "files": [ { - "name": "Flex_None_None_2_16_AnalysisError_TrashBinInStagingAreaCol4.py", + "name": "Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol4.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3369b24214][Flex_P300Gen2_None_2_16_AnalysisError_OT2PipetteInFlexProtocol].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3369b24214][Flex_P300Gen2_None_2_16_AnalysisError_OT2PipetteInFlexProtocol].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json index f0b422e26bf..946f02f66fb 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3369b24214][Flex_P300Gen2_None_2_16_AnalysisError_OT2PipetteInFlexProtocol].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5e958b7c98][Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol].json @@ -1205,7 +1205,7 @@ ], "files": [ { - "name": "Flex_P300Gen2_None_2_16_AnalysisError_OT2PipetteInFlexProtocol.py", + "name": "Flex_X_v2_16_P300MGen2_None_OT2PipetteInFlexProtocol.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60015c6e65][OT2_X_v2_18_None_None_duplicateRTPVariableName].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60015c6e65][OT2_X_v2_18_None_None_duplicateRTPVariableName].json new file mode 100644 index 00000000000..477935caf3a --- /dev/null +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60015c6e65][OT2_X_v2_18_None_None_duplicateRTPVariableName].json @@ -0,0 +1,95 @@ +{ + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, + "errors": [ + { + "detail": "ParameterNameError [line 28]: \"variable_a\" is already defined as a variable name for another parameter. All variable names must be unique.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterNameError: \"variable_a\" is already defined as a variable name for another parameter. All variable names must be unique.", + "errorCode": "4000", + "errorInfo": { + "args": "('\"variable_a\" is already defined as a variable name for another parameter. All variable names must be unique.',)", + "class": "ParameterNameError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_X_v2_18_None_None_duplicateRTPVariableName.py\", line 28, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 55, in add_int\n validation.validate_variable_name_unique(variable_name, set(self._parameters))\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 24, in validate_variable_name_unique\n raise ParameterNameError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "OT2_X_v2_18_None_None_duplicateRTPVariableName.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" + } + ], + "labware": [], + "liquids": [], + "metadata": { + "protocolName": "Multiple RTP Variables with Same Name" + }, + "modules": [], + "pipettes": [], + "robotType": "OT-2 Standard", + "runTimeParameters": [ + { + "default": 1.0, + "description": "This is a description", + "displayName": "int 1", + "max": 3.0, + "min": 1.0, + "type": "int", + "value": 1.0, + "variableName": "variable_a" + }, + { + "default": 1.0, + "description": "This is a description", + "displayName": "int 2", + "max": 3.0, + "min": 1.0, + "type": "int", + "value": 1.0, + "variableName": "variable_b" + } + ] +} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[25f79fd65e][Flex_None_None_TM_2_16_AnalysisError_ModuleInStagingAreaCol3].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json similarity index 98% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[25f79fd65e][Flex_None_None_TM_2_16_AnalysisError_ModuleInStagingAreaCol3].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json index 87642f0e06f..5555f2a39c9 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[25f79fd65e][Flex_None_None_TM_2_16_AnalysisError_ModuleInStagingAreaCol3].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[604023f7f1][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3].json @@ -147,7 +147,7 @@ ], "files": [ { - "name": "Flex_None_None_TM_2_16_AnalysisError_ModuleInStagingAreaCol3.py", + "name": "Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol3.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60c1d39463][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60c1d39463][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json index bf3cb2b3a98..4670b2eed78 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60c1d39463][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[60c1d39463][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 1, - "command_output": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.10/runpy.py\", line 187, in _run_module_as_main\n mod_name, mod_spec, code = _get_module_details(mod_name, _Error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 146, in _get_module_details\n return _get_module_details(pkg_main_name, error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 110, in _get_module_details\n __import__(pkg_name)\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/__init__.py\", line 9, in \n from .analyze import analyze\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/analyze.py\", line 31, in \n from opentrons.util.performance_helpers import track_analysis\n File \"/usr/local/lib/python3.10/site-packages/opentrons/util/performance_helpers.py\", line 4, in \n from opentrons_shared_data.performance.dev_types import (\nModuleNotFoundError: No module named 'opentrons_shared_data.performance'\n" + "detail": "ParameterValueError [line 24]: Parameter must be set to one of the allowed values of {9, 20, 15}.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be set to one of the allowed values of {9, 20, 15}.", + "errorCode": "4000", + "errorInfo": { + "args": "('Parameter must be set to one of the allowed values of {9, 20, 15}.',)", + "class": "ParameterValueError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices.py\", line 24, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 56, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 95, in value\n raise ParameterValueError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "default choice does not match a choice" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[512a897a47][Flex_None_None_TM_2_16_AnalysisError_ModuleInStagingAreaCol4].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6126498df7][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4].json similarity index 75% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[512a897a47][Flex_None_None_TM_2_16_AnalysisError_ModuleInStagingAreaCol4].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6126498df7][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4].json index ce2f5357e41..e8964ba8d4c 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[512a897a47][Flex_None_None_TM_2_16_AnalysisError_ModuleInStagingAreaCol4].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6126498df7][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4].json @@ -28,7 +28,7 @@ "errorInfo": { "args": "('Cannot load a module onto a staging slot.',)", "class": "ValueError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_None_None_TM_2_16_AnalysisError_ModuleInStagingAreaCol4.py\", line 15, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 812, in load_module\n raise ValueError(\"Cannot load a module onto a staging slot.\")\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4.py\", line 15, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 812, in load_module\n raise ValueError(\"Cannot load a module onto a staging slot.\")\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -38,7 +38,7 @@ ], "files": [ { - "name": "Flex_None_None_TM_2_16_AnalysisError_ModuleInStagingAreaCol4.py", + "name": "Flex_X_v2_16_NO_PIPETTES_TM_ModuleInStagingAreaCol4.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a5024181f][v2_18_NO_PIPETTES_GoldenRTP].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[61619d5498][Flex_S_v2_18_NO_PIPETTES_GoldenRTP].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a5024181f][v2_18_NO_PIPETTES_GoldenRTP].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[61619d5498][Flex_S_v2_18_NO_PIPETTES_GoldenRTP].json index d8724684b87..73acba65566 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0a5024181f][v2_18_NO_PIPETTES_GoldenRTP].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[61619d5498][Flex_S_v2_18_NO_PIPETTES_GoldenRTP].json @@ -207,6 +207,10 @@ }, "errors": [], "files": [ + { + "name": "Flex_S_v2_18_NO_PIPETTES_GoldenRTP.py", + "role": "main" + }, { "name": "cpx_4_tuberack_100ul.json", "role": "labware" @@ -226,10 +230,6 @@ { "name": "sample_labware.json", "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_GoldenRTP.py", - "role": "main" } ], "labware": [], diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6ad5590adf][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6ad5590adf][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json index 63d50a052ed..5265e8ee773 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6ad5590adf][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6ad5590adf][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 2, - "command_output": "Usage: python -m opentrons.cli analyze [OPTIONS] FILES...\nTry 'python -m opentrons.cli analyze --help' for help.\n\nError: Invalid value for 'FILES...': Path '/var/lib/ot/protocols/generated_protocols/Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit.py' does not exist.\n" + "detail": "ParameterNameError [line 113]: Unit must be a string and at most 10 characters.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterNameError: Unit must be a string and at most 10 characters.", + "errorCode": "4000", + "errorInfo": { + "args": "('Unit must be a string and at most 10 characters.',)", + "class": "ParameterNameError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit.py\", line 113, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 56, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 59, in __init__\n self._unit = validation.ensure_unit_string_length(unit)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 74, in ensure_unit_string_length\n raise ParameterNameError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Description Too Long 2.18" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f60da4eefb][OT2_None_None_2_12_Python310SyntaxRobotAnalysisOnlyError].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6cee20a957][OT2_S_v2_12_NO_PIPETTES_Python310SyntaxRobotAnalysisOnlyError].json similarity index 96% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f60da4eefb][OT2_None_None_2_12_Python310SyntaxRobotAnalysisOnlyError].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6cee20a957][OT2_S_v2_12_NO_PIPETTES_Python310SyntaxRobotAnalysisOnlyError].json index eb21e0a61f7..695428d10ba 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f60da4eefb][OT2_None_None_2_12_Python310SyntaxRobotAnalysisOnlyError].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6cee20a957][OT2_S_v2_12_NO_PIPETTES_Python310SyntaxRobotAnalysisOnlyError].json @@ -58,7 +58,7 @@ "errors": [], "files": [ { - "name": "OT2_None_None_2_12_Python310SyntaxRobotAnalysisOnlyError.py", + "name": "OT2_S_v2_12_NO_PIPETTES_Python310SyntaxRobotAnalysisOnlyError.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0c057a918][Flex_P1000_96_HS_TM_MM_2_15_MagMaxRNACells96Ch].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0c057a918][Flex_P1000_96_HS_TM_MM_2_15_MagMaxRNACells96Ch].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json index 325dc552421..4fedc777673 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d0c057a918][Flex_P1000_96_HS_TM_MM_2_15_MagMaxRNACells96Ch].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e34343cfc][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction].json @@ -13135,7 +13135,7 @@ ], "files": [ { - "name": "Flex_P1000_96_HS_TM_MM_2_15_MagMaxRNACells96Ch.py", + "name": "Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_MagMaxRNAExtraction.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e49dae5293][OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin1].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e5128f107][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1].json similarity index 92% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e49dae5293][OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin1].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e5128f107][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1].json index e5e032fc69d..cdbe1cbc2f6 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e49dae5293][OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin1].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e5128f107][OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1].json @@ -478,7 +478,7 @@ "errorInfo": { "args": "('trash bin in slot 12 prevents heaterShakerModuleV1 from using slot 11.',)", "class": "DeckConflictError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin1.py\", line 11, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 814, in load_module\n module_core = self._core.load_module(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/protocol.py\", line 423, in load_module\n deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/deck_conflict.py\", line 203, in check\n wrapped_deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/motion_planning/deck_conflict.py\", line 223, in check\n raise DeckConflictError(\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1.py\", line 11, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 814, in load_module\n module_core = self._core.load_module(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/protocol.py\", line 423, in load_module\n deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/deck_conflict.py\", line 203, in check\n wrapped_deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/motion_planning/deck_conflict.py\", line 223, in check\n raise DeckConflictError(\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -488,7 +488,7 @@ ], "files": [ { - "name": "OT2_None_None_HS_2_16_AnalysisError_HeaterShakerConflictWithTrashBin1.py", + "name": "OT2_X_v2_16_None_None_HS_HeaterShakerConflictWithTrashBin1.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e744cbb48][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e744cbb48][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json index bf3cb2b3a98..75501aa1ccd 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e744cbb48][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6e744cbb48][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 1, - "command_output": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.10/runpy.py\", line 187, in _run_module_as_main\n mod_name, mod_spec, code = _get_module_details(mod_name, _Error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 146, in _get_module_details\n return _get_module_details(pkg_main_name, error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 110, in _get_module_details\n __import__(pkg_name)\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/__init__.py\", line 9, in \n from .analyze import analyze\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/analyze.py\", line 31, in \n from opentrons.util.performance_helpers import track_analysis\n File \"/usr/local/lib/python3.10/site-packages/opentrons/util/performance_helpers.py\", line 4, in \n from opentrons_shared_data.performance.dev_types import (\nModuleNotFoundError: No module named 'opentrons_shared_data.performance'\n" + "detail": "ParameterValueError [line 48]: Parameter must be set to one of the allowed values of {'flex_8channel_50', 'flex_1channel_50'}.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be set to one of the allowed values of {'flex_8channel_50', 'flex_1channel_50'}.", + "errorCode": "4000", + "errorInfo": { + "args": "(\"Parameter must be set to one of the allowed values of {'flex_8channel_50', 'flex_1channel_50'}.\",)", + "class": "ParameterValueError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices.py\", line 48, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 152, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 95, in value\n raise ParameterValueError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "default choice does not match a choice" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[56ce1419a7][OT2_P300SLeft_MM1_MM_TM_2_3_Mix].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f3e297a11][OT2_S_v2_3_P300S_None_MM1_MM2_TM_Mix].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[56ce1419a7][OT2_P300SLeft_MM1_MM_TM_2_3_Mix].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f3e297a11][OT2_S_v2_3_P300S_None_MM1_MM2_TM_Mix].json index fec10bf30f7..7cb40077d2e 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[56ce1419a7][OT2_P300SLeft_MM1_MM_TM_2_3_Mix].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f3e297a11][OT2_S_v2_3_P300S_None_MM1_MM2_TM_Mix].json @@ -3285,7 +3285,7 @@ "errors": [], "files": [ { - "name": "OT2_P300SLeft_MM1_MM_TM_2_3_Mix.py", + "name": "OT2_S_v2_3_P300S_None_MM1_MM2_TM_Mix.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d76f2144c][OT2_P300M_P20S_TC_HS_TM_2_16_aspirateDispenseMix0Volume].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d76f2144c][OT2_P300M_P20S_TC_HS_TM_2_16_aspirateDispenseMix0Volume].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json index 526eda204d8..df4476882f5 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d76f2144c][OT2_P300M_P20S_TC_HS_TM_2_16_aspirateDispenseMix0Volume].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6f84e60cb0][OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume].json @@ -2723,7 +2723,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_TC_HS_TM_2_16_aspirateDispenseMix0Volume.py", + "name": "OT2_S_v2_16_P300M_P20S_HS_TC_TM_aspirateDispenseMix0Volume.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7215d9088e][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7215d9088e][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json deleted file mode 100644 index 886be44959a..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7215d9088e][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterValueError [line 73]: Parameter value 6 has type , must match type .", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter value 6 has type , must match type .", - "errorCode": "4000", - "errorInfo": { - "args": "(\"Parameter value 6 has type , must match type .\",)", - "class": "ParameterValueError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default.py\", line 73, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 148, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 218, in validate_options\n validate_type(default, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 205, in validate_type\n raise ParameterValueError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Description Too Long 2.18" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7a9449b64c][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7a9449b64c][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json deleted file mode 100644 index 046cad9e591..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7a9449b64c][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterDefinitionError [line 62]: All choices provided must match type ", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterDefinitionError: All choices provided must match type ", - "errorCode": "4000", - "errorInfo": { - "args": "(\"All choices provided must match type \",)", - "class": "ParameterDefinitionError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value.py\", line 62, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 148, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 226, in validate_options\n _validate_choices(minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 164, in _validate_choices\n raise ParameterDefinitionError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Description Too Long 2.18" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d06568bfe][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d06568bfe][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json index 8bd304d3726..41eeee384db 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d06568bfe][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7d06568bfe][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 2, - "command_output": "Usage: python -m opentrons.cli analyze [OPTIONS] FILES...\nTry 'python -m opentrons.cli analyze --help' for help.\n\nError: Invalid value for 'FILES...': Path '/var/lib/ot/protocols/generated_protocols/Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name.py' does not exist.\n" + "detail": "ParameterNameError [line 51]: Display name must be a string and at most 30 characters.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterNameError: Display name must be a string and at most 30 characters.", + "errorCode": "4000", + "errorInfo": { + "args": "('Display name must be a string and at most 30 characters.',)", + "class": "ParameterNameError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name.py\", line 51, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 152, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 264, in validate_options\n _validate_choices(minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 189, in _validate_choices\n ensure_display_name(display_name)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 33, in ensure_display_name\n raise ParameterNameError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Description Too Long 2.18" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7f2ef0eaff][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7f2ef0eaff][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json index bf3cb2b3a98..8181845d3d4 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7f2ef0eaff][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7f2ef0eaff][Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 1, - "command_output": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.10/runpy.py\", line 187, in _run_module_as_main\n mod_name, mod_spec, code = _get_module_details(mod_name, _Error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 146, in _get_module_details\n return _get_module_details(pkg_main_name, error)\n File \"/usr/local/lib/python3.10/runpy.py\", line 110, in _get_module_details\n __import__(pkg_name)\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/__init__.py\", line 9, in \n from .analyze import analyze\n File \"/usr/local/lib/python3.10/site-packages/opentrons/cli/analyze.py\", line 31, in \n from opentrons.util.performance_helpers import track_analysis\n File \"/usr/local/lib/python3.10/site-packages/opentrons/util/performance_helpers.py\", line 4, in \n from opentrons_shared_data.performance.dev_types import (\nModuleNotFoundError: No module named 'opentrons_shared_data.performance'\n" + "detail": "ParameterValueError [line 36]: Parameter must be set to one of the allowed values of {160.0, 100.0, 200.0}.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be set to one of the allowed values of {160.0, 100.0, 200.0}.", + "errorCode": "4000", + "errorInfo": { + "args": "('Parameter must be set to one of the allowed values of {160.0, 100.0, 200.0}.',)", + "class": "ParameterValueError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices.py\", line 36, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 93, in add_float\n parameter = parameter_definition.create_float_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 202, in create_float_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 95, in value\n raise ParameterValueError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_float_default_no_matching_choices.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "default choice does not match a choice" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7be98bf838][Flex_None_None_2_16_AnalysisError_TrashBinInCol2].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[82e9853b34][Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2].json similarity index 72% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7be98bf838][Flex_None_None_2_16_AnalysisError_TrashBinInCol2].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[82e9853b34][Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2].json index 89c43a035a9..80b5f0999af 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7be98bf838][Flex_None_None_2_16_AnalysisError_TrashBinInCol2].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[82e9853b34][Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2].json @@ -28,7 +28,7 @@ "errorInfo": { "args": "('Invalid location for trash bin: C2.\\nValid slots: Any slot in column 1 or 3.',)", "class": "InvalidTrashBinLocationError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_None_None_2_16_AnalysisError_TrashBinInCol2.py\", line 15, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 513, in load_trash_bin\n addressable_area_name = validation.ensure_and_convert_trash_bin_location(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/validation.py\", line 331, in ensure_and_convert_trash_bin_location\n raise InvalidTrashBinLocationError(\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2.py\", line 15, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 513, in load_trash_bin\n addressable_area_name = validation.ensure_and_convert_trash_bin_location(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/validation.py\", line 331, in ensure_and_convert_trash_bin_location\n raise InvalidTrashBinLocationError(\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -38,7 +38,7 @@ ], "files": [ { - "name": "Flex_None_None_2_16_AnalysisError_TrashBinInCol2.py", + "name": "Flex_X_v2_16_NO_PIPETTES_TrashBinInCol2.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2251879791][OT2_P300M_P20S_None_2_12_FailOnRun].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8455adcea9][OT2_S_v2_12_P300M_P20S_FailOnRun].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2251879791][OT2_P300M_P20S_None_2_12_FailOnRun].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8455adcea9][OT2_S_v2_12_P300M_P20S_FailOnRun].json index 5608b51bab4..b44fa048895 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2251879791][OT2_P300M_P20S_None_2_12_FailOnRun].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8455adcea9][OT2_S_v2_12_P300M_P20S_FailOnRun].json @@ -2583,7 +2583,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_None_2_12_FailOnRun.py", + "name": "OT2_S_v2_12_P300M_P20S_FailOnRun.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4017e085e6][OT2_P300M_P20S_TC_HS_TM_2_14_SmokeTestV3].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4017e085e6][OT2_P300M_P20S_TC_HS_TM_2_14_SmokeTestV3].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json index cca27aadcbb..47aea45189a 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4017e085e6][OT2_P300M_P20S_TC_HS_TM_2_14_SmokeTestV3].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8860ee702c][OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -12728,7 +12728,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_TC_HS_TM_2_14_SmokeTestV3.py", + "name": "OT2_S_v2_14_P300M_P20S_HS_TC_TM_SmokeTestV3.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8f2cb4b133][Flex_P50MLeft_P1000MRight_None_2_15_ABRKAPALibraryQuantLongv2].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88a20da279][Flex_S_v2_15_P50M_P1000M_KAPALibraryQuantLongv2].json similarity index 96% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8f2cb4b133][Flex_P50MLeft_P1000MRight_None_2_15_ABRKAPALibraryQuantLongv2].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88a20da279][Flex_S_v2_15_P50M_P1000M_KAPALibraryQuantLongv2].json index 021cb9bf4db..24f2c1e2fb6 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8f2cb4b133][Flex_P50MLeft_P1000MRight_None_2_15_ABRKAPALibraryQuantLongv2].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88a20da279][Flex_S_v2_15_P50M_P1000M_KAPALibraryQuantLongv2].json @@ -17877,7 +17877,7 @@ "commandType": "custom", "notes": [], "params": { - "legacyCommandText": "Flex_P50MLeft_P1000MRight_None_2_15_ABRKAPALibraryQuantLongv2.py", + "legacyCommandText": "Flex_S_v2_15_P50M_P1000M_KAPALibraryQuantLongv2.py", "legacyCommandType": "command.COMMENT" }, "result": {}, @@ -17977,7 +17977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18003,7 +18003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18029,7 +18029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18055,7 +18055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18081,7 +18081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18107,7 +18107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18166,7 +18166,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18192,7 +18192,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 98.0, "wellLocation": { "offset": { @@ -18251,7 +18251,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 95.0, "wellLocation": { "offset": { @@ -18334,7 +18334,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18382,7 +18382,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18408,7 +18408,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18434,7 +18434,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18460,7 +18460,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18486,7 +18486,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18512,7 +18512,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18571,7 +18571,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18597,7 +18597,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 98.0, "wellLocation": { "offset": { @@ -18656,7 +18656,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 95.0, "wellLocation": { "offset": { @@ -18739,7 +18739,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18787,7 +18787,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18813,7 +18813,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18839,7 +18839,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18865,7 +18865,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18891,7 +18891,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18917,7 +18917,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18976,7 +18976,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 200.0, "wellLocation": { "offset": { @@ -19002,7 +19002,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 98.0, "wellLocation": { "offset": { @@ -19061,7 +19061,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 95.0, "wellLocation": { "offset": { @@ -19144,7 +19144,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -19248,7 +19248,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 2.0, "wellLocation": { "offset": { @@ -19274,7 +19274,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 2.0, "wellLocation": { "offset": { @@ -19350,7 +19350,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 2.0, "wellLocation": { "offset": { @@ -19376,7 +19376,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 2.0, "wellLocation": { "offset": { @@ -19452,7 +19452,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 2.0, "wellLocation": { "offset": { @@ -19478,7 +19478,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 2.0, "wellLocation": { "offset": { @@ -19588,7 +19588,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19614,7 +19614,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19640,7 +19640,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19666,7 +19666,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19692,7 +19692,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19718,7 +19718,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19744,7 +19744,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19770,7 +19770,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19796,7 +19796,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19822,7 +19822,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19848,7 +19848,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19874,7 +19874,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19900,7 +19900,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19926,7 +19926,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19952,7 +19952,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19978,7 +19978,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20004,7 +20004,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20030,7 +20030,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20056,7 +20056,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20082,7 +20082,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20108,7 +20108,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20134,7 +20134,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20160,7 +20160,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20186,7 +20186,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20212,7 +20212,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20238,7 +20238,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20264,7 +20264,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20290,7 +20290,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20316,7 +20316,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20342,7 +20342,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20368,7 +20368,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20394,7 +20394,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20420,7 +20420,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20446,7 +20446,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20472,7 +20472,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20498,7 +20498,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20524,7 +20524,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20550,7 +20550,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20576,7 +20576,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20602,7 +20602,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20628,7 +20628,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20654,7 +20654,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20680,7 +20680,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20706,7 +20706,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20732,7 +20732,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20758,7 +20758,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20784,7 +20784,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20810,7 +20810,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20836,7 +20836,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20862,7 +20862,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20888,7 +20888,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20914,7 +20914,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20940,7 +20940,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20966,7 +20966,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -20992,7 +20992,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21018,7 +21018,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21044,7 +21044,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21070,7 +21070,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21096,7 +21096,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21122,7 +21122,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21148,7 +21148,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21174,7 +21174,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21200,7 +21200,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21226,7 +21226,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21252,7 +21252,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21278,7 +21278,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21304,7 +21304,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21330,7 +21330,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21356,7 +21356,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21382,7 +21382,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21408,7 +21408,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21434,7 +21434,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21460,7 +21460,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21486,7 +21486,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21512,7 +21512,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21538,7 +21538,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21564,7 +21564,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21590,7 +21590,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21616,7 +21616,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21642,7 +21642,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21668,7 +21668,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21694,7 +21694,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21720,7 +21720,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21746,7 +21746,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21772,7 +21772,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21798,7 +21798,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21824,7 +21824,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21850,7 +21850,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21876,7 +21876,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21902,7 +21902,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21928,7 +21928,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21954,7 +21954,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21980,7 +21980,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22006,7 +22006,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22032,7 +22032,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22058,7 +22058,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22084,7 +22084,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22110,7 +22110,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22136,7 +22136,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22162,7 +22162,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22295,7 +22295,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22321,7 +22321,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22347,7 +22347,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22373,7 +22373,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22399,7 +22399,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22425,7 +22425,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22451,7 +22451,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22477,7 +22477,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22503,7 +22503,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22529,7 +22529,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22555,7 +22555,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22581,7 +22581,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22607,7 +22607,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22633,7 +22633,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22659,7 +22659,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22685,7 +22685,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22711,7 +22711,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22737,7 +22737,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22763,7 +22763,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22789,7 +22789,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22815,7 +22815,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22841,7 +22841,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22867,7 +22867,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22893,7 +22893,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22919,7 +22919,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22945,7 +22945,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22971,7 +22971,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -22997,7 +22997,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23023,7 +23023,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23049,7 +23049,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23075,7 +23075,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23101,7 +23101,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23127,7 +23127,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23153,7 +23153,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23179,7 +23179,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23205,7 +23205,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23231,7 +23231,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23257,7 +23257,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23283,7 +23283,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23309,7 +23309,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23335,7 +23335,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23361,7 +23361,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23387,7 +23387,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23413,7 +23413,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23439,7 +23439,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23465,7 +23465,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23491,7 +23491,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23517,7 +23517,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23543,7 +23543,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23569,7 +23569,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23595,7 +23595,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23621,7 +23621,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23647,7 +23647,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23673,7 +23673,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23699,7 +23699,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23725,7 +23725,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23751,7 +23751,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23777,7 +23777,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23803,7 +23803,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23829,7 +23829,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23855,7 +23855,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23881,7 +23881,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23907,7 +23907,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23933,7 +23933,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23959,7 +23959,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -23985,7 +23985,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24011,7 +24011,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24037,7 +24037,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24063,7 +24063,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24089,7 +24089,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24115,7 +24115,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24141,7 +24141,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24167,7 +24167,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24193,7 +24193,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24219,7 +24219,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24245,7 +24245,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24271,7 +24271,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24297,7 +24297,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24323,7 +24323,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24349,7 +24349,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24375,7 +24375,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24401,7 +24401,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24427,7 +24427,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24453,7 +24453,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24479,7 +24479,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24505,7 +24505,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24531,7 +24531,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24557,7 +24557,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24583,7 +24583,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24609,7 +24609,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24635,7 +24635,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24661,7 +24661,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24687,7 +24687,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24713,7 +24713,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24739,7 +24739,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24765,7 +24765,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24791,7 +24791,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24817,7 +24817,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24843,7 +24843,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -24869,7 +24869,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25002,7 +25002,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25028,7 +25028,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25054,7 +25054,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25080,7 +25080,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25106,7 +25106,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25132,7 +25132,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25158,7 +25158,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25184,7 +25184,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25210,7 +25210,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25236,7 +25236,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25262,7 +25262,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25288,7 +25288,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25314,7 +25314,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25340,7 +25340,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25366,7 +25366,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25392,7 +25392,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25418,7 +25418,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25444,7 +25444,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25470,7 +25470,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25496,7 +25496,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25522,7 +25522,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25548,7 +25548,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25574,7 +25574,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25600,7 +25600,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25626,7 +25626,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25652,7 +25652,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25678,7 +25678,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25704,7 +25704,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25730,7 +25730,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25756,7 +25756,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25782,7 +25782,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25808,7 +25808,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25834,7 +25834,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25860,7 +25860,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25886,7 +25886,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25912,7 +25912,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25938,7 +25938,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25964,7 +25964,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25990,7 +25990,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26016,7 +26016,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26042,7 +26042,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26068,7 +26068,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26094,7 +26094,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26120,7 +26120,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26146,7 +26146,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26172,7 +26172,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26198,7 +26198,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26224,7 +26224,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26250,7 +26250,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26276,7 +26276,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26302,7 +26302,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26328,7 +26328,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26354,7 +26354,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26380,7 +26380,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26406,7 +26406,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26432,7 +26432,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26458,7 +26458,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26484,7 +26484,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26510,7 +26510,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26536,7 +26536,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26562,7 +26562,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26588,7 +26588,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26614,7 +26614,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26640,7 +26640,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26666,7 +26666,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26692,7 +26692,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26718,7 +26718,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26744,7 +26744,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26770,7 +26770,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26796,7 +26796,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26822,7 +26822,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26848,7 +26848,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26874,7 +26874,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26900,7 +26900,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26926,7 +26926,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26952,7 +26952,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -26978,7 +26978,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27004,7 +27004,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27030,7 +27030,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27056,7 +27056,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27082,7 +27082,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27108,7 +27108,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27134,7 +27134,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27160,7 +27160,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27186,7 +27186,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27212,7 +27212,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27238,7 +27238,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27264,7 +27264,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27290,7 +27290,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27316,7 +27316,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27342,7 +27342,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27368,7 +27368,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27394,7 +27394,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27420,7 +27420,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27446,7 +27446,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27472,7 +27472,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27498,7 +27498,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27524,7 +27524,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27550,7 +27550,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27576,7 +27576,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27715,7 +27715,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 5.0, "wellLocation": { "offset": { @@ -27741,7 +27741,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 5.0, "wellLocation": { "offset": { @@ -27817,7 +27817,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 5.0, "wellLocation": { "offset": { @@ -27843,7 +27843,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 5.0, "wellLocation": { "offset": { @@ -27919,7 +27919,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 5.0, "wellLocation": { "offset": { @@ -27945,7 +27945,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 5.0, "wellLocation": { "offset": { @@ -28055,7 +28055,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28081,7 +28081,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28107,7 +28107,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28133,7 +28133,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28159,7 +28159,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28185,7 +28185,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28211,7 +28211,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28237,7 +28237,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28263,7 +28263,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28289,7 +28289,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28315,7 +28315,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28341,7 +28341,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28367,7 +28367,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28393,7 +28393,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28419,7 +28419,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28445,7 +28445,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28471,7 +28471,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28497,7 +28497,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28523,7 +28523,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28549,7 +28549,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28575,7 +28575,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28601,7 +28601,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28627,7 +28627,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28653,7 +28653,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28679,7 +28679,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28705,7 +28705,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28731,7 +28731,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28757,7 +28757,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28783,7 +28783,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28809,7 +28809,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28835,7 +28835,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28861,7 +28861,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28887,7 +28887,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28913,7 +28913,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28939,7 +28939,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28965,7 +28965,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28991,7 +28991,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29017,7 +29017,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29043,7 +29043,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29069,7 +29069,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29095,7 +29095,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29121,7 +29121,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29147,7 +29147,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29173,7 +29173,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29199,7 +29199,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29225,7 +29225,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29251,7 +29251,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29277,7 +29277,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29303,7 +29303,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29329,7 +29329,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29355,7 +29355,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29381,7 +29381,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29407,7 +29407,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29433,7 +29433,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29459,7 +29459,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29485,7 +29485,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29511,7 +29511,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29537,7 +29537,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29563,7 +29563,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29589,7 +29589,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29615,7 +29615,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29641,7 +29641,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29667,7 +29667,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29693,7 +29693,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29719,7 +29719,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29745,7 +29745,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29771,7 +29771,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29797,7 +29797,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29823,7 +29823,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29849,7 +29849,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29875,7 +29875,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29901,7 +29901,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29927,7 +29927,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29953,7 +29953,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -29979,7 +29979,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30005,7 +30005,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30031,7 +30031,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30057,7 +30057,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30083,7 +30083,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30109,7 +30109,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30135,7 +30135,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30161,7 +30161,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30187,7 +30187,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30213,7 +30213,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30239,7 +30239,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30265,7 +30265,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30291,7 +30291,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30317,7 +30317,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30343,7 +30343,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30369,7 +30369,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30395,7 +30395,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30421,7 +30421,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30447,7 +30447,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30473,7 +30473,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30499,7 +30499,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30525,7 +30525,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30551,7 +30551,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30577,7 +30577,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30603,7 +30603,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30629,7 +30629,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30762,7 +30762,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30788,7 +30788,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30814,7 +30814,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30840,7 +30840,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30866,7 +30866,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30892,7 +30892,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30918,7 +30918,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30944,7 +30944,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30970,7 +30970,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -30996,7 +30996,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31022,7 +31022,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31048,7 +31048,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31074,7 +31074,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31100,7 +31100,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31126,7 +31126,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31152,7 +31152,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31178,7 +31178,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31204,7 +31204,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31230,7 +31230,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31256,7 +31256,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31282,7 +31282,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31308,7 +31308,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31334,7 +31334,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31360,7 +31360,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31386,7 +31386,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31412,7 +31412,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31438,7 +31438,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31464,7 +31464,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31490,7 +31490,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31516,7 +31516,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31542,7 +31542,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31568,7 +31568,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31594,7 +31594,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31620,7 +31620,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31646,7 +31646,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31672,7 +31672,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31698,7 +31698,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31724,7 +31724,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31750,7 +31750,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31776,7 +31776,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31802,7 +31802,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31828,7 +31828,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31854,7 +31854,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31880,7 +31880,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31906,7 +31906,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31932,7 +31932,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31958,7 +31958,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31984,7 +31984,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32010,7 +32010,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32036,7 +32036,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32062,7 +32062,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32088,7 +32088,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32114,7 +32114,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32140,7 +32140,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32166,7 +32166,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32192,7 +32192,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32218,7 +32218,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32244,7 +32244,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32270,7 +32270,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32296,7 +32296,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32322,7 +32322,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32348,7 +32348,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32374,7 +32374,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32400,7 +32400,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32426,7 +32426,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32452,7 +32452,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32478,7 +32478,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32504,7 +32504,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32530,7 +32530,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32556,7 +32556,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32582,7 +32582,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32608,7 +32608,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32634,7 +32634,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32660,7 +32660,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32686,7 +32686,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32712,7 +32712,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32738,7 +32738,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32764,7 +32764,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32790,7 +32790,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32816,7 +32816,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32842,7 +32842,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32868,7 +32868,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32894,7 +32894,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32920,7 +32920,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32946,7 +32946,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32972,7 +32972,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -32998,7 +32998,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33024,7 +33024,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33050,7 +33050,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33076,7 +33076,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33102,7 +33102,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33128,7 +33128,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33154,7 +33154,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33180,7 +33180,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33206,7 +33206,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33232,7 +33232,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33258,7 +33258,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33284,7 +33284,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33310,7 +33310,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33336,7 +33336,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33469,7 +33469,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33495,7 +33495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33521,7 +33521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33547,7 +33547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33573,7 +33573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33599,7 +33599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33625,7 +33625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33651,7 +33651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33677,7 +33677,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33703,7 +33703,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33729,7 +33729,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33755,7 +33755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33781,7 +33781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33807,7 +33807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33833,7 +33833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33859,7 +33859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33885,7 +33885,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33911,7 +33911,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33937,7 +33937,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33963,7 +33963,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33989,7 +33989,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34015,7 +34015,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34041,7 +34041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34067,7 +34067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34093,7 +34093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34119,7 +34119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34145,7 +34145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34171,7 +34171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34197,7 +34197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34223,7 +34223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34249,7 +34249,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34275,7 +34275,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34301,7 +34301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34327,7 +34327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34353,7 +34353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34379,7 +34379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34405,7 +34405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34431,7 +34431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34457,7 +34457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34483,7 +34483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34509,7 +34509,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34535,7 +34535,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34561,7 +34561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34587,7 +34587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34613,7 +34613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34639,7 +34639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34665,7 +34665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34691,7 +34691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34717,7 +34717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34743,7 +34743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34769,7 +34769,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34795,7 +34795,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34821,7 +34821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34847,7 +34847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34873,7 +34873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34899,7 +34899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34925,7 +34925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34951,7 +34951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -34977,7 +34977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35003,7 +35003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35029,7 +35029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35055,7 +35055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35081,7 +35081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35107,7 +35107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35133,7 +35133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35159,7 +35159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35185,7 +35185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35211,7 +35211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35237,7 +35237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35263,7 +35263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35289,7 +35289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35315,7 +35315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35341,7 +35341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35367,7 +35367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35393,7 +35393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35419,7 +35419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35445,7 +35445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35471,7 +35471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35497,7 +35497,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35523,7 +35523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35549,7 +35549,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35575,7 +35575,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35601,7 +35601,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35627,7 +35627,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35653,7 +35653,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35679,7 +35679,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35705,7 +35705,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35731,7 +35731,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35757,7 +35757,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35783,7 +35783,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35809,7 +35809,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35835,7 +35835,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35861,7 +35861,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35887,7 +35887,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35913,7 +35913,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35939,7 +35939,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35965,7 +35965,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35991,7 +35991,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -36017,7 +36017,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -36043,7 +36043,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -36182,7 +36182,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36208,7 +36208,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36234,7 +36234,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36260,7 +36260,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36286,7 +36286,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36312,7 +36312,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36338,7 +36338,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36364,7 +36364,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36440,7 +36440,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36466,7 +36466,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36492,7 +36492,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36518,7 +36518,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36544,7 +36544,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36570,7 +36570,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36596,7 +36596,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36622,7 +36622,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -36728,7 +36728,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -36754,7 +36754,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -36863,7 +36863,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -36889,7 +36889,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37028,7 +37028,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37054,7 +37054,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37163,7 +37163,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37189,7 +37189,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37298,7 +37298,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37324,7 +37324,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37433,7 +37433,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37459,7 +37459,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37568,7 +37568,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37594,7 +37594,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37703,7 +37703,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37729,7 +37729,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -37892,7 +37892,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -37918,7 +37918,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -37944,7 +37944,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -37970,7 +37970,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -37996,7 +37996,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38022,7 +38022,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38048,7 +38048,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38074,7 +38074,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38100,7 +38100,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38126,7 +38126,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38152,7 +38152,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38178,7 +38178,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38204,7 +38204,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38230,7 +38230,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38256,7 +38256,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38282,7 +38282,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38308,7 +38308,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38334,7 +38334,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38360,7 +38360,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38386,7 +38386,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38412,7 +38412,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38438,7 +38438,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38464,7 +38464,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38490,7 +38490,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38516,7 +38516,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38542,7 +38542,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38568,7 +38568,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38594,7 +38594,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38620,7 +38620,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38646,7 +38646,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38672,7 +38672,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38698,7 +38698,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38724,7 +38724,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38750,7 +38750,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38776,7 +38776,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38802,7 +38802,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38828,7 +38828,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38854,7 +38854,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38880,7 +38880,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38906,7 +38906,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38932,7 +38932,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38958,7 +38958,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38984,7 +38984,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39010,7 +39010,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39036,7 +39036,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39062,7 +39062,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39088,7 +39088,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39114,7 +39114,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39140,7 +39140,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39166,7 +39166,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39192,7 +39192,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39218,7 +39218,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39244,7 +39244,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39270,7 +39270,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39296,7 +39296,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39322,7 +39322,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39348,7 +39348,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39374,7 +39374,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39400,7 +39400,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39426,7 +39426,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39452,7 +39452,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -39520,7 +39520,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -39588,7 +39588,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -39656,7 +39656,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -39724,7 +39724,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -39792,7 +39792,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -39860,7 +39860,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -39969,7 +39969,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -39995,7 +39995,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40021,7 +40021,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40047,7 +40047,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40073,7 +40073,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40099,7 +40099,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40125,7 +40125,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40151,7 +40151,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40177,7 +40177,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40203,7 +40203,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40229,7 +40229,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40255,7 +40255,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40281,7 +40281,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40307,7 +40307,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40333,7 +40333,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40359,7 +40359,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40385,7 +40385,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40411,7 +40411,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40437,7 +40437,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40463,7 +40463,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40489,7 +40489,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40515,7 +40515,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40541,7 +40541,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40567,7 +40567,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40593,7 +40593,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40619,7 +40619,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40645,7 +40645,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40671,7 +40671,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40697,7 +40697,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40723,7 +40723,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40749,7 +40749,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40775,7 +40775,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40801,7 +40801,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40827,7 +40827,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40853,7 +40853,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40879,7 +40879,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40905,7 +40905,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40931,7 +40931,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40957,7 +40957,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40983,7 +40983,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41009,7 +41009,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41035,7 +41035,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41061,7 +41061,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41087,7 +41087,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41113,7 +41113,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41139,7 +41139,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41165,7 +41165,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41191,7 +41191,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41217,7 +41217,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41243,7 +41243,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41269,7 +41269,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41295,7 +41295,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41321,7 +41321,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41347,7 +41347,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41373,7 +41373,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41399,7 +41399,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41425,7 +41425,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41451,7 +41451,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41477,7 +41477,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41503,7 +41503,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41529,7 +41529,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -41597,7 +41597,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -41665,7 +41665,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -41733,7 +41733,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -41801,7 +41801,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -41869,7 +41869,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -41937,7 +41937,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -42046,7 +42046,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42072,7 +42072,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42098,7 +42098,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42124,7 +42124,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42150,7 +42150,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42176,7 +42176,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42202,7 +42202,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42228,7 +42228,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42254,7 +42254,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42280,7 +42280,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42306,7 +42306,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42332,7 +42332,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42358,7 +42358,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42384,7 +42384,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42410,7 +42410,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42436,7 +42436,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42462,7 +42462,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42488,7 +42488,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42514,7 +42514,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42540,7 +42540,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42566,7 +42566,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42592,7 +42592,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42618,7 +42618,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42644,7 +42644,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42670,7 +42670,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42696,7 +42696,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42722,7 +42722,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42748,7 +42748,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42774,7 +42774,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42800,7 +42800,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42826,7 +42826,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42852,7 +42852,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42878,7 +42878,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42904,7 +42904,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42930,7 +42930,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42956,7 +42956,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -42982,7 +42982,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43008,7 +43008,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43034,7 +43034,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43060,7 +43060,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43086,7 +43086,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43112,7 +43112,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43138,7 +43138,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43164,7 +43164,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43190,7 +43190,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43216,7 +43216,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43242,7 +43242,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43268,7 +43268,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43294,7 +43294,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43320,7 +43320,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43346,7 +43346,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43372,7 +43372,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43398,7 +43398,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43424,7 +43424,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43450,7 +43450,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43476,7 +43476,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43502,7 +43502,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43528,7 +43528,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43554,7 +43554,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43580,7 +43580,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43606,7 +43606,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -43674,7 +43674,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -43742,7 +43742,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -43810,7 +43810,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -43878,7 +43878,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -43946,7 +43946,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -44014,7 +44014,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -44123,7 +44123,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44149,7 +44149,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44175,7 +44175,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44201,7 +44201,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44227,7 +44227,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44253,7 +44253,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44279,7 +44279,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44305,7 +44305,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44331,7 +44331,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44357,7 +44357,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44383,7 +44383,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44409,7 +44409,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44435,7 +44435,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44461,7 +44461,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44487,7 +44487,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44513,7 +44513,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44539,7 +44539,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44565,7 +44565,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44591,7 +44591,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44617,7 +44617,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44643,7 +44643,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44669,7 +44669,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44695,7 +44695,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44721,7 +44721,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44747,7 +44747,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44773,7 +44773,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44799,7 +44799,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44825,7 +44825,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44851,7 +44851,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44877,7 +44877,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44903,7 +44903,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44929,7 +44929,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44955,7 +44955,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44981,7 +44981,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45007,7 +45007,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45033,7 +45033,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45059,7 +45059,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45085,7 +45085,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45111,7 +45111,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45137,7 +45137,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45163,7 +45163,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45189,7 +45189,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45215,7 +45215,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45241,7 +45241,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45267,7 +45267,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45293,7 +45293,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45319,7 +45319,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45345,7 +45345,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45371,7 +45371,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45397,7 +45397,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45423,7 +45423,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45449,7 +45449,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45475,7 +45475,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45501,7 +45501,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45527,7 +45527,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45553,7 +45553,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45579,7 +45579,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45605,7 +45605,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45631,7 +45631,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45657,7 +45657,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45683,7 +45683,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -45751,7 +45751,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -45819,7 +45819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -45887,7 +45887,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -45955,7 +45955,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -46023,7 +46023,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -46091,7 +46091,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -46200,7 +46200,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46226,7 +46226,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46252,7 +46252,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46278,7 +46278,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46304,7 +46304,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46330,7 +46330,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46356,7 +46356,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46382,7 +46382,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46408,7 +46408,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46434,7 +46434,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46460,7 +46460,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46486,7 +46486,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46512,7 +46512,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46538,7 +46538,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46564,7 +46564,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46590,7 +46590,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46616,7 +46616,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46642,7 +46642,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46668,7 +46668,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46694,7 +46694,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46720,7 +46720,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46746,7 +46746,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46772,7 +46772,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46798,7 +46798,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46824,7 +46824,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46850,7 +46850,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46876,7 +46876,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46902,7 +46902,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46928,7 +46928,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46954,7 +46954,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46980,7 +46980,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47006,7 +47006,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47032,7 +47032,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47058,7 +47058,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47084,7 +47084,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47110,7 +47110,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47136,7 +47136,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47162,7 +47162,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47188,7 +47188,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47214,7 +47214,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47240,7 +47240,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47266,7 +47266,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47292,7 +47292,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47318,7 +47318,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47344,7 +47344,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47370,7 +47370,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47396,7 +47396,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47422,7 +47422,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47448,7 +47448,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47474,7 +47474,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47500,7 +47500,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47526,7 +47526,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47552,7 +47552,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47578,7 +47578,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47604,7 +47604,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47630,7 +47630,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47656,7 +47656,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47682,7 +47682,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47708,7 +47708,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47734,7 +47734,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47760,7 +47760,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -47828,7 +47828,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -47896,7 +47896,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -47964,7 +47964,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -48032,7 +48032,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -48100,7 +48100,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -48168,7 +48168,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -48277,7 +48277,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48303,7 +48303,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48329,7 +48329,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48355,7 +48355,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48381,7 +48381,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48407,7 +48407,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48433,7 +48433,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48459,7 +48459,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48485,7 +48485,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48511,7 +48511,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48537,7 +48537,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48563,7 +48563,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48589,7 +48589,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48615,7 +48615,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48641,7 +48641,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48667,7 +48667,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48693,7 +48693,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48719,7 +48719,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48745,7 +48745,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48771,7 +48771,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48797,7 +48797,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48823,7 +48823,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48849,7 +48849,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48875,7 +48875,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48901,7 +48901,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48927,7 +48927,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48953,7 +48953,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -48979,7 +48979,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49005,7 +49005,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49031,7 +49031,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49057,7 +49057,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49083,7 +49083,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49109,7 +49109,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49135,7 +49135,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49161,7 +49161,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49187,7 +49187,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49213,7 +49213,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49239,7 +49239,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49265,7 +49265,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49291,7 +49291,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49317,7 +49317,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49343,7 +49343,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49369,7 +49369,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49395,7 +49395,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49421,7 +49421,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49447,7 +49447,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49473,7 +49473,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49499,7 +49499,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49525,7 +49525,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49551,7 +49551,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49577,7 +49577,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49603,7 +49603,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49629,7 +49629,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49655,7 +49655,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49681,7 +49681,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49707,7 +49707,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49733,7 +49733,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49759,7 +49759,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49785,7 +49785,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49811,7 +49811,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -49837,7 +49837,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -49905,7 +49905,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -49973,7 +49973,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -50041,7 +50041,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -50109,7 +50109,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -50177,7 +50177,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -50245,7 +50245,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -50354,7 +50354,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50380,7 +50380,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50406,7 +50406,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50432,7 +50432,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50458,7 +50458,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50484,7 +50484,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50510,7 +50510,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50536,7 +50536,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50562,7 +50562,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50588,7 +50588,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50614,7 +50614,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50640,7 +50640,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50666,7 +50666,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50692,7 +50692,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50718,7 +50718,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50744,7 +50744,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50770,7 +50770,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50796,7 +50796,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50822,7 +50822,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50848,7 +50848,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50874,7 +50874,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50900,7 +50900,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50926,7 +50926,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50952,7 +50952,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -50978,7 +50978,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51004,7 +51004,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51030,7 +51030,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51056,7 +51056,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51082,7 +51082,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51108,7 +51108,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51134,7 +51134,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51160,7 +51160,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51186,7 +51186,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51212,7 +51212,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51238,7 +51238,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51264,7 +51264,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51290,7 +51290,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51316,7 +51316,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51342,7 +51342,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51368,7 +51368,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51394,7 +51394,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51420,7 +51420,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51446,7 +51446,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51472,7 +51472,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51498,7 +51498,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51524,7 +51524,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51550,7 +51550,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51576,7 +51576,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51602,7 +51602,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51628,7 +51628,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51654,7 +51654,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51680,7 +51680,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51706,7 +51706,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51732,7 +51732,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51758,7 +51758,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51784,7 +51784,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51810,7 +51810,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51836,7 +51836,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51862,7 +51862,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51888,7 +51888,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51914,7 +51914,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -51982,7 +51982,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -52050,7 +52050,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -52118,7 +52118,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -52186,7 +52186,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -52254,7 +52254,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -52322,7 +52322,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -52431,7 +52431,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52457,7 +52457,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52483,7 +52483,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52509,7 +52509,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52535,7 +52535,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52561,7 +52561,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52587,7 +52587,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52613,7 +52613,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52639,7 +52639,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52665,7 +52665,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52691,7 +52691,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52717,7 +52717,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52743,7 +52743,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52769,7 +52769,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52795,7 +52795,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52821,7 +52821,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52847,7 +52847,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52873,7 +52873,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52899,7 +52899,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52925,7 +52925,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52951,7 +52951,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -52977,7 +52977,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53003,7 +53003,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53029,7 +53029,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53055,7 +53055,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53081,7 +53081,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53107,7 +53107,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53133,7 +53133,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53159,7 +53159,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53185,7 +53185,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53211,7 +53211,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53237,7 +53237,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53263,7 +53263,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53289,7 +53289,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53315,7 +53315,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53341,7 +53341,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53367,7 +53367,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53393,7 +53393,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53419,7 +53419,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53445,7 +53445,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53471,7 +53471,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53497,7 +53497,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53523,7 +53523,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53549,7 +53549,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53575,7 +53575,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53601,7 +53601,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53627,7 +53627,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53653,7 +53653,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53679,7 +53679,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53705,7 +53705,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53731,7 +53731,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53757,7 +53757,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53783,7 +53783,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53809,7 +53809,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53835,7 +53835,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53861,7 +53861,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53887,7 +53887,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53913,7 +53913,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53939,7 +53939,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53965,7 +53965,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53991,7 +53991,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -54059,7 +54059,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -54127,7 +54127,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -54195,7 +54195,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -54263,7 +54263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -54331,7 +54331,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -54399,7 +54399,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -54514,7 +54514,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54540,7 +54540,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54566,7 +54566,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54592,7 +54592,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54618,7 +54618,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54644,7 +54644,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54670,7 +54670,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54696,7 +54696,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54772,7 +54772,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54798,7 +54798,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54824,7 +54824,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54850,7 +54850,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54876,7 +54876,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54902,7 +54902,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54928,7 +54928,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -54954,7 +54954,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -55060,7 +55060,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55086,7 +55086,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55195,7 +55195,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55221,7 +55221,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55360,7 +55360,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55386,7 +55386,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55495,7 +55495,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55521,7 +55521,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55630,7 +55630,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55656,7 +55656,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55765,7 +55765,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55791,7 +55791,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55900,7 +55900,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -55926,7 +55926,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -56035,7 +56035,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -56061,7 +56061,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -56224,7 +56224,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56250,7 +56250,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56276,7 +56276,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56302,7 +56302,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56328,7 +56328,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56354,7 +56354,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56380,7 +56380,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56406,7 +56406,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56432,7 +56432,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56458,7 +56458,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56484,7 +56484,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56510,7 +56510,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56536,7 +56536,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56562,7 +56562,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56588,7 +56588,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56614,7 +56614,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56640,7 +56640,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56666,7 +56666,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56692,7 +56692,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56718,7 +56718,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56744,7 +56744,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56770,7 +56770,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56796,7 +56796,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56822,7 +56822,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56848,7 +56848,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56874,7 +56874,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56900,7 +56900,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56926,7 +56926,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56952,7 +56952,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56978,7 +56978,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57004,7 +57004,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57030,7 +57030,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57056,7 +57056,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57082,7 +57082,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57108,7 +57108,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57134,7 +57134,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57160,7 +57160,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57186,7 +57186,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57212,7 +57212,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57238,7 +57238,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57264,7 +57264,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57290,7 +57290,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57316,7 +57316,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57342,7 +57342,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57368,7 +57368,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57394,7 +57394,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57420,7 +57420,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57446,7 +57446,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57472,7 +57472,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57498,7 +57498,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57524,7 +57524,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57550,7 +57550,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57576,7 +57576,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57602,7 +57602,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57628,7 +57628,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57654,7 +57654,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57680,7 +57680,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57706,7 +57706,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57732,7 +57732,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57758,7 +57758,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -57784,7 +57784,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -57852,7 +57852,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -57920,7 +57920,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -57988,7 +57988,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -58056,7 +58056,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -58124,7 +58124,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -58192,7 +58192,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -58301,7 +58301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58327,7 +58327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58353,7 +58353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58379,7 +58379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58405,7 +58405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58431,7 +58431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58457,7 +58457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58483,7 +58483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58509,7 +58509,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58535,7 +58535,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58561,7 +58561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58587,7 +58587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58613,7 +58613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58639,7 +58639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58665,7 +58665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58691,7 +58691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58717,7 +58717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58743,7 +58743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58769,7 +58769,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58795,7 +58795,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58821,7 +58821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58847,7 +58847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58873,7 +58873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58899,7 +58899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58925,7 +58925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58951,7 +58951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58977,7 +58977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59003,7 +59003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59029,7 +59029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59055,7 +59055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59081,7 +59081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59107,7 +59107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59133,7 +59133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59159,7 +59159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59185,7 +59185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59211,7 +59211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59237,7 +59237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59263,7 +59263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59289,7 +59289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59315,7 +59315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59341,7 +59341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59367,7 +59367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59393,7 +59393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59419,7 +59419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59445,7 +59445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59471,7 +59471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59497,7 +59497,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59523,7 +59523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59549,7 +59549,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59575,7 +59575,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59601,7 +59601,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59627,7 +59627,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59653,7 +59653,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59679,7 +59679,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59705,7 +59705,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59731,7 +59731,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59757,7 +59757,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59783,7 +59783,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59809,7 +59809,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59835,7 +59835,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59861,7 +59861,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -59929,7 +59929,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -59997,7 +59997,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -60065,7 +60065,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -60133,7 +60133,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -60201,7 +60201,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -60269,7 +60269,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -60378,7 +60378,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60404,7 +60404,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60430,7 +60430,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60456,7 +60456,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60482,7 +60482,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60508,7 +60508,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60534,7 +60534,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60560,7 +60560,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60586,7 +60586,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60612,7 +60612,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60638,7 +60638,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60664,7 +60664,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60690,7 +60690,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60716,7 +60716,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60742,7 +60742,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60768,7 +60768,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60794,7 +60794,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60820,7 +60820,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60846,7 +60846,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60872,7 +60872,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60898,7 +60898,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60924,7 +60924,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60950,7 +60950,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60976,7 +60976,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61002,7 +61002,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61028,7 +61028,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61054,7 +61054,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61080,7 +61080,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61106,7 +61106,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61132,7 +61132,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61158,7 +61158,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61184,7 +61184,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61210,7 +61210,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61236,7 +61236,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61262,7 +61262,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61288,7 +61288,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61314,7 +61314,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61340,7 +61340,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61366,7 +61366,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61392,7 +61392,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61418,7 +61418,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61444,7 +61444,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61470,7 +61470,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61496,7 +61496,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61522,7 +61522,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61548,7 +61548,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61574,7 +61574,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61600,7 +61600,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61626,7 +61626,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61652,7 +61652,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61678,7 +61678,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61704,7 +61704,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61730,7 +61730,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61756,7 +61756,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61782,7 +61782,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61808,7 +61808,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61834,7 +61834,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61860,7 +61860,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61886,7 +61886,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61912,7 +61912,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -61938,7 +61938,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -62006,7 +62006,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -62074,7 +62074,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -62142,7 +62142,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -62210,7 +62210,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -62278,7 +62278,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -62346,7 +62346,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -62455,7 +62455,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62481,7 +62481,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62507,7 +62507,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62533,7 +62533,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62559,7 +62559,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62585,7 +62585,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62611,7 +62611,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62637,7 +62637,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62663,7 +62663,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62689,7 +62689,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62715,7 +62715,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62741,7 +62741,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62767,7 +62767,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62793,7 +62793,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62819,7 +62819,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62845,7 +62845,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62871,7 +62871,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62897,7 +62897,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62923,7 +62923,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62949,7 +62949,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62975,7 +62975,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63001,7 +63001,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63027,7 +63027,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63053,7 +63053,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63079,7 +63079,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63105,7 +63105,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63131,7 +63131,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63157,7 +63157,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63183,7 +63183,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63209,7 +63209,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63235,7 +63235,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63261,7 +63261,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63287,7 +63287,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63313,7 +63313,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63339,7 +63339,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63365,7 +63365,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63391,7 +63391,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63417,7 +63417,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63443,7 +63443,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63469,7 +63469,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63495,7 +63495,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63521,7 +63521,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63547,7 +63547,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63573,7 +63573,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63599,7 +63599,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63625,7 +63625,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63651,7 +63651,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63677,7 +63677,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63703,7 +63703,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63729,7 +63729,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63755,7 +63755,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63781,7 +63781,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63807,7 +63807,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63833,7 +63833,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63859,7 +63859,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63885,7 +63885,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63911,7 +63911,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63937,7 +63937,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63963,7 +63963,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -63989,7 +63989,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64015,7 +64015,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -64083,7 +64083,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -64151,7 +64151,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -64219,7 +64219,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -64287,7 +64287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -64355,7 +64355,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -64423,7 +64423,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -64532,7 +64532,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64558,7 +64558,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64584,7 +64584,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64610,7 +64610,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64636,7 +64636,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64662,7 +64662,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64688,7 +64688,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64714,7 +64714,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64740,7 +64740,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64766,7 +64766,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64792,7 +64792,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64818,7 +64818,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64844,7 +64844,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64870,7 +64870,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64896,7 +64896,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64922,7 +64922,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64948,7 +64948,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -64974,7 +64974,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65000,7 +65000,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65026,7 +65026,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65052,7 +65052,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65078,7 +65078,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65104,7 +65104,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65130,7 +65130,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65156,7 +65156,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65182,7 +65182,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65208,7 +65208,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65234,7 +65234,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65260,7 +65260,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65286,7 +65286,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65312,7 +65312,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65338,7 +65338,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65364,7 +65364,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65390,7 +65390,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65416,7 +65416,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65442,7 +65442,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65468,7 +65468,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65494,7 +65494,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65520,7 +65520,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65546,7 +65546,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65572,7 +65572,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65598,7 +65598,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65624,7 +65624,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65650,7 +65650,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65676,7 +65676,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65702,7 +65702,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65728,7 +65728,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65754,7 +65754,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65780,7 +65780,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65806,7 +65806,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65832,7 +65832,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65858,7 +65858,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65884,7 +65884,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65910,7 +65910,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65936,7 +65936,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65962,7 +65962,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -65988,7 +65988,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66014,7 +66014,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66040,7 +66040,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66066,7 +66066,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66092,7 +66092,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -66160,7 +66160,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -66228,7 +66228,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -66296,7 +66296,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -66364,7 +66364,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -66432,7 +66432,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -66500,7 +66500,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -66609,7 +66609,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66635,7 +66635,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66661,7 +66661,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66687,7 +66687,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66713,7 +66713,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66739,7 +66739,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66765,7 +66765,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66791,7 +66791,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66817,7 +66817,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66843,7 +66843,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66869,7 +66869,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66895,7 +66895,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66921,7 +66921,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66947,7 +66947,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66973,7 +66973,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66999,7 +66999,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67025,7 +67025,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67051,7 +67051,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67077,7 +67077,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67103,7 +67103,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67129,7 +67129,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67155,7 +67155,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67181,7 +67181,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67207,7 +67207,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67233,7 +67233,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67259,7 +67259,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67285,7 +67285,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67311,7 +67311,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67337,7 +67337,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67363,7 +67363,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67389,7 +67389,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67415,7 +67415,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67441,7 +67441,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67467,7 +67467,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67493,7 +67493,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67519,7 +67519,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67545,7 +67545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67571,7 +67571,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67597,7 +67597,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67623,7 +67623,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67649,7 +67649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67675,7 +67675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67701,7 +67701,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67727,7 +67727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67753,7 +67753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67779,7 +67779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67805,7 +67805,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67831,7 +67831,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67857,7 +67857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67883,7 +67883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67909,7 +67909,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67935,7 +67935,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67961,7 +67961,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67987,7 +67987,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68013,7 +68013,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68039,7 +68039,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68065,7 +68065,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68091,7 +68091,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68117,7 +68117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68143,7 +68143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68169,7 +68169,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -68237,7 +68237,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -68305,7 +68305,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -68373,7 +68373,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -68441,7 +68441,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -68509,7 +68509,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -68577,7 +68577,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -68686,7 +68686,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68712,7 +68712,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68738,7 +68738,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68764,7 +68764,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68790,7 +68790,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68816,7 +68816,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68842,7 +68842,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68868,7 +68868,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68894,7 +68894,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68920,7 +68920,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68946,7 +68946,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68972,7 +68972,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68998,7 +68998,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69024,7 +69024,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69050,7 +69050,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69076,7 +69076,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69102,7 +69102,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69128,7 +69128,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69154,7 +69154,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69180,7 +69180,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69206,7 +69206,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69232,7 +69232,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69258,7 +69258,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69284,7 +69284,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69310,7 +69310,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69336,7 +69336,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69362,7 +69362,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69388,7 +69388,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69414,7 +69414,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69440,7 +69440,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69466,7 +69466,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69492,7 +69492,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69518,7 +69518,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69544,7 +69544,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69570,7 +69570,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69596,7 +69596,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69622,7 +69622,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69648,7 +69648,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69674,7 +69674,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69700,7 +69700,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69726,7 +69726,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69752,7 +69752,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69778,7 +69778,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69804,7 +69804,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69830,7 +69830,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69856,7 +69856,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69882,7 +69882,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69908,7 +69908,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69934,7 +69934,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69960,7 +69960,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69986,7 +69986,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70012,7 +70012,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70038,7 +70038,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70064,7 +70064,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70090,7 +70090,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70116,7 +70116,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70142,7 +70142,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70168,7 +70168,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70194,7 +70194,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70220,7 +70220,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70246,7 +70246,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -70314,7 +70314,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -70382,7 +70382,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -70450,7 +70450,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -70518,7 +70518,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -70586,7 +70586,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -70654,7 +70654,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -70763,7 +70763,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70789,7 +70789,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70815,7 +70815,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70841,7 +70841,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70867,7 +70867,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70893,7 +70893,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70919,7 +70919,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70945,7 +70945,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70971,7 +70971,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70997,7 +70997,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71023,7 +71023,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71049,7 +71049,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71075,7 +71075,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71101,7 +71101,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71127,7 +71127,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71153,7 +71153,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71179,7 +71179,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71205,7 +71205,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71231,7 +71231,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71257,7 +71257,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71283,7 +71283,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71309,7 +71309,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71335,7 +71335,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71361,7 +71361,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71387,7 +71387,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71413,7 +71413,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71439,7 +71439,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71465,7 +71465,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71491,7 +71491,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71517,7 +71517,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71543,7 +71543,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71569,7 +71569,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71595,7 +71595,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71621,7 +71621,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71647,7 +71647,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71673,7 +71673,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71699,7 +71699,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71725,7 +71725,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71751,7 +71751,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71777,7 +71777,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71803,7 +71803,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71829,7 +71829,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71855,7 +71855,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71881,7 +71881,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71907,7 +71907,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71933,7 +71933,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71959,7 +71959,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71985,7 +71985,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72011,7 +72011,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72037,7 +72037,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72063,7 +72063,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72089,7 +72089,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72115,7 +72115,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72141,7 +72141,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72167,7 +72167,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72193,7 +72193,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72219,7 +72219,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72245,7 +72245,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72271,7 +72271,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72297,7 +72297,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72323,7 +72323,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -72391,7 +72391,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -72459,7 +72459,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -72527,7 +72527,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -72595,7 +72595,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -72663,7 +72663,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -72731,7 +72731,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -72846,7 +72846,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -72872,7 +72872,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -72898,7 +72898,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -72924,7 +72924,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -72950,7 +72950,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -72976,7 +72976,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73002,7 +73002,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73028,7 +73028,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73104,7 +73104,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73130,7 +73130,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73156,7 +73156,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73182,7 +73182,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73208,7 +73208,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73234,7 +73234,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73260,7 +73260,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73286,7 +73286,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -73392,7 +73392,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -73418,7 +73418,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -73527,7 +73527,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -73553,7 +73553,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -73692,7 +73692,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -73718,7 +73718,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -73827,7 +73827,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -73853,7 +73853,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -73962,7 +73962,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -73988,7 +73988,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -74097,7 +74097,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -74123,7 +74123,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -74232,7 +74232,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -74258,7 +74258,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -74367,7 +74367,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -74393,7 +74393,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -74556,7 +74556,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74582,7 +74582,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74608,7 +74608,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74634,7 +74634,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74660,7 +74660,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74686,7 +74686,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74712,7 +74712,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74738,7 +74738,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74764,7 +74764,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74790,7 +74790,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74816,7 +74816,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74842,7 +74842,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74868,7 +74868,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74894,7 +74894,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74920,7 +74920,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74946,7 +74946,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74972,7 +74972,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74998,7 +74998,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75024,7 +75024,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75050,7 +75050,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75076,7 +75076,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75102,7 +75102,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75128,7 +75128,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75154,7 +75154,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75180,7 +75180,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75206,7 +75206,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75232,7 +75232,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75258,7 +75258,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75284,7 +75284,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75310,7 +75310,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75336,7 +75336,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75362,7 +75362,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75388,7 +75388,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75414,7 +75414,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75440,7 +75440,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75466,7 +75466,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75492,7 +75492,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75518,7 +75518,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75544,7 +75544,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75570,7 +75570,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75596,7 +75596,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75622,7 +75622,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75648,7 +75648,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75674,7 +75674,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75700,7 +75700,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75726,7 +75726,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75752,7 +75752,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75778,7 +75778,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75804,7 +75804,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75830,7 +75830,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75856,7 +75856,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75882,7 +75882,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75908,7 +75908,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75934,7 +75934,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75960,7 +75960,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75986,7 +75986,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76012,7 +76012,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76038,7 +76038,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76064,7 +76064,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76090,7 +76090,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76116,7 +76116,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -76184,7 +76184,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -76252,7 +76252,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -76320,7 +76320,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -76388,7 +76388,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -76456,7 +76456,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -76524,7 +76524,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -76633,7 +76633,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76659,7 +76659,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76685,7 +76685,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76711,7 +76711,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76737,7 +76737,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76763,7 +76763,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76789,7 +76789,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76815,7 +76815,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76841,7 +76841,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76867,7 +76867,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76893,7 +76893,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76919,7 +76919,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76945,7 +76945,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76971,7 +76971,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -76997,7 +76997,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77023,7 +77023,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77049,7 +77049,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77075,7 +77075,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77101,7 +77101,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77127,7 +77127,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77153,7 +77153,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77179,7 +77179,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77205,7 +77205,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77231,7 +77231,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77257,7 +77257,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77283,7 +77283,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77309,7 +77309,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77335,7 +77335,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77361,7 +77361,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77387,7 +77387,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77413,7 +77413,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77439,7 +77439,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77465,7 +77465,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77491,7 +77491,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77517,7 +77517,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77543,7 +77543,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77569,7 +77569,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77595,7 +77595,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77621,7 +77621,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77647,7 +77647,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77673,7 +77673,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77699,7 +77699,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77725,7 +77725,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77751,7 +77751,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77777,7 +77777,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77803,7 +77803,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77829,7 +77829,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77855,7 +77855,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77881,7 +77881,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77907,7 +77907,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77933,7 +77933,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77959,7 +77959,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77985,7 +77985,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78011,7 +78011,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78037,7 +78037,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78063,7 +78063,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78089,7 +78089,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78115,7 +78115,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78141,7 +78141,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78167,7 +78167,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78193,7 +78193,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -78261,7 +78261,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -78329,7 +78329,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -78397,7 +78397,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -78465,7 +78465,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -78533,7 +78533,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -78601,7 +78601,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -78710,7 +78710,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78736,7 +78736,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78762,7 +78762,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78788,7 +78788,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78814,7 +78814,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78840,7 +78840,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78866,7 +78866,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78892,7 +78892,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78918,7 +78918,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78944,7 +78944,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78970,7 +78970,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -78996,7 +78996,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79022,7 +79022,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79048,7 +79048,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79074,7 +79074,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79100,7 +79100,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79126,7 +79126,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79152,7 +79152,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79178,7 +79178,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79204,7 +79204,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79230,7 +79230,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79256,7 +79256,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79282,7 +79282,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79308,7 +79308,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79334,7 +79334,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79360,7 +79360,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79386,7 +79386,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79412,7 +79412,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79438,7 +79438,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79464,7 +79464,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79490,7 +79490,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79516,7 +79516,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79542,7 +79542,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79568,7 +79568,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79594,7 +79594,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79620,7 +79620,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79646,7 +79646,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79672,7 +79672,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79698,7 +79698,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79724,7 +79724,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79750,7 +79750,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79776,7 +79776,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79802,7 +79802,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79828,7 +79828,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79854,7 +79854,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79880,7 +79880,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79906,7 +79906,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79932,7 +79932,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79958,7 +79958,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -79984,7 +79984,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80010,7 +80010,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80036,7 +80036,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80062,7 +80062,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80088,7 +80088,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80114,7 +80114,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80140,7 +80140,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80166,7 +80166,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80192,7 +80192,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80218,7 +80218,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80244,7 +80244,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80270,7 +80270,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -80338,7 +80338,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -80406,7 +80406,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -80474,7 +80474,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -80542,7 +80542,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -80610,7 +80610,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -80678,7 +80678,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -80787,7 +80787,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80813,7 +80813,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80839,7 +80839,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80865,7 +80865,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80891,7 +80891,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80917,7 +80917,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80943,7 +80943,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80969,7 +80969,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80995,7 +80995,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81021,7 +81021,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81047,7 +81047,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81073,7 +81073,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81099,7 +81099,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81125,7 +81125,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81151,7 +81151,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81177,7 +81177,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81203,7 +81203,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81229,7 +81229,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81255,7 +81255,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81281,7 +81281,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81307,7 +81307,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81333,7 +81333,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81359,7 +81359,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81385,7 +81385,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81411,7 +81411,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81437,7 +81437,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81463,7 +81463,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81489,7 +81489,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81515,7 +81515,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81541,7 +81541,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81567,7 +81567,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81593,7 +81593,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81619,7 +81619,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81645,7 +81645,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81671,7 +81671,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81697,7 +81697,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81723,7 +81723,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81749,7 +81749,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81775,7 +81775,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81801,7 +81801,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81827,7 +81827,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81853,7 +81853,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81879,7 +81879,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81905,7 +81905,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81931,7 +81931,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81957,7 +81957,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81983,7 +81983,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82009,7 +82009,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82035,7 +82035,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82061,7 +82061,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82087,7 +82087,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82113,7 +82113,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82139,7 +82139,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82165,7 +82165,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82191,7 +82191,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82217,7 +82217,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82243,7 +82243,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82269,7 +82269,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82295,7 +82295,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82321,7 +82321,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82347,7 +82347,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -82415,7 +82415,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -82483,7 +82483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -82551,7 +82551,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -82619,7 +82619,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -82687,7 +82687,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -82755,7 +82755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -82864,7 +82864,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82890,7 +82890,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82916,7 +82916,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82942,7 +82942,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82968,7 +82968,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82994,7 +82994,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83020,7 +83020,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83046,7 +83046,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83072,7 +83072,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83098,7 +83098,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83124,7 +83124,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83150,7 +83150,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83176,7 +83176,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83202,7 +83202,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83228,7 +83228,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83254,7 +83254,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83280,7 +83280,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83306,7 +83306,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83332,7 +83332,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83358,7 +83358,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83384,7 +83384,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83410,7 +83410,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83436,7 +83436,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83462,7 +83462,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83488,7 +83488,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83514,7 +83514,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83540,7 +83540,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83566,7 +83566,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83592,7 +83592,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83618,7 +83618,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83644,7 +83644,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83670,7 +83670,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83696,7 +83696,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83722,7 +83722,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83748,7 +83748,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83774,7 +83774,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83800,7 +83800,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83826,7 +83826,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83852,7 +83852,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83878,7 +83878,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83904,7 +83904,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83930,7 +83930,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83956,7 +83956,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -83982,7 +83982,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84008,7 +84008,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84034,7 +84034,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84060,7 +84060,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84086,7 +84086,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84112,7 +84112,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84138,7 +84138,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84164,7 +84164,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84190,7 +84190,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84216,7 +84216,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84242,7 +84242,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84268,7 +84268,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84294,7 +84294,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84320,7 +84320,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84346,7 +84346,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84372,7 +84372,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84398,7 +84398,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84424,7 +84424,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -84492,7 +84492,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -84560,7 +84560,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -84628,7 +84628,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -84696,7 +84696,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -84764,7 +84764,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -84832,7 +84832,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -84941,7 +84941,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84967,7 +84967,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84993,7 +84993,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85019,7 +85019,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85045,7 +85045,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85071,7 +85071,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85097,7 +85097,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85123,7 +85123,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85149,7 +85149,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85175,7 +85175,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85201,7 +85201,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85227,7 +85227,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85253,7 +85253,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85279,7 +85279,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85305,7 +85305,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85331,7 +85331,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85357,7 +85357,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85383,7 +85383,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85409,7 +85409,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85435,7 +85435,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85461,7 +85461,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85487,7 +85487,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85513,7 +85513,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85539,7 +85539,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85565,7 +85565,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85591,7 +85591,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85617,7 +85617,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85643,7 +85643,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85669,7 +85669,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85695,7 +85695,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85721,7 +85721,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85747,7 +85747,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85773,7 +85773,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85799,7 +85799,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85825,7 +85825,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85851,7 +85851,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85877,7 +85877,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85903,7 +85903,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85929,7 +85929,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85955,7 +85955,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85981,7 +85981,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86007,7 +86007,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86033,7 +86033,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86059,7 +86059,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86085,7 +86085,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86111,7 +86111,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86137,7 +86137,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86163,7 +86163,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86189,7 +86189,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86215,7 +86215,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86241,7 +86241,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86267,7 +86267,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86293,7 +86293,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86319,7 +86319,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86345,7 +86345,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86371,7 +86371,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86397,7 +86397,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86423,7 +86423,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86449,7 +86449,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86475,7 +86475,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -86501,7 +86501,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -86569,7 +86569,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -86637,7 +86637,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -86705,7 +86705,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -86773,7 +86773,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -86841,7 +86841,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -86909,7 +86909,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -87018,7 +87018,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87044,7 +87044,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87070,7 +87070,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87096,7 +87096,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87122,7 +87122,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87148,7 +87148,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87174,7 +87174,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87200,7 +87200,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87226,7 +87226,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87252,7 +87252,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87278,7 +87278,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87304,7 +87304,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87330,7 +87330,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87356,7 +87356,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87382,7 +87382,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87408,7 +87408,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87434,7 +87434,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87460,7 +87460,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87486,7 +87486,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87512,7 +87512,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87538,7 +87538,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87564,7 +87564,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87590,7 +87590,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87616,7 +87616,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87642,7 +87642,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87668,7 +87668,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87694,7 +87694,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87720,7 +87720,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87746,7 +87746,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87772,7 +87772,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87798,7 +87798,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87824,7 +87824,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87850,7 +87850,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87876,7 +87876,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87902,7 +87902,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87928,7 +87928,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87954,7 +87954,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87980,7 +87980,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88006,7 +88006,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88032,7 +88032,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88058,7 +88058,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88084,7 +88084,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88110,7 +88110,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88136,7 +88136,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88162,7 +88162,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88188,7 +88188,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88214,7 +88214,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88240,7 +88240,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88266,7 +88266,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88292,7 +88292,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88318,7 +88318,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88344,7 +88344,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88370,7 +88370,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88396,7 +88396,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88422,7 +88422,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88448,7 +88448,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88474,7 +88474,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88500,7 +88500,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88526,7 +88526,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88552,7 +88552,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88578,7 +88578,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -88646,7 +88646,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -88714,7 +88714,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -88782,7 +88782,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -88850,7 +88850,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -88918,7 +88918,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -88986,7 +88986,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -89095,7 +89095,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89121,7 +89121,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89147,7 +89147,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89173,7 +89173,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89199,7 +89199,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89225,7 +89225,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89251,7 +89251,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89277,7 +89277,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89303,7 +89303,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89329,7 +89329,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89355,7 +89355,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89381,7 +89381,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89407,7 +89407,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89433,7 +89433,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89459,7 +89459,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89485,7 +89485,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89511,7 +89511,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89537,7 +89537,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89563,7 +89563,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89589,7 +89589,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89615,7 +89615,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89641,7 +89641,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89667,7 +89667,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89693,7 +89693,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89719,7 +89719,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89745,7 +89745,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89771,7 +89771,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89797,7 +89797,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89823,7 +89823,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89849,7 +89849,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89875,7 +89875,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89901,7 +89901,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89927,7 +89927,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89953,7 +89953,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89979,7 +89979,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90005,7 +90005,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90031,7 +90031,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90057,7 +90057,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90083,7 +90083,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90109,7 +90109,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90135,7 +90135,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90161,7 +90161,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90187,7 +90187,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90213,7 +90213,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90239,7 +90239,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90265,7 +90265,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90291,7 +90291,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90317,7 +90317,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90343,7 +90343,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90369,7 +90369,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90395,7 +90395,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90421,7 +90421,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90447,7 +90447,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90473,7 +90473,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90499,7 +90499,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90525,7 +90525,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90551,7 +90551,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90577,7 +90577,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90603,7 +90603,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90629,7 +90629,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90655,7 +90655,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -90723,7 +90723,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -90791,7 +90791,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -90859,7 +90859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -90927,7 +90927,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -90995,7 +90995,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -91063,7 +91063,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -91178,7 +91178,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91204,7 +91204,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91230,7 +91230,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91256,7 +91256,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91282,7 +91282,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91308,7 +91308,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91334,7 +91334,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91360,7 +91360,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91436,7 +91436,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91462,7 +91462,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91488,7 +91488,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91514,7 +91514,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91540,7 +91540,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91566,7 +91566,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91592,7 +91592,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91618,7 +91618,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -91724,7 +91724,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -91750,7 +91750,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -91859,7 +91859,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -91885,7 +91885,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92024,7 +92024,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92050,7 +92050,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92159,7 +92159,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92185,7 +92185,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92294,7 +92294,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92320,7 +92320,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92429,7 +92429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92455,7 +92455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92564,7 +92564,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92590,7 +92590,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92699,7 +92699,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92725,7 +92725,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -92888,7 +92888,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -92914,7 +92914,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -92940,7 +92940,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -92966,7 +92966,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -92992,7 +92992,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93018,7 +93018,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93044,7 +93044,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93070,7 +93070,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93096,7 +93096,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93122,7 +93122,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93148,7 +93148,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93174,7 +93174,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93200,7 +93200,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93226,7 +93226,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93252,7 +93252,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93278,7 +93278,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93304,7 +93304,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93330,7 +93330,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93356,7 +93356,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93382,7 +93382,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93408,7 +93408,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93434,7 +93434,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93460,7 +93460,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93486,7 +93486,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93512,7 +93512,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93538,7 +93538,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93564,7 +93564,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93590,7 +93590,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93616,7 +93616,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93642,7 +93642,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93668,7 +93668,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93694,7 +93694,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93720,7 +93720,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93746,7 +93746,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93772,7 +93772,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93798,7 +93798,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93824,7 +93824,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93850,7 +93850,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93876,7 +93876,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93902,7 +93902,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93928,7 +93928,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93954,7 +93954,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -93980,7 +93980,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94006,7 +94006,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94032,7 +94032,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94058,7 +94058,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94084,7 +94084,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94110,7 +94110,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94136,7 +94136,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94162,7 +94162,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94188,7 +94188,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94214,7 +94214,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94240,7 +94240,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94266,7 +94266,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94292,7 +94292,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94318,7 +94318,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94344,7 +94344,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94370,7 +94370,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94396,7 +94396,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94422,7 +94422,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94448,7 +94448,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -94516,7 +94516,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -94584,7 +94584,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -94652,7 +94652,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -94720,7 +94720,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -94788,7 +94788,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -94856,7 +94856,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -94965,7 +94965,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -94991,7 +94991,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95017,7 +95017,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95043,7 +95043,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95069,7 +95069,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95095,7 +95095,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95121,7 +95121,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95147,7 +95147,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95173,7 +95173,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95199,7 +95199,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95225,7 +95225,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95251,7 +95251,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95277,7 +95277,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95303,7 +95303,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95329,7 +95329,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95355,7 +95355,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95381,7 +95381,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95407,7 +95407,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95433,7 +95433,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95459,7 +95459,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95485,7 +95485,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95511,7 +95511,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95537,7 +95537,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95563,7 +95563,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95589,7 +95589,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95615,7 +95615,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95641,7 +95641,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95667,7 +95667,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95693,7 +95693,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95719,7 +95719,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95745,7 +95745,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95771,7 +95771,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95797,7 +95797,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95823,7 +95823,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95849,7 +95849,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95875,7 +95875,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95901,7 +95901,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95927,7 +95927,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95953,7 +95953,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95979,7 +95979,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96005,7 +96005,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96031,7 +96031,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96057,7 +96057,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96083,7 +96083,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96109,7 +96109,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96135,7 +96135,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96161,7 +96161,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96187,7 +96187,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96213,7 +96213,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96239,7 +96239,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96265,7 +96265,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96291,7 +96291,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96317,7 +96317,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96343,7 +96343,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96369,7 +96369,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96395,7 +96395,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96421,7 +96421,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96447,7 +96447,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96473,7 +96473,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96499,7 +96499,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -96525,7 +96525,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -96593,7 +96593,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -96661,7 +96661,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -96729,7 +96729,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -96797,7 +96797,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -96865,7 +96865,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -96933,7 +96933,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -97042,7 +97042,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97068,7 +97068,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97094,7 +97094,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97120,7 +97120,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97146,7 +97146,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97172,7 +97172,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97198,7 +97198,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97224,7 +97224,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97250,7 +97250,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97276,7 +97276,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97302,7 +97302,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97328,7 +97328,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97354,7 +97354,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97380,7 +97380,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97406,7 +97406,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97432,7 +97432,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97458,7 +97458,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97484,7 +97484,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97510,7 +97510,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97536,7 +97536,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97562,7 +97562,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97588,7 +97588,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97614,7 +97614,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97640,7 +97640,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97666,7 +97666,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97692,7 +97692,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97718,7 +97718,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97744,7 +97744,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97770,7 +97770,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97796,7 +97796,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97822,7 +97822,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97848,7 +97848,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97874,7 +97874,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97900,7 +97900,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97926,7 +97926,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97952,7 +97952,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97978,7 +97978,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98004,7 +98004,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98030,7 +98030,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98056,7 +98056,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98082,7 +98082,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98108,7 +98108,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98134,7 +98134,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98160,7 +98160,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98186,7 +98186,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98212,7 +98212,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98238,7 +98238,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98264,7 +98264,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98290,7 +98290,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98316,7 +98316,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98342,7 +98342,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98368,7 +98368,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98394,7 +98394,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98420,7 +98420,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98446,7 +98446,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98472,7 +98472,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98498,7 +98498,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98524,7 +98524,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98550,7 +98550,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98576,7 +98576,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98602,7 +98602,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -98670,7 +98670,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -98738,7 +98738,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -98806,7 +98806,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -98874,7 +98874,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -98942,7 +98942,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -99010,7 +99010,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -99119,7 +99119,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99145,7 +99145,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99171,7 +99171,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99197,7 +99197,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99223,7 +99223,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99249,7 +99249,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99275,7 +99275,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99301,7 +99301,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99327,7 +99327,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99353,7 +99353,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99379,7 +99379,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99405,7 +99405,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99431,7 +99431,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99457,7 +99457,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99483,7 +99483,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99509,7 +99509,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99535,7 +99535,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99561,7 +99561,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99587,7 +99587,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99613,7 +99613,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99639,7 +99639,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99665,7 +99665,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99691,7 +99691,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99717,7 +99717,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99743,7 +99743,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99769,7 +99769,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99795,7 +99795,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99821,7 +99821,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99847,7 +99847,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99873,7 +99873,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99899,7 +99899,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99925,7 +99925,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99951,7 +99951,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99977,7 +99977,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100003,7 +100003,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100029,7 +100029,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100055,7 +100055,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100081,7 +100081,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100107,7 +100107,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100133,7 +100133,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100159,7 +100159,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100185,7 +100185,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100211,7 +100211,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100237,7 +100237,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100263,7 +100263,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100289,7 +100289,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100315,7 +100315,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100341,7 +100341,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100367,7 +100367,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100393,7 +100393,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100419,7 +100419,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100445,7 +100445,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100471,7 +100471,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100497,7 +100497,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100523,7 +100523,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100549,7 +100549,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100575,7 +100575,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100601,7 +100601,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100627,7 +100627,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100653,7 +100653,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -100679,7 +100679,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -100747,7 +100747,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -100815,7 +100815,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -100883,7 +100883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -100951,7 +100951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -101019,7 +101019,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -101087,7 +101087,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -101196,7 +101196,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101222,7 +101222,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101248,7 +101248,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101274,7 +101274,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101300,7 +101300,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101326,7 +101326,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101352,7 +101352,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101378,7 +101378,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101404,7 +101404,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101430,7 +101430,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101456,7 +101456,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101482,7 +101482,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101508,7 +101508,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101534,7 +101534,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101560,7 +101560,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101586,7 +101586,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101612,7 +101612,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101638,7 +101638,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101664,7 +101664,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101690,7 +101690,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101716,7 +101716,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101742,7 +101742,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101768,7 +101768,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101794,7 +101794,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101820,7 +101820,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101846,7 +101846,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101872,7 +101872,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101898,7 +101898,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101924,7 +101924,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101950,7 +101950,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -101976,7 +101976,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102002,7 +102002,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102028,7 +102028,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102054,7 +102054,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102080,7 +102080,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102106,7 +102106,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102132,7 +102132,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102158,7 +102158,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102184,7 +102184,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102210,7 +102210,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102236,7 +102236,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102262,7 +102262,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102288,7 +102288,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102314,7 +102314,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102340,7 +102340,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102366,7 +102366,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102392,7 +102392,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102418,7 +102418,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102444,7 +102444,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102470,7 +102470,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102496,7 +102496,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102522,7 +102522,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102548,7 +102548,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102574,7 +102574,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102600,7 +102600,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102626,7 +102626,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102652,7 +102652,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102678,7 +102678,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102704,7 +102704,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102730,7 +102730,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -102756,7 +102756,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -102824,7 +102824,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -102892,7 +102892,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -102960,7 +102960,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -103028,7 +103028,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -103096,7 +103096,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -103164,7 +103164,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -103273,7 +103273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103299,7 +103299,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103325,7 +103325,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103351,7 +103351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103377,7 +103377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103403,7 +103403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103429,7 +103429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103455,7 +103455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103481,7 +103481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103507,7 +103507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103533,7 +103533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103559,7 +103559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103585,7 +103585,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103611,7 +103611,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103637,7 +103637,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103663,7 +103663,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103689,7 +103689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103715,7 +103715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103741,7 +103741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103767,7 +103767,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103793,7 +103793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103819,7 +103819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103845,7 +103845,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103871,7 +103871,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103897,7 +103897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103923,7 +103923,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103949,7 +103949,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -103975,7 +103975,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104001,7 +104001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104027,7 +104027,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104053,7 +104053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104079,7 +104079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104105,7 +104105,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104131,7 +104131,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104157,7 +104157,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104183,7 +104183,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104209,7 +104209,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104235,7 +104235,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104261,7 +104261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104287,7 +104287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104313,7 +104313,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104339,7 +104339,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104365,7 +104365,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104391,7 +104391,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104417,7 +104417,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104443,7 +104443,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104469,7 +104469,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104495,7 +104495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104521,7 +104521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104547,7 +104547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104573,7 +104573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104599,7 +104599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104625,7 +104625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104651,7 +104651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104677,7 +104677,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104703,7 +104703,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104729,7 +104729,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104755,7 +104755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104781,7 +104781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104807,7 +104807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -104833,7 +104833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -104901,7 +104901,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -104969,7 +104969,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -105037,7 +105037,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -105105,7 +105105,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -105173,7 +105173,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -105241,7 +105241,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -105350,7 +105350,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105376,7 +105376,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105402,7 +105402,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105428,7 +105428,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105454,7 +105454,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105480,7 +105480,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105506,7 +105506,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105532,7 +105532,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105558,7 +105558,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105584,7 +105584,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105610,7 +105610,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105636,7 +105636,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105662,7 +105662,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105688,7 +105688,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105714,7 +105714,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105740,7 +105740,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105766,7 +105766,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105792,7 +105792,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105818,7 +105818,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105844,7 +105844,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105870,7 +105870,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105896,7 +105896,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105922,7 +105922,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105948,7 +105948,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -105974,7 +105974,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106000,7 +106000,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106026,7 +106026,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106052,7 +106052,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106078,7 +106078,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106104,7 +106104,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106130,7 +106130,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106156,7 +106156,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106182,7 +106182,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106208,7 +106208,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106234,7 +106234,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106260,7 +106260,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106286,7 +106286,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106312,7 +106312,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106338,7 +106338,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106364,7 +106364,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106390,7 +106390,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106416,7 +106416,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106442,7 +106442,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106468,7 +106468,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106494,7 +106494,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106520,7 +106520,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106546,7 +106546,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106572,7 +106572,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106598,7 +106598,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106624,7 +106624,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106650,7 +106650,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106676,7 +106676,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106702,7 +106702,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106728,7 +106728,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106754,7 +106754,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106780,7 +106780,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106806,7 +106806,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106832,7 +106832,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106858,7 +106858,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106884,7 +106884,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -106910,7 +106910,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -106978,7 +106978,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -107046,7 +107046,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -107114,7 +107114,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -107182,7 +107182,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -107250,7 +107250,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -107318,7 +107318,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -107427,7 +107427,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107453,7 +107453,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107479,7 +107479,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107505,7 +107505,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107531,7 +107531,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107557,7 +107557,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107583,7 +107583,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107609,7 +107609,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107635,7 +107635,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107661,7 +107661,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107687,7 +107687,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107713,7 +107713,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107739,7 +107739,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107765,7 +107765,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107791,7 +107791,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107817,7 +107817,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107843,7 +107843,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107869,7 +107869,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107895,7 +107895,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107921,7 +107921,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107947,7 +107947,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107973,7 +107973,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -107999,7 +107999,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108025,7 +108025,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108051,7 +108051,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108077,7 +108077,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108103,7 +108103,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108129,7 +108129,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108155,7 +108155,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108181,7 +108181,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108207,7 +108207,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108233,7 +108233,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108259,7 +108259,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108285,7 +108285,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108311,7 +108311,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108337,7 +108337,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108363,7 +108363,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108389,7 +108389,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108415,7 +108415,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108441,7 +108441,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108467,7 +108467,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108493,7 +108493,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108519,7 +108519,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108545,7 +108545,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108571,7 +108571,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108597,7 +108597,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108623,7 +108623,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108649,7 +108649,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108675,7 +108675,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108701,7 +108701,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108727,7 +108727,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108753,7 +108753,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108779,7 +108779,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108805,7 +108805,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108831,7 +108831,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108857,7 +108857,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108883,7 +108883,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108909,7 +108909,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108935,7 +108935,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108961,7 +108961,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -108987,7 +108987,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -109055,7 +109055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -109123,7 +109123,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -109191,7 +109191,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -109259,7 +109259,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -109327,7 +109327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -109395,7 +109395,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -109510,7 +109510,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109536,7 +109536,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109562,7 +109562,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109588,7 +109588,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109614,7 +109614,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109640,7 +109640,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109666,7 +109666,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109692,7 +109692,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109768,7 +109768,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109794,7 +109794,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109820,7 +109820,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109846,7 +109846,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109872,7 +109872,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109898,7 +109898,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109924,7 +109924,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -109950,7 +109950,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -110056,7 +110056,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110082,7 +110082,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110191,7 +110191,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110217,7 +110217,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110356,7 +110356,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110382,7 +110382,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110491,7 +110491,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110517,7 +110517,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110626,7 +110626,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110652,7 +110652,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110761,7 +110761,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110787,7 +110787,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110896,7 +110896,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -110922,7 +110922,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -111031,7 +111031,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -111057,7 +111057,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -111220,7 +111220,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111246,7 +111246,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111272,7 +111272,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111298,7 +111298,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111324,7 +111324,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111350,7 +111350,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111376,7 +111376,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111402,7 +111402,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111428,7 +111428,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111454,7 +111454,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111480,7 +111480,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111506,7 +111506,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111532,7 +111532,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111558,7 +111558,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111584,7 +111584,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111610,7 +111610,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111636,7 +111636,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111662,7 +111662,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111688,7 +111688,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111714,7 +111714,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111740,7 +111740,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111766,7 +111766,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111792,7 +111792,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111818,7 +111818,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111844,7 +111844,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111870,7 +111870,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111896,7 +111896,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111922,7 +111922,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111948,7 +111948,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -111974,7 +111974,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112000,7 +112000,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112026,7 +112026,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112052,7 +112052,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112078,7 +112078,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112104,7 +112104,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112130,7 +112130,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112156,7 +112156,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112182,7 +112182,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112208,7 +112208,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112234,7 +112234,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112260,7 +112260,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112286,7 +112286,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112312,7 +112312,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112338,7 +112338,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112364,7 +112364,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112390,7 +112390,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112416,7 +112416,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112442,7 +112442,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112468,7 +112468,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112494,7 +112494,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112520,7 +112520,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112546,7 +112546,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112572,7 +112572,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112598,7 +112598,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112624,7 +112624,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112650,7 +112650,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112676,7 +112676,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112702,7 +112702,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112728,7 +112728,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112754,7 +112754,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -112780,7 +112780,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -112848,7 +112848,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -112916,7 +112916,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -112984,7 +112984,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -113052,7 +113052,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -113120,7 +113120,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -113188,7 +113188,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -113297,7 +113297,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113323,7 +113323,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113349,7 +113349,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113375,7 +113375,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113401,7 +113401,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113427,7 +113427,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113453,7 +113453,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113479,7 +113479,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113505,7 +113505,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113531,7 +113531,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113557,7 +113557,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113583,7 +113583,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113609,7 +113609,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113635,7 +113635,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113661,7 +113661,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113687,7 +113687,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113713,7 +113713,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113739,7 +113739,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113765,7 +113765,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113791,7 +113791,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113817,7 +113817,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113843,7 +113843,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113869,7 +113869,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113895,7 +113895,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113921,7 +113921,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113947,7 +113947,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113973,7 +113973,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -113999,7 +113999,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114025,7 +114025,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114051,7 +114051,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114077,7 +114077,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114103,7 +114103,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114129,7 +114129,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114155,7 +114155,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114181,7 +114181,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114207,7 +114207,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114233,7 +114233,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114259,7 +114259,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114285,7 +114285,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114311,7 +114311,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114337,7 +114337,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114363,7 +114363,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114389,7 +114389,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114415,7 +114415,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114441,7 +114441,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114467,7 +114467,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114493,7 +114493,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114519,7 +114519,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114545,7 +114545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114571,7 +114571,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114597,7 +114597,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114623,7 +114623,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114649,7 +114649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114675,7 +114675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114701,7 +114701,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114727,7 +114727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114753,7 +114753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114779,7 +114779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114805,7 +114805,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114831,7 +114831,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -114857,7 +114857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -114925,7 +114925,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -114993,7 +114993,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -115061,7 +115061,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -115129,7 +115129,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -115197,7 +115197,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -115265,7 +115265,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -115374,7 +115374,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115400,7 +115400,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115426,7 +115426,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115452,7 +115452,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115478,7 +115478,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115504,7 +115504,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115530,7 +115530,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115556,7 +115556,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115582,7 +115582,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115608,7 +115608,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115634,7 +115634,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115660,7 +115660,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115686,7 +115686,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115712,7 +115712,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115738,7 +115738,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115764,7 +115764,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115790,7 +115790,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115816,7 +115816,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115842,7 +115842,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115868,7 +115868,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115894,7 +115894,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115920,7 +115920,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115946,7 +115946,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115972,7 +115972,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -115998,7 +115998,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116024,7 +116024,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116050,7 +116050,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116076,7 +116076,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116102,7 +116102,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116128,7 +116128,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116154,7 +116154,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116180,7 +116180,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116206,7 +116206,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116232,7 +116232,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116258,7 +116258,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116284,7 +116284,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116310,7 +116310,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116336,7 +116336,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116362,7 +116362,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116388,7 +116388,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116414,7 +116414,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116440,7 +116440,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116466,7 +116466,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116492,7 +116492,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116518,7 +116518,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116544,7 +116544,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116570,7 +116570,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116596,7 +116596,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116622,7 +116622,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116648,7 +116648,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116674,7 +116674,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116700,7 +116700,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116726,7 +116726,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116752,7 +116752,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116778,7 +116778,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116804,7 +116804,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116830,7 +116830,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116856,7 +116856,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116882,7 +116882,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116908,7 +116908,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -116934,7 +116934,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -117002,7 +117002,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -117070,7 +117070,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -117138,7 +117138,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -117206,7 +117206,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -117274,7 +117274,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -117342,7 +117342,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -117451,7 +117451,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117477,7 +117477,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117503,7 +117503,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117529,7 +117529,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117555,7 +117555,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117581,7 +117581,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117607,7 +117607,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117633,7 +117633,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117659,7 +117659,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117685,7 +117685,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117711,7 +117711,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117737,7 +117737,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117763,7 +117763,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117789,7 +117789,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117815,7 +117815,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117841,7 +117841,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117867,7 +117867,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117893,7 +117893,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117919,7 +117919,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117945,7 +117945,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117971,7 +117971,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -117997,7 +117997,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118023,7 +118023,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118049,7 +118049,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118075,7 +118075,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118101,7 +118101,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118127,7 +118127,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118153,7 +118153,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118179,7 +118179,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118205,7 +118205,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118231,7 +118231,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118257,7 +118257,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118283,7 +118283,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118309,7 +118309,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118335,7 +118335,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118361,7 +118361,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118387,7 +118387,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118413,7 +118413,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118439,7 +118439,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118465,7 +118465,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118491,7 +118491,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118517,7 +118517,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118543,7 +118543,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118569,7 +118569,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118595,7 +118595,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118621,7 +118621,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118647,7 +118647,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118673,7 +118673,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118699,7 +118699,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118725,7 +118725,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118751,7 +118751,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118777,7 +118777,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118803,7 +118803,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118829,7 +118829,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118855,7 +118855,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118881,7 +118881,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118907,7 +118907,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118933,7 +118933,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118959,7 +118959,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -118985,7 +118985,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119011,7 +119011,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -119079,7 +119079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -119147,7 +119147,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -119215,7 +119215,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -119283,7 +119283,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -119351,7 +119351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -119419,7 +119419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -119528,7 +119528,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119554,7 +119554,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119580,7 +119580,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119606,7 +119606,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119632,7 +119632,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119658,7 +119658,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119684,7 +119684,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119710,7 +119710,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119736,7 +119736,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119762,7 +119762,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119788,7 +119788,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119814,7 +119814,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119840,7 +119840,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119866,7 +119866,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119892,7 +119892,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119918,7 +119918,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119944,7 +119944,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119970,7 +119970,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -119996,7 +119996,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120022,7 +120022,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120048,7 +120048,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120074,7 +120074,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120100,7 +120100,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120126,7 +120126,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120152,7 +120152,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120178,7 +120178,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120204,7 +120204,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120230,7 +120230,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120256,7 +120256,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120282,7 +120282,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120308,7 +120308,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120334,7 +120334,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120360,7 +120360,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120386,7 +120386,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120412,7 +120412,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120438,7 +120438,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120464,7 +120464,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120490,7 +120490,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120516,7 +120516,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120542,7 +120542,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120568,7 +120568,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120594,7 +120594,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120620,7 +120620,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120646,7 +120646,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120672,7 +120672,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120698,7 +120698,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120724,7 +120724,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120750,7 +120750,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120776,7 +120776,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120802,7 +120802,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120828,7 +120828,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120854,7 +120854,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120880,7 +120880,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120906,7 +120906,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120932,7 +120932,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120958,7 +120958,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -120984,7 +120984,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121010,7 +121010,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121036,7 +121036,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121062,7 +121062,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121088,7 +121088,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -121156,7 +121156,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -121224,7 +121224,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -121292,7 +121292,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -121360,7 +121360,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -121428,7 +121428,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -121496,7 +121496,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -121605,7 +121605,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121631,7 +121631,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121657,7 +121657,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121683,7 +121683,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121709,7 +121709,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121735,7 +121735,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121761,7 +121761,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121787,7 +121787,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121813,7 +121813,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121839,7 +121839,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121865,7 +121865,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121891,7 +121891,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121917,7 +121917,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121943,7 +121943,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121969,7 +121969,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -121995,7 +121995,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122021,7 +122021,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122047,7 +122047,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122073,7 +122073,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122099,7 +122099,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122125,7 +122125,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122151,7 +122151,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122177,7 +122177,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122203,7 +122203,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122229,7 +122229,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122255,7 +122255,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122281,7 +122281,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122307,7 +122307,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122333,7 +122333,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122359,7 +122359,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122385,7 +122385,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122411,7 +122411,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122437,7 +122437,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122463,7 +122463,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122489,7 +122489,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122515,7 +122515,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122541,7 +122541,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122567,7 +122567,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122593,7 +122593,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122619,7 +122619,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122645,7 +122645,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122671,7 +122671,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122697,7 +122697,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122723,7 +122723,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122749,7 +122749,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122775,7 +122775,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122801,7 +122801,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122827,7 +122827,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122853,7 +122853,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122879,7 +122879,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122905,7 +122905,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122931,7 +122931,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122957,7 +122957,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -122983,7 +122983,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123009,7 +123009,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123035,7 +123035,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123061,7 +123061,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123087,7 +123087,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123113,7 +123113,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123139,7 +123139,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123165,7 +123165,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -123233,7 +123233,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -123301,7 +123301,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -123369,7 +123369,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -123437,7 +123437,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -123505,7 +123505,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -123573,7 +123573,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -123682,7 +123682,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123708,7 +123708,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123734,7 +123734,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123760,7 +123760,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123786,7 +123786,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123812,7 +123812,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123838,7 +123838,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123864,7 +123864,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123890,7 +123890,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123916,7 +123916,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123942,7 +123942,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123968,7 +123968,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -123994,7 +123994,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124020,7 +124020,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124046,7 +124046,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124072,7 +124072,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124098,7 +124098,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124124,7 +124124,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124150,7 +124150,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124176,7 +124176,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124202,7 +124202,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124228,7 +124228,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124254,7 +124254,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124280,7 +124280,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124306,7 +124306,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124332,7 +124332,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124358,7 +124358,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124384,7 +124384,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124410,7 +124410,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124436,7 +124436,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124462,7 +124462,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124488,7 +124488,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124514,7 +124514,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124540,7 +124540,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124566,7 +124566,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124592,7 +124592,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124618,7 +124618,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124644,7 +124644,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124670,7 +124670,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124696,7 +124696,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124722,7 +124722,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124748,7 +124748,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124774,7 +124774,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124800,7 +124800,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124826,7 +124826,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124852,7 +124852,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124878,7 +124878,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124904,7 +124904,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124930,7 +124930,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124956,7 +124956,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -124982,7 +124982,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125008,7 +125008,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125034,7 +125034,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125060,7 +125060,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125086,7 +125086,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125112,7 +125112,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125138,7 +125138,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125164,7 +125164,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125190,7 +125190,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125216,7 +125216,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125242,7 +125242,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -125310,7 +125310,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -125378,7 +125378,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -125446,7 +125446,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -125514,7 +125514,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -125582,7 +125582,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -125650,7 +125650,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -125759,7 +125759,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125785,7 +125785,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125811,7 +125811,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125837,7 +125837,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125863,7 +125863,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125889,7 +125889,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125915,7 +125915,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125941,7 +125941,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125967,7 +125967,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -125993,7 +125993,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126019,7 +126019,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126045,7 +126045,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126071,7 +126071,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126097,7 +126097,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126123,7 +126123,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126149,7 +126149,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126175,7 +126175,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126201,7 +126201,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126227,7 +126227,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126253,7 +126253,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126279,7 +126279,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126305,7 +126305,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126331,7 +126331,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126357,7 +126357,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126383,7 +126383,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126409,7 +126409,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126435,7 +126435,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126461,7 +126461,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126487,7 +126487,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126513,7 +126513,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126539,7 +126539,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126565,7 +126565,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126591,7 +126591,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126617,7 +126617,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126643,7 +126643,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126669,7 +126669,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126695,7 +126695,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126721,7 +126721,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126747,7 +126747,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126773,7 +126773,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126799,7 +126799,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126825,7 +126825,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126851,7 +126851,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126877,7 +126877,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126903,7 +126903,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126929,7 +126929,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126955,7 +126955,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -126981,7 +126981,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127007,7 +127007,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127033,7 +127033,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127059,7 +127059,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127085,7 +127085,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127111,7 +127111,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127137,7 +127137,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127163,7 +127163,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127189,7 +127189,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127215,7 +127215,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127241,7 +127241,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127267,7 +127267,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127293,7 +127293,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -127319,7 +127319,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -127387,7 +127387,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -127455,7 +127455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -127523,7 +127523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -127591,7 +127591,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -127659,7 +127659,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -127727,7 +127727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -127842,7 +127842,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -127868,7 +127868,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -127894,7 +127894,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -127920,7 +127920,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -127946,7 +127946,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -127972,7 +127972,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -127998,7 +127998,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128024,7 +128024,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128100,7 +128100,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128126,7 +128126,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128152,7 +128152,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128178,7 +128178,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128204,7 +128204,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128230,7 +128230,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128256,7 +128256,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128282,7 +128282,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -128388,7 +128388,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -128414,7 +128414,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -128523,7 +128523,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -128549,7 +128549,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -128688,7 +128688,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -128714,7 +128714,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -128823,7 +128823,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -128849,7 +128849,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -128958,7 +128958,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -128984,7 +128984,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -129093,7 +129093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -129119,7 +129119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -129228,7 +129228,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -129254,7 +129254,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -129363,7 +129363,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 17.5, "volume": 12.5, "wellLocation": { "offset": { @@ -129389,7 +129389,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 4.0, + "flowRate": 28.5, "volume": 12.5, "wellLocation": { "offset": { @@ -129552,7 +129552,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129578,7 +129578,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129604,7 +129604,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129630,7 +129630,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129656,7 +129656,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129682,7 +129682,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129708,7 +129708,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129734,7 +129734,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129760,7 +129760,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129786,7 +129786,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129812,7 +129812,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129838,7 +129838,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129864,7 +129864,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129890,7 +129890,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129916,7 +129916,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129942,7 +129942,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129968,7 +129968,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -129994,7 +129994,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130020,7 +130020,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130046,7 +130046,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130072,7 +130072,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130098,7 +130098,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130124,7 +130124,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130150,7 +130150,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130176,7 +130176,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130202,7 +130202,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130228,7 +130228,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130254,7 +130254,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130280,7 +130280,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130306,7 +130306,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130332,7 +130332,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130358,7 +130358,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130384,7 +130384,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130410,7 +130410,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130436,7 +130436,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130462,7 +130462,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130488,7 +130488,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130514,7 +130514,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130540,7 +130540,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130566,7 +130566,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130592,7 +130592,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130618,7 +130618,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130644,7 +130644,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130670,7 +130670,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130696,7 +130696,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130722,7 +130722,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130748,7 +130748,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130774,7 +130774,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130800,7 +130800,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130826,7 +130826,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130852,7 +130852,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130878,7 +130878,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130904,7 +130904,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130930,7 +130930,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130956,7 +130956,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -130982,7 +130982,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131008,7 +131008,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131034,7 +131034,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131060,7 +131060,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131086,7 +131086,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131112,7 +131112,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -131180,7 +131180,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -131248,7 +131248,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -131316,7 +131316,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -131384,7 +131384,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -131452,7 +131452,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -131520,7 +131520,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -131629,7 +131629,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131655,7 +131655,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131681,7 +131681,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131707,7 +131707,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131733,7 +131733,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131759,7 +131759,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131785,7 +131785,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131811,7 +131811,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131837,7 +131837,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131863,7 +131863,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131889,7 +131889,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131915,7 +131915,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131941,7 +131941,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131967,7 +131967,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -131993,7 +131993,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132019,7 +132019,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132045,7 +132045,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132071,7 +132071,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132097,7 +132097,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132123,7 +132123,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132149,7 +132149,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132175,7 +132175,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132201,7 +132201,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132227,7 +132227,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132253,7 +132253,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132279,7 +132279,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132305,7 +132305,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132331,7 +132331,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132357,7 +132357,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132383,7 +132383,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132409,7 +132409,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132435,7 +132435,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132461,7 +132461,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132487,7 +132487,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132513,7 +132513,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132539,7 +132539,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132565,7 +132565,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132591,7 +132591,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132617,7 +132617,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132643,7 +132643,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132669,7 +132669,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132695,7 +132695,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132721,7 +132721,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132747,7 +132747,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132773,7 +132773,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132799,7 +132799,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132825,7 +132825,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132851,7 +132851,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132877,7 +132877,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132903,7 +132903,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132929,7 +132929,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132955,7 +132955,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -132981,7 +132981,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133007,7 +133007,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133033,7 +133033,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133059,7 +133059,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133085,7 +133085,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133111,7 +133111,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133137,7 +133137,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133163,7 +133163,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133189,7 +133189,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -133257,7 +133257,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -133325,7 +133325,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -133393,7 +133393,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -133461,7 +133461,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -133529,7 +133529,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -133597,7 +133597,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -133706,7 +133706,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133732,7 +133732,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133758,7 +133758,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133784,7 +133784,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133810,7 +133810,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133836,7 +133836,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133862,7 +133862,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133888,7 +133888,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133914,7 +133914,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133940,7 +133940,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133966,7 +133966,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -133992,7 +133992,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134018,7 +134018,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134044,7 +134044,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134070,7 +134070,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134096,7 +134096,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134122,7 +134122,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134148,7 +134148,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134174,7 +134174,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134200,7 +134200,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134226,7 +134226,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134252,7 +134252,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134278,7 +134278,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134304,7 +134304,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134330,7 +134330,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134356,7 +134356,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134382,7 +134382,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134408,7 +134408,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134434,7 +134434,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134460,7 +134460,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134486,7 +134486,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134512,7 +134512,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134538,7 +134538,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134564,7 +134564,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134590,7 +134590,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134616,7 +134616,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134642,7 +134642,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134668,7 +134668,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134694,7 +134694,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134720,7 +134720,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134746,7 +134746,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134772,7 +134772,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134798,7 +134798,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134824,7 +134824,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134850,7 +134850,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134876,7 +134876,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134902,7 +134902,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134928,7 +134928,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134954,7 +134954,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -134980,7 +134980,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135006,7 +135006,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135032,7 +135032,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135058,7 +135058,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135084,7 +135084,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135110,7 +135110,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135136,7 +135136,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135162,7 +135162,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135188,7 +135188,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135214,7 +135214,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135240,7 +135240,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135266,7 +135266,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -135334,7 +135334,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -135402,7 +135402,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -135470,7 +135470,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -135538,7 +135538,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -135606,7 +135606,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -135674,7 +135674,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -135783,7 +135783,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135809,7 +135809,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135835,7 +135835,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135861,7 +135861,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135887,7 +135887,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135913,7 +135913,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135939,7 +135939,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135965,7 +135965,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -135991,7 +135991,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136017,7 +136017,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136043,7 +136043,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136069,7 +136069,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136095,7 +136095,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136121,7 +136121,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136147,7 +136147,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136173,7 +136173,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136199,7 +136199,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136225,7 +136225,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136251,7 +136251,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136277,7 +136277,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136303,7 +136303,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136329,7 +136329,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136355,7 +136355,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136381,7 +136381,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136407,7 +136407,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136433,7 +136433,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136459,7 +136459,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136485,7 +136485,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136511,7 +136511,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136537,7 +136537,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136563,7 +136563,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136589,7 +136589,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136615,7 +136615,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136641,7 +136641,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136667,7 +136667,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136693,7 +136693,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136719,7 +136719,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136745,7 +136745,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136771,7 +136771,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136797,7 +136797,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136823,7 +136823,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136849,7 +136849,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136875,7 +136875,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136901,7 +136901,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136927,7 +136927,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136953,7 +136953,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -136979,7 +136979,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137005,7 +137005,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137031,7 +137031,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137057,7 +137057,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137083,7 +137083,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137109,7 +137109,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137135,7 +137135,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137161,7 +137161,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137187,7 +137187,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137213,7 +137213,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137239,7 +137239,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137265,7 +137265,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137291,7 +137291,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137317,7 +137317,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137343,7 +137343,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -137411,7 +137411,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -137479,7 +137479,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -137547,7 +137547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -137615,7 +137615,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -137683,7 +137683,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -137751,7 +137751,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -137860,7 +137860,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137886,7 +137886,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137912,7 +137912,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137938,7 +137938,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137964,7 +137964,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -137990,7 +137990,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138016,7 +138016,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138042,7 +138042,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138068,7 +138068,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138094,7 +138094,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138120,7 +138120,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138146,7 +138146,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138172,7 +138172,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138198,7 +138198,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138224,7 +138224,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138250,7 +138250,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138276,7 +138276,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138302,7 +138302,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138328,7 +138328,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138354,7 +138354,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138380,7 +138380,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138406,7 +138406,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138432,7 +138432,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138458,7 +138458,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138484,7 +138484,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138510,7 +138510,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138536,7 +138536,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138562,7 +138562,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138588,7 +138588,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138614,7 +138614,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138640,7 +138640,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138666,7 +138666,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138692,7 +138692,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138718,7 +138718,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138744,7 +138744,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138770,7 +138770,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138796,7 +138796,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138822,7 +138822,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138848,7 +138848,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138874,7 +138874,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138900,7 +138900,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138926,7 +138926,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138952,7 +138952,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -138978,7 +138978,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139004,7 +139004,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139030,7 +139030,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139056,7 +139056,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139082,7 +139082,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139108,7 +139108,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139134,7 +139134,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139160,7 +139160,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139186,7 +139186,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139212,7 +139212,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139238,7 +139238,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139264,7 +139264,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139290,7 +139290,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139316,7 +139316,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139342,7 +139342,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139368,7 +139368,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139394,7 +139394,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139420,7 +139420,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -139488,7 +139488,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -139556,7 +139556,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -139624,7 +139624,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -139692,7 +139692,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -139760,7 +139760,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -139828,7 +139828,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -139937,7 +139937,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139963,7 +139963,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -139989,7 +139989,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140015,7 +140015,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140041,7 +140041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140067,7 +140067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140093,7 +140093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140119,7 +140119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140145,7 +140145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140171,7 +140171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140197,7 +140197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140223,7 +140223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140249,7 +140249,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140275,7 +140275,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140301,7 +140301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140327,7 +140327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140353,7 +140353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140379,7 +140379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140405,7 +140405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140431,7 +140431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140457,7 +140457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140483,7 +140483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140509,7 +140509,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140535,7 +140535,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140561,7 +140561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140587,7 +140587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140613,7 +140613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140639,7 +140639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140665,7 +140665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140691,7 +140691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140717,7 +140717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140743,7 +140743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140769,7 +140769,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140795,7 +140795,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140821,7 +140821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140847,7 +140847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140873,7 +140873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140899,7 +140899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140925,7 +140925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140951,7 +140951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -140977,7 +140977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141003,7 +141003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141029,7 +141029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141055,7 +141055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141081,7 +141081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141107,7 +141107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141133,7 +141133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141159,7 +141159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141185,7 +141185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141211,7 +141211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141237,7 +141237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141263,7 +141263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141289,7 +141289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141315,7 +141315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141341,7 +141341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141367,7 +141367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141393,7 +141393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141419,7 +141419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141445,7 +141445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141471,7 +141471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -141497,7 +141497,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -141565,7 +141565,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -141633,7 +141633,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -141701,7 +141701,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -141769,7 +141769,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -141837,7 +141837,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -141905,7 +141905,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -142014,7 +142014,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142040,7 +142040,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142066,7 +142066,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142092,7 +142092,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142118,7 +142118,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142144,7 +142144,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142170,7 +142170,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142196,7 +142196,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142222,7 +142222,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142248,7 +142248,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142274,7 +142274,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142300,7 +142300,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142326,7 +142326,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142352,7 +142352,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142378,7 +142378,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142404,7 +142404,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142430,7 +142430,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142456,7 +142456,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142482,7 +142482,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142508,7 +142508,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142534,7 +142534,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142560,7 +142560,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142586,7 +142586,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142612,7 +142612,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142638,7 +142638,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142664,7 +142664,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142690,7 +142690,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142716,7 +142716,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142742,7 +142742,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142768,7 +142768,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142794,7 +142794,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142820,7 +142820,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142846,7 +142846,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142872,7 +142872,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142898,7 +142898,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142924,7 +142924,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142950,7 +142950,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -142976,7 +142976,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143002,7 +143002,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143028,7 +143028,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143054,7 +143054,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143080,7 +143080,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143106,7 +143106,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143132,7 +143132,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143158,7 +143158,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143184,7 +143184,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143210,7 +143210,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143236,7 +143236,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143262,7 +143262,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143288,7 +143288,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143314,7 +143314,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143340,7 +143340,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143366,7 +143366,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143392,7 +143392,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143418,7 +143418,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143444,7 +143444,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143470,7 +143470,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143496,7 +143496,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143522,7 +143522,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143548,7 +143548,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -143574,7 +143574,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -143642,7 +143642,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -143710,7 +143710,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -143778,7 +143778,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -143846,7 +143846,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -143914,7 +143914,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -143982,7 +143982,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -144091,7 +144091,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144117,7 +144117,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144143,7 +144143,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144169,7 +144169,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144195,7 +144195,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144221,7 +144221,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144247,7 +144247,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144273,7 +144273,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144299,7 +144299,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144325,7 +144325,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144351,7 +144351,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144377,7 +144377,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144403,7 +144403,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144429,7 +144429,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144455,7 +144455,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144481,7 +144481,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144507,7 +144507,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144533,7 +144533,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144559,7 +144559,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144585,7 +144585,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144611,7 +144611,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144637,7 +144637,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144663,7 +144663,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144689,7 +144689,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144715,7 +144715,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144741,7 +144741,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144767,7 +144767,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144793,7 +144793,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144819,7 +144819,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144845,7 +144845,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144871,7 +144871,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144897,7 +144897,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144923,7 +144923,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144949,7 +144949,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -144975,7 +144975,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145001,7 +145001,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145027,7 +145027,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145053,7 +145053,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145079,7 +145079,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145105,7 +145105,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145131,7 +145131,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145157,7 +145157,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145183,7 +145183,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145209,7 +145209,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145235,7 +145235,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145261,7 +145261,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145287,7 +145287,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145313,7 +145313,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145339,7 +145339,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145365,7 +145365,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145391,7 +145391,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145417,7 +145417,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145443,7 +145443,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145469,7 +145469,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145495,7 +145495,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145521,7 +145521,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145547,7 +145547,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145573,7 +145573,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145599,7 +145599,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145625,7 +145625,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -145651,7 +145651,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 62.0, "wellLocation": { "offset": { @@ -145719,7 +145719,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -145787,7 +145787,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -145855,7 +145855,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -145923,7 +145923,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -145991,7 +145991,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -146059,7 +146059,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 10.0, "wellLocation": { "offset": { @@ -146125,7 +146125,7 @@ "errors": [], "files": [ { - "name": "Flex_P50MLeft_P1000MRight_None_2_15_ABRKAPALibraryQuantLongv2.py", + "name": "Flex_S_v2_15_P50M_P1000M_KAPALibraryQuantLongv2.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9b3c1dba82][v2_18_None_None_StrRTPwith_unit].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a255db0b][OT2_X_v2_18_None_None_StrRTPwith_unit].json similarity index 92% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9b3c1dba82][v2_18_None_None_StrRTPwith_unit].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a255db0b][OT2_X_v2_18_None_None_StrRTPwith_unit].json index 9f145db667d..7dd2a932a28 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9b3c1dba82][v2_18_None_None_StrRTPwith_unit].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a255db0b][OT2_X_v2_18_None_None_StrRTPwith_unit].json @@ -28,7 +28,7 @@ "errorInfo": { "args": "(\"ParameterContext.add_str() got an unexpected keyword argument 'unit'\",)", "class": "TypeError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_None_None_StrRTPwith_unit.py\", line 11, in add_parameters\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_X_v2_18_None_None_StrRTPwith_unit.py\", line 11, in add_parameters\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -37,6 +37,10 @@ } ], "files": [ + { + "name": "OT2_X_v2_18_None_None_StrRTPwith_unit.py", + "role": "main" + }, { "name": "cpx_4_tuberack_100ul.json", "role": "labware" @@ -56,10 +60,6 @@ { "name": "sample_labware.json", "role": "labware" - }, - { - "name": "v2_18_None_None_StrRTPwith_unit.py", - "role": "main" } ], "labware": [], diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13efc9bfcd][Flex_P1000_96_TC_2_16_AnalysisError_PartialTipPickupThermocyclerLidConflict].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13efc9bfcd][Flex_P1000_96_TC_2_16_AnalysisError_PartialTipPickupThermocyclerLidConflict].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json index 89bbec0231b..942e6e97b53 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[13efc9bfcd][Flex_P1000_96_TC_2_16_AnalysisError_PartialTipPickupThermocyclerLidConflict].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[89a8226c4e][Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict].json @@ -2,12 +2,14 @@ "commands": [ { "commandType": "home", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_flex_96_tiprack_50ul", "location": { @@ -1159,6 +1161,7 @@ }, { "commandType": "loadPipette", + "notes": [], "params": { "mount": "left", "pipetteName": "p1000_96" @@ -1168,6 +1171,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_200ul_flat", "location": { @@ -2328,6 +2332,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_200ul_flat", "location": { @@ -3488,6 +3493,7 @@ }, { "commandType": "loadModule", + "notes": [], "params": { "location": { "slotName": "B1" @@ -3596,6 +3602,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_200ul_flat", "location": { @@ -4756,6 +4763,7 @@ }, { "commandType": "configureNozzleLayout", + "notes": [], "params": { "configurationParams": { "primaryNozzle": "A12", @@ -4767,6 +4775,7 @@ }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -4792,6 +4801,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 50.0, @@ -4817,6 +4827,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 20.0, @@ -4867,7 +4878,7 @@ ], "files": [ { - "name": "Flex_P1000_96_TC_2_16_AnalysisError_PartialTipPickupThermocyclerLidConflict.py", + "name": "Flex_X_v2_16_P1000_96_TC_PartialTipPickupThermocyclerLidConflict.py", "role": "main" }, { @@ -4937,5 +4948,6 @@ "pipetteName": "p1000_96" } ], - "robotType": "OT-3 Standard" + "robotType": "OT-3 Standard", + "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e15076a97][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e15076a97][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json deleted file mode 100644 index 3906b190432..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8e15076a97][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "TypeError [line 51]: object of type 'float' has no len()", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "TypeError: object of type 'float' has no len()", - "errorCode": "4000", - "errorInfo": { - "args": "(\"object of type 'float' has no len()\",)", - "class": "TypeError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name.py\", line 51, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 148, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 226, in validate_options\n _validate_choices(minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 162, in _validate_choices\n ensure_display_name(display_name)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 21, in ensure_display_name\n if len(display_name) > DISPLAY_NAME_MAX_LEN:\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_display_name.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Description Too Long 2.18" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fb1d45057d][Flex_P1000_96_TC_2_16_PartialTipPickupColumn].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fb1d45057d][Flex_P1000_96_TC_2_16_PartialTipPickupColumn].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json index 866b69eace7..64660f2f085 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fb1d45057d][Flex_P1000_96_TC_2_16_PartialTipPickupColumn].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8fcfd2ced0][Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn].json @@ -2,12 +2,14 @@ "commands": [ { "commandType": "home", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_flex_96_tiprack_50ul", "location": { @@ -1159,6 +1161,7 @@ }, { "commandType": "loadPipette", + "notes": [], "params": { "mount": "left", "pipetteName": "p1000_96" @@ -1168,6 +1171,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_200ul_flat", "location": { @@ -2328,6 +2332,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_200ul_flat", "location": { @@ -3488,6 +3493,7 @@ }, { "commandType": "configureNozzleLayout", + "notes": [], "params": { "configurationParams": { "primaryNozzle": "A12", @@ -3499,6 +3505,7 @@ }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -3524,6 +3531,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 50.0, @@ -3549,6 +3557,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 20.0, @@ -3574,6 +3583,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", + "notes": [], "params": { "addressableAreaName": "movableTrashA3", "alternateDropLocation": true, @@ -3596,6 +3606,7 @@ }, { "commandType": "dropTipInPlace", + "notes": [], "params": {}, "result": {}, "status": "succeeded" @@ -3611,7 +3622,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000_96_TC_2_16_PartialTipPickupColumn.py", + "name": "Flex_S_v2_16_P1000_96_TC_PartialTipPickupColumn.py", "role": "main" }, { @@ -3667,5 +3678,6 @@ "pipetteName": "p1000_96" } ], - "robotType": "OT-3 Standard" + "robotType": "OT-3 Standard", + "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7fa902bfa1][OT2_P300SG1_None_5_2_6_Gen1PipetteSimple].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[94913d2988][OT2_S_v3_P300SGen1_None_Gen1PipetteSimple].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7fa902bfa1][OT2_P300SG1_None_5_2_6_Gen1PipetteSimple].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[94913d2988][OT2_S_v3_P300SGen1_None_Gen1PipetteSimple].json index b5d4180c5f4..92829c13eae 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7fa902bfa1][OT2_P300SG1_None_5_2_6_Gen1PipetteSimple].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[94913d2988][OT2_S_v3_P300SGen1_None_Gen1PipetteSimple].json @@ -5772,7 +5772,7 @@ "errors": [], "files": [ { - "name": "OT2_P300SG1_None_5_2_6_Gen1PipetteSimple.json", + "name": "OT2_S_v3_P300SGen1_None_Gen1PipetteSimple.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[240b279ac3][OT2_P300S_Thermocycler_Moam_Error].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9618a6623c][OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError].json similarity index 98% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[240b279ac3][OT2_P300S_Thermocycler_Moam_Error].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9618a6623c][OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError].json index 35ec253ed42..bdace9efaf6 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[240b279ac3][OT2_P300S_Thermocycler_Moam_Error].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9618a6623c][OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError].json @@ -2680,7 +2680,7 @@ "errorInfo": { "args": "('thermocyclerModuleV2 in slot 7 prevents thermocyclerModuleV1 from using slot 7.',)", "class": "DeckConflictError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_P300S_Thermocycler_Moam_Error.py\", line 19, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 814, in load_module\n module_core = self._core.load_module(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/legacy/legacy_protocol_core.py\", line 333, in load_module\n self._deck_layout[resolved_location] = geometry\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/legacy/deck.py\", line 186, in __setitem__\n deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/motion_planning/deck_conflict.py\", line 210, in check\n raise DeckConflictError(\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError.py\", line 19, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 814, in load_module\n module_core = self._core.load_module(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/legacy/legacy_protocol_core.py\", line 333, in load_module\n self._deck_layout[resolved_location] = geometry\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/legacy/deck.py\", line 186, in __setitem__\n deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/motion_planning/deck_conflict.py\", line 210, in check\n raise DeckConflictError(\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -2690,7 +2690,7 @@ ], "files": [ { - "name": "OT2_P300S_Thermocycler_Moam_Error.py", + "name": "OT2_X_v2_11_P300S_TC1_TC2_ThermocyclerMoamError.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88c6605849][Flex_None_None_TC_2_16_verifyThermocyclerLoadedSlots].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[973fa979e6][Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json similarity index 95% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88c6605849][Flex_None_None_TC_2_16_verifyThermocyclerLoadedSlots].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[973fa979e6][Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json index 68e957910ee..7ce33092ad3 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[88c6605849][Flex_None_None_TC_2_16_verifyThermocyclerLoadedSlots].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[973fa979e6][Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json @@ -137,7 +137,7 @@ "errorInfo": { "args": "()", "class": "AssertionError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_None_None_TC_2_16_verifyThermocyclerLoadedSlots.py\", line 13, in run\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots.py\", line 13, in run\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -147,7 +147,7 @@ ], "files": [ { - "name": "Flex_None_None_TC_2_16_verifyThermocyclerLoadedSlots.py", + "name": "Flex_S_v2_16_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[99ca590259][v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[99ca590259][v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json deleted file mode 100644 index 7807059d510..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[99ca590259][v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterValueError [line 48]: Parameter must be set to one of the allowed values of {'flex_8channel_50', 'flex_1channel_50'}.", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be set to one of the allowed values of {'flex_8channel_50', 'flex_1channel_50'}.", - "errorCode": "4000", - "errorInfo": { - "args": "(\"Parameter must be set to one of the allowed values of {'flex_8channel_50', 'flex_1channel_50'}.\",)", - "class": "ParameterValueError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices.py\", line 48, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 148, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 95, in value\n raise ParameterValueError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_str_default_no_matching_choices.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "default choice does not match a choice" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5eb46a4f85][Flex_P1000_96_GRIPPER_2_16_AnalysisError_DropLabwareIntoTrashBin].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5eb46a4f85][Flex_P1000_96_GRIPPER_2_16_AnalysisError_DropLabwareIntoTrashBin].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json index f72a3066d6a..6916e6613a3 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5eb46a4f85][Flex_P1000_96_GRIPPER_2_16_AnalysisError_DropLabwareIntoTrashBin].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9e56ee92f6][Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin].json @@ -1261,7 +1261,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashC3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -1272,7 +1272,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 466.25, "y": 150.0, "z": 40.0 } @@ -1339,7 +1339,7 @@ ], "files": [ { - "name": "Flex_P1000_96_GRIPPER_2_16_AnalysisError_DropLabwareIntoTrashBin.py", + "name": "Flex_X_v2_16_P1000_96_GRIP_DropLabwareIntoTrashBin.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a550135de6][Flex_None_None_2_16_AnalysisError_TrashBinInStagingAreaCol3].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json similarity index 98% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a550135de6][Flex_None_None_2_16_AnalysisError_TrashBinInStagingAreaCol3].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json index 9030ad7192c..4670580f316 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a550135de6][Flex_None_None_2_16_AnalysisError_TrashBinInStagingAreaCol3].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a01a35c14a][Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3].json @@ -121,7 +121,7 @@ ], "files": [ { - "name": "Flex_None_None_2_16_AnalysisError_TrashBinInStagingAreaCol3.py", + "name": "Flex_X_v2_16_NO_PIPETTES_TrashBinInStagingAreaCol3.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a06502b2dc][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a06502b2dc][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json index 0ad6ddac98e..fd0394ca385 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a06502b2dc][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a06502b2dc][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 2, - "command_output": "Usage: python -m opentrons.cli analyze [OPTIONS] FILES...\nTry 'python -m opentrons.cli analyze --help' for help.\n\nError: Invalid value for 'FILES...': Path '/var/lib/ot/protocols/generated_protocols/Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description.py' does not exist.\n" + "detail": "ParameterNameError [line 84]: Description must be a string and at most 100 characters.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterNameError: Description must be a string and at most 100 characters.", + "errorCode": "4000", + "errorInfo": { + "args": "('Description must be a string and at most 100 characters.',)", + "class": "ParameterNameError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description.py\", line 84, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 152, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 58, in __init__\n self._description = validation.ensure_description(description)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 60, in ensure_description\n raise ParameterNameError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Description Too Long 2.18" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d577930518][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoModulesNoFixtures].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d577930518][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoModulesNoFixtures].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json index 297b7cf8878..7869a86e776 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d577930518][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoModulesNoFixtures].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a08c261369][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures].json @@ -8614,7 +8614,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoModulesNoFixtures.py", + "name": "Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModulesNoFixtures.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[20cefcac62][OT2_P300M_P20S_TC_HS_TM_2_13_SmokeTestV3].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a66d700ed6][OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[20cefcac62][OT2_P300M_P20S_TC_HS_TM_2_13_SmokeTestV3].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a66d700ed6][OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3].json index e22b12eab12..dc96969c9c7 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[20cefcac62][OT2_P300M_P20S_TC_HS_TM_2_13_SmokeTestV3].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a66d700ed6][OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -12526,7 +12526,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_TC_HS_TM_2_13_SmokeTestV3.py", + "name": "OT2_S_v2_13_P300M_P20S_HS_TC_TM_SmokeTestV3.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8e2d3caa9][v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8e2d3caa9][v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json deleted file mode 100644 index f85dc5fa42d..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a8e2d3caa9][v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterValueError [line 23]: Parameter must be between 1 and 3 inclusive.", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be between 1 and 3 inclusive.", - "errorCode": "4000", - "errorInfo": { - "args": "('Parameter must be between 1 and 3 inclusive.',)", - "class": "ParameterValueError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum.py\", line 23, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 55, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 104, in value\n raise ParameterValueError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_DefaultOutOfRangeRTP_Override_default_greater_than_maximum.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Default not in range" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dc8ac87114][Flex_None_None_2_16_AnalysisError_AccessToFixedTrashProp].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a9557d762c][Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp].json similarity index 78% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dc8ac87114][Flex_None_None_2_16_AnalysisError_AccessToFixedTrashProp].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a9557d762c][Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp].json index 257a29f5a73..246e3a98216 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dc8ac87114][Flex_None_None_2_16_AnalysisError_AccessToFixedTrashProp].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[a9557d762c][Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp].json @@ -28,7 +28,7 @@ "errorInfo": { "args": "('Fixed Trash is not supported on Flex protocols in API Version 2.16 and above.',)", "class": "APIVersionError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_None_None_2_16_AnalysisError_AccessToFixedTrashProp.py\", line 15, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 1118, in fixed_trash\n raise APIVersionError(\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp.py\", line 15, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 1118, in fixed_trash\n raise APIVersionError(\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -38,7 +38,7 @@ ], "files": [ { - "name": "Flex_None_None_2_16_AnalysisError_AccessToFixedTrashProp.py", + "name": "Flex_X_v2_16_NO_PIPETTES_AccessToFixedTrashProp.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3758150ec1][Flex_P1000_96_None_2_15_ABR5_6_IDT_xGen_EZ_96x_Head_PART_I_III_ABR].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3758150ec1][Flex_P1000_96_None_2_15_ABR5_6_IDT_xGen_EZ_96x_Head_PART_I_III_ABR].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json index 3041ec1374d..043fbd6f36c 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[3758150ec1][Flex_P1000_96_None_2_15_ABR5_6_IDT_xGen_EZ_96x_Head_PART_I_III_ABR].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ac886d7768][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3].json @@ -11032,7 +11032,7 @@ ], "files": [ { - "name": "Flex_P1000_96_None_2_15_ABR5_6_IDT_xGen_EZ_96x_Head_PART_I_III_ABR.py", + "name": "Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IDTXgen96Part1to3.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[af0b02a5db][OT2_P300M_P20S_HS_6_1_Smoke620release].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[af0b02a5db][OT2_P300M_P20S_HS_6_1_Smoke620release].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json index 881c6ce7e45..537d3e68d3d 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[af0b02a5db][OT2_P300M_P20S_HS_6_1_Smoke620release].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad627dcedf][OT2_S_v6_P300M_P20S_HS_Smoke620release].json @@ -8469,7 +8469,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_HS_6_1_Smoke620release.json", + "name": "OT2_S_v6_P300M_P20S_HS_Smoke620release.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cf80c979bd][Flex_P1000_96_None_TC_2_16_AnalysisError_pipetteCollisionWithThermocyclerLid].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cf80c979bd][Flex_P1000_96_None_TC_2_16_AnalysisError_pipetteCollisionWithThermocyclerLid].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json index ea4fd2cda9b..ad5e91cee31 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cf80c979bd][Flex_P1000_96_None_TC_2_16_AnalysisError_pipetteCollisionWithThermocyclerLid].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adc0621263][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid].json @@ -6091,7 +6091,7 @@ ], "files": [ { - "name": "Flex_P1000_96_None_TC_2_16_AnalysisError_pipetteCollisionWithThermocyclerLid.py", + "name": "Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLid.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad845b131b][Flex_P1000_96_TC_2_16_AnalysisError_PartialTipPickupTryToReturnTip].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad845b131b][Flex_P1000_96_TC_2_16_AnalysisError_PartialTipPickupTryToReturnTip].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json index 8185dcf40a5..58f383ed1ba 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ad845b131b][Flex_P1000_96_TC_2_16_AnalysisError_PartialTipPickupTryToReturnTip].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b0ce7dde5d][Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip].json @@ -2,12 +2,14 @@ "commands": [ { "commandType": "home", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_flex_96_tiprack_50ul", "location": { @@ -1159,6 +1161,7 @@ }, { "commandType": "loadPipette", + "notes": [], "params": { "mount": "left", "pipetteName": "p1000_96" @@ -1168,6 +1171,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_200ul_flat", "location": { @@ -2328,6 +2332,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_200ul_flat", "location": { @@ -3488,6 +3493,7 @@ }, { "commandType": "configureNozzleLayout", + "notes": [], "params": { "configurationParams": { "primaryNozzle": "A12", @@ -3499,6 +3505,7 @@ }, { "commandType": "pickUpTip", + "notes": [], "params": { "wellLocation": { "offset": { @@ -3524,6 +3531,7 @@ }, { "commandType": "aspirate", + "notes": [], "params": { "flowRate": 160.0, "volume": 50.0, @@ -3549,6 +3557,7 @@ }, { "commandType": "dispense", + "notes": [], "params": { "flowRate": 160.0, "volume": 20.0, @@ -3599,7 +3608,7 @@ ], "files": [ { - "name": "Flex_P1000_96_TC_2_16_AnalysisError_PartialTipPickupTryToReturnTip.py", + "name": "Flex_X_v2_16_P1000_96_TC_PartialTipPickupTryToReturnTip.py", "role": "main" }, { @@ -3655,5 +3664,6 @@ "pipetteName": "p1000_96" } ], - "robotType": "OT-3 Standard" + "robotType": "OT-3 Standard", + "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b806f07be9][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b806f07be9][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json index 2e07febfda5..04e274d2ef4 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b806f07be9][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[b806f07be9][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 2, - "command_output": "Usage: python -m opentrons.cli analyze [OPTIONS] FILES...\nTry 'python -m opentrons.cli analyze --help' for help.\n\nError: Invalid value for 'FILES...': Path '/var/lib/ot/protocols/generated_protocols/Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value.py' does not exist.\n" + "detail": "ParameterDefinitionError [line 62]: All choices provided must be of type 'str'", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterDefinitionError: All choices provided must be of type 'str'", + "errorCode": "4000", + "errorInfo": { + "args": "(\"All choices provided must be of type 'str'\",)", + "class": "ParameterDefinitionError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value.py\", line 62, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 152, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 264, in validate_options\n _validate_choices(minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 191, in _validate_choices\n raise ParameterDefinitionError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_choice_value.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Description Too Long 2.18" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2dbe35fede][Flex_P1000SRight_None_2_15_ABR_Simple_Normalize_Long_Right].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json similarity index 96% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2dbe35fede][Flex_P1000SRight_None_2_15_ABR_Simple_Normalize_Long_Right].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json index 72e4dc6770f..736af3bb4ce 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2dbe35fede][Flex_P1000SRight_None_2_15_ABR_Simple_Normalize_Long_Right].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[baf79d9b4a][Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight].json @@ -10753,7 +10753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -10779,7 +10779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -10805,7 +10805,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -10831,7 +10831,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -10857,7 +10857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10883,7 +10883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10909,7 +10909,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -10935,7 +10935,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -10961,7 +10961,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -10987,7 +10987,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -11013,7 +11013,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -11039,7 +11039,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -11065,7 +11065,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -11091,7 +11091,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -11117,7 +11117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -11143,7 +11143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -11169,7 +11169,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -11195,7 +11195,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -11221,7 +11221,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -11247,7 +11247,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -11273,7 +11273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -11299,7 +11299,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -11325,7 +11325,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -11351,7 +11351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -11377,7 +11377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -11403,7 +11403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -11429,7 +11429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -11455,7 +11455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -11481,7 +11481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -11507,7 +11507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -11533,7 +11533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -11559,7 +11559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -11585,7 +11585,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -11611,7 +11611,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -11637,7 +11637,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -11663,7 +11663,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -11689,7 +11689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -11715,7 +11715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -11741,7 +11741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -11767,7 +11767,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -11793,7 +11793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -11819,7 +11819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -11845,7 +11845,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -11871,7 +11871,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -11897,7 +11897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11923,7 +11923,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11949,7 +11949,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -11975,7 +11975,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -12001,7 +12001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -12027,7 +12027,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -12053,7 +12053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -12079,7 +12079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -12105,7 +12105,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -12131,7 +12131,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -12157,7 +12157,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -12183,7 +12183,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -12209,7 +12209,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -12235,7 +12235,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -12261,7 +12261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -12287,7 +12287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -12313,7 +12313,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -12339,7 +12339,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -12365,7 +12365,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -12391,7 +12391,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -12417,7 +12417,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -12443,7 +12443,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -12469,7 +12469,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -12495,7 +12495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -12521,7 +12521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -12547,7 +12547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -12573,7 +12573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -12599,7 +12599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -12625,7 +12625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -12651,7 +12651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -12677,7 +12677,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -12703,7 +12703,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -12729,7 +12729,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -12755,7 +12755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -12781,7 +12781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -12807,7 +12807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -12833,7 +12833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12859,7 +12859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12885,7 +12885,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -12911,7 +12911,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -12937,7 +12937,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -12963,7 +12963,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -12989,7 +12989,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -13015,7 +13015,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -13041,7 +13041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -13067,7 +13067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -13093,7 +13093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -13119,7 +13119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -13145,7 +13145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -13171,7 +13171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -13197,7 +13197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -13223,7 +13223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -13249,7 +13249,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -13275,7 +13275,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -13301,7 +13301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -13327,7 +13327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -13353,7 +13353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -13379,7 +13379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -13405,7 +13405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13431,7 +13431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -13457,7 +13457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -13483,7 +13483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -13509,7 +13509,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -13535,7 +13535,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -13561,7 +13561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -13587,7 +13587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -13613,7 +13613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -13639,7 +13639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -13665,7 +13665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -13691,7 +13691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -13717,7 +13717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -13743,7 +13743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -13769,7 +13769,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -13795,7 +13795,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -13821,7 +13821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -13847,7 +13847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -13873,7 +13873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -13899,7 +13899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -13925,7 +13925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -13951,7 +13951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -13977,7 +13977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -14003,7 +14003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -14029,7 +14029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -14055,7 +14055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -14081,7 +14081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -14107,7 +14107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -14133,7 +14133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -14159,7 +14159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -14185,7 +14185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -14211,7 +14211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -14237,7 +14237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -14263,7 +14263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -14289,7 +14289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -14315,7 +14315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -14341,7 +14341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -14367,7 +14367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -14393,7 +14393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -14419,7 +14419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -14445,7 +14445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -14471,7 +14471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -14497,7 +14497,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -14523,7 +14523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -14549,7 +14549,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -14575,7 +14575,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -14601,7 +14601,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -14627,7 +14627,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -14653,7 +14653,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -14679,7 +14679,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -14705,7 +14705,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -14731,7 +14731,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -14757,7 +14757,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -14783,7 +14783,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -14809,7 +14809,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -14835,7 +14835,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -14861,7 +14861,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -14887,7 +14887,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -14913,7 +14913,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -14939,7 +14939,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -14965,7 +14965,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -14991,7 +14991,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -15017,7 +15017,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -15043,7 +15043,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -15069,7 +15069,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -15095,7 +15095,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -15121,7 +15121,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -15147,7 +15147,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -15173,7 +15173,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -15199,7 +15199,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -15225,7 +15225,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -15251,7 +15251,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -15277,7 +15277,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -15303,7 +15303,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -15329,7 +15329,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -15355,7 +15355,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -15381,7 +15381,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -15407,7 +15407,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -15433,7 +15433,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -15459,7 +15459,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -15485,7 +15485,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -15511,7 +15511,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -15537,7 +15537,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -15563,7 +15563,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -15589,7 +15589,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -15615,7 +15615,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -15641,7 +15641,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -15667,7 +15667,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -15773,7 +15773,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -15799,7 +15799,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -15875,7 +15875,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -15901,7 +15901,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -15977,7 +15977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -16003,7 +16003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -16079,7 +16079,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -16105,7 +16105,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -16181,7 +16181,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -16207,7 +16207,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -16283,7 +16283,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -16309,7 +16309,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -16385,7 +16385,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16411,7 +16411,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16487,7 +16487,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -16513,7 +16513,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -16589,7 +16589,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -16615,7 +16615,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -16691,7 +16691,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -16717,7 +16717,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -16793,7 +16793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -16819,7 +16819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -16895,7 +16895,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -16921,7 +16921,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -16997,7 +16997,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -17023,7 +17023,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -17099,7 +17099,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -17125,7 +17125,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -17201,7 +17201,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -17227,7 +17227,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -17303,7 +17303,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -17329,7 +17329,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -17405,7 +17405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -17431,7 +17431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -17507,7 +17507,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -17533,7 +17533,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -17609,7 +17609,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -17635,7 +17635,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -17711,7 +17711,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -17737,7 +17737,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -17813,7 +17813,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -17839,7 +17839,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -17915,7 +17915,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -17941,7 +17941,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -18017,7 +18017,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -18043,7 +18043,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -18119,7 +18119,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -18145,7 +18145,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -18221,7 +18221,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -18247,7 +18247,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -18323,7 +18323,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -18349,7 +18349,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -18425,7 +18425,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -18451,7 +18451,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -18527,7 +18527,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -18553,7 +18553,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -18629,7 +18629,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -18655,7 +18655,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -18731,7 +18731,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -18757,7 +18757,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -18833,7 +18833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -18859,7 +18859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -18935,7 +18935,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -18961,7 +18961,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -19037,7 +19037,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -19063,7 +19063,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -19139,7 +19139,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -19165,7 +19165,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -19241,7 +19241,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -19267,7 +19267,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -19343,7 +19343,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -19369,7 +19369,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -19445,7 +19445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -19471,7 +19471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -19547,7 +19547,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -19573,7 +19573,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -19649,7 +19649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -19675,7 +19675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -19751,7 +19751,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -19777,7 +19777,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -19853,7 +19853,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -19879,7 +19879,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -19955,7 +19955,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -19981,7 +19981,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -20057,7 +20057,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -20083,7 +20083,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -20159,7 +20159,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -20185,7 +20185,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -20261,7 +20261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -20287,7 +20287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -20363,7 +20363,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -20389,7 +20389,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -20465,7 +20465,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -20491,7 +20491,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -20567,7 +20567,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -20593,7 +20593,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -20669,7 +20669,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -20695,7 +20695,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -20771,7 +20771,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -20797,7 +20797,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -20873,7 +20873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -20899,7 +20899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -20975,7 +20975,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21001,7 +21001,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -21077,7 +21077,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -21103,7 +21103,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -21179,7 +21179,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -21205,7 +21205,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -21281,7 +21281,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -21307,7 +21307,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -21383,7 +21383,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -21409,7 +21409,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -21485,7 +21485,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -21511,7 +21511,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -21587,7 +21587,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -21613,7 +21613,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -21689,7 +21689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -21715,7 +21715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -21791,7 +21791,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -21817,7 +21817,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -21893,7 +21893,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -21919,7 +21919,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -21995,7 +21995,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -22021,7 +22021,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -22097,7 +22097,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -22123,7 +22123,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -22199,7 +22199,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -22225,7 +22225,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -22301,7 +22301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -22327,7 +22327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -22403,7 +22403,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -22429,7 +22429,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -22505,7 +22505,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -22531,7 +22531,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -22607,7 +22607,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -22633,7 +22633,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -22709,7 +22709,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -22735,7 +22735,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -22811,7 +22811,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -22837,7 +22837,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -22913,7 +22913,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -22939,7 +22939,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -23015,7 +23015,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -23041,7 +23041,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -23117,7 +23117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -23143,7 +23143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -23219,7 +23219,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -23245,7 +23245,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -23321,7 +23321,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -23347,7 +23347,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -23423,7 +23423,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -23449,7 +23449,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -23525,7 +23525,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -23551,7 +23551,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -23627,7 +23627,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -23653,7 +23653,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -23729,7 +23729,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -23755,7 +23755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -23831,7 +23831,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -23857,7 +23857,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -23933,7 +23933,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -23959,7 +23959,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -24035,7 +24035,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -24061,7 +24061,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -24137,7 +24137,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -24163,7 +24163,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -24239,7 +24239,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -24265,7 +24265,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -24341,7 +24341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24367,7 +24367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24443,7 +24443,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -24469,7 +24469,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -24545,7 +24545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -24571,7 +24571,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -24647,7 +24647,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -24673,7 +24673,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -24749,7 +24749,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -24775,7 +24775,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -24851,7 +24851,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -24877,7 +24877,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -24953,7 +24953,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -24979,7 +24979,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -25055,7 +25055,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -25081,7 +25081,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -25157,7 +25157,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -25183,7 +25183,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -25259,7 +25259,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -25285,7 +25285,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -25361,7 +25361,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -25387,7 +25387,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -25493,7 +25493,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -25519,7 +25519,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -25545,7 +25545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -25571,7 +25571,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -25597,7 +25597,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -25623,7 +25623,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -25649,7 +25649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -25675,7 +25675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -25701,7 +25701,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -25727,7 +25727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -25753,7 +25753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25779,7 +25779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -25805,7 +25805,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25831,7 +25831,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25857,7 +25857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -25883,7 +25883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -25909,7 +25909,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -25935,7 +25935,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -25961,7 +25961,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -25987,7 +25987,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -26013,7 +26013,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -26039,7 +26039,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -26065,7 +26065,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -26091,7 +26091,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -26117,7 +26117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -26143,7 +26143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -26169,7 +26169,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -26195,7 +26195,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -26221,7 +26221,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -26247,7 +26247,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -26273,7 +26273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -26299,7 +26299,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -26325,7 +26325,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -26351,7 +26351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -26377,7 +26377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -26403,7 +26403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -26429,7 +26429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -26455,7 +26455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -26481,7 +26481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -26507,7 +26507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -26533,7 +26533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -26559,7 +26559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -26585,7 +26585,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -26611,7 +26611,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -26637,7 +26637,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -26663,7 +26663,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -26689,7 +26689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -26715,7 +26715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -26741,7 +26741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -26767,7 +26767,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -26793,7 +26793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -26819,7 +26819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -26845,7 +26845,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -26871,7 +26871,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -26897,7 +26897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -26923,7 +26923,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -26949,7 +26949,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -26975,7 +26975,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -27001,7 +27001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -27027,7 +27027,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -27053,7 +27053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -27079,7 +27079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -27105,7 +27105,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27131,7 +27131,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -27157,7 +27157,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -27183,7 +27183,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -27209,7 +27209,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -27235,7 +27235,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -27261,7 +27261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -27287,7 +27287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -27313,7 +27313,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -27339,7 +27339,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -27365,7 +27365,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -27391,7 +27391,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -27417,7 +27417,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -27443,7 +27443,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -27469,7 +27469,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -27495,7 +27495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -27521,7 +27521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -27547,7 +27547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -27573,7 +27573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -27599,7 +27599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -27625,7 +27625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -27651,7 +27651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -27677,7 +27677,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -27703,7 +27703,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -27729,7 +27729,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -27755,7 +27755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -27781,7 +27781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -27807,7 +27807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -27833,7 +27833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -27859,7 +27859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -27885,7 +27885,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -27911,7 +27911,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -27937,7 +27937,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -27963,7 +27963,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -27989,7 +27989,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -28015,7 +28015,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -28041,7 +28041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -28067,7 +28067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -28093,7 +28093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -28119,7 +28119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -28145,7 +28145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28171,7 +28171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -28197,7 +28197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -28223,7 +28223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -28249,7 +28249,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -28275,7 +28275,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -28301,7 +28301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -28327,7 +28327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -28353,7 +28353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -28379,7 +28379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -28405,7 +28405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -28431,7 +28431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -28457,7 +28457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -28483,7 +28483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -28509,7 +28509,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -28535,7 +28535,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -28561,7 +28561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -28587,7 +28587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -28613,7 +28613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -28639,7 +28639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -28665,7 +28665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -28691,7 +28691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -28717,7 +28717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -28743,7 +28743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -28769,7 +28769,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -28795,7 +28795,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -28821,7 +28821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -28847,7 +28847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -28873,7 +28873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -28899,7 +28899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -28925,7 +28925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -28951,7 +28951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -28977,7 +28977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -29003,7 +29003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -29029,7 +29029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -29055,7 +29055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -29081,7 +29081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -29107,7 +29107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -29133,7 +29133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -29159,7 +29159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -29185,7 +29185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -29211,7 +29211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -29237,7 +29237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -29263,7 +29263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -29289,7 +29289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -29315,7 +29315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -29341,7 +29341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -29367,7 +29367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -29393,7 +29393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -29419,7 +29419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -29445,7 +29445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -29471,7 +29471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -29497,7 +29497,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -29523,7 +29523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -29549,7 +29549,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -29575,7 +29575,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -29601,7 +29601,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -29627,7 +29627,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -29653,7 +29653,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -29679,7 +29679,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -29705,7 +29705,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -29731,7 +29731,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -29757,7 +29757,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -29783,7 +29783,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -29809,7 +29809,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -29835,7 +29835,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -29861,7 +29861,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -29887,7 +29887,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -29913,7 +29913,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -29939,7 +29939,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -29965,7 +29965,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -29991,7 +29991,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -30017,7 +30017,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -30043,7 +30043,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -30069,7 +30069,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -30095,7 +30095,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -30121,7 +30121,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -30147,7 +30147,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -30173,7 +30173,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -30199,7 +30199,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -30225,7 +30225,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -30251,7 +30251,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -30277,7 +30277,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -30303,7 +30303,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -30329,7 +30329,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -30355,7 +30355,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -30381,7 +30381,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -30407,7 +30407,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -30513,7 +30513,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -30539,7 +30539,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -30615,7 +30615,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -30641,7 +30641,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -30717,7 +30717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -30743,7 +30743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -30819,7 +30819,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -30845,7 +30845,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -30921,7 +30921,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -30947,7 +30947,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -31023,7 +31023,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31049,7 +31049,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -31125,7 +31125,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -31151,7 +31151,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -31227,7 +31227,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -31253,7 +31253,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -31329,7 +31329,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -31355,7 +31355,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -31431,7 +31431,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -31457,7 +31457,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -31533,7 +31533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -31559,7 +31559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -31635,7 +31635,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -31661,7 +31661,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -31737,7 +31737,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -31763,7 +31763,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -31839,7 +31839,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -31865,7 +31865,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -31941,7 +31941,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -31967,7 +31967,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -32043,7 +32043,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -32069,7 +32069,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -32145,7 +32145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -32171,7 +32171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -32247,7 +32247,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -32273,7 +32273,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -32349,7 +32349,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -32375,7 +32375,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -32451,7 +32451,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -32477,7 +32477,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -32553,7 +32553,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -32579,7 +32579,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -32655,7 +32655,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -32681,7 +32681,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -32757,7 +32757,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -32783,7 +32783,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -32859,7 +32859,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -32885,7 +32885,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -32961,7 +32961,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -32987,7 +32987,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -33063,7 +33063,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -33089,7 +33089,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -33165,7 +33165,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -33191,7 +33191,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -33267,7 +33267,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -33293,7 +33293,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -33369,7 +33369,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -33395,7 +33395,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -33471,7 +33471,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -33497,7 +33497,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -33573,7 +33573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -33599,7 +33599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -33675,7 +33675,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33701,7 +33701,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -33777,7 +33777,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -33803,7 +33803,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -33879,7 +33879,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -33905,7 +33905,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -33981,7 +33981,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -34007,7 +34007,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -34083,7 +34083,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -34109,7 +34109,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -34185,7 +34185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -34211,7 +34211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -34287,7 +34287,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -34313,7 +34313,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -34389,7 +34389,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -34415,7 +34415,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -34491,7 +34491,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -34517,7 +34517,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -34593,7 +34593,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -34619,7 +34619,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -34695,7 +34695,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -34721,7 +34721,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -34797,7 +34797,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -34823,7 +34823,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -34899,7 +34899,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -34925,7 +34925,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -35001,7 +35001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -35027,7 +35027,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -35103,7 +35103,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -35129,7 +35129,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -35205,7 +35205,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -35231,7 +35231,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -35307,7 +35307,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -35333,7 +35333,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -35409,7 +35409,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -35435,7 +35435,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -35511,7 +35511,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -35537,7 +35537,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -35613,7 +35613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -35639,7 +35639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -35715,7 +35715,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35741,7 +35741,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -35817,7 +35817,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -35843,7 +35843,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -35919,7 +35919,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -35945,7 +35945,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -36021,7 +36021,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -36047,7 +36047,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -36123,7 +36123,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -36149,7 +36149,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -36225,7 +36225,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -36251,7 +36251,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -36327,7 +36327,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -36353,7 +36353,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -36429,7 +36429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -36455,7 +36455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -36531,7 +36531,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -36557,7 +36557,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -36633,7 +36633,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -36659,7 +36659,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -36735,7 +36735,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -36761,7 +36761,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -36837,7 +36837,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -36863,7 +36863,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -36939,7 +36939,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -36965,7 +36965,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -37041,7 +37041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -37067,7 +37067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -37143,7 +37143,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -37169,7 +37169,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -37245,7 +37245,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -37271,7 +37271,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -37347,7 +37347,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -37373,7 +37373,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -37449,7 +37449,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -37475,7 +37475,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -37551,7 +37551,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -37577,7 +37577,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -37653,7 +37653,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -37679,7 +37679,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -37755,7 +37755,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -37781,7 +37781,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -37857,7 +37857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -37883,7 +37883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -37959,7 +37959,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -37985,7 +37985,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -38061,7 +38061,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -38087,7 +38087,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -38163,7 +38163,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -38189,7 +38189,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -38265,7 +38265,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -38291,7 +38291,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -38367,7 +38367,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -38393,7 +38393,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -38469,7 +38469,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38495,7 +38495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -38571,7 +38571,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -38597,7 +38597,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -38673,7 +38673,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -38699,7 +38699,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -38775,7 +38775,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -38801,7 +38801,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -38877,7 +38877,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -38903,7 +38903,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -38979,7 +38979,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -39005,7 +39005,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -39081,7 +39081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -39107,7 +39107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -39183,7 +39183,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -39209,7 +39209,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -39285,7 +39285,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -39311,7 +39311,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -39387,7 +39387,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -39413,7 +39413,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -39489,7 +39489,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -39515,7 +39515,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -39591,7 +39591,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -39617,7 +39617,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -39693,7 +39693,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -39719,7 +39719,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -39795,7 +39795,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -39821,7 +39821,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -39897,7 +39897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -39923,7 +39923,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -39999,7 +39999,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40025,7 +40025,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40101,7 +40101,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -40127,7 +40127,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -40233,7 +40233,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -40259,7 +40259,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -40285,7 +40285,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -40311,7 +40311,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -40337,7 +40337,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -40363,7 +40363,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -40389,7 +40389,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -40415,7 +40415,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -40441,7 +40441,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -40467,7 +40467,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -40493,7 +40493,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -40519,7 +40519,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -40545,7 +40545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -40571,7 +40571,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -40597,7 +40597,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -40623,7 +40623,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -40649,7 +40649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40675,7 +40675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -40701,7 +40701,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -40727,7 +40727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -40753,7 +40753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -40779,7 +40779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -40805,7 +40805,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -40831,7 +40831,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -40857,7 +40857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -40883,7 +40883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -40909,7 +40909,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -40935,7 +40935,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -40961,7 +40961,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -40987,7 +40987,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -41013,7 +41013,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -41039,7 +41039,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -41065,7 +41065,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -41091,7 +41091,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -41117,7 +41117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -41143,7 +41143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -41169,7 +41169,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -41195,7 +41195,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -41221,7 +41221,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -41247,7 +41247,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -41273,7 +41273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -41299,7 +41299,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -41325,7 +41325,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -41351,7 +41351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -41377,7 +41377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -41403,7 +41403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -41429,7 +41429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -41455,7 +41455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -41481,7 +41481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -41507,7 +41507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -41533,7 +41533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41559,7 +41559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -41585,7 +41585,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -41611,7 +41611,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -41637,7 +41637,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -41663,7 +41663,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -41689,7 +41689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -41715,7 +41715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -41741,7 +41741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -41767,7 +41767,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -41793,7 +41793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -41819,7 +41819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -41845,7 +41845,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -41871,7 +41871,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -41897,7 +41897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -41923,7 +41923,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -41949,7 +41949,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -41975,7 +41975,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -42001,7 +42001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -42027,7 +42027,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -42053,7 +42053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -42079,7 +42079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -42105,7 +42105,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -42131,7 +42131,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -42157,7 +42157,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -42183,7 +42183,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -42209,7 +42209,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -42235,7 +42235,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -42261,7 +42261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -42287,7 +42287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -42313,7 +42313,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -42339,7 +42339,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -42365,7 +42365,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -42391,7 +42391,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -42417,7 +42417,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -42443,7 +42443,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -42469,7 +42469,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -42495,7 +42495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -42521,7 +42521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -42547,7 +42547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -42573,7 +42573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -42599,7 +42599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -42625,7 +42625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -42651,7 +42651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -42677,7 +42677,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -42703,7 +42703,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -42729,7 +42729,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -42755,7 +42755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -42781,7 +42781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -42807,7 +42807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -42833,7 +42833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -42859,7 +42859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -42885,7 +42885,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -42911,7 +42911,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -42937,7 +42937,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -42963,7 +42963,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -42989,7 +42989,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -43015,7 +43015,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -43041,7 +43041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -43067,7 +43067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -43093,7 +43093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -43119,7 +43119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -43145,7 +43145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -43171,7 +43171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -43197,7 +43197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -43223,7 +43223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -43249,7 +43249,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -43275,7 +43275,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -43301,7 +43301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -43327,7 +43327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -43353,7 +43353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -43379,7 +43379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -43405,7 +43405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43431,7 +43431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -43457,7 +43457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -43483,7 +43483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -43509,7 +43509,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -43535,7 +43535,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -43561,7 +43561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -43587,7 +43587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -43613,7 +43613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -43639,7 +43639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -43665,7 +43665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -43691,7 +43691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -43717,7 +43717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -43743,7 +43743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -43769,7 +43769,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -43795,7 +43795,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -43821,7 +43821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -43847,7 +43847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -43873,7 +43873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -43899,7 +43899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -43925,7 +43925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -43951,7 +43951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -43977,7 +43977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -44003,7 +44003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -44029,7 +44029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -44055,7 +44055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -44081,7 +44081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -44107,7 +44107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -44133,7 +44133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -44159,7 +44159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -44185,7 +44185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -44211,7 +44211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -44237,7 +44237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -44263,7 +44263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -44289,7 +44289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44315,7 +44315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -44341,7 +44341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -44367,7 +44367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -44393,7 +44393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -44419,7 +44419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -44445,7 +44445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -44471,7 +44471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -44497,7 +44497,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -44523,7 +44523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -44549,7 +44549,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -44575,7 +44575,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -44601,7 +44601,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -44627,7 +44627,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -44653,7 +44653,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -44679,7 +44679,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -44705,7 +44705,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -44731,7 +44731,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -44757,7 +44757,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -44783,7 +44783,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -44809,7 +44809,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -44835,7 +44835,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -44861,7 +44861,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -44887,7 +44887,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -44913,7 +44913,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -44939,7 +44939,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -44965,7 +44965,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -44991,7 +44991,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -45017,7 +45017,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -45043,7 +45043,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -45069,7 +45069,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45095,7 +45095,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -45121,7 +45121,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -45147,7 +45147,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -45253,7 +45253,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -45279,7 +45279,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -45355,7 +45355,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -45381,7 +45381,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -45457,7 +45457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -45483,7 +45483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -45559,7 +45559,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -45585,7 +45585,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -45661,7 +45661,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -45687,7 +45687,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -45763,7 +45763,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -45789,7 +45789,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -45865,7 +45865,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -45891,7 +45891,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -45967,7 +45967,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -45993,7 +45993,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -46069,7 +46069,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46095,7 +46095,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -46171,7 +46171,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -46197,7 +46197,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -46273,7 +46273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -46299,7 +46299,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -46375,7 +46375,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -46401,7 +46401,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -46477,7 +46477,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -46503,7 +46503,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -46579,7 +46579,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -46605,7 +46605,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -46681,7 +46681,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -46707,7 +46707,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -46783,7 +46783,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -46809,7 +46809,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -46885,7 +46885,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -46911,7 +46911,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -46987,7 +46987,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -47013,7 +47013,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -47089,7 +47089,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -47115,7 +47115,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -47191,7 +47191,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -47217,7 +47217,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -47293,7 +47293,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -47319,7 +47319,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -47395,7 +47395,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -47421,7 +47421,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -47497,7 +47497,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47523,7 +47523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -47599,7 +47599,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -47625,7 +47625,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -47701,7 +47701,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -47727,7 +47727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -47803,7 +47803,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47829,7 +47829,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -47905,7 +47905,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -47931,7 +47931,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -48007,7 +48007,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -48033,7 +48033,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -48109,7 +48109,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -48135,7 +48135,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -48211,7 +48211,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -48237,7 +48237,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -48313,7 +48313,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -48339,7 +48339,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -48415,7 +48415,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -48441,7 +48441,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -48517,7 +48517,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -48543,7 +48543,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -48619,7 +48619,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -48645,7 +48645,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -48721,7 +48721,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -48747,7 +48747,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -48823,7 +48823,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -48849,7 +48849,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -48925,7 +48925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -48951,7 +48951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -49027,7 +49027,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -49053,7 +49053,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -49129,7 +49129,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -49155,7 +49155,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -49231,7 +49231,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -49257,7 +49257,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -49333,7 +49333,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -49359,7 +49359,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -49435,7 +49435,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -49461,7 +49461,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -49537,7 +49537,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -49563,7 +49563,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -49639,7 +49639,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -49665,7 +49665,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -49741,7 +49741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -49767,7 +49767,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -49843,7 +49843,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -49869,7 +49869,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -49945,7 +49945,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -49971,7 +49971,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -50047,7 +50047,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -50073,7 +50073,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -50149,7 +50149,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -50175,7 +50175,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -50251,7 +50251,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -50277,7 +50277,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -50353,7 +50353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -50379,7 +50379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -50455,7 +50455,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -50481,7 +50481,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -50557,7 +50557,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -50583,7 +50583,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -50659,7 +50659,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -50685,7 +50685,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -50761,7 +50761,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -50787,7 +50787,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -50863,7 +50863,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -50889,7 +50889,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -50965,7 +50965,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -50991,7 +50991,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -51067,7 +51067,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -51093,7 +51093,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -51169,7 +51169,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -51195,7 +51195,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -51271,7 +51271,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -51297,7 +51297,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -51373,7 +51373,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -51399,7 +51399,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -51475,7 +51475,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51501,7 +51501,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -51577,7 +51577,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -51603,7 +51603,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -51679,7 +51679,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -51705,7 +51705,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -51781,7 +51781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -51807,7 +51807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -51883,7 +51883,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -51909,7 +51909,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -51985,7 +51985,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -52011,7 +52011,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -52087,7 +52087,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -52113,7 +52113,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -52189,7 +52189,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -52215,7 +52215,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -52291,7 +52291,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -52317,7 +52317,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -52393,7 +52393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -52419,7 +52419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -52495,7 +52495,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -52521,7 +52521,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -52597,7 +52597,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -52623,7 +52623,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -52699,7 +52699,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -52725,7 +52725,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -52801,7 +52801,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -52827,7 +52827,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -52903,7 +52903,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -52929,7 +52929,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -53005,7 +53005,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -53031,7 +53031,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -53107,7 +53107,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -53133,7 +53133,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -53209,7 +53209,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53235,7 +53235,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -53311,7 +53311,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -53337,7 +53337,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -53413,7 +53413,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -53439,7 +53439,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -53515,7 +53515,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -53541,7 +53541,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -53617,7 +53617,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -53643,7 +53643,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -53719,7 +53719,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -53745,7 +53745,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -53821,7 +53821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -53847,7 +53847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -53923,7 +53923,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -53949,7 +53949,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -54025,7 +54025,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -54051,7 +54051,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -54127,7 +54127,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -54153,7 +54153,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -54229,7 +54229,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -54255,7 +54255,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -54331,7 +54331,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -54357,7 +54357,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -54433,7 +54433,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -54459,7 +54459,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -54535,7 +54535,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -54561,7 +54561,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -54637,7 +54637,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -54663,7 +54663,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -54739,7 +54739,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -54765,7 +54765,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -54841,7 +54841,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -54867,7 +54867,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -54973,7 +54973,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -54999,7 +54999,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -55025,7 +55025,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -55051,7 +55051,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -55077,7 +55077,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -55103,7 +55103,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -55129,7 +55129,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -55155,7 +55155,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -55181,7 +55181,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -55207,7 +55207,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -55233,7 +55233,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -55259,7 +55259,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -55285,7 +55285,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -55311,7 +55311,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -55337,7 +55337,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -55363,7 +55363,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -55389,7 +55389,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -55415,7 +55415,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -55441,7 +55441,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -55467,7 +55467,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -55493,7 +55493,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -55519,7 +55519,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -55545,7 +55545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -55571,7 +55571,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -55597,7 +55597,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -55623,7 +55623,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -55649,7 +55649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -55675,7 +55675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -55701,7 +55701,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -55727,7 +55727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -55753,7 +55753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -55779,7 +55779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -55805,7 +55805,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -55831,7 +55831,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -55857,7 +55857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -55883,7 +55883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -55909,7 +55909,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -55935,7 +55935,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -55961,7 +55961,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -55987,7 +55987,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -56013,7 +56013,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -56039,7 +56039,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -56065,7 +56065,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -56091,7 +56091,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -56117,7 +56117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -56143,7 +56143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -56169,7 +56169,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -56195,7 +56195,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -56221,7 +56221,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -56247,7 +56247,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -56273,7 +56273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56299,7 +56299,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -56325,7 +56325,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -56351,7 +56351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -56377,7 +56377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -56403,7 +56403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -56429,7 +56429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -56455,7 +56455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -56481,7 +56481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -56507,7 +56507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -56533,7 +56533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -56559,7 +56559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -56585,7 +56585,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -56611,7 +56611,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -56637,7 +56637,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -56663,7 +56663,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -56689,7 +56689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -56715,7 +56715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -56741,7 +56741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -56767,7 +56767,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -56793,7 +56793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -56819,7 +56819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -56845,7 +56845,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -56871,7 +56871,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -56897,7 +56897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -56923,7 +56923,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -56949,7 +56949,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -56975,7 +56975,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -57001,7 +57001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -57027,7 +57027,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -57053,7 +57053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -57079,7 +57079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -57105,7 +57105,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -57131,7 +57131,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -57157,7 +57157,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -57183,7 +57183,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -57209,7 +57209,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -57235,7 +57235,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -57261,7 +57261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -57287,7 +57287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -57313,7 +57313,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -57339,7 +57339,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -57365,7 +57365,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -57391,7 +57391,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -57417,7 +57417,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -57443,7 +57443,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -57469,7 +57469,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -57495,7 +57495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -57521,7 +57521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -57547,7 +57547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -57573,7 +57573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -57599,7 +57599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -57625,7 +57625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -57651,7 +57651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -57677,7 +57677,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -57703,7 +57703,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -57729,7 +57729,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -57755,7 +57755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -57781,7 +57781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -57807,7 +57807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -57833,7 +57833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -57859,7 +57859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -57885,7 +57885,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -57911,7 +57911,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -57937,7 +57937,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -57963,7 +57963,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -57989,7 +57989,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -58015,7 +58015,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -58041,7 +58041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -58067,7 +58067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -58093,7 +58093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -58119,7 +58119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -58145,7 +58145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58171,7 +58171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -58197,7 +58197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -58223,7 +58223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -58249,7 +58249,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -58275,7 +58275,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -58301,7 +58301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -58327,7 +58327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -58353,7 +58353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -58379,7 +58379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -58405,7 +58405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -58431,7 +58431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -58457,7 +58457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -58483,7 +58483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -58509,7 +58509,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -58535,7 +58535,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -58561,7 +58561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -58587,7 +58587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -58613,7 +58613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -58639,7 +58639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -58665,7 +58665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -58691,7 +58691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -58717,7 +58717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -58743,7 +58743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -58769,7 +58769,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -58795,7 +58795,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -58821,7 +58821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -58847,7 +58847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -58873,7 +58873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -58899,7 +58899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -58925,7 +58925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -58951,7 +58951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -58977,7 +58977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -59003,7 +59003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -59029,7 +59029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59055,7 +59055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59081,7 +59081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -59107,7 +59107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -59133,7 +59133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -59159,7 +59159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -59185,7 +59185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -59211,7 +59211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -59237,7 +59237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -59263,7 +59263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -59289,7 +59289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -59315,7 +59315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -59341,7 +59341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -59367,7 +59367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -59393,7 +59393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -59419,7 +59419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -59445,7 +59445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -59471,7 +59471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -59497,7 +59497,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -59523,7 +59523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -59549,7 +59549,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -59575,7 +59575,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -59601,7 +59601,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -59627,7 +59627,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -59653,7 +59653,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -59679,7 +59679,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -59705,7 +59705,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -59731,7 +59731,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -59757,7 +59757,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -59783,7 +59783,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -59809,7 +59809,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59835,7 +59835,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -59861,7 +59861,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -59887,7 +59887,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -59993,7 +59993,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -60019,7 +60019,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -60095,7 +60095,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -60121,7 +60121,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -60197,7 +60197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -60223,7 +60223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -60299,7 +60299,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -60325,7 +60325,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -60401,7 +60401,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -60427,7 +60427,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -60503,7 +60503,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -60529,7 +60529,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -60605,7 +60605,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -60631,7 +60631,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -60707,7 +60707,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -60733,7 +60733,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -60809,7 +60809,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60835,7 +60835,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -60911,7 +60911,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -60937,7 +60937,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -61013,7 +61013,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -61039,7 +61039,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -61115,7 +61115,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -61141,7 +61141,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -61217,7 +61217,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -61243,7 +61243,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -61319,7 +61319,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -61345,7 +61345,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -61421,7 +61421,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -61447,7 +61447,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -61523,7 +61523,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -61549,7 +61549,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -61625,7 +61625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -61651,7 +61651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -61727,7 +61727,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -61753,7 +61753,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -61829,7 +61829,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -61855,7 +61855,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -61931,7 +61931,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -61957,7 +61957,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -62033,7 +62033,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -62059,7 +62059,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -62135,7 +62135,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -62161,7 +62161,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -62237,7 +62237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -62263,7 +62263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -62339,7 +62339,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -62365,7 +62365,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -62441,7 +62441,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -62467,7 +62467,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -62543,7 +62543,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62569,7 +62569,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -62645,7 +62645,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -62671,7 +62671,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -62747,7 +62747,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -62773,7 +62773,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -62849,7 +62849,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -62875,7 +62875,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -62951,7 +62951,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -62977,7 +62977,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -63053,7 +63053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -63079,7 +63079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -63155,7 +63155,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -63181,7 +63181,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -63257,7 +63257,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -63283,7 +63283,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -63359,7 +63359,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -63385,7 +63385,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -63461,7 +63461,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -63487,7 +63487,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -63563,7 +63563,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -63589,7 +63589,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -63665,7 +63665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -63691,7 +63691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -63767,7 +63767,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -63793,7 +63793,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -63869,7 +63869,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -63895,7 +63895,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -63971,7 +63971,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -63997,7 +63997,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -64073,7 +64073,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -64099,7 +64099,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -64175,7 +64175,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -64201,7 +64201,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -64277,7 +64277,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -64303,7 +64303,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -64379,7 +64379,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -64405,7 +64405,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -64481,7 +64481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -64507,7 +64507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -64583,7 +64583,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -64609,7 +64609,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -64685,7 +64685,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -64711,7 +64711,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -64787,7 +64787,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -64813,7 +64813,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -64889,7 +64889,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -64915,7 +64915,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -64991,7 +64991,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -65017,7 +65017,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -65093,7 +65093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -65119,7 +65119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -65195,7 +65195,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -65221,7 +65221,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -65297,7 +65297,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -65323,7 +65323,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -65399,7 +65399,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -65425,7 +65425,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -65501,7 +65501,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -65527,7 +65527,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -65603,7 +65603,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -65629,7 +65629,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -65705,7 +65705,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -65731,7 +65731,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -65807,7 +65807,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -65833,7 +65833,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -65909,7 +65909,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -65935,7 +65935,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -66011,7 +66011,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -66037,7 +66037,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -66113,7 +66113,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -66139,7 +66139,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -66215,7 +66215,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66241,7 +66241,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -66317,7 +66317,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -66343,7 +66343,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -66419,7 +66419,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -66445,7 +66445,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -66521,7 +66521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -66547,7 +66547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -66623,7 +66623,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -66649,7 +66649,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -66725,7 +66725,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -66751,7 +66751,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -66827,7 +66827,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -66853,7 +66853,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -66929,7 +66929,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -66955,7 +66955,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -67031,7 +67031,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -67057,7 +67057,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -67133,7 +67133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -67159,7 +67159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -67235,7 +67235,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -67261,7 +67261,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -67337,7 +67337,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -67363,7 +67363,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -67439,7 +67439,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -67465,7 +67465,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -67541,7 +67541,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -67567,7 +67567,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -67643,7 +67643,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -67669,7 +67669,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -67745,7 +67745,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -67771,7 +67771,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -67847,7 +67847,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -67873,7 +67873,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -67949,7 +67949,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -67975,7 +67975,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -68051,7 +68051,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -68077,7 +68077,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -68153,7 +68153,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -68179,7 +68179,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -68255,7 +68255,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -68281,7 +68281,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -68357,7 +68357,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -68383,7 +68383,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -68459,7 +68459,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -68485,7 +68485,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -68561,7 +68561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -68587,7 +68587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -68663,7 +68663,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -68689,7 +68689,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -68765,7 +68765,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -68791,7 +68791,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -68867,7 +68867,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -68893,7 +68893,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -68969,7 +68969,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -68995,7 +68995,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -69071,7 +69071,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -69097,7 +69097,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -69173,7 +69173,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -69199,7 +69199,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -69275,7 +69275,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -69301,7 +69301,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -69377,7 +69377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -69403,7 +69403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -69479,7 +69479,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69505,7 +69505,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -69581,7 +69581,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -69607,7 +69607,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -69713,7 +69713,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -69739,7 +69739,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -69765,7 +69765,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -69791,7 +69791,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -69817,7 +69817,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -69843,7 +69843,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -69869,7 +69869,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -69895,7 +69895,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -69921,7 +69921,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -69947,7 +69947,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -69973,7 +69973,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -69999,7 +69999,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -70025,7 +70025,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -70051,7 +70051,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -70077,7 +70077,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -70103,7 +70103,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -70129,7 +70129,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70155,7 +70155,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -70181,7 +70181,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -70207,7 +70207,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -70233,7 +70233,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -70259,7 +70259,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -70285,7 +70285,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -70311,7 +70311,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -70337,7 +70337,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -70363,7 +70363,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -70389,7 +70389,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -70415,7 +70415,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -70441,7 +70441,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -70467,7 +70467,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -70493,7 +70493,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -70519,7 +70519,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -70545,7 +70545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -70571,7 +70571,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -70597,7 +70597,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -70623,7 +70623,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -70649,7 +70649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -70675,7 +70675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -70701,7 +70701,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -70727,7 +70727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -70753,7 +70753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -70779,7 +70779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -70805,7 +70805,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -70831,7 +70831,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -70857,7 +70857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -70883,7 +70883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -70909,7 +70909,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -70935,7 +70935,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -70961,7 +70961,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -70987,7 +70987,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -71013,7 +71013,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71039,7 +71039,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -71065,7 +71065,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -71091,7 +71091,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -71117,7 +71117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -71143,7 +71143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -71169,7 +71169,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -71195,7 +71195,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -71221,7 +71221,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -71247,7 +71247,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -71273,7 +71273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -71299,7 +71299,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -71325,7 +71325,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -71351,7 +71351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -71377,7 +71377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -71403,7 +71403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -71429,7 +71429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -71455,7 +71455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -71481,7 +71481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -71507,7 +71507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -71533,7 +71533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -71559,7 +71559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -71585,7 +71585,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -71611,7 +71611,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -71637,7 +71637,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -71663,7 +71663,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -71689,7 +71689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -71715,7 +71715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -71741,7 +71741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -71767,7 +71767,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -71793,7 +71793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -71819,7 +71819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -71845,7 +71845,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -71871,7 +71871,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -71897,7 +71897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -71923,7 +71923,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -71949,7 +71949,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -71975,7 +71975,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -72001,7 +72001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -72027,7 +72027,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -72053,7 +72053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -72079,7 +72079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -72105,7 +72105,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -72131,7 +72131,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -72157,7 +72157,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -72183,7 +72183,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -72209,7 +72209,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -72235,7 +72235,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -72261,7 +72261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -72287,7 +72287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -72313,7 +72313,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -72339,7 +72339,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -72365,7 +72365,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -72391,7 +72391,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -72417,7 +72417,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -72443,7 +72443,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -72469,7 +72469,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -72495,7 +72495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -72521,7 +72521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -72547,7 +72547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -72573,7 +72573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -72599,7 +72599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -72625,7 +72625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -72651,7 +72651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -72677,7 +72677,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -72703,7 +72703,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -72729,7 +72729,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -72755,7 +72755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -72781,7 +72781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -72807,7 +72807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -72833,7 +72833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -72859,7 +72859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -72885,7 +72885,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72911,7 +72911,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -72937,7 +72937,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -72963,7 +72963,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -72989,7 +72989,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -73015,7 +73015,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -73041,7 +73041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -73067,7 +73067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -73093,7 +73093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -73119,7 +73119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -73145,7 +73145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -73171,7 +73171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -73197,7 +73197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -73223,7 +73223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -73249,7 +73249,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -73275,7 +73275,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -73301,7 +73301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -73327,7 +73327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -73353,7 +73353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -73379,7 +73379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -73405,7 +73405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -73431,7 +73431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -73457,7 +73457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -73483,7 +73483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -73509,7 +73509,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -73535,7 +73535,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -73561,7 +73561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -73587,7 +73587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -73613,7 +73613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -73639,7 +73639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -73665,7 +73665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -73691,7 +73691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -73717,7 +73717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -73743,7 +73743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -73769,7 +73769,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -73795,7 +73795,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -73821,7 +73821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -73847,7 +73847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -73873,7 +73873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -73899,7 +73899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -73925,7 +73925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -73951,7 +73951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -73977,7 +73977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -74003,7 +74003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -74029,7 +74029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -74055,7 +74055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -74081,7 +74081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74107,7 +74107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -74133,7 +74133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -74159,7 +74159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -74185,7 +74185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -74211,7 +74211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -74237,7 +74237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -74263,7 +74263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -74289,7 +74289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -74315,7 +74315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -74341,7 +74341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -74367,7 +74367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -74393,7 +74393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -74419,7 +74419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -74445,7 +74445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -74471,7 +74471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -74497,7 +74497,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -74523,7 +74523,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -74549,7 +74549,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74575,7 +74575,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -74601,7 +74601,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -74627,7 +74627,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -74733,7 +74733,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -74759,7 +74759,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -74835,7 +74835,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -74861,7 +74861,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -74937,7 +74937,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -74963,7 +74963,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -75039,7 +75039,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -75065,7 +75065,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -75141,7 +75141,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -75167,7 +75167,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -75243,7 +75243,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -75269,7 +75269,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -75345,7 +75345,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -75371,7 +75371,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -75447,7 +75447,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -75473,7 +75473,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -75549,7 +75549,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75575,7 +75575,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -75651,7 +75651,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -75677,7 +75677,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -75753,7 +75753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -75779,7 +75779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -75855,7 +75855,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -75881,7 +75881,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -75957,7 +75957,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -75983,7 +75983,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -76059,7 +76059,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -76085,7 +76085,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -76161,7 +76161,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -76187,7 +76187,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -76263,7 +76263,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -76289,7 +76289,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -76365,7 +76365,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -76391,7 +76391,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -76467,7 +76467,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -76493,7 +76493,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -76569,7 +76569,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -76595,7 +76595,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -76671,7 +76671,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -76697,7 +76697,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -76773,7 +76773,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -76799,7 +76799,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -76875,7 +76875,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -76901,7 +76901,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -76977,7 +76977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -77003,7 +77003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -77079,7 +77079,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -77105,7 +77105,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -77181,7 +77181,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -77207,7 +77207,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -77283,7 +77283,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77309,7 +77309,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -77385,7 +77385,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -77411,7 +77411,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -77487,7 +77487,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -77513,7 +77513,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -77589,7 +77589,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -77615,7 +77615,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -77691,7 +77691,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -77717,7 +77717,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -77793,7 +77793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -77819,7 +77819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -77895,7 +77895,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -77921,7 +77921,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -77997,7 +77997,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -78023,7 +78023,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -78099,7 +78099,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -78125,7 +78125,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -78201,7 +78201,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -78227,7 +78227,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -78303,7 +78303,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -78329,7 +78329,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -78405,7 +78405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -78431,7 +78431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -78507,7 +78507,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -78533,7 +78533,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -78609,7 +78609,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -78635,7 +78635,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -78711,7 +78711,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -78737,7 +78737,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -78813,7 +78813,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -78839,7 +78839,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -78915,7 +78915,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -78941,7 +78941,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -79017,7 +79017,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -79043,7 +79043,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -79119,7 +79119,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -79145,7 +79145,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -79221,7 +79221,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -79247,7 +79247,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -79323,7 +79323,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -79349,7 +79349,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -79425,7 +79425,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -79451,7 +79451,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -79527,7 +79527,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -79553,7 +79553,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -79629,7 +79629,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -79655,7 +79655,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -79731,7 +79731,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -79757,7 +79757,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -79833,7 +79833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -79859,7 +79859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -79935,7 +79935,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -79961,7 +79961,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -80037,7 +80037,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -80063,7 +80063,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -80139,7 +80139,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -80165,7 +80165,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -80241,7 +80241,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -80267,7 +80267,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -80343,7 +80343,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -80369,7 +80369,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -80445,7 +80445,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -80471,7 +80471,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -80547,7 +80547,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -80573,7 +80573,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -80649,7 +80649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -80675,7 +80675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -80751,7 +80751,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -80777,7 +80777,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -80853,7 +80853,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -80879,7 +80879,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -80955,7 +80955,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -80981,7 +80981,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -81057,7 +81057,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -81083,7 +81083,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -81159,7 +81159,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -81185,7 +81185,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -81261,7 +81261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -81287,7 +81287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -81363,7 +81363,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -81389,7 +81389,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -81465,7 +81465,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -81491,7 +81491,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -81567,7 +81567,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -81593,7 +81593,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -81669,7 +81669,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -81695,7 +81695,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -81771,7 +81771,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -81797,7 +81797,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -81873,7 +81873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -81899,7 +81899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -81975,7 +81975,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -82001,7 +82001,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -82077,7 +82077,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -82103,7 +82103,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -82179,7 +82179,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -82205,7 +82205,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -82281,7 +82281,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -82307,7 +82307,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -82383,7 +82383,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -82409,7 +82409,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -82485,7 +82485,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -82511,7 +82511,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -82587,7 +82587,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -82613,7 +82613,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -82689,7 +82689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82715,7 +82715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -82791,7 +82791,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -82817,7 +82817,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -82893,7 +82893,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -82919,7 +82919,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -82995,7 +82995,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -83021,7 +83021,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -83097,7 +83097,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -83123,7 +83123,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -83199,7 +83199,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -83225,7 +83225,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -83301,7 +83301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -83327,7 +83327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -83403,7 +83403,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -83429,7 +83429,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -83505,7 +83505,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -83531,7 +83531,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -83607,7 +83607,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -83633,7 +83633,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -83709,7 +83709,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -83735,7 +83735,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -83811,7 +83811,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -83837,7 +83837,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -83913,7 +83913,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -83939,7 +83939,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -84015,7 +84015,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -84041,7 +84041,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -84117,7 +84117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -84143,7 +84143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -84219,7 +84219,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84245,7 +84245,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84321,7 +84321,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -84347,7 +84347,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -84453,7 +84453,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -84479,7 +84479,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -84505,7 +84505,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -84531,7 +84531,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -84557,7 +84557,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -84583,7 +84583,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -84609,7 +84609,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -84635,7 +84635,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -84661,7 +84661,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -84687,7 +84687,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -84713,7 +84713,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -84739,7 +84739,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -84765,7 +84765,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -84791,7 +84791,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -84817,7 +84817,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -84843,7 +84843,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -84869,7 +84869,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84895,7 +84895,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -84921,7 +84921,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -84947,7 +84947,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -84973,7 +84973,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -84999,7 +84999,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -85025,7 +85025,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -85051,7 +85051,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -85077,7 +85077,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -85103,7 +85103,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -85129,7 +85129,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -85155,7 +85155,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -85181,7 +85181,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -85207,7 +85207,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -85233,7 +85233,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -85259,7 +85259,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -85285,7 +85285,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -85311,7 +85311,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -85337,7 +85337,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -85363,7 +85363,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -85389,7 +85389,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -85415,7 +85415,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -85441,7 +85441,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -85467,7 +85467,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -85493,7 +85493,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -85519,7 +85519,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -85545,7 +85545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -85571,7 +85571,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -85597,7 +85597,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -85623,7 +85623,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -85649,7 +85649,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -85675,7 +85675,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -85701,7 +85701,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -85727,7 +85727,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -85753,7 +85753,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85779,7 +85779,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -85805,7 +85805,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -85831,7 +85831,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -85857,7 +85857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -85883,7 +85883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -85909,7 +85909,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -85935,7 +85935,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -85961,7 +85961,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -85987,7 +85987,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -86013,7 +86013,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -86039,7 +86039,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -86065,7 +86065,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -86091,7 +86091,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -86117,7 +86117,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -86143,7 +86143,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -86169,7 +86169,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -86195,7 +86195,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -86221,7 +86221,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -86247,7 +86247,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -86273,7 +86273,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -86299,7 +86299,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -86325,7 +86325,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -86351,7 +86351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -86377,7 +86377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -86403,7 +86403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -86429,7 +86429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -86455,7 +86455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -86481,7 +86481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -86507,7 +86507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -86533,7 +86533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -86559,7 +86559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -86585,7 +86585,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -86611,7 +86611,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -86637,7 +86637,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -86663,7 +86663,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -86689,7 +86689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -86715,7 +86715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -86741,7 +86741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -86767,7 +86767,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -86793,7 +86793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -86819,7 +86819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -86845,7 +86845,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -86871,7 +86871,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -86897,7 +86897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -86923,7 +86923,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -86949,7 +86949,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -86975,7 +86975,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -87001,7 +87001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -87027,7 +87027,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -87053,7 +87053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -87079,7 +87079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -87105,7 +87105,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -87131,7 +87131,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -87157,7 +87157,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -87183,7 +87183,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -87209,7 +87209,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -87235,7 +87235,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -87261,7 +87261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -87287,7 +87287,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -87313,7 +87313,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -87339,7 +87339,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -87365,7 +87365,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -87391,7 +87391,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -87417,7 +87417,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -87443,7 +87443,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -87469,7 +87469,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -87495,7 +87495,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -87521,7 +87521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -87547,7 +87547,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -87573,7 +87573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -87599,7 +87599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -87625,7 +87625,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87651,7 +87651,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -87677,7 +87677,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -87703,7 +87703,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -87729,7 +87729,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -87755,7 +87755,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -87781,7 +87781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -87807,7 +87807,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -87833,7 +87833,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -87859,7 +87859,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -87885,7 +87885,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -87911,7 +87911,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -87937,7 +87937,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -87963,7 +87963,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -87989,7 +87989,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -88015,7 +88015,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -88041,7 +88041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -88067,7 +88067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -88093,7 +88093,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -88119,7 +88119,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -88145,7 +88145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -88171,7 +88171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -88197,7 +88197,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -88223,7 +88223,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -88249,7 +88249,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -88275,7 +88275,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -88301,7 +88301,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -88327,7 +88327,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -88353,7 +88353,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -88379,7 +88379,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -88405,7 +88405,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -88431,7 +88431,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -88457,7 +88457,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -88483,7 +88483,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -88509,7 +88509,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88535,7 +88535,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -88561,7 +88561,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -88587,7 +88587,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -88613,7 +88613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -88639,7 +88639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -88665,7 +88665,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -88691,7 +88691,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -88717,7 +88717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -88743,7 +88743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -88769,7 +88769,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -88795,7 +88795,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -88821,7 +88821,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -88847,7 +88847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -88873,7 +88873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -88899,7 +88899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -88925,7 +88925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -88951,7 +88951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -88977,7 +88977,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -89003,7 +89003,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -89029,7 +89029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -89055,7 +89055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -89081,7 +89081,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -89107,7 +89107,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -89133,7 +89133,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -89159,7 +89159,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -89185,7 +89185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -89211,7 +89211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -89237,7 +89237,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -89263,7 +89263,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -89289,7 +89289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89315,7 +89315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -89341,7 +89341,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -89367,7 +89367,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -89473,7 +89473,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -89499,7 +89499,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 5.0, "wellLocation": { "offset": { @@ -89575,7 +89575,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -89601,7 +89601,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 10.0, "wellLocation": { "offset": { @@ -89677,7 +89677,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -89703,7 +89703,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -89779,7 +89779,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -89805,7 +89805,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -89881,7 +89881,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -89907,7 +89907,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -89983,7 +89983,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -90009,7 +90009,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -90085,7 +90085,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -90111,7 +90111,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 100.0, "wellLocation": { "offset": { @@ -90187,7 +90187,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -90213,7 +90213,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -90289,7 +90289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90315,7 +90315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -90391,7 +90391,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -90417,7 +90417,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -90493,7 +90493,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -90519,7 +90519,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 92.0, "wellLocation": { "offset": { @@ -90595,7 +90595,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -90621,7 +90621,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 88.0, "wellLocation": { "offset": { @@ -90697,7 +90697,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -90723,7 +90723,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -90799,7 +90799,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -90825,7 +90825,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -90901,7 +90901,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -90927,7 +90927,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -91003,7 +91003,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -91029,7 +91029,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 87.0, "wellLocation": { "offset": { @@ -91105,7 +91105,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -91131,7 +91131,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 82.0, "wellLocation": { "offset": { @@ -91207,7 +91207,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -91233,7 +91233,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 36.0, "wellLocation": { "offset": { @@ -91309,7 +91309,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -91335,7 +91335,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 78.0, "wellLocation": { "offset": { @@ -91411,7 +91411,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -91437,7 +91437,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -91513,7 +91513,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -91539,7 +91539,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -91615,7 +91615,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -91641,7 +91641,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 63.0, "wellLocation": { "offset": { @@ -91717,7 +91717,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -91743,7 +91743,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -91819,7 +91819,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -91845,7 +91845,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -91921,7 +91921,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -91947,7 +91947,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -92023,7 +92023,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -92049,7 +92049,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -92125,7 +92125,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -92151,7 +92151,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -92227,7 +92227,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -92253,7 +92253,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -92329,7 +92329,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -92355,7 +92355,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -92431,7 +92431,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -92457,7 +92457,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 52.0, "wellLocation": { "offset": { @@ -92533,7 +92533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -92559,7 +92559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -92635,7 +92635,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -92661,7 +92661,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -92737,7 +92737,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -92763,7 +92763,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 86.0, "wellLocation": { "offset": { @@ -92839,7 +92839,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -92865,7 +92865,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -92941,7 +92941,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -92967,7 +92967,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -93043,7 +93043,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -93069,7 +93069,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 96.0, "wellLocation": { "offset": { @@ -93145,7 +93145,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -93171,7 +93171,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 72.0, "wellLocation": { "offset": { @@ -93247,7 +93247,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -93273,7 +93273,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -93349,7 +93349,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -93375,7 +93375,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -93451,7 +93451,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -93477,7 +93477,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 41.0, "wellLocation": { "offset": { @@ -93553,7 +93553,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -93579,7 +93579,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -93655,7 +93655,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -93681,7 +93681,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -93757,7 +93757,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -93783,7 +93783,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -93859,7 +93859,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -93885,7 +93885,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -93961,7 +93961,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -93987,7 +93987,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 42.0, "wellLocation": { "offset": { @@ -94063,7 +94063,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -94089,7 +94089,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -94165,7 +94165,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -94191,7 +94191,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 48.0, "wellLocation": { "offset": { @@ -94267,7 +94267,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -94293,7 +94293,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 73.0, "wellLocation": { "offset": { @@ -94369,7 +94369,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -94395,7 +94395,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 84.0, "wellLocation": { "offset": { @@ -94471,7 +94471,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -94497,7 +94497,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -94573,7 +94573,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -94599,7 +94599,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 74.0, "wellLocation": { "offset": { @@ -94675,7 +94675,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -94701,7 +94701,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 80.0, "wellLocation": { "offset": { @@ -94777,7 +94777,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -94803,7 +94803,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -94879,7 +94879,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -94905,7 +94905,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -94981,7 +94981,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -95007,7 +95007,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -95083,7 +95083,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -95109,7 +95109,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -95185,7 +95185,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -95211,7 +95211,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 98.0, "wellLocation": { "offset": { @@ -95287,7 +95287,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -95313,7 +95313,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -95389,7 +95389,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -95415,7 +95415,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -95491,7 +95491,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -95517,7 +95517,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -95593,7 +95593,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -95619,7 +95619,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -95695,7 +95695,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95721,7 +95721,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -95797,7 +95797,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -95823,7 +95823,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -95899,7 +95899,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -95925,7 +95925,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 44.0, "wellLocation": { "offset": { @@ -96001,7 +96001,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -96027,7 +96027,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 89.0, "wellLocation": { "offset": { @@ -96103,7 +96103,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -96129,7 +96129,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -96205,7 +96205,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -96231,7 +96231,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 67.0, "wellLocation": { "offset": { @@ -96307,7 +96307,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -96333,7 +96333,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -96409,7 +96409,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -96435,7 +96435,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 79.0, "wellLocation": { "offset": { @@ -96511,7 +96511,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -96537,7 +96537,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -96613,7 +96613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -96639,7 +96639,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 23.0, "wellLocation": { "offset": { @@ -96715,7 +96715,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -96741,7 +96741,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 26.0, "wellLocation": { "offset": { @@ -96817,7 +96817,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -96843,7 +96843,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -96919,7 +96919,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -96945,7 +96945,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -97021,7 +97021,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -97047,7 +97047,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 38.0, "wellLocation": { "offset": { @@ -97123,7 +97123,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -97149,7 +97149,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 99.0, "wellLocation": { "offset": { @@ -97225,7 +97225,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -97251,7 +97251,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 21.0, "wellLocation": { "offset": { @@ -97327,7 +97327,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -97353,7 +97353,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 59.0, "wellLocation": { "offset": { @@ -97429,7 +97429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97455,7 +97455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -97531,7 +97531,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -97557,7 +97557,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -97633,7 +97633,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -97659,7 +97659,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 28.0, "wellLocation": { "offset": { @@ -97735,7 +97735,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -97761,7 +97761,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 51.0, "wellLocation": { "offset": { @@ -97837,7 +97837,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -97863,7 +97863,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 34.0, "wellLocation": { "offset": { @@ -97939,7 +97939,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -97965,7 +97965,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 27.0, "wellLocation": { "offset": { @@ -98041,7 +98041,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -98067,7 +98067,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 60.0, "wellLocation": { "offset": { @@ -98143,7 +98143,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -98169,7 +98169,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 33.0, "wellLocation": { "offset": { @@ -98245,7 +98245,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -98271,7 +98271,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 61.0, "wellLocation": { "offset": { @@ -98347,7 +98347,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -98373,7 +98373,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 69.0, "wellLocation": { "offset": { @@ -98449,7 +98449,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -98475,7 +98475,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 47.0, "wellLocation": { "offset": { @@ -98551,7 +98551,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -98577,7 +98577,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 46.0, "wellLocation": { "offset": { @@ -98653,7 +98653,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -98679,7 +98679,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 93.0, "wellLocation": { "offset": { @@ -98755,7 +98755,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -98781,7 +98781,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 54.0, "wellLocation": { "offset": { @@ -98857,7 +98857,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -98883,7 +98883,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 65.0, "wellLocation": { "offset": { @@ -98959,7 +98959,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -98985,7 +98985,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 58.0, "wellLocation": { "offset": { @@ -99061,7 +99061,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -99087,7 +99087,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 37.0, "wellLocation": { "offset": { @@ -99144,7 +99144,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000SRight_None_2_15_ABR_Simple_Normalize_Long_Right.py", + "name": "Flex_S_v2_15_P1000S_None_SimpleNormalizeLongRight.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0f31fd0836][OT2_P1000SLeft_None_6_1_SimpleTransfer].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0f31fd0836][OT2_P1000SLeft_None_6_1_SimpleTransfer].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json index 044100d1a50..f42737b3020 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0f31fd0836][OT2_P1000SLeft_None_6_1_SimpleTransfer].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c064d0de2c][OT2_S_v6_P1000S_None_SimpleTransfer].json @@ -1825,7 +1825,7 @@ "errors": [], "files": [ { - "name": "OT2_P1000SLeft_None_6_1_SimpleTransfer.json", + "name": "OT2_S_v6_P1000S_None_SimpleTransfer.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[695d29455b][OT2_None_None_TC_2_17_VerifyThermocyclerLoadedSlots].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c195291f84][OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json similarity index 97% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[695d29455b][OT2_None_None_TC_2_17_VerifyThermocyclerLoadedSlots].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c195291f84][OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json index 4b0477f0c6a..f2f2d4153be 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[695d29455b][OT2_None_None_TC_2_17_VerifyThermocyclerLoadedSlots].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c195291f84][OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json @@ -127,7 +127,7 @@ "errors": [], "files": [ { - "name": "OT2_None_None_TC_2_17_VerifyThermocyclerLoadedSlots.py", + "name": "OT2_S_v2_17_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8944a283da][Flex_None_None_TC_2_17_verifyThermocyclerLoadedSlots].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c1c04baffd][Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json similarity index 95% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8944a283da][Flex_None_None_TC_2_17_verifyThermocyclerLoadedSlots].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c1c04baffd][Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json index 0568235766a..a04aaad78f3 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[8944a283da][Flex_None_None_TC_2_17_verifyThermocyclerLoadedSlots].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c1c04baffd][Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json @@ -137,7 +137,7 @@ "errorInfo": { "args": "()", "class": "AssertionError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_None_None_TC_2_17_verifyThermocyclerLoadedSlots.py\", line 13, in run\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots.py\", line 13, in run\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -147,7 +147,7 @@ ], "files": [ { - "name": "Flex_None_None_TC_2_17_verifyThermocyclerLoadedSlots.py", + "name": "Flex_S_v2_17_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[69f47f8bcc][OT2_None_None_TC_2_15_VerifyThermocyclerLoadedSlots].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c3098303ad][OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json similarity index 98% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[69f47f8bcc][OT2_None_None_TC_2_15_VerifyThermocyclerLoadedSlots].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c3098303ad][OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json index b81d62a94d8..3c4cb61561e 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[69f47f8bcc][OT2_None_None_TC_2_15_VerifyThermocyclerLoadedSlots].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c3098303ad][OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json @@ -127,7 +127,7 @@ "errors": [], "files": [ { - "name": "OT2_None_None_TC_2_15_VerifyThermocyclerLoadedSlots.py", + "name": "OT2_S_v2_15_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2a32a763f5][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoModules].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2a32a763f5][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoModules].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json index 7dc9a75b76e..ee20acd85cd 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2a32a763f5][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoModules].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c745e5824a][Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules].json @@ -10629,7 +10629,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashC1", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -10640,7 +10640,7 @@ }, "result": { "position": { - "x": 22.25, + "x": 54.25, "y": 150.0, "z": 40.0 } @@ -10888,7 +10888,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashD1", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -10899,7 +10899,7 @@ }, "result": { "position": { - "x": 22.25, + "x": 54.25, "y": 43.0, "z": 40.0 } @@ -11206,7 +11206,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1_NoModules.py", + "name": "Flex_S_v2_16_P1000_96_GRIP_DeckConfiguration1NoModules.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6258435dc4][OT2_P300M_P20S_TC_MM_TM_2_13_Smoke620Release].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c821e64fad][OT2_S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6258435dc4][OT2_P300M_P20S_TC_MM_TM_2_13_Smoke620Release].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c821e64fad][OT2_S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release].json index b6c92f8526c..47f9ac631a6 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6258435dc4][OT2_P300M_P20S_TC_MM_TM_2_13_Smoke620Release].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c821e64fad][OT2_S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release].json @@ -9834,7 +9834,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_TC_MM_TM_2_13_Smoke620Release.py", + "name": "OT2_S_v2_13_P300M_P20S_MM_TC_TM_Smoke620Release.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4835239037][OT2_P300M_P20S_MM_TM_TC1_5_2_6_PD40Error].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c9e6e3d59d][OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4835239037][OT2_P300M_P20S_MM_TM_TC1_5_2_6_PD40Error].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c9e6e3d59d][OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests].json index 636e3ae1cbc..ea5794cc6a8 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[4835239037][OT2_P300M_P20S_MM_TM_TC1_5_2_6_PD40Error].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[c9e6e3d59d][OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests].json @@ -6924,7 +6924,7 @@ "errorInfo": { "args": "('Cannot aspirate more than pipette max volume',)", "class": "AssertionError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/legacy_commands/publisher.py\", line 113, in publish_context\n yield\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/instrument_context.py\", line 270, in aspirate\n self._core.aspirate(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py\", line 119, in aspirate\n new_volume <= self._pipette_dict[\"working_volume\"]\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/legacy_commands/publisher.py\", line 113, in publish_context\n yield\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/instrument_context.py\", line 272, in aspirate\n self._core.aspirate(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py\", line 119, in aspirate\n new_volume <= self._pipette_dict[\"working_volume\"]\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -6965,7 +6965,7 @@ "errorInfo": { "args": "('Cannot aspirate more than pipette max volume',)", "class": "AssertionError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/task_queue.py\", line 84, in _run\n await self._run_func()\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/task_queue.py\", line 61, in _do_run\n await func(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/protocol_runner.py\", line 219, in run_func\n await self._legacy_executor.execute(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/legacy_wrappers.py\", line 180, in execute\n await to_thread.run_sync(\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/to_thread.py\", line 33, in run_sync\n return await get_asynclib().run_sync_in_worker_thread(\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 877, in run_sync_in_worker_thread\n return await future\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 807, in run\n result = context.run(func, *args)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute.py\", line 63, in run_protocol\n execute_json_v4.dispatch_json(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_json_v4.py\", line 272, in dispatch_json\n pipette_command_map[command_type]( # type: ignore\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_json_v3.py\", line 159, in _aspirate\n pipette.aspirate(volume, location)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/instrument_context.py\", line 270, in aspirate\n self._core.aspirate(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py\", line 119, in aspirate\n new_volume <= self._pipette_dict[\"working_volume\"]\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/task_queue.py\", line 84, in _run\n await self._run_func()\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/task_queue.py\", line 61, in _do_run\n await func(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/protocol_runner.py\", line 219, in run_func\n await self._legacy_executor.execute(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/legacy_wrappers.py\", line 180, in execute\n await to_thread.run_sync(\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/to_thread.py\", line 33, in run_sync\n return await get_asynclib().run_sync_in_worker_thread(\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 877, in run_sync_in_worker_thread\n return await future\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 807, in run\n result = context.run(func, *args)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute.py\", line 63, in run_protocol\n execute_json_v4.dispatch_json(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_json_v4.py\", line 272, in dispatch_json\n pipette_command_map[command_type]( # type: ignore\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_json_v3.py\", line 159, in _aspirate\n pipette.aspirate(volume, location)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/instrument_context.py\", line 272, in aspirate\n self._core.aspirate(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py\", line 119, in aspirate\n new_volume <= self._pipette_dict[\"working_volume\"]\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -6975,7 +6975,7 @@ ], "files": [ { - "name": "OT2_P300M_P20S_MM_TM_TC1_5_2_6_PD40Error.json", + "name": "OT2_X_v4_P300M_P20S_MM_TC1_TM_e2eTests.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6b4d75cb04][OT2_P20S_P300M_NoMods_6_1_TransferReTransferLiquid].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6b4d75cb04][OT2_P20S_P300M_NoMods_6_1_TransferReTransferLiquid].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json index 36e8ee71f89..70e67b94ed3 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[6b4d75cb04][OT2_P20S_P300M_NoMods_6_1_TransferReTransferLiquid].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cb5adc3d23][OT2_S_v6_P20S_P300M_TransferReTransferLiquid].json @@ -10674,7 +10674,7 @@ "errors": [], "files": [ { - "name": "OT2_P20S_P300M_NoMods_6_1_TransferReTransferLiquid.json", + "name": "OT2_S_v6_P20S_P300M_TransferReTransferLiquid.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d13f3b33af][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d13f3b33af][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json deleted file mode 100644 index 921eb835a80..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d13f3b33af][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterDefinitionError [line 104]: Only parameters of type float or int can have a minimum and maximum", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterDefinitionError: Only parameters of type float or int can have a minimum and maximum", - "errorCode": "4000", - "errorInfo": { - "args": "('Only parameters of type float or int can have a minimum and maximum',)", - "class": "ParameterDefinitionError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum.py\", line 104, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 55, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 228, in validate_options\n _validate_min_and_max(minimum, maximum, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 197, in _validate_min_and_max\n raise ParameterDefinitionError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_maximum.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Description Too Long 2.18" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f91ecb541c][OT2_P300M_P20S_TC_HS_TM_2_17_SmokeTestV3].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f91ecb541c][OT2_P300M_P20S_TC_HS_TM_2_17_SmokeTestV3].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json index 0245a572ca9..d2a73ab17e9 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f91ecb541c][OT2_P300M_P20S_TC_HS_TM_2_17_SmokeTestV3].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d48bc4f0c9][OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3].json @@ -15549,7 +15549,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_TC_HS_TM_2_17_SmokeTestV3.py", + "name": "OT2_S_v2_17_P300M_P20S_HS_TC_TM_SmokeTestV3.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[78960c4c8e][OT2_P300S_Twinning_Error].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6026e11c5][OT2_X_v2_7_P300S_TwinningError].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[78960c4c8e][OT2_P300S_Twinning_Error].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6026e11c5][OT2_X_v2_7_P300S_TwinningError].json index 07585c1c1c7..a67595aa67c 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[78960c4c8e][OT2_P300S_Twinning_Error].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6026e11c5][OT2_X_v2_7_P300S_TwinningError].json @@ -2714,7 +2714,7 @@ "class": "AttributeError", "name": "pair_with", "obj": "P300 Single-Channel GEN2 on left mount", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_P300S_Twinning_Error.py\", line 23, in run\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"OT2_X_v2_7_P300S_TwinningError.py\", line 23, in run\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -2724,7 +2724,7 @@ ], "files": [ { - "name": "OT2_P300S_Twinning_Error.py", + "name": "OT2_X_v2_7_P300S_TwinningError.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6a37191cf][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6a37191cf][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum].json deleted file mode 100644 index eeeec986698..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d6a37191cf][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterDefinitionError [line 95]: Only parameters of type float or int can have a minimum and maximum", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterDefinitionError: Only parameters of type float or int can have a minimum and maximum", - "errorCode": "4000", - "errorInfo": { - "args": "('Only parameters of type float or int can have a minimum and maximum',)", - "class": "ParameterDefinitionError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum.py\", line 95, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 55, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 228, in validate_options\n _validate_min_and_max(minimum, maximum, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 197, in _validate_min_and_max\n raise ParameterDefinitionError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_minimum.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Description Too Long 2.18" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[35d0afdaa6][v2_18_None_None_duplicateChoiceValue].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d7e862d601][OT2_S_v2_18_None_None_duplicateChoiceValue].json similarity index 96% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[35d0afdaa6][v2_18_None_None_duplicateChoiceValue].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d7e862d601][OT2_S_v2_18_None_None_duplicateChoiceValue].json index afbb08ee761..792ce852c07 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[35d0afdaa6][v2_18_None_None_duplicateChoiceValue].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d7e862d601][OT2_S_v2_18_None_None_duplicateChoiceValue].json @@ -27,6 +27,10 @@ }, "errors": [], "files": [ + { + "name": "OT2_S_v2_18_None_None_duplicateChoiceValue.py", + "role": "main" + }, { "name": "cpx_4_tuberack_100ul.json", "role": "labware" @@ -46,10 +50,6 @@ { "name": "sample_labware.json", "role": "labware" - }, - { - "name": "v2_18_None_None_duplicateChoiceValue.py", - "role": "main" } ], "labware": [], diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7840348786][Flex_P1000_96_TC_2_16_PartialTipPickupSingle].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json similarity index 97% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7840348786][Flex_P1000_96_TC_2_16_PartialTipPickupSingle].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json index 79f4230779e..bcd9c895119 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[7840348786][Flex_P1000_96_TC_2_16_PartialTipPickupSingle].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8cb88b3b2][Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle].json @@ -2,12 +2,14 @@ "commands": [ { "commandType": "home", + "notes": [], "params": {}, "result": {}, "status": "succeeded" }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "opentrons_flex_96_tiprack_50ul", "location": { @@ -1159,6 +1161,7 @@ }, { "commandType": "loadPipette", + "notes": [], "params": { "mount": "left", "pipetteName": "p1000_96" @@ -1168,6 +1171,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_200ul_flat", "location": { @@ -2328,6 +2332,7 @@ }, { "commandType": "loadLabware", + "notes": [], "params": { "loadName": "nest_96_wellplate_200ul_flat", "location": { @@ -3485,120 +3490,6 @@ } }, "status": "succeeded" - }, - { - "commandType": "configureNozzleLayout", - "params": { - "configurationParams": { - "primaryNozzle": "H12", - "style": "SINGLE" - } - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "pickUpTip", - "params": { - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "origin": "top" - }, - "wellName": "A2" - }, - "result": { - "position": { - "x": 351.38, - "y": 181.38, - "z": 99.0 - }, - "tipDiameter": 5.58, - "tipLength": 47.4, - "tipVolume": 50.0 - }, - "status": "succeeded" - }, - { - "commandType": "aspirate", - "params": { - "flowRate": 160.0, - "volume": 50.0, - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": -9.8 - }, - "origin": "top" - }, - "wellName": "E4" - }, - "result": { - "position": { - "x": 205.28, - "y": 145.18, - "z": 4.5 - }, - "volume": 50.0 - }, - "status": "succeeded" - }, - { - "commandType": "dispense", - "params": { - "flowRate": 160.0, - "volume": 20.0, - "wellLocation": { - "offset": { - "x": 0.0, - "y": 0.0, - "z": -9.8 - }, - "origin": "top" - }, - "wellName": "B5" - }, - "result": { - "position": { - "x": 50.28, - "y": 172.18, - "z": 4.5 - }, - "volume": 20.0 - }, - "status": "succeeded" - }, - { - "commandType": "moveToAddressableAreaForDropTip", - "params": { - "addressableAreaName": "movableTrashA3", - "alternateDropLocation": true, - "forceDirect": false, - "ignoreTipConfiguration": true, - "offset": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - } - }, - "result": { - "position": { - "x": 466.25, - "y": 364.0, - "z": 40.0 - } - }, - "status": "succeeded" - }, - { - "commandType": "dropTipInPlace", - "params": {}, - "result": {}, - "status": "succeeded" } ], "config": { @@ -3608,10 +3499,30 @@ ], "protocolType": "python" }, - "errors": [], + "errors": [ + { + "detail": "ValueError [line 16]: Nozzle layout configuration of style SINGLE is currently unsupported.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "ValueError: Nozzle layout configuration of style SINGLE is currently unsupported.", + "errorCode": "4000", + "errorInfo": { + "args": "('Nozzle layout configuration of style SINGLE is currently unsupported.',)", + "class": "ValueError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle.py\", line 16, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/instrument_context.py\", line 1961, in configure_nozzle_layout\n raise ValueError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], "files": [ { - "name": "Flex_P1000_96_TC_2_16_PartialTipPickupSingle.py", + "name": "Flex_S_v2_16_P1000_96_TC_PartialTipPickupSingle.py", "role": "main" }, { @@ -3667,5 +3578,6 @@ "pipetteName": "p1000_96" } ], - "robotType": "OT-3 Standard" + "robotType": "OT-3 Standard", + "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da8add28b8][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da8add28b8][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json deleted file mode 100644 index 1c1fa64f22c..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[da8add28b8][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "TypeError [line 30]: object of type 'int' has no len()", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "TypeError: object of type 'int' has no len()", - "errorCode": "4000", - "errorInfo": { - "args": "(\"object of type 'int' has no len()\",)", - "class": "TypeError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name.py\", line 30, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 55, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 56, in __init__\n self._display_name = validation.ensure_display_name(display_name)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 21, in ensure_display_name\n if len(display_name) > DISPLAY_NAME_MAX_LEN:\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Description Too Long 2.18" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[caee1acfad][OT2_None_None_TC_2_16_VerifyThermocyclerLoadedSlots].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dbba7a71a8][OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json similarity index 97% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[caee1acfad][OT2_None_None_TC_2_16_VerifyThermocyclerLoadedSlots].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dbba7a71a8][OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json index 3182743836c..4b308445002 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[caee1acfad][OT2_None_None_TC_2_16_VerifyThermocyclerLoadedSlots].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[dbba7a71a8][OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots].json @@ -127,7 +127,7 @@ "errors": [], "files": [ { - "name": "OT2_None_None_TC_2_16_VerifyThermocyclerLoadedSlots.py", + "name": "OT2_S_v2_16_NO_PIPETTES_TC_VerifyThermocyclerLoadedSlots.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5931902632][Flex_None_None_TC_2_16_AnalysisError_TrashBinAndThermocyclerConflict].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de4249ddfb][Flex_X_v2_16_NO_PIPETTES_TC_TrashBinAndThermocyclerConflict].json similarity index 78% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5931902632][Flex_None_None_TC_2_16_AnalysisError_TrashBinAndThermocyclerConflict].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de4249ddfb][Flex_X_v2_16_NO_PIPETTES_TC_TrashBinAndThermocyclerConflict].json index a703ee69fb4..e367d7faa2d 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5931902632][Flex_None_None_TC_2_16_AnalysisError_TrashBinAndThermocyclerConflict].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de4249ddfb][Flex_X_v2_16_NO_PIPETTES_TC_TrashBinAndThermocyclerConflict].json @@ -137,7 +137,7 @@ "errorInfo": { "args": "('thermocyclerModuleV2 in slot B1 prevents trash bin from using slot A1.',)", "class": "DeckConflictError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_None_None_TC_2_16_AnalysisError_TrashBinAndThermocyclerConflict.py\", line 13, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 518, in load_trash_bin\n trash_bin = self._core.load_trash_bin(slot_name, addressable_area_name)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/protocol.py\", line 528, in load_trash_bin\n self._add_disposal_location_to_engine(trash_bin)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/protocol.py\", line 148, in _add_disposal_location_to_engine\n deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/deck_conflict.py\", line 203, in check\n wrapped_deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/motion_planning/deck_conflict.py\", line 210, in check\n raise DeckConflictError(\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_16_NO_PIPETTES_TC_TrashBinAndThermocyclerConflict.py\", line 13, in run\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/api_support/util.py\", line 383, in _check_version_wrapper\n return decorated_obj(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/protocol_context.py\", line 518, in load_trash_bin\n trash_bin = self._core.load_trash_bin(slot_name, addressable_area_name)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/protocol.py\", line 528, in load_trash_bin\n self._add_disposal_location_to_engine(trash_bin)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/protocol.py\", line 148, in _add_disposal_location_to_engine\n deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/core/engine/deck_conflict.py\", line 203, in check\n wrapped_deck_conflict.check(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/motion_planning/deck_conflict.py\", line 210, in check\n raise DeckConflictError(\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -147,7 +147,7 @@ ], "files": [ { - "name": "Flex_None_None_TC_2_16_AnalysisError_TrashBinAndThermocyclerConflict.py", + "name": "Flex_X_v2_16_NO_PIPETTES_TC_TrashBinAndThermocyclerConflict.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53e75c4553][Flex_P1000_96_HS_TM_MM_2_15_ABR5_6_HDQ_Bacteria_ParkTips_96_channel].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de842b7217][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_OmegaHDQDNAExtraction].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53e75c4553][Flex_P1000_96_HS_TM_MM_2_15_ABR5_6_HDQ_Bacteria_ParkTips_96_channel].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de842b7217][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_OmegaHDQDNAExtraction].json index 0ea18a09995..c9208c66d22 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[53e75c4553][Flex_P1000_96_HS_TM_MM_2_15_ABR5_6_HDQ_Bacteria_ParkTips_96_channel].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[de842b7217][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_OmegaHDQDNAExtraction].json @@ -13337,7 +13337,7 @@ ], "files": [ { - "name": "Flex_P1000_96_HS_TM_MM_2_15_ABR5_6_HDQ_Bacteria_ParkTips_96_channel.py", + "name": "Flex_S_v2_15_P1000_96_GRIP_HS_MB_TM_OmegaHDQDNAExtraction.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e3ad5463a4][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e3ad5463a4][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json deleted file mode 100644 index 51eaf76cc51..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e3ad5463a4][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "TypeError [line 113]: object of type 'int' has no len()", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "TypeError: object of type 'int' has no len()", - "errorCode": "4000", - "errorInfo": { - "args": "(\"object of type 'int' has no len()\",)", - "class": "TypeError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit.py\", line 113, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 55, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 59, in __init__\n self._unit = validation.ensure_unit_string_length(unit)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 50, in ensure_unit_string_length\n if unit is not None and len(unit) > UNIT_MAX_LEN:\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_unit.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Description Too Long 2.18" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[753ac8811f][OT2_None_None_2_13_PythonSyntaxError].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e42e36e3ca][OT2_X_v2_13_None_None_PythonSyntaxError].json similarity index 95% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[753ac8811f][OT2_None_None_2_13_PythonSyntaxError].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e42e36e3ca][OT2_X_v2_13_None_None_PythonSyntaxError].json index af560dfb9f3..7e05bcc5181 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[753ac8811f][OT2_None_None_2_13_PythonSyntaxError].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e42e36e3ca][OT2_X_v2_13_None_None_PythonSyntaxError].json @@ -31,7 +31,7 @@ "msg": "No module named 'superspecialmagic'", "name": "superspecialmagic", "path": "None", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/task_queue.py\", line 84, in _run\n await self._run_func()\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/task_queue.py\", line 61, in _do_run\n await func(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/protocol_runner.py\", line 219, in run_func\n await self._legacy_executor.execute(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/legacy_wrappers.py\", line 180, in execute\n await to_thread.run_sync(\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/to_thread.py\", line 33, in run_sync\n return await get_asynclib().run_sync_in_worker_thread(\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 877, in run_sync_in_worker_thread\n return await future\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 807, in run\n result = context.run(func, *args)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute.py\", line 40, in run_protocol\n run_python(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 95, in run_python\n exec(proto.contents, new_globs)\n\n File \"OT2_None_None_2_13_PythonSyntaxError.py\", line 4, in \n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/task_queue.py\", line 84, in _run\n await self._run_func()\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/task_queue.py\", line 61, in _do_run\n await func(*args, **kwargs)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/protocol_runner.py\", line 219, in run_func\n await self._legacy_executor.execute(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_runner/legacy_wrappers.py\", line 180, in execute\n await to_thread.run_sync(\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/to_thread.py\", line 33, in run_sync\n return await get_asynclib().run_sync_in_worker_thread(\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 877, in run_sync_in_worker_thread\n return await future\n\n File \"/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py\", line 807, in run\n result = context.run(func, *args)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute.py\", line 40, in run_protocol\n run_python(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 95, in run_python\n exec(proto.contents, new_globs)\n\n File \"OT2_X_v2_13_None_None_PythonSyntaxError.py\", line 4, in \n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -41,7 +41,7 @@ ], "files": [ { - "name": "OT2_None_None_2_13_PythonSyntaxError.py", + "name": "OT2_X_v2_13_None_None_PythonSyntaxError.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5635695ed6][OT2_P300SLeft_MM_TM_TM_5_2_6_MOAMTemps].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4660ca6df][OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5635695ed6][OT2_P300SLeft_MM_TM_TM_5_2_6_MOAMTemps].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4660ca6df][OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps].json index 03d82f46aea..e6aadeb2fca 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[5635695ed6][OT2_P300SLeft_MM_TM_TM_5_2_6_MOAMTemps].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e4660ca6df][OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps].json @@ -2469,7 +2469,7 @@ "errors": [], "files": [ { - "name": "OT2_P300SLeft_MM_TM_TM_5_2_6_MOAMTemps.json", + "name": "OT2_S_v4_P300S_None_MM_TM_TM_MOAMTemps.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e496fec176][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e496fec176][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json index 2b7469934b5..4bb8dc2ba41 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e496fec176][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e496fec176][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 2, - "command_output": "Usage: python -m opentrons.cli analyze [OPTIONS] FILES...\nTry 'python -m opentrons.cli analyze --help' for help.\n\nError: Invalid value for 'FILES...': Path '/var/lib/ot/protocols/generated_protocols/Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default.py' does not exist.\n" + "detail": "ParameterValueError [line 73]: Parameter default 6 has type 'int', but must be of type 'str'.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter default 6 has type 'int', but must be of type 'str'.", + "errorCode": "4000", + "errorInfo": { + "args": "(\"Parameter default 6 has type 'int', but must be of type 'str'.\",)", + "class": "ParameterValueError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default.py\", line 73, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 152, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 73, in __init__\n validation.validate_options(default, minimum, maximum, choices, parameter_type)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 253, in validate_options\n raise ParameterValueError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_default.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Description Too Long 2.18" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0400decc88][Flex_P1000MLeft_P50MRight_HS_TM_MM_TC_2_15_ABR4_Illumina_DNA_Prep_24x].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e907467039][Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAPrep24x].json similarity index 98% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0400decc88][Flex_P1000MLeft_P50MRight_HS_TM_MM_TC_2_15_ABR4_Illumina_DNA_Prep_24x].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e907467039][Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAPrep24x].json index 69b643fbc46..48382e2d0ac 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[0400decc88][Flex_P1000MLeft_P50MRight_HS_TM_MM_TC_2_15_ABR4_Illumina_DNA_Prep_24x].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[e907467039][Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAPrep24x].json @@ -8325,7 +8325,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -8351,7 +8351,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -8377,7 +8377,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -8403,7 +8403,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -8429,7 +8429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -8455,7 +8455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -8481,7 +8481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 20.0, "wellLocation": { "offset": { @@ -8507,7 +8507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 20.0, "wellLocation": { "offset": { @@ -8557,7 +8557,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -8607,7 +8607,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -8633,7 +8633,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -8683,7 +8683,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -8709,7 +8709,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -8759,7 +8759,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -8785,7 +8785,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -8835,7 +8835,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -8861,7 +8861,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -9007,7 +9007,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9033,7 +9033,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9059,7 +9059,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9085,7 +9085,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9111,7 +9111,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9137,7 +9137,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9163,7 +9163,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 20.0, "wellLocation": { "offset": { @@ -9189,7 +9189,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 20.0, "wellLocation": { "offset": { @@ -9239,7 +9239,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -9289,7 +9289,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -9315,7 +9315,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -9365,7 +9365,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -9391,7 +9391,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -9441,7 +9441,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -9467,7 +9467,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -9517,7 +9517,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -9543,7 +9543,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -9689,7 +9689,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9715,7 +9715,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9741,7 +9741,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9767,7 +9767,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9793,7 +9793,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9819,7 +9819,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 30.0, "wellLocation": { "offset": { @@ -9845,7 +9845,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 20.0, "wellLocation": { "offset": { @@ -9871,7 +9871,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 20.0, "wellLocation": { "offset": { @@ -9921,7 +9921,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -9971,7 +9971,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -9997,7 +9997,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10047,7 +10047,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -10073,7 +10073,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -10123,7 +10123,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10149,7 +10149,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10199,7 +10199,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 40.0, "wellLocation": { "offset": { @@ -10225,7 +10225,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -10492,7 +10492,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -10518,7 +10518,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -10568,7 +10568,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10594,7 +10594,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10620,7 +10620,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10646,7 +10646,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10672,7 +10672,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10698,7 +10698,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10724,7 +10724,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10750,7 +10750,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10776,7 +10776,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10802,7 +10802,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10828,7 +10828,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10854,7 +10854,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10880,7 +10880,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10906,7 +10906,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10932,7 +10932,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10958,7 +10958,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -10984,7 +10984,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11010,7 +11010,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11036,7 +11036,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11062,7 +11062,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11138,7 +11138,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -11164,7 +11164,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -11214,7 +11214,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11240,7 +11240,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11266,7 +11266,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11292,7 +11292,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11318,7 +11318,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11344,7 +11344,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11370,7 +11370,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11396,7 +11396,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11422,7 +11422,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11448,7 +11448,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11474,7 +11474,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11500,7 +11500,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11526,7 +11526,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11552,7 +11552,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11578,7 +11578,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11604,7 +11604,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11630,7 +11630,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11656,7 +11656,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11682,7 +11682,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11708,7 +11708,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11784,7 +11784,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -11810,7 +11810,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -11860,7 +11860,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11886,7 +11886,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11912,7 +11912,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11938,7 +11938,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11964,7 +11964,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -11990,7 +11990,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12016,7 +12016,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12042,7 +12042,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12068,7 +12068,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12094,7 +12094,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12120,7 +12120,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12146,7 +12146,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12172,7 +12172,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12198,7 +12198,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12224,7 +12224,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12250,7 +12250,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12276,7 +12276,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12302,7 +12302,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12328,7 +12328,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12354,7 +12354,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12571,7 +12571,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12630,7 +12630,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12680,7 +12680,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12715,7 +12715,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -12739,7 +12739,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -12839,7 +12839,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12898,7 +12898,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -12948,7 +12948,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -12983,7 +12983,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -13007,7 +13007,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -13107,7 +13107,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13166,7 +13166,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13216,7 +13216,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -13251,7 +13251,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -13275,7 +13275,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -13397,7 +13397,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13447,7 +13447,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13473,7 +13473,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -13499,7 +13499,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -13525,7 +13525,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -13551,7 +13551,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -13610,7 +13610,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -13634,7 +13634,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -13710,7 +13710,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13760,7 +13760,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -13786,7 +13786,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -13812,7 +13812,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -13838,7 +13838,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -13864,7 +13864,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -13923,7 +13923,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -13947,7 +13947,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14023,7 +14023,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -14073,7 +14073,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -14099,7 +14099,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -14125,7 +14125,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -14151,7 +14151,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -14177,7 +14177,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -14236,7 +14236,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -14260,7 +14260,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14458,7 +14458,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -14517,7 +14517,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -14543,7 +14543,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14602,7 +14602,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -14626,7 +14626,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14726,7 +14726,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -14785,7 +14785,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -14811,7 +14811,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -14870,7 +14870,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -14894,7 +14894,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -14994,7 +14994,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15053,7 +15053,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15079,7 +15079,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -15138,7 +15138,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -15162,7 +15162,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -15284,7 +15284,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15334,7 +15334,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15360,7 +15360,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -15386,7 +15386,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -15412,7 +15412,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -15438,7 +15438,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -15497,7 +15497,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -15521,7 +15521,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -15597,7 +15597,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15647,7 +15647,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15673,7 +15673,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -15699,7 +15699,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -15725,7 +15725,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -15751,7 +15751,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -15810,7 +15810,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -15834,7 +15834,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -15910,7 +15910,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15960,7 +15960,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -15986,7 +15986,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -16012,7 +16012,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -16038,7 +16038,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -16064,7 +16064,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -16123,7 +16123,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -16147,7 +16147,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -16345,7 +16345,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16404,7 +16404,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16430,7 +16430,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16489,7 +16489,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -16513,7 +16513,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -16613,7 +16613,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16672,7 +16672,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16698,7 +16698,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -16757,7 +16757,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -16781,7 +16781,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -16881,7 +16881,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16940,7 +16940,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -16966,7 +16966,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -17025,7 +17025,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -17049,7 +17049,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -17171,7 +17171,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17221,7 +17221,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17247,7 +17247,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17273,7 +17273,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17299,7 +17299,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17325,7 +17325,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17384,7 +17384,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -17408,7 +17408,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -17484,7 +17484,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17534,7 +17534,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17560,7 +17560,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17586,7 +17586,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17612,7 +17612,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17638,7 +17638,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17697,7 +17697,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -17721,7 +17721,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -17797,7 +17797,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17847,7 +17847,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -17873,7 +17873,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17899,7 +17899,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17925,7 +17925,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -17951,7 +17951,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 90.0, "wellLocation": { "offset": { @@ -18010,7 +18010,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18034,7 +18034,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -18232,7 +18232,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18291,7 +18291,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18317,7 +18317,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18376,7 +18376,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18400,7 +18400,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -18500,7 +18500,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18559,7 +18559,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18585,7 +18585,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18644,7 +18644,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18668,7 +18668,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -18768,7 +18768,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18827,7 +18827,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -18853,7 +18853,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -18912,7 +18912,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -18936,7 +18936,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 20.0, "wellLocation": { "offset": { @@ -19055,7 +19055,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 20.0, "wellLocation": { "offset": { @@ -19155,7 +19155,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 20.0, "wellLocation": { "offset": { @@ -19255,7 +19255,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 20.0, "wellLocation": { "offset": { @@ -19386,7 +19386,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -19436,7 +19436,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -19486,7 +19486,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -19536,7 +19536,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -19586,7 +19586,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -19636,7 +19636,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -19686,7 +19686,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -19736,7 +19736,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -19786,7 +19786,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -19812,7 +19812,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -19838,7 +19838,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -19984,7 +19984,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -20034,7 +20034,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20084,7 +20084,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20134,7 +20134,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20184,7 +20184,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20234,7 +20234,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20284,7 +20284,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20334,7 +20334,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20384,7 +20384,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20410,7 +20410,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20436,7 +20436,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -20582,7 +20582,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -20632,7 +20632,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20682,7 +20682,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20732,7 +20732,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20782,7 +20782,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20832,7 +20832,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20882,7 +20882,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20932,7 +20932,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -20982,7 +20982,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -21008,7 +21008,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 35.0, "wellLocation": { "offset": { @@ -21034,7 +21034,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -21269,7 +21269,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 10.0, "wellLocation": { "offset": { @@ -21295,7 +21295,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21321,7 +21321,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21347,7 +21347,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21373,7 +21373,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21399,7 +21399,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21425,7 +21425,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21451,7 +21451,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21527,7 +21527,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 10.0, "wellLocation": { "offset": { @@ -21553,7 +21553,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21579,7 +21579,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21605,7 +21605,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21631,7 +21631,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21657,7 +21657,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21683,7 +21683,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21709,7 +21709,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21785,7 +21785,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 2.0, + "flowRate": 8.75, "volume": 10.0, "wellLocation": { "offset": { @@ -21811,7 +21811,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21837,7 +21837,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21863,7 +21863,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21889,7 +21889,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21915,7 +21915,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21941,7 +21941,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 35.0, "volume": 10.0, "wellLocation": { "offset": { @@ -21967,7 +21967,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 8.0, + "flowRate": 57.0, "volume": 10.0, "wellLocation": { "offset": { @@ -22275,7 +22275,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -22301,7 +22301,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -22327,7 +22327,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22353,7 +22353,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22429,7 +22429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -22455,7 +22455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -22481,7 +22481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22507,7 +22507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22583,7 +22583,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -22609,7 +22609,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 40.0, "wellLocation": { "offset": { @@ -22635,7 +22635,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22661,7 +22661,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22747,7 +22747,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -22773,7 +22773,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -22799,7 +22799,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -22825,7 +22825,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -22851,7 +22851,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -22877,7 +22877,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -22903,7 +22903,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22929,7 +22929,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 45.0, "wellLocation": { "offset": { @@ -22979,7 +22979,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23029,7 +23029,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23055,7 +23055,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23105,7 +23105,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -23131,7 +23131,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23181,7 +23181,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23207,7 +23207,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23257,7 +23257,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -23283,7 +23283,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -23429,7 +23429,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -23455,7 +23455,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -23481,7 +23481,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -23507,7 +23507,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -23533,7 +23533,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -23559,7 +23559,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -23585,7 +23585,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 45.0, "wellLocation": { "offset": { @@ -23611,7 +23611,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 45.0, "wellLocation": { "offset": { @@ -23661,7 +23661,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23711,7 +23711,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23737,7 +23737,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23787,7 +23787,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -23813,7 +23813,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23863,7 +23863,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23889,7 +23889,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -23939,7 +23939,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -23965,7 +23965,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -24111,7 +24111,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -24137,7 +24137,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -24163,7 +24163,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -24189,7 +24189,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -24215,7 +24215,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -24241,7 +24241,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 55.0, "wellLocation": { "offset": { @@ -24267,7 +24267,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 45.0, "wellLocation": { "offset": { @@ -24293,7 +24293,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 45.0, "wellLocation": { "offset": { @@ -24343,7 +24343,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24393,7 +24393,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24419,7 +24419,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24469,7 +24469,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -24495,7 +24495,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24545,7 +24545,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24571,7 +24571,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 60.0, "wellLocation": { "offset": { @@ -24621,7 +24621,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 358.0, "volume": 30.0, "wellLocation": { "offset": { @@ -24647,7 +24647,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -24899,7 +24899,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -24958,7 +24958,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25008,7 +25008,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -25043,7 +25043,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -25189,7 +25189,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25248,7 +25248,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25298,7 +25298,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -25333,7 +25333,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -25479,7 +25479,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25538,7 +25538,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -25588,7 +25588,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -25623,7 +25623,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -25755,7 +25755,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -25877,7 +25877,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -25912,7 +25912,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -26008,7 +26008,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -26130,7 +26130,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -26165,7 +26165,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -26261,7 +26261,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -26383,7 +26383,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -26418,7 +26418,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -26607,7 +26607,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -26666,7 +26666,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -26716,7 +26716,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -26751,7 +26751,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -26897,7 +26897,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -26956,7 +26956,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -27006,7 +27006,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -27041,7 +27041,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -27187,7 +27187,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -27246,7 +27246,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -27296,7 +27296,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -27331,7 +27331,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -27463,7 +27463,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -27585,7 +27585,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -27620,7 +27620,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -27716,7 +27716,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -27838,7 +27838,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -27873,7 +27873,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -27969,7 +27969,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -28091,7 +28091,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 150.0, "wellLocation": { "offset": { @@ -28126,7 +28126,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -28315,7 +28315,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -28374,7 +28374,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -28424,7 +28424,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -28459,7 +28459,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -28605,7 +28605,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -28664,7 +28664,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -28714,7 +28714,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -28749,7 +28749,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -28895,7 +28895,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -28954,7 +28954,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 100.0, "wellLocation": { "offset": { @@ -29004,7 +29004,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 200.0, "wellLocation": { "offset": { @@ -29039,7 +29039,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -29204,7 +29204,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -29230,7 +29230,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -29265,7 +29265,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -29411,7 +29411,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -29437,7 +29437,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -29472,7 +29472,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -29618,7 +29618,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 50.0, "wellLocation": { "offset": { @@ -29644,7 +29644,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 50.0, "wellLocation": { "offset": { @@ -29679,7 +29679,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -29856,7 +29856,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -29906,7 +29906,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -29956,7 +29956,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30006,7 +30006,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30056,7 +30056,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30106,7 +30106,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30156,7 +30156,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30206,7 +30206,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30256,7 +30256,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30282,7 +30282,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30308,7 +30308,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -30454,7 +30454,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30504,7 +30504,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30554,7 +30554,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30604,7 +30604,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30654,7 +30654,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30704,7 +30704,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30754,7 +30754,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30804,7 +30804,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30854,7 +30854,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30880,7 +30880,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -30906,7 +30906,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -31052,7 +31052,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31102,7 +31102,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31152,7 +31152,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31202,7 +31202,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31252,7 +31252,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31302,7 +31302,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31352,7 +31352,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31402,7 +31402,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31452,7 +31452,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31478,7 +31478,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 32.0, "wellLocation": { "offset": { @@ -31504,7 +31504,7 @@ "commandType": "blowout", "notes": [], "params": { - "flowRate": 80.0, + "flowRate": 716.0, "wellLocation": { "offset": { "x": 0.0, @@ -31756,7 +31756,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -31782,7 +31782,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -31882,7 +31882,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -31908,7 +31908,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -32008,7 +32008,7 @@ "commandType": "aspirate", "notes": [], "params": { - "flowRate": 40.0, + "flowRate": 179.0, "volume": 31.0, "wellLocation": { "offset": { @@ -32034,7 +32034,7 @@ "commandType": "dispense", "notes": [], "params": { - "flowRate": 160.0, + "flowRate": 716.0, "volume": 31.0, "wellLocation": { "offset": { @@ -32091,7 +32091,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000MLeft_P50MRight_HS_TM_MM_TC_2_15_ABR4_Illumina_DNA_Prep_24x.py", + "name": "Flex_S_v2_15_P1000M_P50M_GRIP_HS_MB_TC_TM_IlluminaDNAPrep24x.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ce0f35b3c6][Flex_None_None_TM_2_16_AnalysisError_ModuleInCol2].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed1e64c539][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInCol2].json similarity index 98% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ce0f35b3c6][Flex_None_None_TM_2_16_AnalysisError_ModuleInCol2].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed1e64c539][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInCol2].json index b1406042616..507c5d11bee 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ce0f35b3c6][Flex_None_None_TM_2_16_AnalysisError_ModuleInCol2].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed1e64c539][Flex_X_v2_16_NO_PIPETTES_TM_ModuleInCol2].json @@ -68,7 +68,7 @@ ], "files": [ { - "name": "Flex_None_None_TM_2_16_AnalysisError_ModuleInCol2.py", + "name": "Flex_X_v2_16_NO_PIPETTES_TM_ModuleInCol2.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed8f67ebb6][Flex_None_None_2_18_GoldenRTP].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed8f67ebb6][Flex_None_None_2_18_GoldenRTP].json deleted file mode 100644 index 54b70732994..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[ed8f67ebb6][Flex_None_None_2_18_GoldenRTP].json +++ /dev/null @@ -1,304 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable sample_count has value 6", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable dilutions has value 1", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable pcr_volume has value 20", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable washes has value 6", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable elution_buffer_volume has value 20.0", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable bead_ratio has value 1.8", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable pipette_volume has value 20.0", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable mixing_volume has value 150.0", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable dry_run has value False", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable pipette has value flex_1channel_50", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [], - "files": [ - { - "name": "Flex_None_None_2_18_GoldenRTP.py", - "role": "main" - }, - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Golden RTP Examples" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [ - { - "default": 6.0, - "description": "How many samples to process.", - "displayName": "Sample count", - "max": 12.0, - "min": 1.0, - "suffix": "samples", - "type": "int", - "value": 6.0, - "variableName": "sample_count" - }, - { - "default": 1.0, - "description": "How many dilutions of the sample.", - "displayName": "Dilutions", - "max": 3.0, - "min": 1.0, - "type": "int", - "value": 1.0, - "variableName": "dilutions" - }, - { - "choices": [ - { - "displayName": "20", - "value": 20.0 - }, - { - "displayName": "16", - "value": 16.0 - } - ], - "default": 20.0, - "description": "PRC reaction volume.", - "displayName": "PCR Volume (µL)", - "type": "int", - "value": 20.0, - "variableName": "pcr_volume" - }, - { - "choices": [ - { - "displayName": "1X", - "value": 6.0 - }, - { - "displayName": "2X", - "value": 12.0 - } - ], - "default": 6.0, - "description": "How many washes to perform.", - "displayName": "Washes", - "type": "int", - "value": 6.0, - "variableName": "washes" - }, - { - "default": 20.0, - "description": "Volume of elution buffer to use.", - "displayName": "Elution Buffer Volume", - "max": 30.0, - "min": 20.0, - "suffix": "µL", - "type": "float", - "value": 20.0, - "variableName": "elution_buffer_volume" - }, - { - "default": 1.8, - "description": "How many samples to process.", - "displayName": "Bead Ratio", - "max": 3.0, - "min": 1.5, - "suffix": "samples", - "type": "float", - "value": 1.8, - "variableName": "bead_ratio" - }, - { - "choices": [ - { - "displayName": "Low Volume (10.0µL)", - "value": 10.0 - }, - { - "displayName": "Medium Volume (20.0µL)", - "value": 20.0 - }, - { - "displayName": "High Volume (50.0µL)", - "value": 50.0 - } - ], - "default": 20.0, - "description": "How many microliters to pipette of each sample.", - "displayName": "Pipette volume", - "type": "float", - "value": 20.0, - "variableName": "pipette_volume" - }, - { - "choices": [ - { - "displayName": "Low Volume ⬇️", - "value": 100.0 - }, - { - "displayName": "Medium Volume 🟰", - "value": 150.0 - }, - { - "displayName": "High Volume ⬆️", - "value": 200.0 - } - ], - "default": 150.0, - "description": "Adjust the mixing volume.", - "displayName": "Mixing Volume in µL", - "type": "float", - "value": 150.0, - "variableName": "mixing_volume" - }, - { - "default": false, - "description": "When on, skip aspirate and dispense steps.", - "displayName": "Dry Run", - "type": "bool", - "value": false, - "variableName": "dry_run" - }, - { - "choices": [ - { - "displayName": "Single channel 50µL", - "value": "flex_1channel_50" - }, - { - "displayName": "Eight Channel 50µL", - "value": "flex_8channel_50" - } - ], - "default": "flex_1channel_50", - "description": "What pipette to use during the protocol.", - "displayName": "Pipette Name", - "type": "str", - "value": "flex_1channel_50", - "variableName": "pipette" - } - ] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[eef1755bf2][v2_18_None_None_duplicateRTPVariableName].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[eef1755bf2][v2_18_None_None_duplicateRTPVariableName].json deleted file mode 100644 index fd6ee958a51..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[eef1755bf2][v2_18_None_None_duplicateRTPVariableName].json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable variable_a has value 1", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - }, - { - "commandType": "custom", - "notes": [], - "params": { - "legacyCommandText": "variable variable_b has value 1", - "legacyCommandType": "command.COMMENT" - }, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_None_None_duplicateRTPVariableName.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Multiple RTP Variables with Same Name" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-2 Standard", - "runTimeParameters": [ - { - "default": 1.0, - "description": "This is a description", - "displayName": "int 3", - "max": 3.0, - "min": 1.0, - "type": "int", - "value": 1.0, - "variableName": "variable_a" - }, - { - "default": 1.0, - "description": "This is a description", - "displayName": "int 2", - "max": 3.0, - "min": 1.0, - "type": "int", - "value": 1.0, - "variableName": "variable_b" - } - ] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01a37ee87b][Flex_P1000_96_2_16_AnalysisError_DropTipsWithNoTrash].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01a37ee87b][Flex_P1000_96_2_16_AnalysisError_DropTipsWithNoTrash].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json index 9139bc0c57d..e4b54680e8a 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[01a37ee87b][Flex_P1000_96_2_16_AnalysisError_DropTipsWithNoTrash].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f0efddcd7d][Flex_X_v2_16_P1000_96_DropTipsWithNoTrash].json @@ -1370,7 +1370,7 @@ ], "files": [ { - "name": "Flex_P1000_96_2_16_AnalysisError_DropTipsWithNoTrash.py", + "name": "Flex_X_v2_16_P1000_96_DropTipsWithNoTrash.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adca5df246][Flex_P1000_96_HS_TM_TC_MM_2_15_ABR5_6_Illumina_DNA_Prep_96x_Head_PART_III].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adca5df246][Flex_P1000_96_HS_TM_TC_MM_2_15_ABR5_6_Illumina_DNA_Prep_96x_Head_PART_III].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json index d664bc8fc3d..f71b0969ee6 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[adca5df246][Flex_P1000_96_HS_TM_TC_MM_2_15_ABR5_6_Illumina_DNA_Prep_96x_Head_PART_III].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f24bb0b4d9][Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3].json @@ -5774,7 +5774,7 @@ ], "files": [ { - "name": "Flex_P1000_96_HS_TM_TC_MM_2_15_ABR5_6_Illumina_DNA_Prep_96x_Head_PART_III.py", + "name": "Flex_S_v2_15_P1000_96_GRIP_HS_MB_TC_TM_IlluminaDNAPrep96PART3.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[49c3817e54][OT2_P300M_P300S_HS_6_1_HS_NormalUseWithTransfer].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[49c3817e54][OT2_P300M_P300S_HS_6_1_HS_NormalUseWithTransfer].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json index 213e9a6d6ea..a116d308217 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[49c3817e54][OT2_P300M_P300S_HS_6_1_HS_NormalUseWithTransfer].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f301704f56][OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer].json @@ -6382,7 +6382,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P300S_HS_6_1_HS_NormalUseWithTransfer.json", + "name": "OT2_S_v6_P300M_P300S_HS_HS_NormalUseWithTransfer.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f3ec1e065e][OT2_P300M_P20S_MM_TM_TC1_5_2_6_PD40].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f345e8e33a][OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f3ec1e065e][OT2_P300M_P20S_MM_TM_TC1_5_2_6_PD40].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f345e8e33a][OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40].json index e9c1b191c53..df6100f8a51 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f3ec1e065e][OT2_P300M_P20S_MM_TM_TC1_5_2_6_PD40].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f345e8e33a][OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40].json @@ -9606,7 +9606,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_MM_TM_TC1_5_2_6_PD40.json", + "name": "OT2_S_v4_P300M_P20S_MM_TM_TC1_PD40.json", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9b9f87acb0][OT2_None_None_2_16_verifyDoesNotDeadlock].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f37bb0ec36][OT2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock].json similarity index 93% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9b9f87acb0][OT2_None_None_2_16_verifyDoesNotDeadlock].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f37bb0ec36][OT2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock].json index 6e5243e7ff0..73c621e5e54 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[9b9f87acb0][OT2_None_None_2_16_verifyDoesNotDeadlock].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f37bb0ec36][OT2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock].json @@ -18,7 +18,7 @@ "errors": [], "files": [ { - "name": "OT2_None_None_2_16_verifyDoesNotDeadlock.py", + "name": "OT2_S_v2_16_NO_PIPETTES_verifyDoesNotDeadlock.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2a185c4e1c][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_Smoke].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2a185c4e1c][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_Smoke].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json index c22b8b7efe6..05c042f1933 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[2a185c4e1c][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_Smoke].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f51172f73b][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke].json @@ -8291,7 +8291,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -8302,7 +8302,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 466.25, "y": 257.0, "z": 40.0 } @@ -8399,7 +8399,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -8410,7 +8410,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 402.25, "y": 257.0, "z": 40.0 } @@ -8507,7 +8507,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -8518,7 +8518,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 466.25, "y": 257.0, "z": 40.0 } @@ -8615,7 +8615,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -8626,7 +8626,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 402.25, "y": 257.0, "z": 40.0 } @@ -8723,7 +8723,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -8734,7 +8734,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 466.25, "y": 257.0, "z": 40.0 } @@ -8831,7 +8831,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -8842,7 +8842,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 402.25, "y": 257.0, "z": 40.0 } @@ -8939,7 +8939,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -8950,7 +8950,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 466.25, "y": 257.0, "z": 40.0 } @@ -9047,7 +9047,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -9058,7 +9058,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 402.25, "y": 257.0, "z": 40.0 } @@ -9155,7 +9155,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -9166,7 +9166,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 466.25, "y": 257.0, "z": 40.0 } @@ -9263,7 +9263,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -9274,7 +9274,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 402.25, "y": 257.0, "z": 40.0 } @@ -9371,7 +9371,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -9382,7 +9382,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 466.25, "y": 257.0, "z": 40.0 } @@ -9479,7 +9479,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashB3", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -9490,7 +9490,7 @@ }, "result": { "position": { - "x": 434.25, + "x": 402.25, "y": 257.0, "z": 40.0 } @@ -12900,7 +12900,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_Smoke.py", + "name": "Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_Smoke.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8ec3534d4][Flex_P1000_96_TM_2_16_AnalysisError_ModuleAndWasteChuteConflict].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8ec3534d4][Flex_P1000_96_TM_2_16_AnalysisError_ModuleAndWasteChuteConflict].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json index 64864e5d715..48fdecffa9e 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[d8ec3534d4][Flex_P1000_96_TM_2_16_AnalysisError_ModuleAndWasteChuteConflict].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f5f3b9c5bb][Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict].json @@ -1273,7 +1273,7 @@ ], "files": [ { - "name": "Flex_P1000_96_TM_2_16_AnalysisError_ModuleAndWasteChuteConflict.py", + "name": "Flex_X_v2_16_P1000_96_TM_ModuleAndWasteChuteConflict.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f60d333cbc][v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f60d333cbc][v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json deleted file mode 100644 index e79086d7d25..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f60d333cbc][v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterValueError [line 24]: Parameter must be set to one of the allowed values of {9, 20, 15}.", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be set to one of the allowed values of {9, 20, 15}.", - "errorCode": "4000", - "errorInfo": { - "args": "('Parameter must be set to one of the allowed values of {9, 20, 15}.',)", - "class": "ParameterValueError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices.py\", line 24, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 55, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 95, in value\n raise ParameterValueError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_DefaultChoiceNoMatchChoice_Override_int_default_no_matching_choices.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "default choice does not match a choice" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cac08da081][Flex_None_None_TC_2_15_verifyThermocyclerLoadedSlots].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f639acc89d][Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json similarity index 95% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cac08da081][Flex_None_None_TC_2_15_verifyThermocyclerLoadedSlots].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f639acc89d][Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json index ffe74376eeb..f2c22e7db81 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[cac08da081][Flex_None_None_TC_2_15_verifyThermocyclerLoadedSlots].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f639acc89d][Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots].json @@ -137,7 +137,7 @@ "errorInfo": { "args": "()", "class": "AssertionError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_None_None_TC_2_15_verifyThermocyclerLoadedSlots.py\", line 13, in run\n" + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 124, in run_python\n exec(\"run(__context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots.py\", line 13, in run\n" }, "errorType": "PythonException", "wrappedErrors": [] @@ -147,7 +147,7 @@ ], "files": [ { - "name": "Flex_None_None_TC_2_15_verifyThermocyclerLoadedSlots.py", + "name": "Flex_S_v2_15_NO_PIPETTES_TC_verifyThermocyclerLoadedSlots.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[298e1dd4db][Flex_P1000_96_None_TC_2_16_AnalysisError_pipetteCollisionWithThermocyclerLidClips].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[298e1dd4db][Flex_P1000_96_None_TC_2_16_AnalysisError_pipetteCollisionWithThermocyclerLidClips].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json index c2f8a537b65..fd28108213d 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[298e1dd4db][Flex_P1000_96_None_TC_2_16_AnalysisError_pipetteCollisionWithThermocyclerLidClips].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f7085d7134][Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips].json @@ -1324,7 +1324,7 @@ ], "files": [ { - "name": "Flex_P1000_96_None_TC_2_16_AnalysisError_pipetteCollisionWithThermocyclerLidClips.py", + "name": "Flex_X_v2_16_P1000_96_TC_pipetteCollisionWithThermocyclerLidClips.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afe15b729c][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afe15b729c][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json index 49900d0964c..d68d08d41ae 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[afe15b729c][Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f834b97da1][Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1].json @@ -12402,7 +12402,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashC1", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -12413,7 +12413,7 @@ }, "result": { "position": { - "x": 22.25, + "x": 54.25, "y": 150.0, "z": 40.0 } @@ -12661,7 +12661,7 @@ "notes": [], "params": { "addressableAreaName": "movableTrashD1", - "alternateDropLocation": false, + "alternateDropLocation": true, "forceDirect": false, "ignoreTipConfiguration": true, "offset": { @@ -12672,7 +12672,7 @@ }, "result": { "position": { - "x": 22.25, + "x": 54.25, "y": 43.0, "z": 40.0 } @@ -13016,7 +13016,7 @@ "errors": [], "files": [ { - "name": "Flex_P1000_96_GRIPPER_HS_TM_TC_MB_2_16_DeckConfiguration1.py", + "name": "Flex_S_v2_16_P1000_96_GRIP_HS_MB_TC_TM_DeckConfiguration1.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f88b7d6e30][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f88b7d6e30][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json index cf209b282f3..f39ac142b59 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f88b7d6e30][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f88b7d6e30][Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name].json @@ -1,18 +1,74 @@ { - "commands": [], - "config": {}, + "commands": [ + { + "commandType": "home", + "notes": [], + "params": {}, + "result": {}, + "status": "succeeded" + } + ], + "config": { + "apiVersion": [ + 2, + 18 + ], + "protocolType": "python" + }, "errors": [ { - "analysis_execution_time": null, - "command_exit_code": 2, - "command_output": "Usage: python -m opentrons.cli analyze [OPTIONS] FILES...\nTry 'python -m opentrons.cli analyze --help' for help.\n\nError: Invalid value for 'FILES...': Path '/var/lib/ot/protocols/generated_protocols/Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name.py' does not exist.\n" + "detail": "ParameterNameError [line 30]: Display name must be a string and at most 30 characters.", + "errorCode": "4000", + "errorInfo": {}, + "errorType": "ExceptionInProtocolError", + "wrappedErrors": [ + { + "detail": "opentrons.protocols.parameters.types.ParameterNameError: Display name must be a string and at most 30 characters.", + "errorCode": "4000", + "errorInfo": { + "args": "('Display name must be a string and at most 30 characters.',)", + "class": "ParameterNameError", + "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name.py\", line 30, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 56, in add_int\n parameter = parameter_definition.create_int_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 178, in create_int_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 56, in __init__\n self._display_name = validation.ensure_display_name(display_name)\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/validation.py\", line 33, in ensure_display_name\n raise ParameterNameError(\n" + }, + "errorType": "PythonException", + "wrappedErrors": [] + } + ] + } + ], + "files": [ + { + "name": "Flex_X_v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_display_name.py", + "role": "main" + }, + { + "name": "cpx_4_tuberack_100ul.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_200ul_rss.json", + "role": "labware" + }, + { + "name": "opentrons_ot3_96_tiprack_50ul_rss.json", + "role": "labware" + }, + { + "name": "sample_labware.json", + "role": "labware" } ], - "files": [], "labware": [], "liquids": [], - "metadata": [], + "metadata": { + "protocolName": "Description Too Long 2.18" + }, "modules": [], "pipettes": [], + "robotType": "OT-3 Standard", "runTimeParameters": [] } diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f1a979fd7b][OT2_P300M_P20S_TC_HS_TM_2_16_dispense_changes].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json similarity index 99% rename from app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f1a979fd7b][OT2_P300M_P20S_TC_HS_TM_2_16_dispense_changes].json rename to app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json index 778a4b220f7..e98baefe075 100644 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[f1a979fd7b][OT2_P300M_P20S_TC_HS_TM_2_16_dispense_changes].json +++ b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fc60ef9cbd][OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes].json @@ -2965,7 +2965,7 @@ "errors": [], "files": [ { - "name": "OT2_P300M_P20S_TC_HS_TM_2_16_dispense_changes.py", + "name": "OT2_S_v2_16_P300M_P20S_HS_TC_TM_dispense_changes.py", "role": "main" }, { diff --git a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fd596a3cac][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json b/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fd596a3cac][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json deleted file mode 100644 index abf2b73ecaf..00000000000 --- a/app-testing/tests/__snapshots__/analyses_snapshot_test/test_analysis_snapshot[fd596a3cac][v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description].json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "commands": [ - { - "commandType": "home", - "notes": [], - "params": {}, - "result": {}, - "status": "succeeded" - } - ], - "config": { - "apiVersion": [ - 2, - 18 - ], - "protocolType": "python" - }, - "errors": [ - { - "detail": "ParameterValueError [line 84]: Parameter must be set to one of the allowed values of {'flex_8channel_1000', 'flex_8channel_50'}.", - "errorCode": "4000", - "errorInfo": {}, - "errorType": "ExceptionInProtocolError", - "wrappedErrors": [ - { - "detail": "opentrons.protocols.parameters.types.ParameterValueError: Parameter must be set to one of the allowed values of {'flex_8channel_1000', 'flex_8channel_50'}.", - "errorCode": "4000", - "errorInfo": { - "args": "(\"Parameter must be set to one of the allowed values of {'flex_8channel_1000', 'flex_8channel_50'}.\",)", - "class": "ParameterValueError", - "traceback": " File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/execution/execute_python.py\", line 80, in _parse_and_set_parameters\n exec(\"add_parameters(__param_context)\", new_globs)\n\n File \"\", line 1, in \n\n File \"v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description.py\", line 84, in add_parameters\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocol_api/_parameter_context.py\", line 148, in add_str\n parameter = parameter_definition.create_str_parameter(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 241, in create_str_parameter\n return ParameterDefinition(\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 84, in __init__\n self.value: ParamType = default\n\n File \"/usr/local/lib/python3.10/site-packages/opentrons/protocols/parameters/parameter_definition.py\", line 95, in value\n raise ParameterValueError(\n" - }, - "errorType": "PythonException", - "wrappedErrors": [] - } - ] - } - ], - "files": [ - { - "name": "cpx_4_tuberack_100ul.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_1000ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_200ul_rss.json", - "role": "labware" - }, - { - "name": "opentrons_ot3_96_tiprack_50ul_rss.json", - "role": "labware" - }, - { - "name": "sample_labware.json", - "role": "labware" - }, - { - "name": "v2_18_NO_PIPETTES_Overrides_BadTypesInRTP_Override_wrong_type_in_description.py", - "role": "main" - } - ], - "labware": [], - "liquids": [], - "metadata": { - "protocolName": "Description Too Long 2.18" - }, - "modules": [], - "pipettes": [], - "robotType": "OT-3 Standard", - "runTimeParameters": [] -} diff --git a/app-testing/tests/analyses_snapshot_test.py b/app-testing/tests/analyses_snapshot_test.py index 8630a6d0d24..0cecaff8940 100644 --- a/app-testing/tests/analyses_snapshot_test.py +++ b/app-testing/tests/analyses_snapshot_test.py @@ -7,10 +7,13 @@ from automation.data.protocol import Protocol from automation.data.protocol_registry import ProtocolRegistry from citools.generate_analyses import ANALYSIS_SUFFIX, generate_analyses_from_test +from rich.console import Console from syrupy.extensions.json import JSONSnapshotExtension from syrupy.filters import props from syrupy.types import SerializableData +console = Console() + # not included in the snapshot exclude = props( "id", @@ -99,6 +102,7 @@ def test_analysis_snapshot(analyze_protocols: None, snapshot_json: SerializableD "analysis_results", f"{protocol.file_stem}_{target}_{ANALYSIS_SUFFIX}", ) + console.print(f"Analysis file: {analysis}") if analysis.exists(): with open(analysis, "r") as f: data = json.load(f) diff --git a/app/src/assets/images/staging_area_magnetic_block_gen_1.png b/app/src/assets/images/staging_area_magnetic_block_gen_1.png new file mode 100644 index 00000000000..94ef05f08ed Binary files /dev/null and b/app/src/assets/images/staging_area_magnetic_block_gen_1.png differ diff --git a/app/src/assets/localization/en/anonymous.json b/app/src/assets/localization/en/anonymous.json index bdb1a6a7805..fc62241e0df 100644 --- a/app/src/assets/localization/en/anonymous.json +++ b/app/src/assets/localization/en/anonymous.json @@ -25,6 +25,7 @@ "gripper_successfully_calibrated": "Gripper successfully calibrated", "gripper_successfully_detached": "Gripper successfully detached", "gripper": "Gripper", + "help_us_improve_send_error_report": "Help us improve your experience by sending an error report to support", "ip_description_second": "Work with your network administrator to assign a static IP address to the robot.", "learn_uninstalling": "Learn more about uninstalling the app", "loosen_screws_and_detach": "Loosen screws and detach gripper", @@ -66,6 +67,7 @@ "update_robot_software_description": "Bypass the auto-update process and update the robot software manually.", "update_robot_software_link": "Launch software update page", "versions_sync": "Learn more about keeping the app and robot software in sync", + "view_latest_release_notes_at": "Please contact support for release notes.", "want_to_help_out": "Want to help out?", "welcome_title": "Welcome!", "why_use_lpc": "Labware Position Check is intended to correct for minor variances. Don't use Labware Position Check to compensate for large positional adjustments. Needing to set large labware offsets could indicate a problem with robot calibration." diff --git a/app/src/assets/localization/en/branded.json b/app/src/assets/localization/en/branded.json index 4e4f9d82daa..ef9f1c79fa8 100644 --- a/app/src/assets/localization/en/branded.json +++ b/app/src/assets/localization/en/branded.json @@ -25,6 +25,7 @@ "gripper_successfully_calibrated": "Flex Gripper successfully calibrated", "gripper_successfully_detached": "Flex Gripper successfully detached", "gripper": "Flex Gripper", + "help_us_improve_send_error_report": "Help us improve your experience by sending an error report to {{support_email}}", "ip_description_second": "Opentrons recommends working with your network administrator to assign a static IP address to the robot.", "learn_uninstalling": "Learn more about uninstalling the Opentrons App", "loosen_screws_and_detach": "Loosen screws and detach Flex Gripper", @@ -66,6 +67,7 @@ "update_robot_software_description": "Bypass the Opentrons App auto-update process and update the robot software manually.", "update_robot_software_link": "Launch Opentrons software update page", "versions_sync": "Learn more about keeping the Opentrons App and robot software in sync", + "view_latest_release_notes_at": "View latest release notes at {{url}}", "want_to_help_out": "Want to help out Opentrons?", "welcome_title": "Welcome to your Opentrons Flex!", "why_use_lpc": "Labware Position Check is intended to correct for minor variances. Opentrons does not recommend using Labware Position Check to compensate for large positional adjustments. Needing to set large labware offsets could indicate a problem with robot calibration." diff --git a/app/src/assets/localization/en/device_settings.json b/app/src/assets/localization/en/device_settings.json index e7910700c33..78d23493234 100644 --- a/app/src/assets/localization/en/device_settings.json +++ b/app/src/assets/localization/en/device_settings.json @@ -304,7 +304,6 @@ "use_older_aspirate_description": "Aspirate with the less accurate volumetric calibrations that were used before version 3.7.0. Use this if you need consistency with pre-v3.7.0 results. This only affects GEN1 P10S, P10M, P50M, and P300S pipettes.", "validating_software": "Validating software...", "view_details": "View details", - "view_latest_release_notes_at": "View latest release notes at {{url}}", "view_network_details": "View network details", "view_update": "View update", "welcome_description": "Quickly run protocols and check on your robot's status right on your lab bench.", diff --git a/app/src/assets/localization/en/error_recovery.json b/app/src/assets/localization/en/error_recovery.json index 7531853df16..f606e5fdf33 100644 --- a/app/src/assets/localization/en/error_recovery.json +++ b/app/src/assets/localization/en/error_recovery.json @@ -1,3 +1,19 @@ { - "run_paused": "Run paused" + "are_you_sure_you_want_to_resume": "Are you sure you want to resume?", + "before_you_begin": "Before you begin", + "cancel_run": "Cancel run", + "confirm": "Confirm", + "continue": "Continue", + "general_error": "General error", + "general_error_message": "", + "go_back": "Go back", + "how_do_you_want_to_proceed": "How do you want to proceed?", + "recovery_mode": "Recovery Mode", + "recovery_mode_explanation": "Recovery Mode provides you with guided and manual controls for handling errors at runtime.
You can make changes to ensure the step in progress when the error occurred can be completed or choose to cancel the protocol. When changes are made and no subsequent errors are detected, the method completes. Depending on the conditions that caused the error, you will only be provided with appropriate options.", + "resume": "Resume", + "run_paused": "Run paused", + "run_will_resume": "The run will resume from the point at which the error occurred. Take any necessary actions to correct the problem first. If the step is completed successfully, the protocol continues.", + "stand_back": "Stand back, robot is in motion", + "stand_back_resuming": "Stand back, resuming current step", + "view_recovery_options": "View recovery options" } diff --git a/app/src/assets/localization/en/protocol_setup.json b/app/src/assets/localization/en/protocol_setup.json index 21a05f2c228..9406bbe16f5 100644 --- a/app/src/assets/localization/en/protocol_setup.json +++ b/app/src/assets/localization/en/protocol_setup.json @@ -39,7 +39,7 @@ "calibration_status": "calibration status", "calibration": "Calibration", "cancel_and_restart_to_edit": "Cancel the run and restart setup to edit", - "cancel_protocol_and_edit_deck_config": "Cancel protocol and edit deck configuration", + "exit_to_deck_configuration": "Exit to deck configuration", "choose_enum": "Choose {{displayName}}", "closing": "Closing...", "complete_setup_before_proceeding": "complete setup before continuing run", @@ -197,6 +197,7 @@ "pipette_offset_cal_description": "This measures a pipette’s X, Y and Z values in relation to the pipette mount and the deck. Pipette Offset Calibration relies on Deck Calibration and Tip Length Calibration. ", "pipette_offset_cal": "Pipette Offset Calibration", "placement": "Placement", + "plug_in_module_to_configure": "Plug in a {{module}} to add it to the slot", "plug_in_required_module_plural": "Plug in and power up the required modules to continue", "plug_in_required_module": "Plug in and power up the required module to continue", "prepare_to_run": "Prepare to run", @@ -250,7 +251,8 @@ "slot_number": "Slot Number", "status": "Status", "step": "STEP {{index}}", - "there_are_no_unconfigured_modules": "There are no un-configured {{module}} connected to the robot. Plug one in or remove an existing {{module}}, move it to the right place, and update the deck configuration.", + "there_are_no_unconfigured_modules": "No {{module}} is connected. Attach one and place it in {{slot}}", + "there_are_other_configured_modules": "A {{module}} is already configured in a different slot. Exit run setup and update your deck configuration to move to an already connected module. Or attach another {{module}} to continue setup.", "tip_length_cal_description_bullet": "Perform Tip Length Calibration for each new tip type used on a pipette.", "tip_length_cal_description": "This measures the Z distance between the bottom of the tip and the pipette’s nozzle. If you redo the tip length calibration for the tip you used to calibrate a pipette, you will also have to redo that Pipette Offset Calibration.", "tip_length_cal_title": "Tip Length Calibration", diff --git a/app/src/assets/localization/en/quick_transfer.json b/app/src/assets/localization/en/quick_transfer.json index b0e9e294dc4..d03c15d2b1b 100644 --- a/app/src/assets/localization/en/quick_transfer.json +++ b/app/src/assets/localization/en/quick_transfer.json @@ -1,8 +1,14 @@ { + "all": "All labware", + "aspirate_volume": "Aspirate volume per well (µL)", "create_new_transfer": "Create new quick transfer", "left_mount": "Left Mount", "both_mounts": "Left + Right Mount", + "dispense_volume": "Dispense volume per well (µL)", + "exit_quick_transfer": "Exit quick transfer?", + "lose_all_progress": "You will lose all progress on this quick transfer.", "right_mount": "Right Mount", + "reservoir": "Reservoirs", "select_attached_pipette": "Select attached pipette", "select_dest_labware": "Select destination labware", "select_dest_wells": "Select destination wells", @@ -12,10 +18,15 @@ "set_aspirate_volume": "Set aspirate volume", "set_dispense_volume": "Set dispense volume", "set_transfer_volume": "Set transfer volume", + "source_labware": "Source labware in D2", "use_deck_slots": "Quick transfers use deck slots B2-D2. These slots hold a tip rack, a source labware, and a destination labware.Make sure that your deck configuration is up to date to avoid collisions.", "tip_rack": "Tip rack", + "tubeRack": "Tube racks", + "volume_per_well": "Volume per well (µL)", + "value_out_of_range": "Value must be between {{min}}-{{max}}", "labware": "Labware", "pipette_currently_attached": "Quick transfer options depend on the pipettes currently attached to your robot.", + "wellPlate": "Well plates", "well_selection": "Well selection", "well_ratio": "Quick transfers with multiple source wells can either be one-to-one (select {{wells}} for this transfer) or consolidate (select 1 destination well)." } diff --git a/app/src/assets/localization/en/shared.json b/app/src/assets/localization/en/shared.json index fe1a9bb21e6..5613508b242 100644 --- a/app/src/assets/localization/en/shared.json +++ b/app/src/assets/localization/en/shared.json @@ -36,7 +36,6 @@ "get_started": "Get started", "github": "GitHub", "go_back": "Go back", - "help_us_improve_send_error_report": "Help us improve your experience by sending an error report to {{support_email}}", "instruments": "instruments", "loading": "Loading...", "next": "Next", diff --git a/app/src/atoms/InputField/InputField.stories.tsx b/app/src/atoms/InputField/InputField.stories.tsx index 9a19201e3b9..677c6c1b048 100644 --- a/app/src/atoms/InputField/InputField.stories.tsx +++ b/app/src/atoms/InputField/InputField.stories.tsx @@ -1,32 +1,78 @@ import * as React from 'react' -import { InputField } from './index' -import type { Story, Meta } from '@storybook/react' +import { + DIRECTION_COLUMN, + Flex, + SPACING, + StyledText, + VIEWPORT, +} from '@opentrons/components' +import { InputField as InputFieldComponent } from './index' +import type { Meta, StoryObj } from '@storybook/react' -export default { +const meta: Meta = { + // ToDo (kk05/02/2024) this should be in Library but at this moment there is the same name component in components + // The unification for this component will be done when the old component is retired completely. title: 'App/Atoms/InputField', - component: InputField, -} as Meta + component: InputFieldComponent, + parameters: VIEWPORT.touchScreenViewport, + argTypes: { + units: { + control: { + type: 'boolean', + }, + }, + }, +} + +export default meta +type Story = StoryObj -const Template: Story> = args => ( - -) +export const InputField: Story = args => { + const [value, setValue] = React.useState(args.value) + return ( + + {'Input title'} + ) => { + setValue(e.target.value) + }} + units={args.units ? 'rem' : undefined} + /> + + ) +} -export const Primary = Template.bind({}) -Primary.args = { +InputField.args = { value: 200, - units: 'rpm', type: 'number', caption: 'example caption', max: 200, - min: 200, + min: 10, } -export const ErrorMessage = Template.bind({}) -ErrorMessage.args = { - units: 'C', +export const InputFieldWithError: Story = args => { + const [value, setValue] = React.useState(args.value) + return ( + + ) => { + setValue(e.target.value) + }} + units={args.type !== 'number' ? undefined : args.units} + /> + + ) +} + +InputFieldWithError.args = { type: 'number', caption: 'example caption', - max: 10, + max: 200, min: 10, - error: 'input does not equal 10', + error: 'input is not in the range', } diff --git a/app/src/atoms/InputField/index.tsx b/app/src/atoms/InputField/index.tsx index 9be59bf1903..1177eddc494 100644 --- a/app/src/atoms/InputField/index.tsx +++ b/app/src/atoms/InputField/index.tsx @@ -99,6 +99,7 @@ function Input(props: InputFieldProps): JSX.Element { size = 'small', title, tooltipText, + tabIndex = 0, ...inputProps } = props const hasError = props.error != null @@ -150,10 +151,9 @@ function Input(props: InputFieldProps): JSX.Element { } &:focus-visible { - border: 1px ${BORDERS.styleSolid} - ${hasError ? COLORS.red50 : COLORS.grey60}; + border: 1px ${BORDERS.styleSolid} ${COLORS.grey55}; outline: 2px ${BORDERS.styleSolid} ${COLORS.blue50}; - outline-offset: 3px; + outline-offset: 2px; } &:focus-within { @@ -268,6 +268,7 @@ function Input(props: InputFieldProps): JSX.Element { ) : null} { diff --git a/app/src/atoms/MenuList/DropdownMenu.tsx b/app/src/atoms/MenuList/DropdownMenu.tsx index ec383bf0ead..5d9d82d7d7f 100644 --- a/app/src/atoms/MenuList/DropdownMenu.tsx +++ b/app/src/atoms/MenuList/DropdownMenu.tsx @@ -28,14 +28,24 @@ export interface DropdownOption { export type DropdownBorder = 'rounded' | 'neutral' export interface DropdownMenuProps { + /** dropdown options */ filterOptions: DropdownOption[] + /** click handler */ onClick: (value: string) => void + /** current selected option */ currentOption: DropdownOption + /** dropdown */ width?: string + /** dropdown style type */ dropdownType?: DropdownBorder + /** dropdown title */ title?: string + /** dropdown item caption */ caption?: string | null + /** text for tooltip */ tooltipText?: string + /** html tabindex property */ + tabIndex?: number } // TODO: (smb: 4/15/22) refactor this to use html select for accessibility @@ -50,6 +60,7 @@ export function DropdownMenu(props: DropdownMenuProps): JSX.Element { title, caption, tooltipText, + tabIndex = 0, } = props const [targetProps, tooltipProps] = useHoverTooltip() const [showDropdownMenu, setShowDropdownMenu] = React.useState(false) @@ -130,6 +141,7 @@ export function DropdownMenu(props: DropdownMenuProps): JSX.Element { toggleSetShowDropdownMenu() }} css={DROPDOWN_STYLE} + tabIndex={tabIndex} > - {source != null ? ( + {source != null && !isOEMMode ? ( {secondaryButtonProps != null ? ( - + ) : null} handleSelectProtocol(storedProtocol)} > - - {!missingAnalysisData ? ( + {!missingAnalysisData ? ( + - ) : null} - + + ) : ( + + )} - - {t('parameters')} - + {hasRunTimeParameters ? ( + + {t('parameters')} + + ) : null} {hasRunTimeParameters ? ( {hasCustomRunTimeParameterValues diff --git a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/ChooseModuleToConfigureModal.tsx b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/ChooseModuleToConfigureModal.tsx index b7b28d53f76..a2c967ac2a8 100644 --- a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/ChooseModuleToConfigureModal.tsx +++ b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/ChooseModuleToConfigureModal.tsx @@ -5,12 +5,16 @@ import { useHistory } from 'react-router-dom' import { useModulesQuery } from '@opentrons/react-api-client' import { ALIGN_CENTER, + BORDERS, + COLORS, DIRECTION_COLUMN, DIRECTION_ROW, Flex, - PrimaryButton, + Icon, SPACING, + SecondaryButton, StyledText, + TEXT_ALIGN_CENTER, TYPOGRAPHY, } from '@opentrons/components' import { @@ -28,6 +32,7 @@ import { SmallButton } from '../../../../atoms/buttons' import { useCloseCurrentRun } from '../../../ProtocolUpload/hooks' import type { ModuleModel, DeckDefinition } from '@opentrons/shared-data' +import type { AttachedModule } from '@opentrons/api-client' const EQUIPMENT_POLL_MS = 5000 interface ModuleFixtureOption { @@ -58,19 +63,23 @@ export const ChooseModuleToConfigureModal = ( displaySlotName, } = props const { t } = useTranslation(['protocol_setup', 'shared']) - const history = useHistory() - const { closeCurrentRun } = useCloseCurrentRun() const attachedModules = useModulesQuery({ refetchInterval: EQUIPMENT_POLL_MS })?.data?.data ?? [] const deckConfig = useNotifyDeckConfigurationQuery()?.data ?? [] - const unconfiguredModuleMatches = - attachedModules.filter( - attachedMod => - attachedMod.moduleModel === requiredModuleModel && - !deckConfig.some( - ({ opentronsModuleSerialNumber }) => - attachedMod.serialNumber === opentronsModuleSerialNumber - ) + const [configuredModuleMatches, unconfiguredModuleMatches] = + attachedModules.reduce<[AttachedModule[], AttachedModule[]]>( + (acc, attachedMod) => { + if (attachedMod.moduleModel === requiredModuleModel) { + return deckConfig.some( + ({ opentronsModuleSerialNumber }) => + attachedMod.serialNumber === opentronsModuleSerialNumber + ) + ? [[...acc[0], attachedMod], acc[1]] + : [acc[0], [...acc[1], attachedMod]] + } + return acc + }, + [[], []] ) ?? [] const connectedOptions: ModuleFixtureOption[] = unconfiguredModuleMatches.map( @@ -103,31 +112,8 @@ export const ChooseModuleToConfigureModal = ( ) } ) - const handleCancelRun = (): void => { - closeCurrentRun() - } - const handleNavigateToDeviceDetails = (): void => { - history.push(`/devices/${robotName}`) - } - const emptyState = ( - - - {t('there_are_no_unconfigured_modules', { - module: getModuleDisplayName(requiredModuleModel), - })} - - {isOnDevice ? ( - - ) : ( - - {t('update_deck_config')} - - )} - - ) + + const moduleDisplayName = getModuleDisplayName(requiredModuleModel) const contents = fixtureOptions.length > 0 ? ( @@ -138,7 +124,15 @@ export const ChooseModuleToConfigureModal = ( ) : ( - emptyState + ) return createPortal( @@ -153,11 +147,7 @@ export const ChooseModuleToConfigureModal = ( > - + {contents} @@ -195,3 +185,91 @@ export const ChooseModuleToConfigureModal = ( getTopPortalEl() ) } + +interface NoUnconfiguredModulesProps { + moduleDisplayName: string + displaySlotName: string + configuredModuleMatches: AttachedModule[] + isOnDevice: boolean + robotName: string +} +function NoUnconfiguredModules(props: NoUnconfiguredModulesProps): JSX.Element { + const { + moduleDisplayName, + configuredModuleMatches, + displaySlotName, + isOnDevice, + robotName, + } = props + const { t } = useTranslation('protocol_setup') + const history = useHistory() + const { closeCurrentRun } = useCloseCurrentRun() + const handleCancelRun = (): void => { + closeCurrentRun() + } + const handleNavigateToDeviceDetails = (): void => { + history.push(`/devices/${robotName}`) + } + const exitButton = isOnDevice ? ( + + ) : ( + + {t('exit_to_deck_configuration')} + + ) + + const loadingBlock = ( + + + + {t('plug_in_module_to_configure', { module: moduleDisplayName })} + + + ) + return ( + + {configuredModuleMatches.length > 0 ? ( + <> + + {t('there_are_other_configured_modules', { + module: moduleDisplayName, + })} + + {loadingBlock} + {exitButton} + + ) : ( + <> + + {t('there_are_no_unconfigured_modules', { + module: moduleDisplayName, + slot: displaySlotName, + })} + + {loadingBlock} + + )} + + ) +} diff --git a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/SetupFixtureList.tsx b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/SetupFixtureList.tsx index 4f391d29c1d..3e1b2ebdee9 100644 --- a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/SetupFixtureList.tsx +++ b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/SetupFixtureList.tsx @@ -2,6 +2,7 @@ import * as React from 'react' import { css } from 'styled-components' import { useTranslation } from 'react-i18next' import { + ALIGN_FLEX_START, BORDERS, Box, Btn, @@ -16,8 +17,8 @@ import { TYPOGRAPHY, } from '@opentrons/components' import { - FLEX_MODULE_ADDRESSABLE_AREAS, FLEX_ROBOT_TYPE, + FLEX_USB_MODULE_ADDRESSABLE_AREAS, SINGLE_SLOT_FIXTURES, getCutoutDisplayName, getDeckDefFromRobotType, @@ -49,9 +50,12 @@ export const SetupFixtureList = (props: SetupFixtureListProps): JSX.Element => { return ( <> {deckConfigCompatibility.map(cutoutConfigAndCompatibility => { - return cutoutConfigAndCompatibility.requiredAddressableAreas.some(raa => - FLEX_MODULE_ADDRESSABLE_AREAS.includes(raa) - ) ? null : ( // don't list modules here, they're covered by SetupModuleList + // filter out all fixtures that only provide usb module addressable areas + // (i.e. everything but MagBlockV1 and StagingAreaWithMagBlockV1) + // as they're handled in the Modules Table + return cutoutConfigAndCompatibility.requiredAddressableAreas.every( + raa => FLEX_USB_MODULE_ADDRESSABLE_AREAS.includes(raa) + ) ? null : ( ) : null} - + { moduleId, conflictedFixture, }) => { + // filter out the magnetic block here, because it is handled by the SetupFixturesList + if (moduleDef.moduleType === MAGNETIC_BLOCK_TYPE) return null return ( { fireEvent.click(screen.getByRole('button', { name: 'Resolve' })) screen.getByText('mock not configured modal') }) + it('should render a magnetic block with a conflicted fixture', () => { + props = { + deckConfigCompatibility: [ + { + cutoutId: 'cutoutD3', + cutoutFixtureId: MAGNETIC_BLOCK_V1_FIXTURE, + requiredAddressableAreas: [MAGNETIC_BLOCK_D3_ADDRESSABLE_AREA, 'D4'], + compatibleCutoutFixtureIds: [ + STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE, + ], + missingLabwareDisplayName: null, + }, + ], + robotName: 'otie', + } + render(props) + screen.getByText('Location conflict') + screen.getByText('Magnetic Block GEN1 with staging area slot') + fireEvent.click(screen.getByRole('button', { name: 'Resolve' })) + screen.getByText('mock location conflict modal') + }) }) diff --git a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/__tests__/SetupModulesList.test.tsx b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/__tests__/SetupModulesList.test.tsx index b784e25d0c9..ca35acee669 100644 --- a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/__tests__/SetupModulesList.test.tsx +++ b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/__tests__/SetupModulesList.test.tsx @@ -3,16 +3,11 @@ import { when } from 'vitest-when' import { fireEvent, screen, waitFor } from '@testing-library/react' import { describe, it, beforeEach, expect, vi } from 'vitest' import { renderWithProviders } from '../../../../../__testing-utils__' -import { - FLEX_ROBOT_TYPE, - OT2_ROBOT_TYPE, - STAGING_AREA_RIGHT_SLOT_FIXTURE, -} from '@opentrons/shared-data' +import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' import { i18n } from '../../../../../i18n' import { mockMagneticModule as mockMagneticModuleFixture, mockHeaterShaker, - mockMagneticBlock, } from '../../../../../redux/modules/__fixtures__/index' import { mockMagneticModuleGen2, @@ -411,36 +406,4 @@ describe('SetupModulesList', () => { fireEvent.click(moduleSetup) screen.getByText('mockModuleSetupModal') }) - it('should render a magnetic block with a conflicted fixture', () => { - when(useIsFlex).calledWith(ROBOT_NAME).thenReturn(true) - vi.mocked(useModuleRenderInfoForProtocolById).mockReturnValue({ - [mockMagneticBlock.id]: { - moduleId: mockMagneticBlock.id, - x: MOCK_MAGNETIC_MODULE_COORDS[0], - y: MOCK_MAGNETIC_MODULE_COORDS[1], - z: MOCK_MAGNETIC_MODULE_COORDS[2], - moduleDef: { - id: 'magneticBlock_id', - model: mockMagneticBlock.moduleModel, - moduleType: mockMagneticBlock.moduleType, - displayName: mockMagneticBlock.displayName, - }, - nestedLabwareDef: null, - nestedLabwareId: null, - protocolLoadOrder: 0, - slotName: 'B3', - attachedModuleMatch: null, - conflictedFixture: { - cutoutId: 'cutoutB3', - cutoutFixtureId: STAGING_AREA_RIGHT_SLOT_FIXTURE, - }, - }, - } as any) - render(props) - screen.getByText('No USB connection required') - screen.getByText('Location conflict') - screen.getByText('Magnetic Block GEN1') - fireEvent.click(screen.getByRole('button', { name: 'Resolve' })) - screen.getByText('mock location conflict modal') - }) }) diff --git a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/utils.ts b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/utils.ts index b0702fccdf9..c5ac5c7984e 100644 --- a/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/utils.ts +++ b/app/src/organisms/Devices/ProtocolRun/SetupModuleAndDeck/utils.ts @@ -2,6 +2,7 @@ import { HEATERSHAKER_MODULE_V1_FIXTURE, MAGNETIC_BLOCK_V1_FIXTURE, STAGING_AREA_RIGHT_SLOT_FIXTURE, + STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE, TEMPERATURE_MODULE_V2_FIXTURE, THERMOCYCLER_V2_FRONT_FIXTURE, THERMOCYCLER_V2_REAR_FIXTURE, @@ -16,6 +17,7 @@ import thermoModuleGen1 from '../../../../assets/images/thermocycler_closed.png' import heaterShakerModule from '../../../../assets/images/heater_shaker_module_transparent.png' import thermoModuleGen2 from '../../../../assets/images/thermocycler_gen_2_closed.png' import magneticBlockGen1 from '../../../../assets/images/magnetic_block_gen_1.png' +import stagingAreaMagneticBlockGen1 from '../../../../assets/images/staging_area_magnetic_block_gen_1.png' import trashBin from '../../../../assets/images/flex_trash_bin.png' import stagingArea from '../../../../assets/images/staging_area_slot.png' import wasteChute from '../../../../assets/images/waste_chute.png' @@ -63,6 +65,10 @@ export function getFixtureImage(cutoutFixtureId: CutoutFixtureId): string { return temperatureModule } else if (cutoutFixtureId === MAGNETIC_BLOCK_V1_FIXTURE) { return magneticBlockGen1 + } else if ( + cutoutFixtureId === STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE + ) { + return stagingAreaMagneticBlockGen1 } else { return 'Error: unknown fixture' } diff --git a/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunRuntimeParameters.test.tsx b/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunRuntimeParameters.test.tsx index 4be025a491e..e2398fb084c 100644 --- a/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunRuntimeParameters.test.tsx +++ b/app/src/organisms/Devices/ProtocolRun/__tests__/ProtocolRunRuntimeParameters.test.tsx @@ -169,7 +169,7 @@ describe('ProtocolRunRuntimeParameters', () => { runTimeParameters: [] as RunTimeParameter[], } as CompletedProtocolAnalysis) render(props) - screen.getByText('Parameters') + expect(screen.queryByText('Parameters')).not.toBeInTheDocument() expect(screen.queryByText('Default values')).not.toBeInTheDocument() screen.getByText('mock InfoScreen') }) diff --git a/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettesFromInstrumentsQuery.test.ts b/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettesFromInstrumentsQuery.test.ts index 973e4837921..fbb72456a56 100644 --- a/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettesFromInstrumentsQuery.test.ts +++ b/app/src/organisms/Devices/hooks/__tests__/useAttachedPipettesFromInstrumentsQuery.test.ts @@ -1,16 +1,22 @@ import * as React from 'react' -import { vi, it, expect, describe } from 'vitest' +import { vi, it, expect, describe, beforeEach } from 'vitest' import { renderHook } from '@testing-library/react' import { useInstrumentsQuery } from '@opentrons/react-api-client' import { instrumentsResponseLeftPipetteFixture, instrumentsResponseRightPipetteFixture, } from '@opentrons/api-client' +import { useIsOEMMode } from '../../../../resources/robot-settings/hooks' import { useAttachedPipettesFromInstrumentsQuery } from '..' vi.mock('@opentrons/react-api-client') +vi.mock('../../../../resources/robot-settings/hooks') describe('useAttachedPipettesFromInstrumentsQuery hook', () => { + beforeEach(() => { + vi.mocked(useIsOEMMode).mockReturnValue(false) + }) + let wrapper: React.FunctionComponent<{ children: React.ReactNode }> it('returns attached pipettes', () => { vi.mocked(useInstrumentsQuery).mockReturnValue({ diff --git a/app/src/organisms/Devices/hooks/useAttachedPipettesFromInstrumentsQuery.ts b/app/src/organisms/Devices/hooks/useAttachedPipettesFromInstrumentsQuery.ts index 770d71042fc..20427a60fbd 100644 --- a/app/src/organisms/Devices/hooks/useAttachedPipettesFromInstrumentsQuery.ts +++ b/app/src/organisms/Devices/hooks/useAttachedPipettesFromInstrumentsQuery.ts @@ -1,7 +1,10 @@ import { useInstrumentsQuery } from '@opentrons/react-api-client' -import { getPipetteModelSpecs, PipetteModel } from '@opentrons/shared-data' +import { LEFT, RIGHT } from '@opentrons/shared-data' +import { usePipetteModelSpecs } from '../../../resources/instruments/hooks' + import type { PipetteData } from '@opentrons/api-client' import type { Mount } from '@opentrons/components' +import type { PipetteModel } from '@opentrons/shared-data' export interface PipetteInformation extends PipetteData { displayName: string @@ -9,27 +12,32 @@ export interface PipetteInformation extends PipetteData { export type AttachedPipettesFromInstrumentsQuery = { [mount in Mount]: null | PipetteInformation } - export function useAttachedPipettesFromInstrumentsQuery(): AttachedPipettesFromInstrumentsQuery { - const { data: attachedInstruments } = useInstrumentsQuery() - return (attachedInstruments?.data ?? []).reduce( - (acc, instrumentData) => { - if (instrumentData.instrumentType !== 'pipette' || !instrumentData.ok) { - return acc - } - const { mount, instrumentModel } = instrumentData - return { - ...acc, - [mount as Mount]: { - ...instrumentData, - displayName: - instrumentModel != null - ? getPipetteModelSpecs(instrumentModel as PipetteModel) - ?.displayName ?? '' - : '', - }, - } - }, - { left: null, right: null } + const attachedInstruments = useInstrumentsQuery()?.data?.data ?? [] + + const okPipettes = attachedInstruments.filter( + (instrument): instrument is PipetteData => + instrument.instrumentType === 'pipette' && instrument.ok ) + + const leftPipette = okPipettes.find(({ mount }) => mount === LEFT) ?? null + const rightPipette = okPipettes.find(({ mount }) => mount === RIGHT) ?? null + + const leftDisplayName = + usePipetteModelSpecs(leftPipette?.instrumentModel as PipetteModel) + ?.displayName ?? '' + const rightDisplayName = + usePipetteModelSpecs(rightPipette?.instrumentModel as PipetteModel) + ?.displayName ?? '' + + return { + [LEFT]: + leftPipette != null + ? { ...leftPipette, displayName: leftDisplayName } + : null, + [RIGHT]: + rightPipette != null + ? { ...rightPipette, displayName: rightDisplayName } + : null, + } } diff --git a/app/src/organisms/Devices/hooks/useLastRunCommandKey.ts b/app/src/organisms/Devices/hooks/useLastRunCommand.ts similarity index 84% rename from app/src/organisms/Devices/hooks/useLastRunCommandKey.ts rename to app/src/organisms/Devices/hooks/useLastRunCommand.ts index b51160abf2d..347532abd36 100644 --- a/app/src/organisms/Devices/hooks/useLastRunCommandKey.ts +++ b/app/src/organisms/Devices/hooks/useLastRunCommand.ts @@ -12,7 +12,7 @@ import { } from '@opentrons/api-client' import type { UseQueryOptions } from 'react-query' -import type { CommandsData } from '@opentrons/api-client' +import type { CommandsData, RunCommandSummary } from '@opentrons/api-client' const LIVE_RUN_STATUSES = [ RUN_STATUS_IDLE, @@ -26,10 +26,10 @@ const LIVE_RUN_STATUSES = [ ] const LIVE_RUN_COMMANDS_POLL_MS = 3000 -export function useLastRunCommandKey( +export function useLastRunCommand( runId: string, options: UseQueryOptions = {} -): string | null { +): RunCommandSummary | null { const runStatus = useRunStatus(runId) const { data: commandsData } = useAllCommandsQuery( runId, @@ -44,8 +44,6 @@ export function useLastRunCommandKey( ) return commandsData?.data?.[0]?.intent !== 'setup' - ? commandsData?.links?.current?.meta?.key ?? - commandsData?.data?.[0]?.key ?? - null + ? commandsData?.data?.[0] ?? null : null } diff --git a/app/src/organisms/DropTipWizard/__tests__/TipsAttachedModal.test.tsx b/app/src/organisms/DropTipWizard/__tests__/TipsAttachedModal.test.tsx index 34540b1c516..dfd82df19c0 100644 --- a/app/src/organisms/DropTipWizard/__tests__/TipsAttachedModal.test.tsx +++ b/app/src/organisms/DropTipWizard/__tests__/TipsAttachedModal.test.tsx @@ -10,13 +10,12 @@ import { handleTipsAttachedModal } from '../TipsAttachedModal' import { LEFT } from '@opentrons/shared-data' import { mockPipetteInfo } from '../../../redux/pipettes/__fixtures__' import { ROBOT_MODEL_OT3 } from '../../../redux/discovery' -import { useNotifyCurrentMaintenanceRun } from '../../../resources/maintenance_runs' +import { useCloseCurrentRun } from '../../ProtocolUpload/hooks' import type { PipetteModelSpecs } from '@opentrons/shared-data' import type { HostConfig } from '@opentrons/api-client' -vi.mock('../../../resources/maintenance_runs') -vi.mock('../../../resources/useNotifyService') +vi.mock('../../ProtocolUpload/hooks') const MOCK_ACTUAL_PIPETTE = { ...mockPipetteInfo.pipetteSpecs, @@ -53,12 +52,8 @@ const render = (pipetteSpecs: PipetteModelSpecs) => { describe('TipsAttachedModal', () => { beforeEach(() => { - vi.mocked(useNotifyCurrentMaintenanceRun).mockReturnValue({ - data: { - data: { - id: 'test', - }, - }, + vi.mocked(useCloseCurrentRun).mockReturnValue({ + closeCurrentRun: vi.fn(), } as any) }) diff --git a/app/src/organisms/ErrorRecoveryFlows/BeforeBeginning.tsx b/app/src/organisms/ErrorRecoveryFlows/BeforeBeginning.tsx new file mode 100644 index 00000000000..02c8ecc4ba7 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/BeforeBeginning.tsx @@ -0,0 +1,60 @@ +import * as React from 'react' +import { Trans, useTranslation } from 'react-i18next' + +import { + DIRECTION_COLUMN, + Flex, + JUSTIFY_SPACE_BETWEEN, + SPACING, + JUSTIFY_CENTER, + StyledText, +} from '@opentrons/components' + +import { SmallButton } from '../../atoms/buttons' +import { + NON_SANCTIONED_RECOVERY_COLOR_STYLE_PRIMARY, + BODY_TEXT_STYLE, + ODD_SECTION_TITLE_STYLE, +} from './constants' + +import type { RecoveryContentProps } from './types' + +export function BeforeBeginning({ + isOnDevice, + routeUpdateActions, +}: RecoveryContentProps): JSX.Element | null { + const { t } = useTranslation('error_recovery') + const { proceedNextStep } = routeUpdateActions + + if (isOnDevice) { + return ( + + + + {t('before_you_begin')} + + }} + /> + + + + ) + } else { + return null + } +} diff --git a/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryHeader.tsx b/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryHeader.tsx new file mode 100644 index 00000000000..0c501149b82 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/ErrorRecoveryHeader.tsx @@ -0,0 +1,90 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' +import { css } from 'styled-components' + +import { + Box, + DIRECTION_ROW, + BORDERS, + ALIGN_CENTER, + Flex, + JUSTIFY_SPACE_BETWEEN, + TYPOGRAPHY, + COLORS, + SPACING, + RESPONSIVENESS, + StyledText, + Icon, +} from '@opentrons/components' + +import { useErrorName } from './utils' +import { NON_DESIGN_SANCTIONED_COLOR_1 } from './constants' + +import type { ErrorKind } from './types' + +interface ErrorRecoveryHeaderProps { + errorKind: ErrorKind +} +export function ErrorRecoveryHeader({ + errorKind, +}: ErrorRecoveryHeaderProps): JSX.Element { + const { t } = useTranslation('error_recovery') + const errorName = useErrorName(errorKind) + + return ( + + + + {t('recovery_mode')} + + + {errorName} + + + + + ) +} + +function AlertHeaderIcon(): JSX.Element { + return ( + + ) +} + +const BOX_STYLE = css` + background-color: ${NON_DESIGN_SANCTIONED_COLOR_1}; + @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { + border-radius: ${BORDERS.borderRadius12} ${BORDERS.borderRadius12} 0 0; + } +` +const HEADER_CONTAINER_STYLE = css` + flex-direction: ${DIRECTION_ROW}; + justify-content: ${JUSTIFY_SPACE_BETWEEN}; + padding: ${SPACING.spacing16} ${SPACING.spacing32}; + @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { + padding: 1.75rem ${SPACING.spacing32}; + } +` +const HEADER_TEXT_STYLE = css` + ${TYPOGRAPHY.pSemiBold} + color: ${COLORS.white}; + cursor: default; + + @media ${RESPONSIVENESS.touchscreenMediaQuerySpecs} { + font-size: ${TYPOGRAPHY.fontSize22}; + font-weight: ${TYPOGRAPHY.fontWeightBold}; + line-height: ${TYPOGRAPHY.lineHeight28}; + } +` diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryInProgress.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryInProgress.tsx new file mode 100644 index 00000000000..a30d8dd2f0a --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryInProgress.tsx @@ -0,0 +1,30 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' + +import { InProgressModal } from '../../molecules/InProgressModal/InProgressModal' +import { RECOVERY_MAP } from './constants' + +import type { RobotMovingRoute, RecoveryContentProps } from './types' + +export function RecoveryInProgress({ + recoveryMap, +}: RecoveryContentProps): JSX.Element { + const { ROBOT_IN_MOTION, ROBOT_RESUMING } = RECOVERY_MAP + const { t } = useTranslation('error_recovery') + const { route } = recoveryMap + + const buildDescription = (): RobotMovingRoute => { + switch (route) { + case ROBOT_IN_MOTION.ROUTE: + return t('stand_back') + case ROBOT_RESUMING.ROUTE: + return t('stand_back_resuming') + default: + return t('stand_back') + } + } + + const description = buildDescription() + + return +} diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ResumeRun.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ResumeRun.tsx new file mode 100644 index 00000000000..982e1a01129 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/ResumeRun.tsx @@ -0,0 +1,62 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' + +import { + ALIGN_CENTER, + DIRECTION_COLUMN, + Flex, + Icon, + JUSTIFY_SPACE_BETWEEN, + SPACING, + StyledText, +} from '@opentrons/components' + +import { RecoveryFooterButtons } from './shared' + +import type { RecoveryContentProps } from '../types' + +export function ResumeRun({ + isOnDevice, + onComplete, + routeUpdateActions, +}: RecoveryContentProps): JSX.Element | null { + const { t } = useTranslation('error_recovery') + const { goBackPrevStep } = routeUpdateActions + + if (isOnDevice) { + return ( + + + + + {t('are_you_sure_you_want_to_resume')} + + + {t('run_will_resume')} + + + + + ) + } else { + return null + } +} diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx new file mode 100644 index 00000000000..7399118ad80 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/SelectRecoveryOption.tsx @@ -0,0 +1,118 @@ +import * as React from 'react' +import head from 'lodash/head' +import { useTranslation } from 'react-i18next' + +import { + DIRECTION_COLUMN, + Flex, + JUSTIFY_SPACE_BETWEEN, + SPACING, + StyledText, +} from '@opentrons/components' + +import { + RECOVERY_MAP, + ERROR_KINDS, + ODD_SECTION_TITLE_STYLE, +} from '../constants' +import { RadioButton } from '../../../atoms/buttons' +import { RecoveryFooterButtons } from './shared' + +import type { ErrorKind, RecoveryContentProps, RecoveryRoute } from '../types' + +// The "home" screen within Error Recovery. When a user completes a non-terminal flow or presses "Go back" enough +// to escape the boundaries of a route, they will be redirected here. +export function SelectRecoveryOption({ + isOnDevice, + errorKind, + routeUpdateActions, +}: RecoveryContentProps): JSX.Element | null { + const { t } = useTranslation('error_recovery') + const { proceedToRoute } = routeUpdateActions + const validRecoveryOptions = getRecoveryOptions(errorKind) + const [selectedRoute, setSelectedRoute] = React.useState( + head(validRecoveryOptions) as RecoveryRoute + ) + + if (isOnDevice) { + return ( + + + {t('how_do_you_want_to_proceed')} + + + + + + proceedToRoute(selectedRoute as RecoveryRoute) + } + secondaryBtnOnClick={() => + proceedToRoute(RECOVERY_MAP.BEFORE_BEGINNING.ROUTE) + } + /> + + ) + } else { + return null + } +} + +interface RecoveryOptionsProps { + validRecoveryOptions: RecoveryRoute[] + setSelectedRoute: (route: RecoveryRoute) => void + selectedRoute?: RecoveryRoute +} +export function RecoveryOptions({ + validRecoveryOptions, + selectedRoute, + setSelectedRoute, +}: RecoveryOptionsProps): JSX.Element[] { + const { t } = useTranslation('error_recovery') + + return validRecoveryOptions.map((recoveryOption: RecoveryRoute) => { + const buildOptionName = (): string => { + switch (recoveryOption) { + case RECOVERY_MAP.RESUME.ROUTE: + return t('resume') + case RECOVERY_MAP.CANCEL_RUN.ROUTE: + return t('cancel_run') + default: + return 'INVALID_OPTION' + } + } + const optionName = buildOptionName() + + return ( + setSelectedRoute(recoveryOption)} + isSelected={recoveryOption === selectedRoute} + /> + ) + }) +} + +export function getRecoveryOptions(errorKind: ErrorKind): RecoveryRoute[] { + switch (errorKind) { + case ERROR_KINDS.GENERAL_ERROR: + return GENERAL_ERROR_OPTIONS + } +} + +export const GENERAL_ERROR_OPTIONS: RecoveryRoute[] = [ + RECOVERY_MAP.RESUME.ROUTE, + RECOVERY_MAP.CANCEL_RUN.ROUTE, +] diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/ResumeRun.test.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/ResumeRun.test.tsx new file mode 100644 index 00000000000..ca7d83e297d --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/ResumeRun.test.tsx @@ -0,0 +1,58 @@ +import * as React from 'react' +import { vi, describe, it, expect, beforeEach } from 'vitest' +import { screen, fireEvent } from '@testing-library/react' + +import { renderWithProviders } from '../../../../__testing-utils__' +import { i18n } from '../../../../i18n' +import { ResumeRun } from '../ResumeRun' +import { RECOVERY_MAP, ERROR_KINDS } from '../../constants' + +import type { Mock } from 'vitest' + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +describe('RecoveryFooterButtons', () => { + const { RESUME } = RECOVERY_MAP + let props: React.ComponentProps + let mockOnComplete: Mock + let mockGoBackPrevStep: Mock + + beforeEach(() => { + mockOnComplete = vi.fn() + mockGoBackPrevStep = vi.fn() + const mockRouteUpdateActions = { goBackPrevStep: mockGoBackPrevStep } as any + + props = { + isOnDevice: true, + errorKind: ERROR_KINDS.GENERAL_ERROR, + onComplete: mockOnComplete, + routeUpdateActions: mockRouteUpdateActions, + recoveryMap: { + route: RESUME.ROUTE, + step: RESUME.STEPS.CONFIRM_RESUME, + }, + } + }) + + it('renders appropriate copy and click behavior', () => { + render(props) + + screen.getByText('Are you sure you want to resume?') + screen.queryByText( + 'The run will resume from the point at which the error occurred.' + ) + + const primaryBtn = screen.getByRole('button', { name: 'Confirm' }) + const secondaryBtn = screen.getByRole('button', { name: 'Go back' }) + + fireEvent.click(primaryBtn) + fireEvent.click(secondaryBtn) + + expect(mockOnComplete).toHaveBeenCalled() + expect(mockGoBackPrevStep).toHaveBeenCalled() + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/SelectRecoveryOptions.test.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/SelectRecoveryOptions.test.tsx new file mode 100644 index 00000000000..81e47d85dac --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/__tests__/SelectRecoveryOptions.test.tsx @@ -0,0 +1,115 @@ +import * as React from 'react' +import { vi, describe, it, expect, beforeEach } from 'vitest' +import { screen, fireEvent } from '@testing-library/react' + +import { renderWithProviders } from '../../../../__testing-utils__' +import { i18n } from '../../../../i18n' +import { + SelectRecoveryOption, + RecoveryOptions, + getRecoveryOptions, + GENERAL_ERROR_OPTIONS, +} from '../SelectRecoveryOption' +import { RECOVERY_MAP, ERROR_KINDS } from '../../constants' + +import type { Mock } from 'vitest' + +const renderSelectRecoveryOption = ( + props: React.ComponentProps +) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +const renderRecoveryOptions = ( + props: React.ComponentProps +) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +describe('SelectRecoveryOption', () => { + const { RESUME } = RECOVERY_MAP + let props: React.ComponentProps + let mockProceedToRoute: Mock + + beforeEach(() => { + mockProceedToRoute = vi.fn() + const mockRouteUpdateActions = { proceedToRoute: mockProceedToRoute } as any + + props = { + isOnDevice: true, + errorKind: ERROR_KINDS.GENERAL_ERROR, + onComplete: vi.fn(), + routeUpdateActions: mockRouteUpdateActions, + recoveryMap: { + route: RESUME.ROUTE, + step: RESUME.STEPS.CONFIRM_RESUME, + }, + } + }) + + it('renders appropriate general copy and click behavior', () => { + renderSelectRecoveryOption(props) + + screen.getByText('How do you want to proceed?') + + const resumeOptionRadioLabel = screen.getByRole('label', { name: 'Resume' }) + const primaryBtn = screen.getByRole('button', { name: 'Continue' }) + const secondaryBtn = screen.getByRole('button', { name: 'Go back' }) + + fireEvent.click(resumeOptionRadioLabel) + fireEvent.click(primaryBtn) + + expect(mockProceedToRoute).toHaveBeenCalledWith(RESUME.ROUTE) + + renderSelectRecoveryOption(props) + + fireEvent.click(secondaryBtn) + + expect(mockProceedToRoute).toHaveBeenCalledWith( + RECOVERY_MAP.BEFORE_BEGINNING.ROUTE + ) + }) +}) + +describe('RecoveryOptions', () => { + let props: React.ComponentProps + let mockSetSelectedRoute: Mock + + beforeEach(() => { + mockSetSelectedRoute = vi.fn() + const generalRecoveryOptions = getRecoveryOptions(ERROR_KINDS.GENERAL_ERROR) + + props = { + validRecoveryOptions: generalRecoveryOptions, + setSelectedRoute: mockSetSelectedRoute, + } + }) + + it('renders valid recovery options for a general error errorKind', () => { + renderRecoveryOptions(props) + + screen.getByRole('label', { name: 'Resume' }) + screen.getByRole('label', { name: 'Cancel run' }) + }) + + it('updates the selectedRoute when a new option is selected', () => { + renderRecoveryOptions(props) + + fireEvent.click(screen.getByRole('label', { name: 'Cancel run' })) + + expect(mockSetSelectedRoute).toHaveBeenCalledWith( + RECOVERY_MAP.CANCEL_RUN.ROUTE + ) + }) +}) + +describe('getRecoveryOptions', () => { + it(`returns general error options when the errorKind is ${ERROR_KINDS.GENERAL_ERROR}`, () => { + const generalErrorOptions = getRecoveryOptions(ERROR_KINDS.GENERAL_ERROR) + expect(generalErrorOptions).toBe(GENERAL_ERROR_OPTIONS) + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/index.ts b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/index.ts new file mode 100644 index 00000000000..c39d9e883c6 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/index.ts @@ -0,0 +1,2 @@ +export { SelectRecoveryOption } from './SelectRecoveryOption' +export { ResumeRun } from './ResumeRun' diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/shared/RecoveryFooterButtons.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/shared/RecoveryFooterButtons.tsx new file mode 100644 index 00000000000..64264630c2d --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/shared/RecoveryFooterButtons.tsx @@ -0,0 +1,64 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' + +import { + ALIGN_CENTER, + Flex, + JUSTIFY_CENTER, + JUSTIFY_SPACE_BETWEEN, + SPACING, +} from '@opentrons/components' + +import { SmallButton } from '../../../../atoms/buttons' +import { + NON_SANCTIONED_RECOVERY_COLOR_STYLE_PRIMARY, + NON_SANCTIONED_RECOVERY_COLOR_STYLE_SECONDARY, +} from '../../constants' + +interface RecoveryOptionProps { + isOnDevice: boolean + secondaryBtnOnClick: () => void + primaryBtnOnClick: () => void + primaryBtnTextOverride?: string +} +export function RecoveryFooterButtons({ + isOnDevice, + secondaryBtnOnClick, + primaryBtnOnClick, + primaryBtnTextOverride, +}: RecoveryOptionProps): JSX.Element | null { + const { t } = useTranslation('error_recovery') + + if (isOnDevice) { + return ( + + + + + ) + } else { + return null + } +} diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/shared/__tests__/RecoveryFooterButtons.test.tsx b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/shared/__tests__/RecoveryFooterButtons.test.tsx new file mode 100644 index 00000000000..6933177e22c --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/shared/__tests__/RecoveryFooterButtons.test.tsx @@ -0,0 +1,51 @@ +import * as React from 'react' +import { vi, describe, it, expect, beforeEach } from 'vitest' +import { screen, fireEvent } from '@testing-library/react' + +import { renderWithProviders } from '../../../../../__testing-utils__' +import { i18n } from '../../../../../i18n' +import { RecoveryFooterButtons } from '../RecoveryFooterButtons' + +import type { Mock } from 'vitest' + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +describe('RecoveryFooterButtons', () => { + let props: React.ComponentProps + let mockPrimaryBtnOnClick: Mock + let mockSecondaryBtnOnClick: Mock + + beforeEach(() => { + mockPrimaryBtnOnClick = vi.fn() + mockSecondaryBtnOnClick = vi.fn() + props = { + isOnDevice: true, + primaryBtnOnClick: mockPrimaryBtnOnClick, + secondaryBtnOnClick: mockSecondaryBtnOnClick, + } + }) + + it('renders default button copy and click behavior', () => { + render(props) + + const primaryBtn = screen.getByRole('button', { name: 'Continue' }) + const secondaryBtn = screen.getByRole('button', { name: 'Go back' }) + + fireEvent.click(primaryBtn) + fireEvent.click(secondaryBtn) + + expect(mockPrimaryBtnOnClick).toHaveBeenCalled() + expect(mockSecondaryBtnOnClick).toHaveBeenCalled() + }) + + it('renders alternative button text when supplied', () => { + props = { ...props, primaryBtnTextOverride: 'MOCK_OVERRIDE_TEXT' } + render(props) + + screen.getByRole('button', { name: 'MOCK_OVERRIDE_TEXT' }) + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/shared/index.ts b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/shared/index.ts new file mode 100644 index 00000000000..82d6cdb7120 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/RecoveryOptions/shared/index.ts @@ -0,0 +1 @@ +export { RecoveryFooterButtons } from './RecoveryFooterButtons' diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/BeforeBeginning.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/BeforeBeginning.test.tsx new file mode 100644 index 00000000000..d9e8ed280c5 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/BeforeBeginning.test.tsx @@ -0,0 +1,57 @@ +import * as React from 'react' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { fireEvent, screen } from '@testing-library/react' + +import { renderWithProviders } from '../../../__testing-utils__' +import { i18n } from '../../../i18n' +import { BeforeBeginning } from '../BeforeBeginning' +import { ERROR_KINDS, RECOVERY_MAP } from '../constants' + +import type { Mock } from 'vitest' + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +describe('BeforeBeginning', () => { + const { BEFORE_BEGINNING } = RECOVERY_MAP + let props: React.ComponentProps + let mockProceedNextStep: Mock + + beforeEach(() => { + mockProceedNextStep = vi.fn() + const mockRouteUpdateActions = { + proceedNextStep: mockProceedNextStep, + } as any + + props = { + isOnDevice: true, + errorKind: ERROR_KINDS.GENERAL_ERROR, + onComplete: vi.fn(), + routeUpdateActions: mockRouteUpdateActions, + recoveryMap: { + route: BEFORE_BEGINNING.ROUTE, + step: BEFORE_BEGINNING.STEPS.RECOVERY_DESCRIPTION, + }, + } + }) + + it('renders appropriate copy and click behavior', () => { + render(props) + + screen.getByText('Before you begin') + screen.queryByText( + 'Recovery Mode provides you with guided and manual controls for handling errors at runtime.' + ) + + const primaryBtn = screen.getByRole('button', { + name: 'View recovery options', + }) + + fireEvent.click(primaryBtn) + + expect(mockProceedNextStep).toHaveBeenCalled() + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryFlows.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryFlows.test.tsx new file mode 100644 index 00000000000..93ca813ba37 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryFlows.test.tsx @@ -0,0 +1,114 @@ +import * as React from 'react' +import { vi, describe, it, beforeEach } from 'vitest' +import { screen } from '@testing-library/react' + +import { renderWithProviders } from '../../../__testing-utils__' +import { i18n } from '../../../i18n' +import { ErrorRecoveryContent } from '..' +import { ERROR_KINDS, RECOVERY_MAP } from '../constants' +import { BeforeBeginning } from '../BeforeBeginning' +import { SelectRecoveryOption, ResumeRun } from '../RecoveryOptions' +import { RecoveryInProgress } from '../RecoveryInProgress' + +import type { IRecoveryMap } from '../types' + +vi.mock('../BeforeBeginning') +vi.mock('../RecoveryOptions') +vi.mock('../RecoveryInProgress') + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +describe('ErrorRecoveryContent', () => { + const { + OPTION_SELECTION, + BEFORE_BEGINNING, + RESUME, + ROBOT_RESUMING, + ROBOT_IN_MOTION, + } = RECOVERY_MAP + + let props: React.ComponentProps + const mockRecoveryMap: IRecoveryMap = { + route: OPTION_SELECTION.ROUTE, + step: OPTION_SELECTION.STEPS.SELECT, + } + + beforeEach(() => { + props = { + errorKind: ERROR_KINDS.GENERAL_ERROR, + routeUpdateActions: {} as any, + recoveryMap: mockRecoveryMap, + onComplete: vi.fn(), + isOnDevice: true, + } + + vi.mocked(SelectRecoveryOption).mockReturnValue( +
MOCK_SELECT_RECOVERY_OPTION
+ ) + vi.mocked(BeforeBeginning).mockReturnValue(
MOCK_BEFORE_BEGINNING
) + vi.mocked(ResumeRun).mockReturnValue(
MOCK_RESUME_RUN
) + vi.mocked(RecoveryInProgress).mockReturnValue(
MOCK_IN_PROGRESS
) + }) + + it(`returns SelectRecoveryOption when the route is ${OPTION_SELECTION.ROUTE}`, () => { + render(props) + + screen.getByText('MOCK_SELECT_RECOVERY_OPTION') + }) + + it(`returns BeforeBeginning when the route is ${BEFORE_BEGINNING.ROUTE}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + route: BEFORE_BEGINNING.ROUTE, + }, + } + render(props) + + screen.getByText('MOCK_BEFORE_BEGINNING') + }) + + it(`returns ResumeRun when the route is ${RESUME.ROUTE}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + route: RESUME.ROUTE, + }, + } + render(props) + + screen.getByText('MOCK_RESUME_RUN') + }) + + it(`returns RecoveryInProgressModal when the route is ${ROBOT_IN_MOTION.ROUTE}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + route: ROBOT_IN_MOTION.ROUTE, + }, + } + render(props) + + screen.getByText('MOCK_IN_PROGRESS') + }) + + it(`returns RecoveryInProgressModal when the route is ${ROBOT_RESUMING.ROUTE}`, () => { + props = { + ...props, + recoveryMap: { + ...props.recoveryMap, + route: ROBOT_IN_MOTION.ROUTE, + }, + } + render(props) + + screen.getByText('MOCK_IN_PROGRESS') + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryHeader.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryHeader.test.tsx new file mode 100644 index 00000000000..31e9f596728 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/ErrorRecoveryHeader.test.tsx @@ -0,0 +1,36 @@ +import * as React from 'react' +import { screen } from '@testing-library/react' +import { beforeEach, describe, it } from 'vitest' + +import { renderWithProviders } from '../../../__testing-utils__' +import { i18n } from '../../../i18n' +import { ErrorRecoveryHeader } from '../ErrorRecoveryHeader' +import { ERROR_KINDS } from '../constants' + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +describe('ErrorRecoveryHeader', () => { + let props: React.ComponentProps + + beforeEach(() => { + props = { + errorKind: ERROR_KINDS.GENERAL_ERROR, + } + }) + + it('renders appropriate copy independent of errorKind', () => { + render(props) + + screen.getByText('Recovery Mode') + }) + + it('renders the appropriate header for a general error kind', () => { + render(props) + + screen.getByText('General error') + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryInProgress.test.tsx b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryInProgress.test.tsx new file mode 100644 index 00000000000..2811c2dafad --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/RecoveryInProgress.test.tsx @@ -0,0 +1,51 @@ +import * as React from 'react' +import { beforeEach, describe, it, vi } from 'vitest' +import { screen } from '@testing-library/react' + +import { renderWithProviders } from '../../../__testing-utils__' +import { i18n } from '../../../i18n' +import { RecoveryInProgress } from '../RecoveryInProgress' +import { ERROR_KINDS, RECOVERY_MAP } from '../constants' + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + })[0] +} + +describe('RecoveryInProgress', () => { + const { ROBOT_IN_MOTION, ROBOT_RESUMING } = RECOVERY_MAP + let props: React.ComponentProps + + beforeEach(() => { + props = { + isOnDevice: true, + errorKind: ERROR_KINDS.GENERAL_ERROR, + onComplete: vi.fn(), + routeUpdateActions: vi.fn() as any, + recoveryMap: { + route: ROBOT_IN_MOTION.ROUTE, + step: ROBOT_IN_MOTION.STEPS.IN_MOTION, + }, + } + }) + + it(`renders appropriate copy when the route is ${ROBOT_IN_MOTION.ROUTE}`, () => { + render(props) + + screen.getByText('Stand back, robot is in motion') + }) + + it(`renders appropriate copy when the route is ${ROBOT_RESUMING.ROUTE}`, () => { + props = { + ...props, + recoveryMap: { + route: ROBOT_RESUMING.ROUTE, + step: ROBOT_RESUMING.STEPS.RESUMING, + }, + } + render(props) + + screen.getByText('Stand back, resuming current step') + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/__tests__/utils.test.ts b/app/src/organisms/ErrorRecoveryFlows/__tests__/utils.test.ts new file mode 100644 index 00000000000..29da7e1a213 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/__tests__/utils.test.ts @@ -0,0 +1,137 @@ +import { vi, describe, it, expect, beforeEach } from 'vitest' +import { renderHook } from '@testing-library/react' + +import { ERROR_KINDS, INVALID, RECOVERY_MAP } from '../constants' +import { + getErrorKind, + getRecoveryRouteNavigation, + useRouteUpdateActions, +} from '../utils' + +import type { Mock } from 'vitest' +import type { GetRouteUpdateActionsParams } from '../utils' + +describe('getErrorKind', () => { + it(`returns ${ERROR_KINDS.GENERAL_ERROR} if the errorType isn't handled explicitly`, () => { + const mockErrorType = 'NON_HANDLED_ERROR' + const result = getErrorKind(mockErrorType) + expect(result).toEqual(ERROR_KINDS.GENERAL_ERROR) + }) +}) + +describe('getRecoveryRouteNavigation', () => { + it(`getNextStep and getPrevStep return ${INVALID} if the recovery route does not contain multiple steps`, () => { + const { ROBOT_IN_MOTION } = RECOVERY_MAP + const { getNextStep, getPrevStep } = getRecoveryRouteNavigation( + ROBOT_IN_MOTION.ROUTE + ) + const nextStepResult = getNextStep(ROBOT_IN_MOTION.STEPS.IN_MOTION) + const prevStepResult = getPrevStep(ROBOT_IN_MOTION.STEPS.IN_MOTION) + + expect(nextStepResult).toEqual(INVALID) + expect(prevStepResult).toEqual(INVALID) + }) +}) + +describe('useRouteUpdateActions', () => { + const { OPTION_SELECTION } = RECOVERY_MAP + + let useRouteUpdateActionsParams: GetRouteUpdateActionsParams + let mockSetRecoveryMap: Mock + + beforeEach(() => { + mockSetRecoveryMap = vi.fn() + + useRouteUpdateActionsParams = { + recoveryMap: { + route: RECOVERY_MAP.RESUME.ROUTE, + step: RECOVERY_MAP.RESUME.STEPS.CONFIRM_RESUME, + }, + setRecoveryMap: mockSetRecoveryMap, + } + }) + + it(`routes to ${OPTION_SELECTION.ROUTE} ${OPTION_SELECTION.STEPS.SELECT} if proceedNextStep is called and the next step does not exist`, () => { + const { result } = renderHook(() => + useRouteUpdateActions(useRouteUpdateActionsParams) + ) + const { proceedNextStep } = result.current + + proceedNextStep() + expect(mockSetRecoveryMap).toHaveBeenCalledWith({ + route: OPTION_SELECTION.ROUTE, + step: OPTION_SELECTION.STEPS.SELECT, + }) + }) + + it(`routes to ${OPTION_SELECTION.ROUTE} ${OPTION_SELECTION.STEPS.SELECT} if proceedPrevStep is called and the previous step does not exist`, () => { + const { result } = renderHook(() => + useRouteUpdateActions(useRouteUpdateActionsParams) + ) + const { goBackPrevStep } = result.current + + goBackPrevStep() + expect(mockSetRecoveryMap).toHaveBeenCalledWith({ + route: OPTION_SELECTION.ROUTE, + step: OPTION_SELECTION.STEPS.SELECT, + }) + }) + + it('routes to the first step of the supplied route when proceedToRoute is called', () => { + const { result } = renderHook(() => + useRouteUpdateActions(useRouteUpdateActionsParams) + ) + const { proceedToRoute } = result.current + + proceedToRoute(RECOVERY_MAP.ROBOT_IN_MOTION.ROUTE) + expect(mockSetRecoveryMap).toHaveBeenCalledWith({ + route: RECOVERY_MAP.ROBOT_IN_MOTION.ROUTE, + step: RECOVERY_MAP.ROBOT_IN_MOTION.STEPS.IN_MOTION, + }) + }) + + it('routes to "robot in motion" when no other motion path is specified', () => { + const { result } = renderHook(() => + useRouteUpdateActions(useRouteUpdateActionsParams) + ) + const { setRobotInMotion } = result.current + + setRobotInMotion(true) + expect(mockSetRecoveryMap).toHaveBeenCalledWith({ + route: RECOVERY_MAP.ROBOT_IN_MOTION.ROUTE, + step: RECOVERY_MAP.ROBOT_IN_MOTION.STEPS.IN_MOTION, + }) + }) + + it('routes to alternative motion routes if specified', () => { + const { result } = renderHook(() => + useRouteUpdateActions(useRouteUpdateActionsParams) + ) + const { setRobotInMotion } = result.current + + setRobotInMotion(true, RECOVERY_MAP.ROBOT_RESUMING.ROUTE) + expect(mockSetRecoveryMap).toHaveBeenCalledWith({ + route: RECOVERY_MAP.ROBOT_RESUMING.ROUTE, + step: RECOVERY_MAP.ROBOT_RESUMING.STEPS.RESUMING, + }) + }) + + it('routes to the route prior to motion after the motion completes', () => { + const { result } = renderHook(() => + useRouteUpdateActions(useRouteUpdateActionsParams) + ) + const { setRobotInMotion } = result.current + + setRobotInMotion(true) + expect(mockSetRecoveryMap).toHaveBeenCalledWith({ + route: RECOVERY_MAP.ROBOT_IN_MOTION.ROUTE, + step: RECOVERY_MAP.ROBOT_IN_MOTION.STEPS.IN_MOTION, + }) + + setRobotInMotion(false) + expect(mockSetRecoveryMap).toHaveBeenCalledWith({ + route: RECOVERY_MAP.OPTION_SELECTION.ROUTE, + step: RECOVERY_MAP.OPTION_SELECTION.STEPS.SELECT, + }) + }) +}) diff --git a/app/src/organisms/ErrorRecoveryFlows/constants.ts b/app/src/organisms/ErrorRecoveryFlows/constants.ts new file mode 100644 index 00000000000..4a27ea62db8 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/constants.ts @@ -0,0 +1,114 @@ +import { css } from 'styled-components' + +import { SPACING, TYPOGRAPHY } from '@opentrons/components' + +import type { StepOrder } from './types' + +export const ERROR_KINDS = { + GENERAL_ERROR: 'GENERAL_ERROR', +} as const + +// Valid recovery routes and steps. +export const RECOVERY_MAP = { + BEFORE_BEGINNING: { + ROUTE: 'before-beginning', + STEPS: { + RECOVERY_DESCRIPTION: 'recovery-description', + }, + }, + CANCEL_RUN: { ROUTE: 'cancel-run', STEPS: {} }, + DROP_TIP: { ROUTE: 'drop-tip', STEPS: {} }, + IGNORE_AND_RESUME: { ROUTE: 'ignore-and-resume', STEPS: {} }, + REFILL_AND_RESUME: { ROUTE: 'refill-and-resume', STEPS: {} }, + RESUME: { + ROUTE: 'resume', + STEPS: { CONFIRM_RESUME: 'confirm-resume' }, + }, + ROBOT_IN_MOTION: { + ROUTE: 'robot-in-motion', + STEPS: { + IN_MOTION: 'in-motion', + }, + }, + ROBOT_RESUMING: { + ROUTE: 'robot-resuming', + STEPS: { + RESUMING: 'resuming', + }, + }, + OPTION_SELECTION: { + ROUTE: 'option-selection', + STEPS: { SELECT: 'select' }, + }, +} as const + +const { + BEFORE_BEGINNING, + OPTION_SELECTION, + RESUME, + ROBOT_RESUMING, + ROBOT_IN_MOTION, + DROP_TIP, + REFILL_AND_RESUME, + IGNORE_AND_RESUME, + CANCEL_RUN, +} = RECOVERY_MAP + +// The deterministic ordering of steps for a given route. +export const STEP_ORDER: StepOrder = { + [BEFORE_BEGINNING.ROUTE]: [BEFORE_BEGINNING.STEPS.RECOVERY_DESCRIPTION], + [OPTION_SELECTION.ROUTE]: [OPTION_SELECTION.STEPS.SELECT], + [RESUME.ROUTE]: [RESUME.STEPS.CONFIRM_RESUME], + [ROBOT_IN_MOTION.ROUTE]: [ROBOT_IN_MOTION.STEPS.IN_MOTION], + [ROBOT_RESUMING.ROUTE]: [ROBOT_RESUMING.STEPS.RESUMING], + [DROP_TIP.ROUTE]: [], + [REFILL_AND_RESUME.ROUTE]: [], + [IGNORE_AND_RESUME.ROUTE]: [], + [CANCEL_RUN.ROUTE]: [], +} + +export const INVALID = 'INVALID' as const + +/** + * Styling + */ + +// These colors are temp and will be removed as design does design things. +export const NON_DESIGN_SANCTIONED_COLOR_1 = '#56FF00' +export const NON_DESIGN_SANCTIONED_COLOR_2 = '#FF00EF' + +export const NON_SANCTIONED_RECOVERY_COLOR_STYLE_PRIMARY = css` + background-color: ${NON_DESIGN_SANCTIONED_COLOR_1}; + + &:active { + background-color: ${NON_DESIGN_SANCTIONED_COLOR_2}; + } + &:hover { + background-color: ${NON_DESIGN_SANCTIONED_COLOR_1}; + } + &:focus { + background-color: ${NON_DESIGN_SANCTIONED_COLOR_2}; + } +` + +export const NON_SANCTIONED_RECOVERY_COLOR_STYLE_SECONDARY = css` + background-color: ${NON_DESIGN_SANCTIONED_COLOR_2}; + + &:active { + background-color: ${NON_DESIGN_SANCTIONED_COLOR_2}; + } + &:hover { + background-color: ${NON_DESIGN_SANCTIONED_COLOR_1}; + } + &:focus { + background-color: ${NON_DESIGN_SANCTIONED_COLOR_2}; + } +` + +export const BODY_TEXT_STYLE = css` + ${TYPOGRAPHY.bodyTextRegular}; +` + +export const ODD_SECTION_TITLE_STYLE = css` + margin-bottom: ${SPACING.spacing16}; +` diff --git a/app/src/organisms/ErrorRecoveryFlows/index.tsx b/app/src/organisms/ErrorRecoveryFlows/index.tsx new file mode 100644 index 00000000000..2824b85fbe0 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/index.tsx @@ -0,0 +1,109 @@ +import * as React from 'react' +import { createPortal } from 'react-dom' +import { useSelector } from 'react-redux' + +import { + BORDERS, + COLORS, + DIRECTION_COLUMN, + Flex, + POSITION_ABSOLUTE, +} from '@opentrons/components' + +import { getIsOnDevice } from '../../redux/config' +import { getTopPortalEl } from '../../App/portal' +import { BeforeBeginning } from './BeforeBeginning' +import { SelectRecoveryOption, ResumeRun } from './RecoveryOptions' +import { ErrorRecoveryHeader } from './ErrorRecoveryHeader' +import { RecoveryInProgress } from './RecoveryInProgress' +import { getErrorKind, useRouteUpdateActions } from './utils' +import { RECOVERY_MAP } from './constants' + +import type { IRecoveryMap, RecoveryContentProps } from './types' + +interface ErrorRecoveryProps { + onComplete: () => void + errorType?: string +} +export function ErrorRecoveryFlows({ + onComplete, + errorType, +}: ErrorRecoveryProps): JSX.Element { + /** + * Recovery Route: A logically-related collection of recovery steps or a single step if unrelated to any existing recovery route. + * Recovery Step: Analogous to a "step" in other wizard flows. + */ + const [recoveryMap, setRecoveryMap] = React.useState({ + route: RECOVERY_MAP.BEFORE_BEGINNING.ROUTE, + step: RECOVERY_MAP.BEFORE_BEGINNING.STEPS.RECOVERY_DESCRIPTION, + }) + + const errorKind = getErrorKind(errorType) + const isOnDevice = useSelector(getIsOnDevice) + + const routeUpdateActions = useRouteUpdateActions({ + recoveryMap, + setRecoveryMap, + }) + + return ( + + ) +} + +function ErrorRecoveryComponent(props: RecoveryContentProps): JSX.Element { + return createPortal( + + + + , + getTopPortalEl() + ) +} + +export function ErrorRecoveryContent(props: RecoveryContentProps): JSX.Element { + const buildBeforeBeginning = (): JSX.Element => { + return + } + + const buildSelectRecoveryOption = (): JSX.Element => { + return + } + + const buildRecoveryInProgress = (): JSX.Element => { + return + } + + const buildResumeRun = (): JSX.Element => { + return + } + + switch (props.recoveryMap.route) { + case RECOVERY_MAP.BEFORE_BEGINNING.ROUTE: + return buildBeforeBeginning() + case RECOVERY_MAP.OPTION_SELECTION.ROUTE: + return buildSelectRecoveryOption() + case RECOVERY_MAP.RESUME.ROUTE: + return buildResumeRun() + case RECOVERY_MAP.ROBOT_IN_MOTION.ROUTE: + case RECOVERY_MAP.ROBOT_RESUMING.ROUTE: + return buildRecoveryInProgress() + default: + return buildSelectRecoveryOption() + } +} diff --git a/app/src/organisms/ErrorRecoveryFlows/types.ts b/app/src/organisms/ErrorRecoveryFlows/types.ts new file mode 100644 index 00000000000..51a3f4deb28 --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/types.ts @@ -0,0 +1,58 @@ +import type { ERROR_KINDS, RECOVERY_MAP, INVALID } from './constants' +import type { UseRouteUpdateActionsResult } from './utils' + +export type InvalidStep = typeof INVALID +export type RecoveryRoute = typeof RECOVERY_MAP[keyof typeof RECOVERY_MAP]['ROUTE'] +export type RobotMovingRoute = + | typeof RECOVERY_MAP['ROBOT_IN_MOTION']['ROUTE'] + | typeof RECOVERY_MAP['ROBOT_RESUMING']['ROUTE'] +export type ErrorKind = keyof typeof ERROR_KINDS + +interface RecoveryMapDetails { + ROUTE: string + STEPS: Record + STEP_ORDER: RouteStep +} + +export type RecoveryMap = Record +export type StepOrder = { + [K in RecoveryRoute]: RouteStep[] +} + +type RecoveryStep< + K extends keyof RecoveryMap +> = RecoveryMap[K]['STEPS'][keyof RecoveryMap[K]['STEPS']] + +type RobotInMotionStep = RecoveryStep<'ROBOT_IN_MOTION'> +type RobotResumingStep = RecoveryStep<'ROBOT_RESUMING'> +type BeforeBeginningStep = RecoveryStep<'BEFORE_BEGINNING'> +type CancelRunStep = RecoveryStep<'CANCEL_RUN'> +type DropTipStep = RecoveryStep<'DROP_TIP'> +type IgnoreAndResumeStep = RecoveryStep<'IGNORE_AND_RESUME'> +type RefillAndResumeStep = RecoveryStep<'REFILL_AND_RESUME'> +type ResumeStep = RecoveryStep<'RESUME'> +type OptionSelectionStep = RecoveryStep<'OPTION_SELECTION'> + +export type RouteStep = + | RobotInMotionStep + | RobotResumingStep + | BeforeBeginningStep + | CancelRunStep + | DropTipStep + | IgnoreAndResumeStep + | ResumeStep + | OptionSelectionStep + | RefillAndResumeStep + +export interface IRecoveryMap { + route: RecoveryRoute + step: RouteStep +} + +export interface RecoveryContentProps { + errorKind: ErrorKind + isOnDevice: boolean + recoveryMap: IRecoveryMap + routeUpdateActions: UseRouteUpdateActionsResult + onComplete: () => void +} diff --git a/app/src/organisms/ErrorRecoveryFlows/utils.ts b/app/src/organisms/ErrorRecoveryFlows/utils.ts new file mode 100644 index 00000000000..3a6c23e73dd --- /dev/null +++ b/app/src/organisms/ErrorRecoveryFlows/utils.ts @@ -0,0 +1,168 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' +import last from 'lodash/last' +import head from 'lodash/head' + +import { RECOVERY_MAP, ERROR_KINDS, INVALID, STEP_ORDER } from './constants' + +import type { + RouteStep, + IRecoveryMap, + RecoveryRoute, + ErrorKind, + RobotMovingRoute, +} from './types' + +export function useErrorName(errorKind: ErrorKind): string { + const { t } = useTranslation('error_recovery') + + switch (errorKind) { + default: + return t('general_error') + } +} + +// The generalized error message shown to the user in select locations. +export function useErrorMessage(errorKind: ErrorKind): string { + const { t } = useTranslation('error_recovery') + + switch (errorKind) { + default: + return t('general_error_message') + } +} + +export function getErrorKind(errorType?: string): ErrorKind { + switch (errorType) { + default: + return ERROR_KINDS.GENERAL_ERROR + } +} + +export interface GetRouteUpdateActionsParams { + recoveryMap: IRecoveryMap + setRecoveryMap: (recoveryMap: IRecoveryMap) => void +} +export interface UseRouteUpdateActionsResult { + goBackPrevStep: () => void + proceedNextStep: () => void + proceedToRoute: (route: RecoveryRoute) => void + setRobotInMotion: (inMotion: boolean, movingRoute?: RobotMovingRoute) => void +} +// Utilities related to routing within the error recovery flows. +export function useRouteUpdateActions({ + recoveryMap, + setRecoveryMap, +}: GetRouteUpdateActionsParams): UseRouteUpdateActionsResult { + const { route: currentRoute, step: currentStep } = recoveryMap + const [stashedMap, setStashedMap] = React.useState(null) + const { OPTION_SELECTION, ROBOT_IN_MOTION } = RECOVERY_MAP + + // Redirect to the previous step for the current route if it exists, otherwise redirects to the option selection route. + const goBackPrevStep = React.useCallback((): void => { + const { getPrevStep } = getRecoveryRouteNavigation(currentRoute) + const updatedStep = getPrevStep(currentStep) + + if (updatedStep === INVALID) { + setRecoveryMap({ + route: OPTION_SELECTION.ROUTE, + step: OPTION_SELECTION.STEPS.SELECT, + }) + } else { + setRecoveryMap({ route: currentRoute, step: updatedStep }) + } + }, [currentStep, currentRoute]) + + // Redirect to the next step for the current route if it exists, otherwise redirects to the option selection route. + const proceedNextStep = React.useCallback((): void => { + const { getNextStep } = getRecoveryRouteNavigation(currentRoute) + const updatedStep = getNextStep(currentStep) + + if (updatedStep === INVALID) { + setRecoveryMap({ + route: OPTION_SELECTION.ROUTE, + step: OPTION_SELECTION.STEPS.SELECT, + }) + } else { + setRecoveryMap({ route: currentRoute, step: updatedStep }) + } + }, [currentStep, currentRoute]) + + // Redirect to a specific route. + const proceedToRoute = React.useCallback((route: RecoveryRoute): void => { + const newFlowSteps = STEP_ORDER[route] + + setRecoveryMap({ + route, + step: head(newFlowSteps) as RouteStep, + }) + }, []) + + // Stashes the current map then sets the current map to robot in motion. Restores the map after motion completes. + const setRobotInMotion = React.useCallback( + (inMotion: boolean, robotMovingRoute?: RobotMovingRoute): void => { + if (inMotion) { + if (stashedMap == null) { + setStashedMap({ route: currentRoute, step: currentStep }) + } + const route = robotMovingRoute ?? ROBOT_IN_MOTION.ROUTE + const step = + robotMovingRoute != null + ? (head(STEP_ORDER[robotMovingRoute]) as RouteStep) + : ROBOT_IN_MOTION.STEPS.IN_MOTION + + setRecoveryMap({ + route, + step, + }) + } else { + if (stashedMap != null) { + setRecoveryMap(stashedMap) + setStashedMap(null) + } else { + setRecoveryMap({ + route: OPTION_SELECTION.ROUTE, + step: OPTION_SELECTION.STEPS.SELECT, + }) + } + } + }, + [currentRoute, currentStep, stashedMap] + ) + + return { goBackPrevStep, proceedNextStep, proceedToRoute, setRobotInMotion } +} + +interface IRecoveryRouteNavigation { + getNextStep: (step: RouteStep) => RouteStep | typeof INVALID + getPrevStep: (step: RouteStep) => RouteStep | typeof INVALID +} +export function getRecoveryRouteNavigation( + route: RecoveryRoute +): IRecoveryRouteNavigation { + const getNextStep = (step: RouteStep): RouteStep => { + const routeSteps = STEP_ORDER[route] + const isStepFinalStep = step === last(routeSteps) + + if (isStepFinalStep) { + return INVALID + } else { + const stepIndex = routeSteps.indexOf(step) + return stepIndex !== -1 ? routeSteps[stepIndex + 1] : INVALID + } + } + + const getPrevStep = (step: RouteStep): RouteStep | typeof INVALID => { + const routeSteps = STEP_ORDER[route] + const isStepFirstStep = step === head(routeSteps) + + if (isStepFirstStep) { + return INVALID + } else { + const stepIndex = routeSteps.indexOf(step) + return stepIndex !== -1 ? routeSteps[stepIndex - 1] : INVALID + } + } + + return { getNextStep, getPrevStep } +} diff --git a/app/src/organisms/FirmwareUpdateModal/UpdateResultsModal.tsx b/app/src/organisms/FirmwareUpdateModal/UpdateResultsModal.tsx index 27286bd8853..967d9a0632f 100644 --- a/app/src/organisms/FirmwareUpdateModal/UpdateResultsModal.tsx +++ b/app/src/organisms/FirmwareUpdateModal/UpdateResultsModal.tsx @@ -1,6 +1,5 @@ import * as React from 'react' import { useTranslation, Trans } from 'react-i18next' -import { getPipetteModelSpecs } from '@opentrons/shared-data' import { ALIGN_CENTER, BORDERS, @@ -14,8 +13,9 @@ import { } from '@opentrons/components' import { SmallButton } from '../../atoms/buttons' import { Modal } from '../../molecules/Modal' +import { usePipetteModelSpecs } from '../../resources/instruments/hooks' -import type { InstrumentData } from '@opentrons/api-client' +import type { InstrumentData, PipetteData } from '@opentrons/api-client' import type { ModalHeaderBaseProps } from '../../molecules/Modal/types' interface UpdateResultsModalProps { @@ -36,12 +36,16 @@ export function UpdateResultsModal( iconName: 'ot-alert', iconColor: COLORS.red50, } + + const pipetteDisplayName = usePipetteModelSpecs( + (instrument as PipetteData)?.instrumentModel + )?.displayName + let instrumentName = 'instrument' if (instrument?.ok) { instrumentName = instrument?.instrumentType === 'pipette' - ? getPipetteModelSpecs(instrument.instrumentModel)?.displayName ?? - 'pipette' + ? pipetteDisplayName ?? 'pipette' : 'Flex Gripper' } return ( diff --git a/app/src/organisms/InstrumentMountItem/LabeledMount.tsx b/app/src/organisms/InstrumentMountItem/LabeledMount.tsx index ae69c9331b3..65d562543af 100644 --- a/app/src/organisms/InstrumentMountItem/LabeledMount.tsx +++ b/app/src/organisms/InstrumentMountItem/LabeledMount.tsx @@ -40,7 +40,7 @@ interface LabeledMountProps { export function LabeledMount(props: LabeledMountProps): JSX.Element { const { t } = useTranslation('device_details') const { mount, instrumentName, handleClick } = props - const ninetySixDisplayName = 'Flex 96-Channel 1000 μL' + const isNinetySixChannel = instrumentName?.includes('96-Channel') ?? false return ( @@ -62,9 +62,7 @@ export function LabeledMount(props: LabeledMountProps): JSX.Element { fontSize={TYPOGRAPHY.fontSize28} width="15.625rem" > - {instrumentName === ninetySixDisplayName - ? t('left_right') - : t('mount', { side: mount })} + {isNinetySixChannel ? t('left_right') : t('mount', { side: mount })}
) : null} - {t('shared:help_us_improve_send_error_report', { + {t('branded:help_us_improve_send_error_report', { support_email: SUPPORT_EMAIL, })} diff --git a/app/src/organisms/OnDeviceDisplay/RunningProtocol/CurrentRunningProtocolCommand.tsx b/app/src/organisms/OnDeviceDisplay/RunningProtocol/CurrentRunningProtocolCommand.tsx index 537c6f2f7c6..eeef83d83ab 100644 --- a/app/src/organisms/OnDeviceDisplay/RunningProtocol/CurrentRunningProtocolCommand.tsx +++ b/app/src/organisms/OnDeviceDisplay/RunningProtocol/CurrentRunningProtocolCommand.tsx @@ -30,7 +30,7 @@ import type { RobotType, RunTimeCommand, } from '@opentrons/shared-data' -import type { RunStatus } from '@opentrons/api-client' +import type { RunCommandSummary, RunStatus } from '@opentrons/api-client' import type { TrackProtocolRunEvent } from '../../Devices/hooks' import type { RobotAnalyticsData } from '../../../redux/analytics/types' @@ -117,6 +117,7 @@ interface CurrentRunningProtocolCommandProps { trackProtocolRunEvent: TrackProtocolRunEvent robotAnalyticsData: RobotAnalyticsData | null lastAnimatedCommand: string | null + lastRunCommand: RunCommandSummary | null updateLastAnimatedCommand: (newCommandKey: string) => void protocolName?: string currentRunCommandIndex?: number @@ -134,13 +135,15 @@ export function CurrentRunningProtocolCommand({ robotType, protocolName, currentRunCommandIndex, + lastRunCommand, lastAnimatedCommand, updateLastAnimatedCommand, }: CurrentRunningProtocolCommandProps): JSX.Element | null { const { t } = useTranslation('run_details') - const currentCommand = robotSideAnalysis?.commands.find( - (c: RunTimeCommand, index: number) => index === currentRunCommandIndex - ) + const currentCommand = + robotSideAnalysis?.commands.find( + (c: RunTimeCommand, index: number) => index === currentRunCommandIndex + ) ?? lastRunCommand let shouldAnimate = true if (currentCommand?.key != null) { diff --git a/app/src/organisms/OnDeviceDisplay/RunningProtocol/RunPausedSplash.tsx b/app/src/organisms/OnDeviceDisplay/RunningProtocol/RunPausedSplash.tsx index 529e5b6653f..57a0a3ad260 100644 --- a/app/src/organisms/OnDeviceDisplay/RunningProtocol/RunPausedSplash.tsx +++ b/app/src/organisms/OnDeviceDisplay/RunningProtocol/RunPausedSplash.tsx @@ -18,13 +18,13 @@ import { } from '@opentrons/components' interface RunPausedSplashProps { - onClose: () => void + onClick: () => void errorType?: string protocolName?: string } export function RunPausedSplash({ - onClose, + onClick, errorType, protocolName, }: RunPausedSplashProps): JSX.Element { @@ -48,7 +48,7 @@ export function RunPausedSplash({ gridGap={SPACING.spacing40} padding={SPACING.spacing120} backgroundColor={COLORS.grey50} - onClick={onClose} + onClick={onClick} > diff --git a/app/src/organisms/OnDeviceDisplay/RunningProtocol/__tests__/CurrentRunningProtocolCommand.test.tsx b/app/src/organisms/OnDeviceDisplay/RunningProtocol/__tests__/CurrentRunningProtocolCommand.test.tsx index edb7bc99b10..92b5e7aa274 100644 --- a/app/src/organisms/OnDeviceDisplay/RunningProtocol/__tests__/CurrentRunningProtocolCommand.test.tsx +++ b/app/src/organisms/OnDeviceDisplay/RunningProtocol/__tests__/CurrentRunningProtocolCommand.test.tsx @@ -46,6 +46,7 @@ describe('CurrentRunningProtocolCommand', () => { protocolName: 'mockRunningProtocolName', currentRunCommandIndex: 0, lastAnimatedCommand: null, + lastRunCommand: null, updateLastAnimatedCommand: mockUpdateLastAnimatedCommand, robotType: FLEX_ROBOT_TYPE, } diff --git a/app/src/organisms/OnDeviceDisplay/RunningProtocol/__tests__/RunPausedSplash.test.tsx b/app/src/organisms/OnDeviceDisplay/RunningProtocol/__tests__/RunPausedSplash.test.tsx index 6a7061346a4..0f7455c154f 100644 --- a/app/src/organisms/OnDeviceDisplay/RunningProtocol/__tests__/RunPausedSplash.test.tsx +++ b/app/src/organisms/OnDeviceDisplay/RunningProtocol/__tests__/RunPausedSplash.test.tsx @@ -28,7 +28,7 @@ describe('ConfirmCancelRunModal', () => { beforeEach(() => { props = { - onClose: mockOnClose, + onClick: mockOnClose, protocolName: MOCK_PROTOCOL_NAME, errorType: '', } diff --git a/app/src/organisms/PipetteWizardFlows/BeforeBeginning.tsx b/app/src/organisms/PipetteWizardFlows/BeforeBeginning.tsx index 6379bb74f7f..165c37053f9 100644 --- a/app/src/organisms/PipetteWizardFlows/BeforeBeginning.tsx +++ b/app/src/organisms/PipetteWizardFlows/BeforeBeginning.tsx @@ -13,8 +13,6 @@ import { RIGHT, SINGLE_MOUNT_PIPETTES, WEIGHT_OF_96_CHANNEL, - LoadedPipette, - getPipetteNameSpecs, WASTE_CHUTE_CUTOUT, } from '@opentrons/shared-data' import { Banner } from '../../atoms/Banner' @@ -22,6 +20,7 @@ import { SimpleWizardBody } from '../../molecules/SimpleWizardBody' import { GenericWizardTile } from '../../molecules/GenericWizardTile' import { InProgressModal } from '../../molecules/InProgressModal/InProgressModal' import { WizardRequiredEquipmentList } from '../../molecules/WizardRequiredEquipmentList' +import { usePipetteNameSpecs } from '../../resources/instruments/hooks' import { CALIBRATION_PROBE, FLOWS, @@ -35,7 +34,11 @@ import { getIsGantryEmpty } from './utils' import { useNotifyDeckConfigurationQuery } from '../../resources/deck_configuration' import type { AxiosError } from 'axios' -import type { CreateCommand } from '@opentrons/shared-data' +import type { + CreateCommand, + LoadedPipette, + PipetteName, +} from '@opentrons/shared-data' import type { CreateMaintenanceRunData, MaintenanceRun, @@ -90,6 +93,10 @@ export const BeforeBeginning = ( deckConfig?.find(fixture => fixture.cutoutId === WASTE_CHUTE_CUTOUT) ?? false + const pipetteDisplayName = usePipetteNameSpecs( + requiredPipette?.pipetteName as PipetteName + )?.displayName + if ( pipetteId == null && (flowType === FLOWS.CALIBRATE || flowType === FLOWS.DETACH) @@ -109,9 +116,7 @@ export const BeforeBeginning = ( bodyTranslationKey = 'remove_labware' let displayName: string | undefined if (requiredPipette != null) { - displayName = - getPipetteNameSpecs(requiredPipette.pipetteName)?.displayName ?? - requiredPipette.pipetteName + displayName = pipetteDisplayName ?? requiredPipette.pipetteName } if (selectedPipette === SINGLE_MOUNT_PIPETTES) { equipmentList = [ @@ -134,9 +139,7 @@ export const BeforeBeginning = ( } case FLOWS.DETACH: { if (requiredPipette != null) { - const displayName = - getPipetteNameSpecs(requiredPipette.pipetteName)?.displayName ?? - requiredPipette.pipetteName + const displayName = pipetteDisplayName ?? requiredPipette.pipetteName bodyTranslationKey = 'remove_labware' if (requiredPipette.pipetteName === 'p1000_96') { diff --git a/app/src/organisms/PipetteWizardFlows/Results.tsx b/app/src/organisms/PipetteWizardFlows/Results.tsx index fda57800151..5f652f3f895 100644 --- a/app/src/organisms/PipetteWizardFlows/Results.tsx +++ b/app/src/organisms/PipetteWizardFlows/Results.tsx @@ -12,19 +12,19 @@ import { StyledText, TYPOGRAPHY, } from '@opentrons/components' -import { - getPipetteNameSpecs, - LEFT, - RIGHT, - LoadedPipette, - MotorAxes, - NINETY_SIX_CHANNEL, -} from '@opentrons/shared-data' +import { LEFT, RIGHT, NINETY_SIX_CHANNEL } from '@opentrons/shared-data' +import { SmallButton } from '../../atoms/buttons' import { InProgressModal } from '../../molecules/InProgressModal/InProgressModal' import { SimpleWizardBody } from '../../molecules/SimpleWizardBody' -import { SmallButton } from '../../atoms/buttons' +import { usePipetteNameSpecs } from '../../resources/instruments/hooks' import { CheckPipetteButton } from './CheckPipetteButton' import { FLOWS } from './constants' + +import type { + LoadedPipette, + MotorAxes, + PipetteName, +} from '@opentrons/shared-data' import type { PipetteWizardStepProps } from './types' interface ResultsProps extends PipetteWizardStepProps { @@ -71,10 +71,11 @@ export const Results = (props: ResultsProps): JSX.Element => { const isCorrectPipette = requiredPipette != null && requiredPipette.pipetteName === attachedPipettes[mount]?.instrumentName + const requiredPipDisplayName = - requiredPipette != null - ? getPipetteNameSpecs(requiredPipette.pipetteName)?.displayName - : null + usePipetteNameSpecs(requiredPipette?.pipetteName as PipetteName) + ?.displayName ?? null + const [numberOfTryAgains, setNumberOfTryAgains] = React.useState(0) let header: string = 'unknown results screen' let iconColor: string = COLORS.green50 diff --git a/app/src/organisms/PipetteWizardFlows/__tests__/Results.test.tsx b/app/src/organisms/PipetteWizardFlows/__tests__/Results.test.tsx index bf5a1d4d7aa..b0cb919531c 100644 --- a/app/src/organisms/PipetteWizardFlows/__tests__/Results.test.tsx +++ b/app/src/organisms/PipetteWizardFlows/__tests__/Results.test.tsx @@ -12,6 +12,7 @@ import { useInstrumentsQuery } from '@opentrons/react-api-client' import { renderWithProviders } from '../../../__testing-utils__' import { mockAttachedPipetteInformation } from '../../../redux/pipettes/__fixtures__' +import { useIsOEMMode } from '../../../resources/robot-settings/hooks' import { i18n } from '../../../i18n' import { RUN_ID_1 } from '../../RunTimeControl/__fixtures__' import { Results } from '../Results' @@ -20,6 +21,7 @@ import { FLOWS } from '../constants' import type { Mock } from 'vitest' vi.mock('@opentrons/react-api-client') +vi.mock('../../../resources/robot-settings/hooks') const render = (props: React.ComponentProps) => { return renderWithProviders(, { @@ -57,6 +59,7 @@ describe('Results', () => { vi.mocked(useInstrumentsQuery).mockReturnValue({ refetch: mockRefetchInstruments, } as any) + vi.mocked(useIsOEMMode).mockReturnValue(false) }) it('renders the correct information when pipette cal is a success for calibrate flow', () => { props = { diff --git a/app/src/organisms/ProtocolDetails/ProtocolLabwareDetails.tsx b/app/src/organisms/ProtocolDetails/ProtocolLabwareDetails.tsx index 7410fd9b2cf..0f208869825 100644 --- a/app/src/organisms/ProtocolDetails/ProtocolLabwareDetails.tsx +++ b/app/src/organisms/ProtocolDetails/ProtocolLabwareDetails.tsx @@ -8,6 +8,7 @@ import { DIRECTION_ROW, Flex, Icon, + InfoScreen, POSITION_ABSOLUTE, POSITION_RELATIVE, SPACING, @@ -55,36 +56,42 @@ export const ProtocolLabwareDetails = ( : [] return ( - - - - {t('labware_name')} - - - {t('quantity')} - - - {labwareDetails?.map((labware, index) => ( - - ))} - + <> + {labwareDetails.length > 0 ? ( + + + + {t('labware_name')} + + + {t('quantity')} + + + {labwareDetails?.map((labware, index) => ( + + ))} + + ) : ( + + )} + ) } diff --git a/app/src/organisms/ProtocolDetails/ProtocolLiquidsDetails.tsx b/app/src/organisms/ProtocolDetails/ProtocolLiquidsDetails.tsx index 5aff2a28ea4..52ddf497bb7 100644 --- a/app/src/organisms/ProtocolDetails/ProtocolLiquidsDetails.tsx +++ b/app/src/organisms/ProtocolDetails/ProtocolLiquidsDetails.tsx @@ -76,7 +76,7 @@ export const ProtocolLiquidsDetails = ( borderRadius={BORDERS.borderRadius8} > - !SINGLE_SLOT_FIXTURES.includes( + ![...SINGLE_SLOT_FIXTURES, ...FLEX_USB_MODULE_FIXTURES].includes( fixture.cutoutFixtureId as SingleSlotCutoutFixtureId ) ) @@ -176,9 +180,23 @@ export const RobotConfigurationDetails = ( - {getFixtureDisplayName(fixture.cutoutFixtureId)} - + <> + {MAGNETIC_BLOCK_FIXTURES.includes(fixture.cutoutFixtureId) ? ( + + ) : null} + + {getFixtureDisplayName(fixture.cutoutFixtureId)} + + } /> diff --git a/app/src/organisms/ProtocolDetails/__tests__/ProtocolLabwareDetails.test.tsx b/app/src/organisms/ProtocolDetails/__tests__/ProtocolLabwareDetails.test.tsx index 90d4bd61af2..14f1f956295 100644 --- a/app/src/organisms/ProtocolDetails/__tests__/ProtocolLabwareDetails.test.tsx +++ b/app/src/organisms/ProtocolDetails/__tests__/ProtocolLabwareDetails.test.tsx @@ -1,12 +1,21 @@ import * as React from 'react' import { screen } from '@testing-library/react' -import { describe, it, beforeEach } from 'vitest' +import { describe, it, beforeEach, vi } from 'vitest' +import { InfoScreen } from '@opentrons/components' import { renderWithProviders } from '../../../__testing-utils__' import { i18n } from '../../../i18n' import { ProtocolLabwareDetails } from '../ProtocolLabwareDetails' import type { LoadLabwareRunTimeCommand } from '@opentrons/shared-data' +vi.mock('@opentrons/components', async importOriginal => { + const actual = await importOriginal() + return { + ...actual, + InfoScreen: vi.fn(), + } +}) + const mockRequiredLabwareDetails = [ { id: '568fd127-5554-4e19-b303-a8aeb6d8547d', @@ -70,6 +79,7 @@ describe('ProtocolLabwareDetails', () => { props = { requiredLabwareDetails: mockRequiredLabwareDetails, } + vi.mocked(InfoScreen).mockReturnValue(
mock InfoScreen
) }) it('should render an opentrons labware', () => { @@ -136,4 +146,12 @@ describe('ProtocolLabwareDetails', () => { screen.getByText('Quantity') screen.getByText('2') }) + + it('should render mock infoscreen when no labware', () => { + props = { + requiredLabwareDetails: [], + } + render(props) + screen.getByText('mock InfoScreen') + }) }) diff --git a/app/src/organisms/ProtocolDetails/index.tsx b/app/src/organisms/ProtocolDetails/index.tsx index 2dc5ecda65f..1be2faa6390 100644 --- a/app/src/organisms/ProtocolDetails/index.tsx +++ b/app/src/organisms/ProtocolDetails/index.tsx @@ -43,7 +43,9 @@ import { parseInitialLoadedLabwareByAdapter, } from '@opentrons/api-client' import { + MAGNETIC_BLOCK_TYPE, getGripperDisplayName, + getModuleType, getSimplestDeckConfigForProtocol, } from '@opentrons/shared-data' @@ -236,7 +238,13 @@ export function ProtocolDetails( const requiredModuleDetails = mostRecentAnalysis?.commands != null - ? map(parseInitialLoadedModulesBySlot(mostRecentAnalysis.commands)) + ? map( + parseInitialLoadedModulesBySlot(mostRecentAnalysis.commands) + ).filter( + loadedModule => + // filter out magnetic block which is already handled by the required fixture details + getModuleType(loadedModule.params.model) !== MAGNETIC_BLOCK_TYPE + ) : [] const requiredFixtureDetails = getSimplestDeckConfigForProtocol( @@ -591,7 +599,7 @@ export function ProtocolDetails( marginLeft={SPACING.spacing16} gridGap={SPACING.spacing8} > - + {mostRecentAnalysis != null && ( (mergedDeckConfig) + const modulesOnDeck = currentDeckConfig.reduce( + (acc, cutoutConfig) => { + const matchingFixtureIdsAndModel = Object.entries( + MODULE_FIXTURES_BY_MODEL + ).find(([_moduleModel, moduleFixtureIds]) => + moduleFixtureIds.includes(cutoutConfig.cutoutFixtureId) + ) + if (matchingFixtureIdsAndModel != null) { + const [matchingModel] = matchingFixtureIdsAndModel + return [ + ...acc, + { + moduleModel: matchingModel as ModuleModel, + moduleLocation: { + slotName: FLEX_SINGLE_SLOT_BY_CUTOUT_ID[cutoutConfig.cutoutId], + }, + }, + ] + } else if ( + cutoutConfig.cutoutFixtureId === + STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE + ) { + return [ + ...acc, + { + moduleModel: MAGNETIC_BLOCK_V1_FIXTURE, + moduleLocation: { + slotName: FLEX_SINGLE_SLOT_BY_CUTOUT_ID[cutoutConfig.cutoutId], + }, + }, + ] + } + return acc + }, + [] + ) const { updateDeckConfiguration } = useUpdateDeckConfigurationMutation() const handleClickConfirm = (): void => { @@ -118,6 +160,7 @@ export function ProtocolSetupDeckConfiguration({ diff --git a/app/src/organisms/ProtocolSetupModulesAndDeck/FixtureTable.tsx b/app/src/organisms/ProtocolSetupModulesAndDeck/FixtureTable.tsx index 82c9d9670f3..b094cc48519 100644 --- a/app/src/organisms/ProtocolSetupModulesAndDeck/FixtureTable.tsx +++ b/app/src/organisms/ProtocolSetupModulesAndDeck/FixtureTable.tsx @@ -14,7 +14,7 @@ import { TYPOGRAPHY, } from '@opentrons/components' import { - FLEX_MODULE_ADDRESSABLE_AREAS, + FLEX_USB_MODULE_ADDRESSABLE_AREAS, getCutoutDisplayName, getDeckDefFromRobotType, getFixtureDisplayName, @@ -86,8 +86,10 @@ export function FixtureTable({ return sortedDeckConfigCompatibility.length > 0 ? ( <> {sortedDeckConfigCompatibility.map((fixtureCompatibility, index) => { - return fixtureCompatibility.requiredAddressableAreas.some(raa => - FLEX_MODULE_ADDRESSABLE_AREAS.includes(raa) + // filter out all fixtures that only provide module addressable areas (e.g. everything but StagingAreaWithMagBlockV1) + // as they're handled in the Modules Table + return fixtureCompatibility.requiredAddressableAreas.every(raa => + FLEX_USB_MODULE_ADDRESSABLE_AREAS.includes(raa) ) ? null : ( {attachedProtocolModuleMatches.map(module => { + // filter out the magnetic block here, because it is handled by the SetupFixturesList + if (module.moduleDef.moduleType === MAGNETIC_BLOCK_TYPE) return null const moduleFixtures = getCutoutFixturesForModuleModel( module.moduleDef.model, deckDef diff --git a/app/src/organisms/ProtocolSetupModulesAndDeck/__tests__/ProtocolSetupModulesAndDeck.test.tsx b/app/src/organisms/ProtocolSetupModulesAndDeck/__tests__/ProtocolSetupModulesAndDeck.test.tsx index 2fdd6beaf9e..e2bd427d691 100644 --- a/app/src/organisms/ProtocolSetupModulesAndDeck/__tests__/ProtocolSetupModulesAndDeck.test.tsx +++ b/app/src/organisms/ProtocolSetupModulesAndDeck/__tests__/ProtocolSetupModulesAndDeck.test.tsx @@ -36,8 +36,10 @@ import { FixtureTable } from '../FixtureTable' import { ModulesAndDeckMapViewModal } from '../ModulesAndDeckMapViewModal' import { ProtocolSetupModulesAndDeck } from '..' import { useNotifyDeckConfigurationQuery } from '../../../resources/deck_configuration' +import { useRunStatus } from '../../RunTimeControl/hooks' import type { CutoutConfig, DeckConfiguration } from '@opentrons/shared-data' +import { RUN_STATUS_IDLE } from '@opentrons/api-client' vi.mock('../../../resources/runs') vi.mock('../../../redux/discovery') @@ -53,6 +55,7 @@ vi.mock('../../ModuleWizardFlows') vi.mock('../FixtureTable') vi.mock('../../Devices/ProtocolRun/SetupModuleAndDeck/LocationConflictModal') vi.mock('../ModulesAndDeckMapViewModal') +vi.mock('../../RunTimeControl/hooks') const ROBOT_NAME = 'otie' const RUN_ID = '1' @@ -134,6 +137,7 @@ describe('ProtocolSetupModulesAndDeck', () => { chainLiveCommands: mockChainLiveCommands, } as any) vi.mocked(FixtureTable).mockReturnValue(
mock FixtureTable
) + vi.mocked(useRunStatus).mockReturnValue(RUN_STATUS_IDLE) }) afterEach(() => { diff --git a/app/src/organisms/ProtocolSetupModulesAndDeck/index.tsx b/app/src/organisms/ProtocolSetupModulesAndDeck/index.tsx index 98c57d69e01..4369f8f297f 100644 --- a/app/src/organisms/ProtocolSetupModulesAndDeck/index.tsx +++ b/app/src/organisms/ProtocolSetupModulesAndDeck/index.tsx @@ -34,6 +34,9 @@ import { useNotifyDeckConfigurationQuery } from '../../resources/deck_configurat import type { CutoutId, CutoutFixtureId } from '@opentrons/shared-data' import type { SetupScreens } from '../../pages/ProtocolSetup' +import { useRunStatus } from '../RunTimeControl/hooks' +import { RUN_STATUS_STOPPED } from '@opentrons/api-client' +import { useHistory } from 'react-router-dom' const ATTACHED_MODULE_POLL_MS = 5000 const DECK_CONFIG_POLL_MS = 5000 @@ -55,7 +58,13 @@ export function ProtocolSetupModulesAndDeck({ setProvidedFixtureOptions, }: ProtocolSetupModulesAndDeckProps): JSX.Element { const { i18n, t } = useTranslation('protocol_setup') - + const history = useHistory() + const runStatus = useRunStatus(runId) + React.useEffect(() => { + if (runStatus === RUN_STATUS_STOPPED) { + history.push('/protocols') + } + }, [runStatus, history]) const [ showSetupInstructionsModal, setShowSetupInstructionsModal, @@ -128,7 +137,7 @@ export function ProtocolSetupModulesAndDeck({ {isModuleMismatch && !clearModuleMismatchBanner ? ( @@ -142,7 +151,7 @@ export function ProtocolSetupModulesAndDeck({ message={t('module_mismatch_body')} /> ) : null} - + { handleKeyboardInput(e) }} diff --git a/app/src/organisms/ProtocolSetupParameters/__tests__/ChooseNumber.test.tsx b/app/src/organisms/ProtocolSetupParameters/__tests__/ChooseNumber.test.tsx new file mode 100644 index 00000000000..1d312bc36a5 --- /dev/null +++ b/app/src/organisms/ProtocolSetupParameters/__tests__/ChooseNumber.test.tsx @@ -0,0 +1,102 @@ +import * as React from 'react' +import { it, describe, beforeEach, vi, expect } from 'vitest' +import { fireEvent, screen } from '@testing-library/react' +import '@testing-library/jest-dom/vitest' +import { renderWithProviders } from '../../../__testing-utils__' +import { i18n } from '../../../i18n' +import { useToaster } from '../../ToasterOven' +import { mockRunTimeParameterData } from '../../../pages/ProtocolDetails/fixtures' +import { ChooseNumber } from '../ChooseNumber' + +import type { NumberParameter } from '@opentrons/shared-data' + +vi.mock('../../ToasterOven') + +const mockHandleGoBack = vi.fn() +const mockIntNumberParameterData = mockRunTimeParameterData[5] as NumberParameter +const mockFloatNumberParameterData = mockRunTimeParameterData[6] as NumberParameter +const mockSetParameter = vi.fn() +const mockMakeSnackbar = vi.fn() + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + }) +} + +describe('ChooseNumber', () => { + let props: React.ComponentProps + + beforeEach(() => { + props = { + handleGoBack: mockHandleGoBack, + parameter: mockIntNumberParameterData, + setParameter: mockSetParameter, + } + vi.clearAllMocks() + vi.mocked(useToaster).mockReturnValue({ + makeSnackbar: mockMakeSnackbar, + makeToast: vi.fn(), + eatToast: vi.fn(), + }) + }) + + it('should render text and numerical keyboard non decimal and no negative number', () => { + render(props) + expect(screen.queryByRole('button', { name: '.' })).not.toBeInTheDocument() + expect(screen.queryByRole('button', { name: '-' })).not.toBeInTheDocument() + }) + + it('should render text and numerical keyboard non decimal and negative number', () => { + const mockNegativeIntNumberParameterData = { + ...mockIntNumberParameterData, + min: -2, + } + props = { ...props, parameter: mockNegativeIntNumberParameterData } + render(props) + expect(screen.queryByRole('button', { name: '.' })).not.toBeInTheDocument() + expect(screen.getByRole('button', { name: '-' })).toBeInTheDocument() + }) + + it('should render text and numerical keyboard decimal and no negative number', () => { + props = { ...props, parameter: mockFloatNumberParameterData } + render(props) + expect(screen.getByRole('button', { name: '.' })).toBeInTheDocument() + expect(screen.queryByRole('button', { name: '-' })).not.toBeInTheDocument() + }) + + it('should render text and numerical keyboard decimal and negative number', () => { + const mockNegativeFloatNumberParameterData = { + ...mockFloatNumberParameterData, + min: -10.2, + } + props = { ...props, parameter: mockNegativeFloatNumberParameterData } + console.log(mockNegativeFloatNumberParameterData) + render(props) + expect(screen.getByRole('button', { name: '.' })).toBeInTheDocument() + expect(screen.getByRole('button', { name: '-' })).toBeInTheDocument() + }) + + it('should call mock function when tapping go back button', () => { + render(props) + fireEvent.click(screen.getAllByRole('button')[0]) + expect(mockHandleGoBack).toHaveBeenCalled() + }) + + it('should render error message when inputting an out of range number', () => { + render(props) + const numKey = screen.getByRole('button', { name: '1' }) + fireEvent.click(numKey) + fireEvent.click(numKey) + screen.getByText('Value must be between 1-10') + }) + + it('should call mock snack bar function when inputting an out of range number', () => { + render(props) + const numKey = screen.getByRole('button', { name: '1' }) + fireEvent.click(numKey) + fireEvent.click(numKey) + fireEvent.click(screen.getAllByRole('button')[0]) + expect(mockMakeSnackbar).toHaveBeenCalledWith('Value must be in range') + }) +}) diff --git a/app/src/organisms/ProtocolSetupParameters/__tests__/ProtocolSetupParameters.test.tsx b/app/src/organisms/ProtocolSetupParameters/__tests__/ProtocolSetupParameters.test.tsx index 4871eeaa379..8e156c14087 100644 --- a/app/src/organisms/ProtocolSetupParameters/__tests__/ProtocolSetupParameters.test.tsx +++ b/app/src/organisms/ProtocolSetupParameters/__tests__/ProtocolSetupParameters.test.tsx @@ -55,6 +55,7 @@ describe('ProtocolSetupParameters', () => { .calledWith(expect.anything()) .thenReturn({ createRun: mockCreateRun } as any) }) + it('renders the parameters labels and mock data', () => { render(props) screen.getByText('Parameters') @@ -63,27 +64,39 @@ describe('ProtocolSetupParameters', () => { screen.getByText('Dry Run') screen.getByText('a dry run description') }) + it('renders the ChooseEnum component when a str param is selected', () => { render(props) fireEvent.click(screen.getByText('Default Module Offsets')) screen.getByText('mock ChooseEnum') }) + it('renders the other setting when boolean param is selected', () => { render(props) expect(screen.getAllByText('On')).toHaveLength(2) fireEvent.click(screen.getByText('Dry Run')) expect(screen.getAllByText('On')).toHaveLength(3) }) + it('renders the back icon and calls useHistory', () => { render(props) fireEvent.click(screen.getAllByRole('button')[0]) expect(mockGoBack).toHaveBeenCalled() }) + it('renders the confirm values button and clicking on it creates a run', () => { render(props) fireEvent.click(screen.getByRole('button', { name: 'Confirm values' })) expect(mockCreateRun).toHaveBeenCalled() }) + + it('should restore default values button is disabled when tapping confirm values button', async () => { + render(props) + const resetButton = screen.getByTestId('ChildNavigation_Secondary_Button') + fireEvent.click(screen.getByText('Confirm values')) + expect(resetButton).toBeDisabled() + }) + it('renders the reset values modal', () => { render(props) fireEvent.click( diff --git a/app/src/organisms/ProtocolSetupParameters/index.tsx b/app/src/organisms/ProtocolSetupParameters/index.tsx index 5dae07260f6..7326a506895 100644 --- a/app/src/organisms/ProtocolSetupParameters/index.tsx +++ b/app/src/organisms/ProtocolSetupParameters/index.tsx @@ -151,6 +151,7 @@ export function ProtocolSetupParameters({ secondaryButtonProps={{ buttonType: 'tertiaryLowLight', buttonText: t('restore_defaults'), + disabled: isLoading || startSetup, onClick: () => showResetValuesModal(true), }} /> diff --git a/app/src/organisms/ProtocolsLanding/ProtocolCard.tsx b/app/src/organisms/ProtocolsLanding/ProtocolCard.tsx index 932e7e0086c..89658e81ef4 100644 --- a/app/src/organisms/ProtocolsLanding/ProtocolCard.tsx +++ b/app/src/organisms/ProtocolsLanding/ProtocolCard.tsx @@ -184,8 +184,20 @@ function AnalysisInfo(props: AnalysisInfoProps): JSX.Element { size={SIZE_3} /> ), - error: , - stale: , + error: ( + + ), + stale: ( + + ), complete: mostRecentAnalysis != null ? ( diff --git a/app/src/organisms/QuickTransferFlow/ConfirmExitModal.tsx b/app/src/organisms/QuickTransferFlow/ConfirmExitModal.tsx new file mode 100644 index 00000000000..817e9fe9a1d --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/ConfirmExitModal.tsx @@ -0,0 +1,54 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' +import { + SPACING, + COLORS, + StyledText, + Flex, + DIRECTION_COLUMN, + TYPOGRAPHY, +} from '@opentrons/components' +import { Modal } from '../../molecules/Modal' +import { SmallButton } from '../../atoms/buttons' + +interface ConfirmExitModalProps { + confirmExit: () => void + cancelExit: () => void +} + +export const ConfirmExitModal = (props: ConfirmExitModalProps): JSX.Element => { + const { i18n, t } = useTranslation(['quick_transfer', 'shared']) + + return ( + + + + {t('lose_all_progress')} + + + + + + + + ) +} diff --git a/app/src/organisms/QuickTransferFlow/SelectDestLabware.tsx b/app/src/organisms/QuickTransferFlow/SelectDestLabware.tsx new file mode 100644 index 00000000000..d9ec6e99189 --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/SelectDestLabware.tsx @@ -0,0 +1,147 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' +import { + Flex, + SPACING, + DIRECTION_COLUMN, + DIRECTION_ROW, + COLORS, + POSITION_FIXED, + ALIGN_CENTER, +} from '@opentrons/components' + +import { SmallButton, LargeButton, TabbedButton } from '../../atoms/buttons' +import { ChildNavigation } from '../ChildNavigation' +import { getCompatibleLabwareByCategory } from './utils' + +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { + QuickTransferSetupState, + QuickTransferWizardAction, +} from './types' +import { LabwareFilter } from '../../pages/Labware/types' + +interface SelectDestLabwareProps { + onNext: () => void + onBack: () => void + exitButtonProps: React.ComponentProps + state: QuickTransferSetupState + dispatch: React.Dispatch +} + +export function SelectDestLabware( + props: SelectDestLabwareProps +): JSX.Element | null { + const { onNext, onBack, exitButtonProps, state, dispatch } = props + const { i18n, t } = useTranslation(['quick_transfer', 'shared']) + const labwareDisplayCategoryFilters: LabwareFilter[] = [ + 'all', + 'wellPlate', + 'reservoir', + ] + if (state.pipette?.channels === 1) { + labwareDisplayCategoryFilters.push('tubeRack') + } + const [selectedCategory, setSelectedCategory] = React.useState( + 'all' + ) + const [selectedLabware, setSelectedLabware] = React.useState< + LabwareDefinition2 | 'source' | undefined + >(state.destination) + + if (state.pipette == null) return null + + const compatibleLabwareDefinitions = getCompatibleLabwareByCategory( + state.pipette.channels, + selectedCategory + ) + + const handleClickNext = (): void => { + // the button will be disabled if this values is null + if (selectedLabware != null) { + dispatch({ + type: 'SET_DEST_LABWARE', + labware: selectedLabware, + }) + onNext() + } + } + return ( + + + + + {labwareDisplayCategoryFilters.map(category => ( + setSelectedCategory(category)} + height={SPACING.spacing60} + > + {t(category)} + + ))} + + + {selectedCategory === 'all' && state?.source != null ? ( + { + setSelectedLabware('source') + }} + buttonText={t('source_labware')} + subtext={state.source.metadata.displayName} + /> + ) : null} + {compatibleLabwareDefinitions?.map(definition => { + return definition.metadata.displayName != null ? ( + { + setSelectedLabware(definition) + }} + buttonText={definition.metadata.displayName} + /> + ) : null + })} + + + + ) +} diff --git a/app/src/organisms/QuickTransferFlow/SelectDestWells.tsx b/app/src/organisms/QuickTransferFlow/SelectDestWells.tsx new file mode 100644 index 00000000000..39ef17cffe9 --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/SelectDestWells.tsx @@ -0,0 +1,59 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' +import { Flex, SPACING } from '@opentrons/components' + +import { SmallButton } from '../../atoms/buttons' +import { ChildNavigation } from '../ChildNavigation' + +import type { + QuickTransferSetupState, + QuickTransferWizardAction, +} from './types' + +interface SelectDestWellsProps { + onNext: () => void + onBack: () => void + exitButtonProps: React.ComponentProps + state: QuickTransferSetupState + dispatch: React.Dispatch +} + +export function SelectDestWells(props: SelectDestWellsProps): JSX.Element { + const { onNext, onBack, exitButtonProps, state, dispatch } = props + const { i18n, t } = useTranslation(['quick_transfer', 'shared']) + + const handleClickNext = (): void => { + // until well selection is implemented, select all wells and proceed to the next step + if (state.destination === 'source' && state.source != null) { + dispatch({ + type: 'SET_DEST_WELLS', + wells: Object.keys(state.source.wells), + }) + } else if (state.destination !== 'source' && state.destination != null) { + dispatch({ + type: 'SET_DEST_WELLS', + wells: Object.keys(state.destination.wells), + }) + } + onNext() + } + return ( + + + + TODO: Add destination well selection deck map + + + ) +} diff --git a/app/src/organisms/QuickTransferFlow/SelectSourceLabware.tsx b/app/src/organisms/QuickTransferFlow/SelectSourceLabware.tsx new file mode 100644 index 00000000000..5c2889b91f7 --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/SelectSourceLabware.tsx @@ -0,0 +1,135 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' +import { + Flex, + SPACING, + DIRECTION_COLUMN, + DIRECTION_ROW, + COLORS, + POSITION_FIXED, + ALIGN_CENTER, +} from '@opentrons/components' + +import { SmallButton, LargeButton, TabbedButton } from '../../atoms/buttons' +import { ChildNavigation } from '../ChildNavigation' +import { getCompatibleLabwareByCategory } from './utils' + +import type { LabwareDefinition2 } from '@opentrons/shared-data' +import type { + QuickTransferSetupState, + QuickTransferWizardAction, +} from './types' +import { LabwareFilter } from '../../pages/Labware/types' + +interface SelectSourceLabwareProps { + onNext: () => void + onBack: () => void + exitButtonProps: React.ComponentProps + state: QuickTransferSetupState + dispatch: React.Dispatch +} + +export function SelectSourceLabware( + props: SelectSourceLabwareProps +): JSX.Element | null { + const { onNext, onBack, exitButtonProps, state, dispatch } = props + const { i18n, t } = useTranslation(['quick_transfer', 'shared']) + const labwareDisplayCategoryFilters: LabwareFilter[] = [ + 'all', + 'wellPlate', + 'reservoir', + ] + if (state.pipette?.channels === 1) { + labwareDisplayCategoryFilters.push('tubeRack') + } + const [selectedCategory, setSelectedCategory] = React.useState( + 'all' + ) + + const [selectedLabware, setSelectedLabware] = React.useState< + LabwareDefinition2 | undefined + >(state.source) + + if (state.pipette == null) return null + + const compatibleLabwareDefinitions = getCompatibleLabwareByCategory( + state.pipette.channels, + selectedCategory + ) + + const handleClickNext = (): void => { + // the button will be disabled if this values is null + if (selectedLabware != null) { + dispatch({ + type: 'SET_SOURCE_LABWARE', + labware: selectedLabware, + }) + onNext() + } + } + return ( + + + + + {labwareDisplayCategoryFilters.map(category => ( + setSelectedCategory(category)} + height={SPACING.spacing60} + > + {t(category)} + + ))} + + + {compatibleLabwareDefinitions?.map(definition => { + return definition.metadata.displayName != null ? ( + { + setSelectedLabware(definition) + }} + buttonText={definition.metadata.displayName} + /> + ) : null + })} + + + + ) +} diff --git a/app/src/organisms/QuickTransferFlow/SelectSourceWells.tsx b/app/src/organisms/QuickTransferFlow/SelectSourceWells.tsx new file mode 100644 index 00000000000..1cdc2b75595 --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/SelectSourceWells.tsx @@ -0,0 +1,54 @@ +import * as React from 'react' +import { useTranslation } from 'react-i18next' +import { Flex, SPACING } from '@opentrons/components' + +import { SmallButton } from '../../atoms/buttons' +import { ChildNavigation } from '../ChildNavigation' + +import type { + QuickTransferSetupState, + QuickTransferWizardAction, +} from './types' + +interface SelectSourceWellsProps { + onNext: () => void + onBack: () => void + exitButtonProps: React.ComponentProps + state: QuickTransferSetupState + dispatch: React.Dispatch +} + +export function SelectSourceWells(props: SelectSourceWellsProps): JSX.Element { + const { onNext, onBack, exitButtonProps, state, dispatch } = props + const { i18n, t } = useTranslation(['quick_transfer', 'shared']) + + const handleClickNext = (): void => { + // until well selection is implemented, select all wells and proceed to the next step + if (state.source?.wells != null) { + dispatch({ + type: 'SET_SOURCE_WELLS', + wells: Object.keys(state.source.wells), + }) + onNext() + } + } + return ( + + + + TODO: Add source well selection deck map + + + ) +} diff --git a/app/src/organisms/QuickTransferFlow/SelectTipRack.tsx b/app/src/organisms/QuickTransferFlow/SelectTipRack.tsx index bed59baa54b..ec5e3cad0e0 100644 --- a/app/src/organisms/QuickTransferFlow/SelectTipRack.tsx +++ b/app/src/organisms/QuickTransferFlow/SelectTipRack.tsx @@ -64,6 +64,7 @@ export function SelectTipRack(props: SelectTipRackProps): JSX.Element { return tipRackDef != null ? ( void + onBack: () => void + exitButtonProps: React.ComponentProps + state: QuickTransferSetupState + dispatch: React.Dispatch +} + +export function VolumeEntry(props: VolumeEntryProps): JSX.Element { + const { onNext, onBack, exitButtonProps, state, dispatch } = props + const { i18n, t } = useTranslation(['quick_transfer', 'shared']) + const keyboardRef = React.useRef(null) + + const [volume, setVolume] = React.useState( + state.volume ? state.volume.toString() : '' + ) + const volumeRange = getVolumeLimits(state) + let headerCopy = t('set_transfer_volume') + let textEntryCopy = t('volume_per_well') + if ( + state.sourceWells != null && + state.destinationWells != null && + state.sourceWells.length > state.destinationWells?.length + ) { + headerCopy = t('set_aspirate_volume') + textEntryCopy = t('aspirate_volume') + } else if ( + state.sourceWells != null && + state.destinationWells != null && + state.sourceWells.length < state.destinationWells.length + ) { + headerCopy = t('set_dispense_volume') + textEntryCopy = t('dispense_volume') + } + + const volumeAsNumber = Number(volume) + + const handleClickNext = (): void => { + // the button will be disabled if this values is null + if (volumeAsNumber != null) { + dispatch({ + type: 'SET_VOLUME', + volume: volumeAsNumber, + }) + onNext() + } + } + + const error = + volume !== '' && + (volumeAsNumber < volumeRange.min || volumeAsNumber > volumeRange.max) + ? t(`value_out_of_range`, { + min: volumeRange.min, + max: volumeRange.max, + }) + : null + + return ( + + + + + + + + setVolume(e)} + /> + + + + ) +} diff --git a/app/src/organisms/QuickTransferFlow/__tests__/ConfirmExitModal.test.tsx b/app/src/organisms/QuickTransferFlow/__tests__/ConfirmExitModal.test.tsx new file mode 100644 index 00000000000..f1e3681a93a --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/__tests__/ConfirmExitModal.test.tsx @@ -0,0 +1,42 @@ +import * as React from 'react' +import { fireEvent, screen } from '@testing-library/react' +import { describe, it, expect, afterEach, vi, beforeEach } from 'vitest' + +import { renderWithProviders } from '../../../__testing-utils__' +import { i18n } from '../../../i18n' +import { ConfirmExitModal } from '../ConfirmExitModal' + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + }) +} + +describe('ConfirmExitModal', () => { + let props: React.ComponentProps + + beforeEach(() => { + props = { + confirmExit: vi.fn(), + cancelExit: vi.fn(), + } + }) + afterEach(() => { + vi.resetAllMocks() + }) + + it('renders the create new transfer screen and header', () => { + render(props) + screen.getByText('Exit quick transfer?') + screen.getByText('You will lose all progress on this quick transfer.') + }) + it('renders exit and cancel buttons and they work as expected', () => { + render(props) + const cancelBtn = screen.getByText('Cancel') + fireEvent.click(cancelBtn) + expect(props.cancelExit).toHaveBeenCalled() + const deleteBtn = screen.getByText('Delete') + fireEvent.click(deleteBtn) + expect(props.confirmExit).toHaveBeenCalled() + }) +}) diff --git a/app/src/organisms/QuickTransferFlow/__tests__/SelectDestLabware.test.tsx b/app/src/organisms/QuickTransferFlow/__tests__/SelectDestLabware.test.tsx new file mode 100644 index 00000000000..a2d2430c268 --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/__tests__/SelectDestLabware.test.tsx @@ -0,0 +1,116 @@ +import * as React from 'react' +import { fireEvent, screen } from '@testing-library/react' +import { describe, it, expect, afterEach, vi, beforeEach } from 'vitest' + +import { renderWithProviders } from '../../../__testing-utils__' +import { i18n } from '../../../i18n' +import { SelectDestLabware } from '../SelectDestLabware' + +vi.mock('@opentrons/react-api-client') +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + }) +} + +describe('SelectDestLabware', () => { + let props: React.ComponentProps + + beforeEach(() => { + props = { + onNext: vi.fn(), + onBack: vi.fn(), + exitButtonProps: { + buttonType: 'tertiaryLowLight', + buttonText: 'Exit', + onClick: vi.fn(), + }, + state: { + mount: 'left', + pipette: { + channels: 1, + } as any, + }, + dispatch: vi.fn(), + } + }) + afterEach(() => { + vi.resetAllMocks() + }) + + it('renders the select destination labware screen, header, and exit button', () => { + render(props) + screen.getByText('Select destination labware') + const exitBtn = screen.getByText('Exit') + fireEvent.click(exitBtn) + expect(props.exitButtonProps.onClick).toHaveBeenCalled() + }) + + it('renders continue button and it is disabled if no labware is selected', () => { + render(props) + screen.getByText('Continue') + const continueBtn = screen.getByTestId('ChildNavigation_Primary_Button') + expect(continueBtn).toBeDisabled() + }) + + it('selects labware by default if there is one in state, button will be enabled', () => { + render({ + ...props, + state: { + pipette: { + channels: 1, + } as any, + destination: { + metadata: { + displayName: 'destination labware name', + }, + } as any, + }, + }) + const continueBtn = screen.getByTestId('ChildNavigation_Primary_Button') + expect(continueBtn).toBeEnabled() + fireEvent.click(continueBtn) + expect(props.onNext).toHaveBeenCalled() + expect(props.dispatch).toHaveBeenCalled() + }) + + it('renders all categories for a single channel pipette', () => { + render(props) + screen.getByText('All labware') + screen.getByText('Well plates') + screen.getByText('Reservoirs') + screen.getByText('Tube racks') + }) + + it.fails('does not render tube rack tab for multi channel pipette', () => { + render({ ...props, state: { pipette: { channels: 8 } as any } }) + screen.getByText('Tube racks') + }) + + it('renders the source labware as the first option', () => { + render({ + ...props, + state: { + pipette: { channels: 8 } as any, + source: { metadata: { displayName: 'source labware name' } } as any, + }, + }) + render(props) + screen.getByText('Source labware in D2') + screen.getByText('source labware name') + }) + it('enables continue button if you select a labware', () => { + render({ + ...props, + state: { + pipette: { channels: 8 } as any, + source: { metadata: { displayName: 'source labware name' } } as any, + }, + }) + const continueBtn = screen.getByTestId('ChildNavigation_Primary_Button') + expect(continueBtn).toBeDisabled() + const sourceLabware = screen.getByText('Source labware in D2') + fireEvent.click(sourceLabware) + expect(continueBtn).toBeEnabled() + }) +}) diff --git a/app/src/organisms/QuickTransferFlow/__tests__/SelectSourceLabware.test.tsx b/app/src/organisms/QuickTransferFlow/__tests__/SelectSourceLabware.test.tsx new file mode 100644 index 00000000000..43b8c1a1e15 --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/__tests__/SelectSourceLabware.test.tsx @@ -0,0 +1,101 @@ +import * as React from 'react' +import { fireEvent, screen } from '@testing-library/react' +import { describe, it, expect, afterEach, vi, beforeEach } from 'vitest' + +import { renderWithProviders } from '../../../__testing-utils__' +import { i18n } from '../../../i18n' +import { SelectSourceLabware } from '../SelectSourceLabware' + +vi.mock('@opentrons/react-api-client') +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + }) +} + +describe('SelectSourceLabware', () => { + let props: React.ComponentProps + + beforeEach(() => { + props = { + onNext: vi.fn(), + onBack: vi.fn(), + exitButtonProps: { + buttonType: 'tertiaryLowLight', + buttonText: 'Exit', + onClick: vi.fn(), + }, + state: { + mount: 'left', + pipette: { + channels: 1, + } as any, + }, + dispatch: vi.fn(), + } + }) + afterEach(() => { + vi.resetAllMocks() + }) + + it('renders the select source labware screen, header, and exit button', () => { + render(props) + screen.getByText('Select source labware') + const exitBtn = screen.getByText('Exit') + fireEvent.click(exitBtn) + expect(props.exitButtonProps.onClick).toHaveBeenCalled() + }) + + it('renders continue button and it is disabled if no labware is selected', () => { + render(props) + screen.getByText('Continue') + const continueBtn = screen.getByTestId('ChildNavigation_Primary_Button') + expect(continueBtn).toBeDisabled() + }) + + it('selects labware by default if there is one in state, button will be enabled', () => { + render({ + ...props, + state: { + pipette: { + channels: 1, + } as any, + source: { + metadata: { + displayName: 'source display name', + }, + } as any, + }, + }) + const continueBtn = screen.getByTestId('ChildNavigation_Primary_Button') + expect(continueBtn).toBeEnabled() + fireEvent.click(continueBtn) + expect(props.onNext).toHaveBeenCalled() + expect(props.dispatch).toHaveBeenCalled() + }) + + it('renders all categories for a single channel pipette', () => { + render(props) + screen.getByText('All labware') + screen.getByText('Well plates') + screen.getByText('Reservoirs') + screen.getByText('Tube racks') + }) + + it.fails('does not render tube rack tab for multi channel pipette', () => { + render({ ...props, state: { pipette: { channels: 8 } as any } }) + screen.getByText('Tube racks') + }) + + it('enables continue button if you select a labware', () => { + render(props) + const continueBtn = screen.getByTestId('ChildNavigation_Primary_Button') + expect(continueBtn).toBeDisabled() + const labwareOption = screen.getByText('Bio-Rad 384 Well Plate 50 µL') + fireEvent.click(labwareOption) + expect(continueBtn).toBeEnabled() + fireEvent.click(continueBtn) + expect(props.onNext).toHaveBeenCalled() + expect(props.dispatch).toHaveBeenCalled() + }) +}) diff --git a/app/src/organisms/QuickTransferFlow/__tests__/VolumeEntry.test.tsx b/app/src/organisms/QuickTransferFlow/__tests__/VolumeEntry.test.tsx new file mode 100644 index 00000000000..dd2bb6dae4c --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/__tests__/VolumeEntry.test.tsx @@ -0,0 +1,158 @@ +import * as React from 'react' +import { fireEvent, screen } from '@testing-library/react' +import { describe, it, expect, afterEach, vi, beforeEach } from 'vitest' + +import { renderWithProviders } from '../../../__testing-utils__' +import { i18n } from '../../../i18n' +import { InputField } from '../../../atoms/InputField' +import { NumericalKeyboard } from '../../../atoms/SoftwareKeyboard' +import { getVolumeLimits } from '../utils' +import { VolumeEntry } from '../VolumeEntry' + +vi.mock('../../../atoms/InputField') +vi.mock('../../../atoms/SoftwareKeyboard') +vi.mock('../utils') + +const render = (props: React.ComponentProps) => { + return renderWithProviders(, { + i18nInstance: i18n, + }) +} + +describe('VolumeEntry', () => { + let props: React.ComponentProps + + beforeEach(() => { + props = { + onNext: vi.fn(), + onBack: vi.fn(), + exitButtonProps: { + buttonType: 'tertiaryLowLight', + buttonText: 'Exit', + onClick: vi.fn(), + }, + state: { + mount: 'left', + pipette: { + channels: 1, + } as any, + sourceWells: ['A1'], + destinationWells: ['A1'], + }, + dispatch: vi.fn(), + } + vi.mocked(getVolumeLimits).mockReturnValue({ min: 5, max: 50 }) + }) + afterEach(() => { + vi.resetAllMocks() + }) + + it('renders the volume entry screen, continue, and exit buttons', () => { + render(props) + const exitBtn = screen.getByText('Exit') + fireEvent.click(exitBtn) + expect(props.exitButtonProps.onClick).toHaveBeenCalled() + expect(vi.mocked(InputField)).toHaveBeenCalled() + expect(vi.mocked(NumericalKeyboard)).toHaveBeenCalled() + const continueBtn = screen.getByTestId('ChildNavigation_Primary_Button') + expect(continueBtn).toBeDisabled() + }) + + it('renders transfer text if there are more destination wells than source wells', () => { + render(props) + screen.getByText('Set transfer volume') + expect(vi.mocked(InputField)).toHaveBeenCalledWith( + { + title: 'Volume per well (µL)', + error: null, + readOnly: true, + type: 'text', + value: '', + }, + {} + ) + }) + + it('renders dispense text if there are more destination wells than source wells', () => { + render({ + ...props, + state: { + sourceWells: ['A1'], + destinationWells: ['A1', 'A2'], + }, + }) + render(props) + screen.getByText('Set dispense volume') + expect(vi.mocked(InputField)).toHaveBeenCalledWith( + { + title: 'Dispense volume per well (µL)', + error: null, + readOnly: true, + type: 'text', + value: '', + }, + {} + ) + }) + + it('renders aspirate text if there are more destination wells than source wells', () => { + render({ + ...props, + state: { + sourceWells: ['A1', 'A2'], + destinationWells: ['A1'], + }, + }) + render(props) + screen.getByText('Set aspirate volume') + expect(vi.mocked(InputField)).toHaveBeenCalledWith( + { + title: 'Aspirate volume per well (µL)', + error: null, + readOnly: true, + type: 'text', + value: '', + }, + {} + ) + }) + + it('calls on next and dispatch if you press continue when volume is non-null and within range', () => { + render({ + ...props, + state: { + sourceWells: ['A1', 'A2'], + destinationWells: ['A1'], + volume: 20, + }, + }) + const continueBtn = screen.getByTestId('ChildNavigation_Primary_Button') + expect(continueBtn).toBeEnabled() + fireEvent.click(continueBtn) + expect(vi.mocked(props.onNext)).toHaveBeenCalled() + expect(vi.mocked(props.dispatch)).toHaveBeenCalled() + }) + + it('displays an error and disables continue when volume is outside of range', () => { + render({ + ...props, + state: { + sourceWells: ['A1', 'A2'], + destinationWells: ['A1'], + volume: 90, + }, + }) + const continueBtn = screen.getByTestId('ChildNavigation_Primary_Button') + expect(continueBtn).toBeDisabled() + expect(vi.mocked(InputField)).toHaveBeenCalledWith( + { + title: 'Aspirate volume per well (µL)', + error: 'Value must be between 5-50', + readOnly: true, + type: 'text', + value: '90', + }, + {} + ) + }) +}) diff --git a/app/src/organisms/QuickTransferFlow/__tests__/utils.test.ts b/app/src/organisms/QuickTransferFlow/__tests__/utils.test.ts new file mode 100644 index 00000000000..7cb4c7e1495 --- /dev/null +++ b/app/src/organisms/QuickTransferFlow/__tests__/utils.test.ts @@ -0,0 +1,108 @@ +import { describe, it, expect } from 'vitest' +import { getVolumeLimits, generateCompatibleLabwareForPipette } from '../utils' +import { + SINGLE_CHANNEL_COMPATIBLE_LABWARE, + EIGHT_CHANNEL_COMPATIBLE_LABWARE, + NINETY_SIX_CHANNEL_COMPATIBLE_LABWARE, +} from '../constants' + +import type { QuickTransferSetupState } from '../types' + +describe('getVolumeLimits', () => { + const state: QuickTransferSetupState = { + pipette: { + liquids: [ + { + maxVolume: 1000, + minVolume: 5, + }, + ] as any, + } as any, + tipRack: { + wells: { + A1: { + totalLiquidVolume: 200, + }, + } as any, + } as any, + source: { + wells: { + A1: { + totalLiquidVolume: 200, + }, + A2: { + totalLiquidVolume: 75, + }, + A3: { + totalLiquidVolume: 100, + }, + } as any, + } as any, + sourceWells: ['A1'], + destination: { + wells: { + A1: { + totalLiquidVolume: 1000, + }, + A2: { + totalLiquidVolume: 1000, + }, + } as any, + } as any, + destinationWells: ['A1'], + } + it('calculates the range for a 1 to 1 transfer', () => { + const result = getVolumeLimits(state) + expect(result.min).toEqual(5) + // should equal lesser of pipette max, tip capacity, volume of all selected wells + expect(result.max).toEqual(200) + }) + it('calculates the range for an n to 1 transfer', () => { + const result = getVolumeLimits({ ...state, sourceWells: ['A1', 'A2'] }) + expect(result.min).toEqual(5) + // should equal lesser of pipette max, tip capacity, volume of all + // selected source wells and 1 / 2 volume of destination well + expect(result.max).toEqual(75) + }) + it('calculates the range for an 1 to n transfer', () => { + const result = getVolumeLimits({ ...state, destinationWells: ['A1', 'A2'] }) + expect(result.min).toEqual(5) + // should equal lesser of pipette max, tip capacity, volume of all + // selected destination wells and 1 / 2 volume of source well + expect(result.max).toEqual(100) + }) + it('calculates the range for 1 to n transfer with same labware', () => { + const result = getVolumeLimits({ + ...state, + destination: 'source', + destinationWells: ['A2', 'A3'], + }) + expect(result.min).toEqual(5) + // should equal lesser of pipette max, tip capacity, volume of all + // selected destination wells and 1 / 2 volume of source well + expect(result.max).toEqual(75) + }) +}) + +// if one of these fails, it is likely that a new definition has been added +// and you need to regenerate the lists stored at ../constants +describe('generateCompatibleLabwareForPipette', () => { + it('generates the list for single channel pipettes', () => { + const compatibleLabwareUris = generateCompatibleLabwareForPipette({ + channels: 1, + } as any) + expect(compatibleLabwareUris).toEqual(SINGLE_CHANNEL_COMPATIBLE_LABWARE) + }) + it('generates the list for eight channel pipettes', () => { + const compatibleLabwareUris = generateCompatibleLabwareForPipette({ + channels: 8, + } as any) + expect(compatibleLabwareUris).toEqual(EIGHT_CHANNEL_COMPATIBLE_LABWARE) + }) + it('generates the list for 96 channel pipettes', () => { + const compatibleLabwareUris = generateCompatibleLabwareForPipette({ + channels: 96, + } as any) + expect(compatibleLabwareUris).toEqual(NINETY_SIX_CHANNEL_COMPATIBLE_LABWARE) + }) +}) diff --git a/app/src/organisms/QuickTransferFlow/constants.ts b/app/src/organisms/QuickTransferFlow/constants.ts index 3241759a044..9fa3a8fc28b 100644 --- a/app/src/organisms/QuickTransferFlow/constants.ts +++ b/app/src/organisms/QuickTransferFlow/constants.ts @@ -7,3 +7,171 @@ export const ACTIONS = { SET_DEST_WELLS: 'SET_DEST_WELLS', SET_VOLUME: 'SET_VOLUME', } as const + +// these lists are generated by the util generateCompatibleLabwareForPipette in ./utils +export const SINGLE_CHANNEL_COMPATIBLE_LABWARE = [ + 'opentrons/agilent_1_reservoir_290ml/1', + 'opentrons/appliedbiosystemsmicroamp_384_wellplate_40ul/1', + 'opentrons/axygen_1_reservoir_90ml/1', + 'opentrons/biorad_384_wellplate_50ul/2', + 'opentrons/biorad_96_wellplate_200ul_pcr/2', + 'opentrons/corning_12_wellplate_6.9ml_flat/2', + 'opentrons/corning_24_wellplate_3.4ml_flat/2', + 'opentrons/corning_384_wellplate_112ul_flat/2', + 'opentrons/corning_48_wellplate_1.6ml_flat/2', + 'opentrons/corning_6_wellplate_16.8ml_flat/2', + 'opentrons/corning_96_wellplate_360ul_flat/2', + 'opentrons/geb_96_tiprack_1000ul/1', + 'opentrons/geb_96_tiprack_10ul/1', + 'opentrons/nest_12_reservoir_15ml/1', + 'opentrons/nest_1_reservoir_195ml/2', + 'opentrons/nest_1_reservoir_290ml/1', + 'opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2', + 'opentrons/nest_96_wellplate_200ul_flat/2', + 'opentrons/nest_96_wellplate_2ml_deep/2', + 'opentrons/opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical/1', + 'opentrons/opentrons_10_tuberack_nest_4x50ml_6x15ml_conical/1', + 'opentrons/opentrons_15_tuberack_falcon_15ml_conical/1', + 'opentrons/opentrons_15_tuberack_nest_15ml_conical/1', + 'opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/2', + 'opentrons/opentrons_24_aluminumblock_nest_0.5ml_screwcap/1', + 'opentrons/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1', + 'opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1', + 'opentrons/opentrons_24_aluminumblock_nest_2ml_screwcap/1', + 'opentrons/opentrons_24_aluminumblock_nest_2ml_snapcap/1', + 'opentrons/opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap/1', + 'opentrons/opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap/1', + 'opentrons/opentrons_24_tuberack_generic_2ml_screwcap/1', + 'opentrons/opentrons_24_tuberack_nest_0.5ml_screwcap/1', + 'opentrons/opentrons_24_tuberack_nest_1.5ml_screwcap/1', + 'opentrons/opentrons_24_tuberack_nest_1.5ml_snapcap/1', + 'opentrons/opentrons_24_tuberack_nest_2ml_screwcap/1', + 'opentrons/opentrons_24_tuberack_nest_2ml_snapcap/1', + 'opentrons/opentrons_6_tuberack_falcon_50ml_conical/1', + 'opentrons/opentrons_6_tuberack_nest_50ml_conical/1', + 'opentrons/opentrons_96_aluminumblock_biorad_wellplate_200ul/1', + 'opentrons/opentrons_96_aluminumblock_generic_pcr_strip_200ul/2', + 'opentrons/opentrons_96_aluminumblock_nest_wellplate_100ul/1', + 'opentrons/opentrons_96_deep_well_adapter/1', + 'opentrons/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/1', + 'opentrons/opentrons_96_filtertiprack_1000ul/1', + 'opentrons/opentrons_96_filtertiprack_10ul/1', + 'opentrons/opentrons_96_filtertiprack_200ul/1', + 'opentrons/opentrons_96_filtertiprack_20ul/1', + 'opentrons/opentrons_96_flat_bottom_adapter/1', + 'opentrons/opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat/1', + 'opentrons/opentrons_96_pcr_adapter/1', + 'opentrons/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/1', + 'opentrons/opentrons_96_tiprack_1000ul/1', + 'opentrons/opentrons_96_tiprack_10ul/1', + 'opentrons/opentrons_96_tiprack_20ul/1', + 'opentrons/opentrons_96_tiprack_300ul/1', + 'opentrons/opentrons_96_well_aluminum_block/1', + 'opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2', + 'opentrons/opentrons_aluminum_flat_bottom_plate/1', + 'opentrons/opentrons_flex_96_filtertiprack_1000ul/1', + 'opentrons/opentrons_flex_96_filtertiprack_200ul/1', + 'opentrons/opentrons_flex_96_filtertiprack_50ul/1', + 'opentrons/opentrons_flex_96_tiprack_1000ul/1', + 'opentrons/opentrons_flex_96_tiprack_200ul/1', + 'opentrons/opentrons_flex_96_tiprack_50ul/1', + 'opentrons/opentrons_flex_96_tiprack_adapter/1', + 'opentrons/opentrons_universal_flat_adapter/1', + 'opentrons/opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat/1', + 'opentrons/thermoscientificnunc_96_wellplate_1300ul/1', + 'opentrons/thermoscientificnunc_96_wellplate_2000ul/1', + 'opentrons/usascientific_12_reservoir_22ml/1', + 'opentrons/usascientific_96_wellplate_2.4ml_deep/1', +] + +export const EIGHT_CHANNEL_COMPATIBLE_LABWARE = [ + 'opentrons/agilent_1_reservoir_290ml/1', + 'opentrons/appliedbiosystemsmicroamp_384_wellplate_40ul/1', + 'opentrons/axygen_1_reservoir_90ml/1', + 'opentrons/biorad_384_wellplate_50ul/2', + 'opentrons/biorad_96_wellplate_200ul_pcr/2', + 'opentrons/corning_384_wellplate_112ul_flat/2', + 'opentrons/corning_96_wellplate_360ul_flat/2', + 'opentrons/geb_96_tiprack_1000ul/1', + 'opentrons/geb_96_tiprack_10ul/1', + 'opentrons/nest_12_reservoir_15ml/1', + 'opentrons/nest_1_reservoir_195ml/2', + 'opentrons/nest_1_reservoir_290ml/1', + 'opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2', + 'opentrons/nest_96_wellplate_200ul_flat/2', + 'opentrons/nest_96_wellplate_2ml_deep/2', + 'opentrons/opentrons_96_aluminumblock_biorad_wellplate_200ul/1', + 'opentrons/opentrons_96_aluminumblock_generic_pcr_strip_200ul/2', + 'opentrons/opentrons_96_aluminumblock_nest_wellplate_100ul/1', + 'opentrons/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/1', + 'opentrons/opentrons_96_filtertiprack_1000ul/1', + 'opentrons/opentrons_96_filtertiprack_10ul/1', + 'opentrons/opentrons_96_filtertiprack_200ul/1', + 'opentrons/opentrons_96_filtertiprack_20ul/1', + 'opentrons/opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat/1', + 'opentrons/opentrons_96_pcr_adapter/1', + 'opentrons/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/1', + 'opentrons/opentrons_96_tiprack_1000ul/1', + 'opentrons/opentrons_96_tiprack_10ul/1', + 'opentrons/opentrons_96_tiprack_20ul/1', + 'opentrons/opentrons_96_tiprack_300ul/1', + 'opentrons/opentrons_96_well_aluminum_block/1', + 'opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2', + 'opentrons/opentrons_flex_96_filtertiprack_1000ul/1', + 'opentrons/opentrons_flex_96_filtertiprack_200ul/1', + 'opentrons/opentrons_flex_96_filtertiprack_50ul/1', + 'opentrons/opentrons_flex_96_tiprack_1000ul/1', + 'opentrons/opentrons_flex_96_tiprack_200ul/1', + 'opentrons/opentrons_flex_96_tiprack_50ul/1', + 'opentrons/opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat/1', + 'opentrons/thermoscientificnunc_96_wellplate_1300ul/1', + 'opentrons/thermoscientificnunc_96_wellplate_2000ul/1', + 'opentrons/usascientific_12_reservoir_22ml/1', + 'opentrons/usascientific_96_wellplate_2.4ml_deep/1', +] + +export const NINETY_SIX_CHANNEL_COMPATIBLE_LABWARE = [ + 'opentrons/agilent_1_reservoir_290ml/1', + 'opentrons/appliedbiosystemsmicroamp_384_wellplate_40ul/1', + 'opentrons/axygen_1_reservoir_90ml/1', + 'opentrons/biorad_384_wellplate_50ul/2', + 'opentrons/biorad_96_wellplate_200ul_pcr/2', + 'opentrons/corning_384_wellplate_112ul_flat/2', + 'opentrons/corning_96_wellplate_360ul_flat/2', + 'opentrons/geb_96_tiprack_1000ul/1', + 'opentrons/geb_96_tiprack_10ul/1', + 'opentrons/nest_12_reservoir_15ml/1', + 'opentrons/nest_1_reservoir_195ml/2', + 'opentrons/nest_1_reservoir_290ml/1', + 'opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2', + 'opentrons/nest_96_wellplate_200ul_flat/2', + 'opentrons/nest_96_wellplate_2ml_deep/2', + 'opentrons/opentrons_96_aluminumblock_biorad_wellplate_200ul/1', + 'opentrons/opentrons_96_aluminumblock_generic_pcr_strip_200ul/2', + 'opentrons/opentrons_96_aluminumblock_nest_wellplate_100ul/1', + 'opentrons/opentrons_96_deep_well_adapter_nest_wellplate_2ml_deep/1', + 'opentrons/opentrons_96_filtertiprack_1000ul/1', + 'opentrons/opentrons_96_filtertiprack_10ul/1', + 'opentrons/opentrons_96_filtertiprack_200ul/1', + 'opentrons/opentrons_96_filtertiprack_20ul/1', + 'opentrons/opentrons_96_flat_bottom_adapter_nest_wellplate_200ul_flat/1', + 'opentrons/opentrons_96_pcr_adapter/1', + 'opentrons/opentrons_96_pcr_adapter_nest_wellplate_100ul_pcr_full_skirt/1', + 'opentrons/opentrons_96_tiprack_1000ul/1', + 'opentrons/opentrons_96_tiprack_10ul/1', + 'opentrons/opentrons_96_tiprack_20ul/1', + 'opentrons/opentrons_96_tiprack_300ul/1', + 'opentrons/opentrons_96_well_aluminum_block/1', + 'opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2', + 'opentrons/opentrons_flex_96_filtertiprack_1000ul/1', + 'opentrons/opentrons_flex_96_filtertiprack_200ul/1', + 'opentrons/opentrons_flex_96_filtertiprack_50ul/1', + 'opentrons/opentrons_flex_96_tiprack_1000ul/1', + 'opentrons/opentrons_flex_96_tiprack_200ul/1', + 'opentrons/opentrons_flex_96_tiprack_50ul/1', + 'opentrons/opentrons_universal_flat_adapter_corning_384_wellplate_112ul_flat/1', + 'opentrons/thermoscientificnunc_96_wellplate_1300ul/1', + 'opentrons/thermoscientificnunc_96_wellplate_2000ul/1', + 'opentrons/usascientific_12_reservoir_22ml/1', + 'opentrons/usascientific_96_wellplate_2.4ml_deep/1', +] diff --git a/app/src/organisms/QuickTransferFlow/index.tsx b/app/src/organisms/QuickTransferFlow/index.tsx index cdfecc4fbe2..fe70233bdde 100644 --- a/app/src/organisms/QuickTransferFlow/index.tsx +++ b/app/src/organisms/QuickTransferFlow/index.tsx @@ -2,16 +2,20 @@ import * as React from 'react' import { useHistory } from 'react-router-dom' import { useTranslation } from 'react-i18next' import { - Flex, + useConditionalConfirm, StepMeter, - SPACING, POSITION_STICKY, } from '@opentrons/components' import { SmallButton } from '../../atoms/buttons' -import { ChildNavigation } from '../ChildNavigation' +import { ConfirmExitModal } from './ConfirmExitModal' import { CreateNewTransfer } from './CreateNewTransfer' import { SelectPipette } from './SelectPipette' import { SelectTipRack } from './SelectTipRack' +import { SelectSourceLabware } from './SelectSourceLabware' +import { SelectSourceWells } from './SelectSourceWells' +import { SelectDestLabware } from './SelectDestLabware' +import { SelectDestWells } from './SelectDestWells' +import { VolumeEntry } from './VolumeEntry' import { quickTransferReducer } from './utils' import type { QuickTransferSetupState } from './types' @@ -27,107 +31,64 @@ export const QuickTransferFlow = (): JSX.Element => { initialQuickTransferState ) const [currentStep, setCurrentStep] = React.useState(1) - const [continueIsDisabled] = React.useState(false) - // every child component will take state as a prop, an anonymous - // dispatch function related to that step (except create new), - // and a function to disable the continue button + const { + confirm: confirmExit, + showConfirmation: showConfirmExit, + cancel: cancelExit, + } = useConditionalConfirm(() => history.push('protocols'), true) + + React.useEffect(() => { + if (state.volume != null) { + // until summary screen is implemented, log the final state and close flow + // once volume is set + console.log('final quick transfer flow state:', state) + history.push('protocols') + } + }, [state.volume]) const exitButtonProps: React.ComponentProps = { buttonType: 'tertiaryLowLight', buttonText: i18n.format(t('shared:exit'), 'capitalize'), - onClick: () => { - history.push('protocols') - }, + onClick: confirmExit, + } + const sharedMiddleStepProps = { + state, + dispatch, + onBack: () => setCurrentStep(prevStep => prevStep - 1), + onNext: () => setCurrentStep(prevStep => prevStep + 1), + exitButtonProps, } - // these will be moved to the child components once they all exist - const ORDERED_STEP_HEADERS: string[] = [ - t('create_new_transfer'), - t('select_attached_pipette'), - t('select_tip_rack'), - t('select_source_labware'), - t('select_source_wells'), - t('select_dest_labware'), - t('select_dest_wells'), - t('set_transfer_volume'), + const modalContentInOrder: JSX.Element[] = [ + setCurrentStep(prevStep => prevStep + 1)} + exitButtonProps={exitButtonProps} + />, + , + , + , + , + , + , + {}} />, ] - const header = ORDERED_STEP_HEADERS[currentStep - 1] - let modalContent: JSX.Element | null = null - if (currentStep === 1) { - modalContent = ( - setCurrentStep(prevStep => prevStep + 1)} - exitButtonProps={exitButtonProps} - /> - ) - } else if (currentStep === 2) { - modalContent = ( - setCurrentStep(prevStep => prevStep - 1)} - onNext={() => setCurrentStep(prevStep => prevStep + 1)} - exitButtonProps={exitButtonProps} - /> - ) - } else if (currentStep === 3) { - modalContent = ( - setCurrentStep(prevStep => prevStep - 1)} - onNext={() => setCurrentStep(prevStep => prevStep + 1)} - exitButtonProps={exitButtonProps} - /> - ) - } else { - modalContent = null - } - - // until each page is wired up, show header title with empty screen return ( <> - - {modalContent == null ? ( - - { - setCurrentStep(prevStep => prevStep - 1) - } - } - buttonText={i18n.format(t('shared:continue'), 'capitalize')} - onClickButton={() => { - if (currentStep === 8) { - history.push('protocols') - } else { - setCurrentStep(prevStep => prevStep + 1) - } - }} - buttonIsDisabled={continueIsDisabled} - secondaryButtonProps={{ - buttonType: 'tertiaryLowLight', - buttonText: i18n.format(t('shared:exit'), 'capitalize'), - onClick: () => { - history.push('protocols') - }, - }} - top={SPACING.spacing8} - /> - {modalContent} - + {showConfirmExit ? ( + ) : ( - modalContent + <> + + {modalContentInOrder[currentStep]} + )} ) diff --git a/app/src/organisms/QuickTransferFlow/types.ts b/app/src/organisms/QuickTransferFlow/types.ts index 1d43017a58c..b9c2d788ca8 100644 --- a/app/src/organisms/QuickTransferFlow/types.ts +++ b/app/src/organisms/QuickTransferFlow/types.ts @@ -8,7 +8,7 @@ export interface QuickTransferSetupState { tipRack?: LabwareDefinition2 source?: LabwareDefinition2 sourceWells?: string[] - destination?: LabwareDefinition2 + destination?: LabwareDefinition2 | 'source' destinationWells?: string[] volume?: number } @@ -41,7 +41,7 @@ interface SetSourceWellsAction { } interface SetDestLabwareAction { type: typeof ACTIONS.SET_DEST_LABWARE - labware: LabwareDefinition2 + labware: LabwareDefinition2 | 'source' } interface SetDestWellsAction { type: typeof ACTIONS.SET_DEST_WELLS diff --git a/app/src/organisms/QuickTransferFlow/utils.ts b/app/src/organisms/QuickTransferFlow/utils.ts index ee13d4c1720..41de2d86269 100644 --- a/app/src/organisms/QuickTransferFlow/utils.ts +++ b/app/src/organisms/QuickTransferFlow/utils.ts @@ -1,7 +1,25 @@ +import { + makeWellSetHelpers, + getLabwareDefURI, + getAllDefinitions, +} from '@opentrons/shared-data' +import { getAllDefinitions as getAllLatestDefValues } from '../../pages/Labware/helpers/definitions' +import { + SINGLE_CHANNEL_COMPATIBLE_LABWARE, + EIGHT_CHANNEL_COMPATIBLE_LABWARE, + NINETY_SIX_CHANNEL_COMPATIBLE_LABWARE, +} from './constants' + +import type { + LabwareDefinition2, + PipetteV2Specs, + WellSetHelpers, +} from '@opentrons/shared-data' import type { QuickTransferSetupState, QuickTransferWizardAction, } from './types' +import type { LabwareFilter } from '../../pages/Labware/types' export function quickTransferReducer( state: QuickTransferSetupState, @@ -73,3 +91,140 @@ export function quickTransferReducer( } } } + +export function getCompatibleLabwareByCategory( + pipetteChannels: 1 | 8 | 96, + category: LabwareFilter +): LabwareDefinition2[] | undefined { + const allLabwareDefinitions = getAllDefinitions() + let compatibleLabwareUris: string[] = SINGLE_CHANNEL_COMPATIBLE_LABWARE + if (pipetteChannels === 8) { + compatibleLabwareUris = EIGHT_CHANNEL_COMPATIBLE_LABWARE + } else if (pipetteChannels === 96) { + compatibleLabwareUris = NINETY_SIX_CHANNEL_COMPATIBLE_LABWARE + } + + const compatibleLabwareDefinitions = compatibleLabwareUris.reduce< + LabwareDefinition2[] + >((acc, defUri) => { + return [...acc, allLabwareDefinitions[defUri]] + }, []) + + if (category === 'all') { + return compatibleLabwareDefinitions.filter( + def => + def.metadata.displayCategory === 'reservoir' || + def.metadata.displayCategory === 'tubeRack' || + def.metadata.displayCategory === 'wellPlate' + ) + } else if (category === 'reservoir') { + return compatibleLabwareDefinitions.filter( + def => def.metadata.displayCategory === 'reservoir' + ) + } else if (category === 'tubeRack') { + return compatibleLabwareDefinitions.filter( + def => def.metadata.displayCategory === 'tubeRack' + ) + } else if (category === 'wellPlate') { + return compatibleLabwareDefinitions.filter( + def => def.metadata.displayCategory === 'wellPlate' + ) + } +} + +export function getVolumeLimits( + state: QuickTransferSetupState +): { min: number; max: number } { + if ( + state.pipette == null || + state.tipRack == null || + state.source == null || + state.sourceWells == null || + state.destination == null || + state.destinationWells == null + ) { + // this should only be called once all state values are set + return { min: 0, max: 0 } + } + + const minPipetteVolume = Object.values(state.pipette.liquids)[0].minVolume + const maxPipetteVolume = Object.values(state.pipette.liquids)[0].maxVolume + const tipRackVolume = Object.values(state.tipRack.wells)[0].totalLiquidVolume + const sourceLabwareVolume = Math.min( + ...state.sourceWells.map(well => + state.source ? state.source.wells[well].totalLiquidVolume : 0 + ) + ) + + const destLabwareVolume = Math.min( + ...state.destinationWells.map(well => { + if (state.source == null || state.destination == null) return 0 + return state.destination === 'source' + ? state.source.wells[well].totalLiquidVolume + : state.destination.wells[well].totalLiquidVolume + }) + ) + let maxVolume = maxPipetteVolume + if (state.sourceWells.length === state.destinationWells.length) { + // 1 to 1 transfer + maxVolume = Math.min( + ...[ + maxPipetteVolume, + tipRackVolume, + sourceLabwareVolume, + destLabwareVolume, + ] + ) + } else if (state.sourceWells.length < state.destinationWells.length) { + // 1 to n transfer + const ratio = state.sourceWells.length / state.destinationWells.length + + maxVolume = Math.min( + ...[ + maxPipetteVolume, + tipRackVolume, + sourceLabwareVolume * ratio, + destLabwareVolume, + ] + ) + } else if (state.sourceWells.length > state.destinationWells.length) { + // n to 1 transfer + const ratio = state.destinationWells.length / state.sourceWells.length + + maxVolume = Math.min( + ...[ + maxPipetteVolume, + tipRackVolume, + sourceLabwareVolume, + destLabwareVolume * ratio, + ] + ) + } + + return { min: minPipetteVolume, max: maxVolume } +} + +export function generateCompatibleLabwareForPipette( + pipetteSpecs: PipetteV2Specs +): string[] { + const allLabwareDefinitions = getAllLatestDefValues() + const wellSetHelpers: WellSetHelpers = makeWellSetHelpers() + const { canPipetteUseLabware } = wellSetHelpers + + const compatibleDefUriList = allLabwareDefinitions.reduce( + (acc, definition) => { + if (pipetteSpecs.channels === 1) { + return [...acc, getLabwareDefURI(definition)] + } else { + const isCompatible = canPipetteUseLabware(pipetteSpecs, definition) + return isCompatible ? [...acc, getLabwareDefURI(definition)] : acc + } + }, + [] + ) + + // console.log(JSON.stringify(compatibleDefUriList)) + // to update this list, uncomment the above log statement and + // paste the result into the const in ./constants.ts + return compatibleDefUriList +} diff --git a/app/src/organisms/RobotSettingsDashboard/RobotSystemVersion.tsx b/app/src/organisms/RobotSettingsDashboard/RobotSystemVersion.tsx index f5f6aeb7391..40b04d34fd9 100644 --- a/app/src/organisms/RobotSettingsDashboard/RobotSystemVersion.tsx +++ b/app/src/organisms/RobotSettingsDashboard/RobotSystemVersion.tsx @@ -40,6 +40,7 @@ export function RobotSystemVersion({ 'shared', 'device_details', 'app_settings', + 'branded', ]) const [showModal, setShowModal] = React.useState(isUpdateAvailable) @@ -76,7 +77,7 @@ export function RobotSystemVersion({ > - {t('view_latest_release_notes_at', { url: GITHUB_URL })} + {t('branded:view_latest_release_notes_at', { url: GITHUB_URL })} (null) - const currentRunCommandKey = useNotifyLastRunCommandKey(runId, { + const currentRunCommandKey = useNotifyLastRunCommand(runId, { refetchInterval: LIVE_RUN_COMMANDS_POLL_MS, - }) + })?.key const [ isCurrentCommandVisible, setIsCurrentCommandVisible, ] = React.useState(true) if (robotSideAnalysis == null) return null const commands = - (isRunTerminal ? commandsFromQuery : robotSideAnalysis.commands) ?? [] + (isRunTerminal + ? nullCheckedCommandsFromQuery + : robotSideAnalysis.commands) ?? [] const currentRunCommandIndex = commands.findIndex( c => c.key === currentRunCommandKey ) diff --git a/app/src/organisms/RunProgressMeter/__tests__/RunProgressMeter.test.tsx b/app/src/organisms/RunProgressMeter/__tests__/RunProgressMeter.test.tsx index aba56366b27..7a40319e050 100644 --- a/app/src/organisms/RunProgressMeter/__tests__/RunProgressMeter.test.tsx +++ b/app/src/organisms/RunProgressMeter/__tests__/RunProgressMeter.test.tsx @@ -11,6 +11,7 @@ import { RUN_STATUS_IDLE, RUN_STATUS_RUNNING, RUN_STATUS_SUCCEEDED, + RunCommandSummary, } from '@opentrons/api-client' import { i18n } from '../../../i18n' @@ -19,7 +20,7 @@ import { ProgressBar } from '../../../atoms/ProgressBar' import { useRunStatus } from '../../RunTimeControl/hooks' import { useMostRecentCompletedAnalysis } from '../../LabwarePositionCheck/useMostRecentCompletedAnalysis' import { - useNotifyLastRunCommandKey, + useNotifyLastRunCommand, useNotifyRunQuery, } from '../../../resources/runs' import { useDownloadRunLog } from '../../Devices/hooks' @@ -82,9 +83,9 @@ describe('RunProgressMeter', () => { downloadRunLog: vi.fn(), isRunLogLoading: false, }) - when(useNotifyLastRunCommandKey) + when(useNotifyLastRunCommand) .calledWith(NON_DETERMINISTIC_RUN_ID, { refetchInterval: 1000 }) - .thenReturn(NON_DETERMINISTIC_COMMAND_KEY) + .thenReturn({ key: NON_DETERMINISTIC_COMMAND_KEY } as RunCommandSummary) vi.mocked(useNotifyRunQuery).mockReturnValue({ data: null } as any) diff --git a/app/src/pages/DeckConfiguration/index.tsx b/app/src/pages/DeckConfiguration/index.tsx index 91a2a2d80e5..2c90d5249b8 100644 --- a/app/src/pages/DeckConfiguration/index.tsx +++ b/app/src/pages/DeckConfiguration/index.tsx @@ -88,18 +88,18 @@ export function DeckConfigurationEditor(): JSX.Element { deckDef.cutoutFixtures.find(cf => cf.id === cutoutFixtureId) ?.fixtureGroup ?? {} - let newDeckConfig = deckConfig + let newDeckConfig = currentDeckConfig if (cutoutId in fixtureGroup) { const groupMap = fixtureGroup[cutoutId]?.find(group => Object.entries(group).every(([cId, cfId]) => - deckConfig.find( + currentDeckConfig.find( config => config.cutoutId === cId && config.cutoutFixtureId === cfId ) ) ) ?? {} - newDeckConfig = deckConfig.map(cutoutConfig => + newDeckConfig = currentDeckConfig.map(cutoutConfig => cutoutConfig.cutoutId in groupMap ? { ...cutoutConfig, @@ -109,7 +109,7 @@ export function DeckConfigurationEditor(): JSX.Element { : cutoutConfig ) } else { - newDeckConfig = deckConfig.map(cutoutConfig => + newDeckConfig = currentDeckConfig.map(cutoutConfig => cutoutConfig.cutoutId === cutoutId ? { ...cutoutConfig, @@ -119,7 +119,7 @@ export function DeckConfigurationEditor(): JSX.Element { : cutoutConfig ) } - updateDeckConfiguration(newDeckConfig) + setCurrentDeckConfig(newDeckConfig) } const handleClickConfirm = (): void => { diff --git a/app/src/pages/ProtocolDashboard/index.tsx b/app/src/pages/ProtocolDashboard/index.tsx index dd4aa89b1ac..5f722874626 100644 --- a/app/src/pages/ProtocolDashboard/index.tsx +++ b/app/src/pages/ProtocolDashboard/index.tsx @@ -186,7 +186,6 @@ export function ProtocolDashboard(): JSX.Element { backgroundColor={COLORS.white} flexDirection={DIRECTION_ROW} paddingBottom={SPACING.spacing16} - paddingTop={SPACING.spacing16} position={ navMenuIsOpened || longPressModalIsOpened ? POSITION_STATIC diff --git a/app/src/pages/Protocols/hooks/index.ts b/app/src/pages/Protocols/hooks/index.ts index bcdb9793e69..93eadffba56 100644 --- a/app/src/pages/Protocols/hooks/index.ts +++ b/app/src/pages/Protocols/hooks/index.ts @@ -10,10 +10,12 @@ import { FLEX_SINGLE_SLOT_ADDRESSABLE_AREAS, getCutoutIdForSlotName, getDeckDefFromRobotType, - RunTimeParameter, getCutoutFixtureIdsForModuleModel, getCutoutFixturesForModuleModel, FLEX_MODULE_ADDRESSABLE_AREAS, + getModuleType, + MAGNETIC_MODULE_TYPE, + FLEX_USB_MODULE_ADDRESSABLE_AREAS, } from '@opentrons/shared-data' import { getLabwareSetupItemGroups } from '../utils' import { getProtocolUsesGripper } from '../../../organisms/ProtocolSetupInstruments/utils' @@ -28,6 +30,7 @@ import type { PipetteName, ProtocolAnalysisOutput, RobotType, + RunTimeParameter, } from '@opentrons/shared-data' import type { LabwareSetupItem } from '../utils' @@ -107,8 +110,9 @@ export const useRequiredProtocolHardwareFromAnalysis = ( ] : [] - const requiredModules: ProtocolModule[] = analysis.modules.map( - ({ location, model }) => { + const requiredModules: ProtocolModule[] = analysis.modules + .filter(m => getModuleType(m.model) !== MAGNETIC_MODULE_TYPE) + .map(({ location, model }) => { const cutoutIdForSlotName = getCutoutIdForSlotName( location.slotName, deckDef @@ -141,8 +145,7 @@ export const useRequiredProtocolHardwareFromAnalysis = ( cutoutFixtureId !== getCutoutFixtureIdsForModuleModel(model)[0] ), } - } - ) + }) const requiredPipettes: ProtocolPipette[] = analysis.pipettes.map( ({ mount, pipetteName }) => ({ @@ -173,11 +176,12 @@ export const useRequiredProtocolHardwareFromAnalysis = ( ) const requiredFixtures = requiredDeckConfigCompatibility - // filter out all module fixtures as they're handled in the requiredModules section via hardwareType === 'module' + // filter out all fixtures that only provide usb module addressable areas + // as they're handled in the requiredModules section via hardwareType === 'module' .filter( ({ requiredAddressableAreas }) => - !FLEX_MODULE_ADDRESSABLE_AREAS.some(modAA => - requiredAddressableAreas.includes(modAA) + !requiredAddressableAreas.every(modAA => + FLEX_USB_MODULE_ADDRESSABLE_AREAS.includes(modAA) ) ) .map(({ cutoutFixtureId, cutoutId, compatibleCutoutFixtureIds }) => ({ @@ -286,7 +290,6 @@ const useMissingProtocolHardwareFromRequiredProtocolHardware = ( robotType, protocolAnalysis ) - // determine missing or conflicted hardware return { missingProtocolHardware: [ diff --git a/app/src/pages/RunningProtocol/__tests__/RunningProtocol.test.tsx b/app/src/pages/RunningProtocol/__tests__/RunningProtocol.test.tsx index 2b43991a88f..acf08a15d77 100644 --- a/app/src/pages/RunningProtocol/__tests__/RunningProtocol.test.tsx +++ b/app/src/pages/RunningProtocol/__tests__/RunningProtocol.test.tsx @@ -35,13 +35,13 @@ import { RunPausedSplash } from '../../../organisms/OnDeviceDisplay/RunningProto import { OpenDoorAlertModal } from '../../../organisms/OpenDoorAlertModal' import { RunningProtocol } from '..' import { - useNotifyLastRunCommandKey, + useNotifyLastRunCommand, useNotifyRunQuery, } from '../../../resources/runs' import { useFeatureFlag } from '../../../redux/config' import type { UseQueryResult } from 'react-query' -import type { ProtocolAnalyses } from '@opentrons/api-client' +import type { ProtocolAnalyses, RunCommandSummary } from '@opentrons/api-client' vi.mock('@opentrons/react-api-client') vi.mock('../../../organisms/Devices/hooks') @@ -137,9 +137,9 @@ describe('RunningProtocol', () => { when(vi.mocked(useAllCommandsQuery)) .calledWith(RUN_ID, { cursor: null, pageLength: 1 }) .thenReturn(mockUseAllCommandsResponseNonDeterministic) - vi.mocked(useNotifyLastRunCommandKey).mockReturnValue({ - data: {}, - } as any) + vi.mocked(useNotifyLastRunCommand).mockReturnValue({ + key: 'FAKE_COMMAND_KEY', + } as RunCommandSummary) when(vi.mocked(useFeatureFlag)) .calledWith('enableRunNotes') .thenReturn(true) diff --git a/app/src/pages/RunningProtocol/index.tsx b/app/src/pages/RunningProtocol/index.tsx index 3ebe3b1c0ab..0bd793acc8f 100644 --- a/app/src/pages/RunningProtocol/index.tsx +++ b/app/src/pages/RunningProtocol/index.tsx @@ -18,7 +18,6 @@ import { useSwipe, } from '@opentrons/components' import { - useAllCommandsQuery, useProtocolQuery, useRunActionMutations, } from '@opentrons/react-api-client' @@ -32,7 +31,7 @@ import { useFeatureFlag } from '../../redux/config' import { StepMeter } from '../../atoms/StepMeter' import { useMostRecentCompletedAnalysis } from '../../organisms/LabwarePositionCheck/useMostRecentCompletedAnalysis' import { - useNotifyLastRunCommandKey, + useNotifyLastRunCommand, useNotifyRunQuery, } from '../../resources/runs' import { InterventionModal } from '../../organisms/InterventionModal' @@ -56,6 +55,7 @@ import { ConfirmCancelRunModal } from '../../organisms/OnDeviceDisplay/RunningPr import { RunPausedSplash } from '../../organisms/OnDeviceDisplay/RunningProtocol/RunPausedSplash' import { getLocalRobot } from '../../redux/discovery' import { OpenDoorAlertModal } from '../../organisms/OpenDoorAlertModal' +import { ErrorRecoveryFlows } from '../../organisms/ErrorRecoveryFlows' import type { OnDeviceRouteParams } from '../../App/types' @@ -95,17 +95,19 @@ export function RunningProtocol(): JSX.Element { const lastAnimatedCommand = React.useRef(null) const swipe = useSwipe() const robotSideAnalysis = useMostRecentCompletedAnalysis(runId) - const currentRunCommandKey = useNotifyLastRunCommandKey(runId, { + const lastRunCommand = useNotifyLastRunCommand(runId, { refetchInterval: LIVE_RUN_COMMANDS_POLL_MS, }) + const totalIndex = robotSideAnalysis?.commands.length const currentRunCommandIndex = robotSideAnalysis?.commands.findIndex( - c => c.key === currentRunCommandKey + c => c.key === lastRunCommand?.key ) const runStatus = useRunStatus(runId, { refetchInterval: RUN_STATUS_REFETCH_INTERVAL, }) const [enableSplash, setEnableSplash] = React.useState(true) + const [showErrorRecovery, setShowErrorRecovery] = React.useState(false) const { startedAt, stoppedAt, completedAt } = useRunTimestamps(runId) const { data: runRecord } = useNotifyRunQuery(runId, { staleTime: Infinity }) const protocolId = runRecord?.data.protocolId ?? null @@ -143,12 +145,6 @@ export function RunningProtocol(): JSX.Element { } }, [currentOption, swipe, swipe.setSwipeType]) - const { data: allCommandsQueryData } = useAllCommandsQuery(runId, { - cursor: null, - pageLength: 1, - }) - const lastRunCommand = allCommandsQueryData?.data[0] ?? null - React.useEffect(() => { if ( lastRunCommand != null && @@ -166,13 +162,21 @@ export function RunningProtocol(): JSX.Element { } }, [lastRunCommand, interventionModalCommandKey]) + const handleCompleteRecovery = (): void => { + setShowErrorRecovery(false) + setEnableSplash(false) + } + return ( <> + {showErrorRecovery ? ( + + ) : null} {enableSplash && runStatus === RUN_STATUS_AWAITING_RECOVERY && enableRunNotes ? ( setEnableSplash(false)} + onClick={() => setShowErrorRecovery(true)} errorType={errorType} protocolName={protocolName} /> @@ -242,6 +246,7 @@ export function RunningProtocol(): JSX.Element { stoppedAt, completedAt, }} + lastRunCommand={lastRunCommand} lastAnimatedCommand={lastAnimatedCommand.current} updateLastAnimatedCommand={(newCommandKey: string) => (lastAnimatedCommand.current = newCommandKey) diff --git a/app/src/redux/shell/types.ts b/app/src/redux/shell/types.ts index 276d081fc71..8f485e24bd7 100644 --- a/app/src/redux/shell/types.ts +++ b/app/src/redux/shell/types.ts @@ -142,6 +142,7 @@ export type NotifyTopic = | 'robot-server/runs' | `robot-server/runs/${string}` | 'robot-server/deck_configuration' + | `robot-server/runs/pre_serialized_commands/${string}` export interface NotifySubscribeAction { type: 'shell:NOTIFY_SUBSCRIBE' diff --git a/app/src/resources/__tests__/useNotifyService.test.ts b/app/src/resources/__tests__/useNotifyService.test.ts index ce513e3e572..b11db79ee43 100644 --- a/app/src/resources/__tests__/useNotifyService.test.ts +++ b/app/src/resources/__tests__/useNotifyService.test.ts @@ -8,7 +8,6 @@ import { useNotifyService } from '../useNotifyService' import { appShellListener } from '../../redux/shell/remote' import { useTrackEvent } from '../../redux/analytics' import { notifySubscribeAction } from '../../redux/shell' -import { useIsFlex } from '../../organisms/Devices/hooks/useIsFlex' import type { Mock } from 'vitest' import type { HostConfig } from '@opentrons/api-client' @@ -21,7 +20,6 @@ vi.mock('../../redux/analytics') vi.mock('../../redux/shell/remote', () => ({ appShellListener: vi.fn(), })) -vi.mock('../../organisms/Devices/hooks/useIsFlex') const MOCK_HOST_CONFIG: HostConfig = { hostname: 'MOCK_HOST' } const MOCK_TOPIC = '/test/topic' as any @@ -36,12 +34,10 @@ describe('useNotifyService', () => { beforeEach(() => { mockDispatch = vi.fn() - mockHTTPRefetch = vi.fn() mockTrackEvent = vi.fn() vi.mocked(useTrackEvent).mockReturnValue(mockTrackEvent) vi.mocked(useDispatch).mockReturnValue(mockDispatch) vi.mocked(useHost).mockReturnValue(MOCK_HOST_CONFIG) - vi.mocked(useIsFlex).mockReturnValue(true) vi.mocked(appShellListener).mockClear() }) @@ -51,14 +47,13 @@ describe('useNotifyService', () => { }) it('should trigger an HTTP refetch and subscribe action on a successful initial mount', () => { - renderHook(() => + const { result } = renderHook(() => useNotifyService({ topic: MOCK_TOPIC, - setRefetch: mockHTTPRefetch, options: MOCK_OPTIONS, } as any) ) - expect(mockHTTPRefetch).toHaveBeenCalledWith('once') + expect(result.current.isNotifyEnabled).toEqual(true) expect(mockDispatch).toHaveBeenCalledWith( notifySubscribeAction(MOCK_HOST_CONFIG.hostname, MOCK_TOPIC) ) @@ -66,40 +61,37 @@ describe('useNotifyService', () => { }) it('should not subscribe to notifications if forceHttpPolling is true', () => { - renderHook(() => + const { result } = renderHook(() => useNotifyService({ topic: MOCK_TOPIC, - setRefetch: mockHTTPRefetch, options: { ...MOCK_OPTIONS, forceHttpPolling: true }, } as any) ) - expect(mockHTTPRefetch).toHaveBeenCalled() + expect(result.current.isNotifyEnabled).toEqual(true) expect(appShellListener).not.toHaveBeenCalled() expect(mockDispatch).not.toHaveBeenCalled() }) it('should not subscribe to notifications if enabled is false', () => { - renderHook(() => + const { result } = renderHook(() => useNotifyService({ topic: MOCK_TOPIC, - setRefetch: mockHTTPRefetch, options: { ...MOCK_OPTIONS, enabled: false }, } as any) ) - expect(mockHTTPRefetch).toHaveBeenCalled() + expect(result.current.isNotifyEnabled).toEqual(true) expect(appShellListener).not.toHaveBeenCalled() expect(mockDispatch).not.toHaveBeenCalled() }) it('should not subscribe to notifications if staleTime is Infinity', () => { - renderHook(() => + const { result } = renderHook(() => useNotifyService({ topic: MOCK_TOPIC, - setRefetch: mockHTTPRefetch, options: { ...MOCK_OPTIONS, staleTime: Infinity }, } as any) ) - expect(mockHTTPRefetch).toHaveBeenCalled() + expect(result.current.isNotifyEnabled).toEqual(true) expect(appShellListener).not.toHaveBeenCalled() expect(mockDispatch).not.toHaveBeenCalled() }) @@ -109,14 +101,15 @@ describe('useNotifyService', () => { const errorSpy = vi.spyOn(console, 'error') errorSpy.mockImplementation(() => {}) - renderHook(() => + const { result } = renderHook(() => useNotifyService({ topic: MOCK_TOPIC, setRefetch: mockHTTPRefetch, options: MOCK_OPTIONS, } as any) ) - expect(mockHTTPRefetch).toHaveBeenCalledWith('always') + + expect(result.current.isNotifyEnabled).toEqual(true) }) it('should return set HTTP refetch to always and fire an analytics reporting event if the connection was refused', () => { @@ -126,7 +119,7 @@ describe('useNotifyService', () => { // eslint-disable-next-line n/no-callback-literal callback('ECONNREFUSED') }) - const { rerender } = renderHook(() => + const { rerender, result } = renderHook(() => useNotifyService({ topic: MOCK_TOPIC, setRefetch: mockHTTPRefetch, @@ -135,7 +128,7 @@ describe('useNotifyService', () => { ) expect(mockTrackEvent).toHaveBeenCalled() rerender() - expect(mockHTTPRefetch).toHaveBeenCalledWith('always') + expect(result.current.isNotifyEnabled).toEqual(true) }) it('should trigger a single HTTP refetch if the refetch flag was returned', () => { @@ -145,7 +138,7 @@ describe('useNotifyService', () => { // eslint-disable-next-line n/no-callback-literal callback({ refetch: true }) }) - const { rerender } = renderHook(() => + const { rerender, result } = renderHook(() => useNotifyService({ topic: MOCK_TOPIC, setRefetch: mockHTTPRefetch, @@ -153,7 +146,7 @@ describe('useNotifyService', () => { } as any) ) rerender() - expect(mockHTTPRefetch).toHaveBeenCalledWith('once') + expect(result.current.isNotifyEnabled).toEqual(true) }) it('should trigger a single HTTP refetch if the unsubscribe flag was returned', () => { @@ -163,22 +156,20 @@ describe('useNotifyService', () => { // eslint-disable-next-line n/no-callback-literal callback({ unsubscribe: true }) }) - const { rerender } = renderHook(() => + const { rerender, result } = renderHook(() => useNotifyService({ topic: MOCK_TOPIC, - setRefetch: mockHTTPRefetch, options: MOCK_OPTIONS, } as any) ) rerender() - expect(mockHTTPRefetch).toHaveBeenCalledWith('once') + expect(result.current.isNotifyEnabled).toEqual(true) }) it('should clean up the listener on dismount', () => { const { unmount } = renderHook(() => useNotifyService({ topic: MOCK_TOPIC, - setRefetch: mockHTTPRefetch, options: MOCK_OPTIONS, }) ) @@ -191,7 +182,6 @@ describe('useNotifyService', () => { useNotifyService({ hostOverride: MOCK_HOST_CONFIG, topic: MOCK_TOPIC, - setRefetch: mockHTTPRefetch, options: MOCK_OPTIONS, }) ) diff --git a/app/src/resources/deck_configuration/useNotifyDeckConfigurationQuery.ts b/app/src/resources/deck_configuration/useNotifyDeckConfigurationQuery.ts index 3ccfd9feca5..827350bd47e 100644 --- a/app/src/resources/deck_configuration/useNotifyDeckConfigurationQuery.ts +++ b/app/src/resources/deck_configuration/useNotifyDeckConfigurationQuery.ts @@ -1,31 +1,23 @@ -import * as React from 'react' - import { useDeckConfigurationQuery } from '@opentrons/react-api-client' import { useNotifyService } from '../useNotifyService' import type { UseQueryResult } from 'react-query' import type { DeckConfiguration } from '@opentrons/shared-data' -import type { - QueryOptionsWithPolling, - HTTPRefetchFrequency, -} from '../useNotifyService' +import type { QueryOptionsWithPolling } from '../useNotifyService' export function useNotifyDeckConfigurationQuery( options: QueryOptionsWithPolling = {} ): UseQueryResult { - const [refetch, setRefetch] = React.useState(null) - - useNotifyService({ + const { notifyOnSettled, isNotifyEnabled } = useNotifyService({ topic: 'robot-server/deck_configuration', - setRefetch, options, }) const httpQueryResult = useDeckConfigurationQuery({ ...options, - enabled: options?.enabled !== false && refetch != null, - onSettled: refetch === 'once' ? () => setRefetch(null) : () => null, + enabled: options?.enabled !== false && isNotifyEnabled, + onSettled: notifyOnSettled, }) return httpQueryResult diff --git a/app/src/resources/maintenance_runs/useNotifyCurrentMaintenanceRun.ts b/app/src/resources/maintenance_runs/useNotifyCurrentMaintenanceRun.ts index 28859afe393..1f9bbf2ff3b 100644 --- a/app/src/resources/maintenance_runs/useNotifyCurrentMaintenanceRun.ts +++ b/app/src/resources/maintenance_runs/useNotifyCurrentMaintenanceRun.ts @@ -1,31 +1,23 @@ -import * as React from 'react' - import { useCurrentMaintenanceRun } from '@opentrons/react-api-client' import { useNotifyService } from '../useNotifyService' import type { UseQueryResult } from 'react-query' import type { MaintenanceRun } from '@opentrons/api-client' -import type { - QueryOptionsWithPolling, - HTTPRefetchFrequency, -} from '../useNotifyService' +import type { QueryOptionsWithPolling } from '../useNotifyService' export function useNotifyCurrentMaintenanceRun( options: QueryOptionsWithPolling = {} ): UseQueryResult | UseQueryResult { - const [refetch, setRefetch] = React.useState(null) - - useNotifyService({ + const { notifyOnSettled, isNotifyEnabled } = useNotifyService({ topic: 'robot-server/maintenance_runs/current_run', - setRefetch, options, }) const httpQueryResult = useCurrentMaintenanceRun({ ...options, - enabled: options?.enabled !== false && refetch != null, - onSettled: refetch === 'once' ? () => setRefetch(null) : () => null, + enabled: options?.enabled !== false && isNotifyEnabled, + onSettled: notifyOnSettled, }) return httpQueryResult diff --git a/app/src/resources/runs/index.ts b/app/src/resources/runs/index.ts index be5fabb4970..91595d17f08 100644 --- a/app/src/resources/runs/index.ts +++ b/app/src/resources/runs/index.ts @@ -2,4 +2,5 @@ export * from './hooks' export * from './utils' export * from './useNotifyAllRunsQuery' export * from './useNotifyRunQuery' -export * from './useNotifyLastRunCommandKey' +export * from './useNotifyLastRunCommand' +export * from './useNotifyAllCommandsAsPreSerializedList' diff --git a/app/src/resources/runs/useNotifyAllCommandsAsPreSerializedList.ts b/app/src/resources/runs/useNotifyAllCommandsAsPreSerializedList.ts new file mode 100644 index 00000000000..67922a9e3ec --- /dev/null +++ b/app/src/resources/runs/useNotifyAllCommandsAsPreSerializedList.ts @@ -0,0 +1,27 @@ +import { useAllCommandsAsPreSerializedList } from '@opentrons/react-api-client' + +import { useNotifyService } from '../useNotifyService' + +import type { UseQueryResult } from 'react-query' +import type { AxiosError } from 'axios' +import type { CommandsData, GetCommandsParams } from '@opentrons/api-client' +import type { QueryOptionsWithPolling } from '../useNotifyService' + +export function useNotifyAllCommandsAsPreSerializedList( + runId: string | null, + params?: GetCommandsParams | null, + options: QueryOptionsWithPolling = {} +): UseQueryResult { + const { notifyOnSettled, isNotifyEnabled } = useNotifyService({ + topic: `robot-server/runs/pre_serialized_commands/${runId}`, + options, + }) + + const httpResponse = useAllCommandsAsPreSerializedList(runId, params, { + ...options, + enabled: options?.enabled !== false && isNotifyEnabled, + onSettled: notifyOnSettled, + }) + + return httpResponse +} diff --git a/app/src/resources/runs/useNotifyAllRunsQuery.ts b/app/src/resources/runs/useNotifyAllRunsQuery.ts index 1ae93ffc713..ab340039cfd 100644 --- a/app/src/resources/runs/useNotifyAllRunsQuery.ts +++ b/app/src/resources/runs/useNotifyAllRunsQuery.ts @@ -1,5 +1,3 @@ -import * as React from 'react' - import { useAllRunsQuery } from '@opentrons/react-api-client' import { useNotifyService } from '../useNotifyService' @@ -8,21 +6,15 @@ import type { UseQueryResult } from 'react-query' import type { AxiosError } from 'axios' import type { HostConfig, GetRunsParams, Runs } from '@opentrons/api-client' import type { UseAllRunsQueryOptions } from '@opentrons/react-api-client/src/runs/useAllRunsQuery' -import type { - QueryOptionsWithPolling, - HTTPRefetchFrequency, -} from '../useNotifyService' +import type { QueryOptionsWithPolling } from '../useNotifyService' export function useNotifyAllRunsQuery( params: GetRunsParams = {}, options: QueryOptionsWithPolling = {}, hostOverride?: HostConfig | null ): UseQueryResult { - const [refetch, setRefetch] = React.useState(null) - - useNotifyService({ + const { notifyOnSettled, isNotifyEnabled } = useNotifyService({ topic: 'robot-server/runs', - setRefetch, options, hostOverride, }) @@ -31,8 +23,8 @@ export function useNotifyAllRunsQuery( params, { ...(options as UseAllRunsQueryOptions), - enabled: options?.enabled !== false && refetch != null, - onSettled: refetch === 'once' ? () => setRefetch(null) : () => null, + enabled: options?.enabled !== false && isNotifyEnabled, + onSettled: notifyOnSettled, }, hostOverride ) diff --git a/app/src/resources/runs/useNotifyLastRunCommand.ts b/app/src/resources/runs/useNotifyLastRunCommand.ts new file mode 100644 index 00000000000..b7c2289ffc8 --- /dev/null +++ b/app/src/resources/runs/useNotifyLastRunCommand.ts @@ -0,0 +1,23 @@ +import { useNotifyService } from '../useNotifyService' +import { useLastRunCommand } from '../../organisms/Devices/hooks/useLastRunCommand' + +import type { CommandsData, RunCommandSummary } from '@opentrons/api-client' +import type { QueryOptionsWithPolling } from '../useNotifyService' + +export function useNotifyLastRunCommand( + runId: string, + options: QueryOptionsWithPolling = {} +): RunCommandSummary | null { + const { notifyOnSettled, isNotifyEnabled } = useNotifyService({ + topic: 'robot-server/runs/current_command', + options, + }) + + const httpResponse = useLastRunCommand(runId, { + ...options, + enabled: options?.enabled !== false && isNotifyEnabled, + onSettled: notifyOnSettled, + }) + + return httpResponse +} diff --git a/app/src/resources/runs/useNotifyLastRunCommandKey.ts b/app/src/resources/runs/useNotifyLastRunCommandKey.ts deleted file mode 100644 index 9c908a70749..00000000000 --- a/app/src/resources/runs/useNotifyLastRunCommandKey.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as React from 'react' - -import { useNotifyService } from '../useNotifyService' -import { useLastRunCommandKey } from '../../organisms/Devices/hooks/useLastRunCommandKey' - -import type { CommandsData } from '@opentrons/api-client' -import type { - QueryOptionsWithPolling, - HTTPRefetchFrequency, -} from '../useNotifyService' - -export function useNotifyLastRunCommandKey( - runId: string, - options: QueryOptionsWithPolling = {} -): string | null { - const [refetch, setRefetch] = React.useState(null) - - useNotifyService({ - topic: 'robot-server/runs/current_command', - setRefetch, - options, - }) - - const httpResponse = useLastRunCommandKey(runId, { - ...options, - enabled: options?.enabled !== false && refetch != null, - onSettled: refetch === 'once' ? () => setRefetch(null) : () => null, - }) - - return httpResponse -} diff --git a/app/src/resources/runs/useNotifyRunQuery.ts b/app/src/resources/runs/useNotifyRunQuery.ts index 2ca72687341..ae6b1b1bdcc 100644 --- a/app/src/resources/runs/useNotifyRunQuery.ts +++ b/app/src/resources/runs/useNotifyRunQuery.ts @@ -1,35 +1,27 @@ -import * as React from 'react' - import { useRunQuery } from '@opentrons/react-api-client' import { useNotifyService } from '../useNotifyService' import type { UseQueryResult } from 'react-query' import type { Run } from '@opentrons/api-client' -import type { - QueryOptionsWithPolling, - HTTPRefetchFrequency, -} from '../useNotifyService' +import type { QueryOptionsWithPolling } from '../useNotifyService' import type { NotifyTopic } from '../../redux/shell/types' export function useNotifyRunQuery( runId: string | null, options: QueryOptionsWithPolling = {} ): UseQueryResult { - const [refetch, setRefetch] = React.useState(null) - const isEnabled = options.enabled !== false && runId != null - useNotifyService({ + const { notifyOnSettled, isNotifyEnabled } = useNotifyService({ topic: `robot-server/runs/${runId}` as NotifyTopic, - setRefetch, options: { ...options, enabled: options.enabled != null && runId != null }, }) const httpResponse = useRunQuery(runId, { ...options, - enabled: isEnabled && refetch != null, - onSettled: refetch === 'once' ? () => setRefetch(null) : () => null, + enabled: isEnabled && isNotifyEnabled, + onSettled: notifyOnSettled, }) return httpResponse diff --git a/app/src/resources/useNotifyService.ts b/app/src/resources/useNotifyService.ts index 19831dc9c62..1cf1d1dc3fa 100644 --- a/app/src/resources/useNotifyService.ts +++ b/app/src/resources/useNotifyService.ts @@ -10,7 +10,6 @@ import { useTrackEvent, ANALYTICS_NOTIFICATION_PORT_BLOCK_ERROR, } from '../redux/analytics' -import { useIsFlex } from '../organisms/Devices/hooks/useIsFlex' import type { UseQueryOptions } from 'react-query' import type { HostConfig } from '@opentrons/api-client' @@ -25,24 +24,28 @@ export interface QueryOptionsWithPolling interface UseNotifyServiceProps { topic: NotifyTopic - setRefetch: (refetch: HTTPRefetchFrequency) => void options: QueryOptionsWithPolling hostOverride?: HostConfig | null } +interface UseNotifyServiceResults { + notifyOnSettled: () => void + isNotifyEnabled: boolean +} + export function useNotifyService({ topic, - setRefetch, options, hostOverride, -}: UseNotifyServiceProps): void { +}: UseNotifyServiceProps): UseNotifyServiceResults { const dispatch = useDispatch() const hostFromProvider = useHost() const host = hostOverride ?? hostFromProvider const hostname = host?.hostname ?? null const doTrackEvent = useTrackEvent() - const isFlex = useIsFlex(host?.robotName ?? '') const seenHostname = React.useRef(null) + const [refetch, setRefetch] = React.useState(null) + const { enabled, staleTime, forceHttpPolling } = options const shouldUseNotifications = @@ -78,11 +81,10 @@ export function useNotifyService({ } }, [topic, hostname, shouldUseNotifications]) - function onDataEvent(data: NotifyResponseData): void { + const onDataEvent = React.useCallback((data: NotifyResponseData): void => { if (data === 'ECONNFAILED' || data === 'ECONNREFUSED') { setRefetch('always') - // TODO(jh 2023-02-23): remove the robot type check once OT-2s support MQTT. - if (data === 'ECONNREFUSED' && isFlex) { + if (data === 'ECONNREFUSED') { doTrackEvent({ name: ANALYTICS_NOTIFICATION_PORT_BLOCK_ERROR, properties: {}, @@ -91,5 +93,13 @@ export function useNotifyService({ } else if ('refetch' in data || 'unsubscribe' in data) { setRefetch('once') } - } + }, []) + + const notifyOnSettled = React.useCallback(() => { + if (refetch === 'once') { + setRefetch(null) + } + }, [refetch]) + + return { notifyOnSettled, isNotifyEnabled: refetch != null } } diff --git a/components/src/molecules/ParametersTable/InfoScreen.tsx b/components/src/molecules/ParametersTable/InfoScreen.tsx index cd6db0d622b..17b4c792a98 100644 --- a/components/src/molecules/ParametersTable/InfoScreen.tsx +++ b/components/src/molecules/ParametersTable/InfoScreen.tsx @@ -8,7 +8,7 @@ import { Flex } from '../../primitives' import { ALIGN_CENTER, DIRECTION_COLUMN } from '../../styles' interface InfoScreenProps { - contentType: 'parameters' | 'moduleControls' | 'runNotStarted' + contentType: 'parameters' | 'moduleControls' | 'runNotStarted' | 'labware' t?: any } @@ -30,6 +30,9 @@ export function InfoScreen({ contentType, t }: InfoScreenProps): JSX.Element { case 'runNotStarted': bodyText = t != null ? t('run_never_started') : 'Run was never started' break + case 'labware': + bodyText = 'No labware specified in this protocol' + break default: bodyText = contentType } diff --git a/components/src/molecules/ParametersTable/__tests__/InfoScreen.test.tsx b/components/src/molecules/ParametersTable/__tests__/InfoScreen.test.tsx index a6f3b78a358..88a40257f80 100644 --- a/components/src/molecules/ParametersTable/__tests__/InfoScreen.test.tsx +++ b/components/src/molecules/ParametersTable/__tests__/InfoScreen.test.tsx @@ -34,6 +34,24 @@ describe('InfoScreen', () => { screen.getByText('Connect modules to see controls') }) + it('should render text and icon with proper color - run not started', () => { + props = { + contentType: 'runNotStarted', + } + render(props) + screen.getByLabelText('alert') + screen.getByText('Run was never started') + }) + + it('should render text and icon with proper color - labware', () => { + props = { + contentType: 'labware', + } + render(props) + screen.getByLabelText('alert') + screen.getByText('No labware specified in this protocol') + }) + it('should have proper styles', () => { render(props) expect(screen.getByTestId('InfoScreen_parameters')).toHaveStyle( diff --git a/hardware-testing/hardware_testing/scripts/abr_asair_sensor.py b/hardware-testing/hardware_testing/scripts/abr_asair_sensor.py index aa66f230409..33195dacd5a 100644 --- a/hardware-testing/hardware_testing/scripts/abr_asair_sensor.py +++ b/hardware-testing/hardware_testing/scripts/abr_asair_sensor.py @@ -25,7 +25,7 @@ def __init__(self, robot: str, duration: int, frequency: int) -> None: test_name = "ABR-Environment-Monitoring" run_id = data.create_run_id() file_name = data.create_file_name(test_name, run_id, robot) - sensor = asair_sensor.BuildAsairSensor(False, True) + sensor = asair_sensor.BuildAsairSensor(False, False) print(sensor) env_data = sensor.get_reading() header = [ diff --git a/opentrons-ai-client/Makefile b/opentrons-ai-client/Makefile index 9c15fa32e41..8afd804af4c 100644 --- a/opentrons-ai-client/Makefile +++ b/opentrons-ai-client/Makefile @@ -6,6 +6,9 @@ SHELL := bash # add node_modules/.bin to PATH PATH := $(shell cd .. && yarn bin):$(PATH) +# dev server port +PORT ?= 5173 + benchmark_output := $(shell node -e 'console.log(new Date());') # These variables can be overriden when make is invoked to customize the @@ -42,6 +45,7 @@ build: .PHONY: dev dev: export NODE_ENV := development +dev: export PORT := $(PORT) dev: vite serve diff --git a/opentrons-ai-client/index.html b/opentrons-ai-client/index.html index 57e7f83f591..4e8e60a4121 100644 --- a/opentrons-ai-client/index.html +++ b/opentrons-ai-client/index.html @@ -2,7 +2,8 @@ - + + Opentrons AI diff --git a/opentrons-ai-client/package.json b/opentrons-ai-client/package.json index d8ea50136ff..dfd8069c7b1 100644 --- a/opentrons-ai-client/package.json +++ b/opentrons-ai-client/package.json @@ -21,7 +21,9 @@ "dependencies": { "@fontsource/public-sans": "5.0.3", "@opentrons/components": "link:../components", + "axios": "^0.21.1", "i18next": "^19.8.3", + "jotai": "2.8.0", "react": "18.2.0", "react-dom": "18.2.0", "react-error-boundary": "^4.0.10", diff --git a/opentrons-ai-client/src/assets/images/favicon/android-chrome-192x192.png b/opentrons-ai-client/src/assets/images/favicon/android-chrome-192x192.png new file mode 100644 index 00000000000..468479c76e7 Binary files /dev/null and b/opentrons-ai-client/src/assets/images/favicon/android-chrome-192x192.png differ diff --git a/opentrons-ai-client/src/assets/images/favicon/android-chrome-512x512.png b/opentrons-ai-client/src/assets/images/favicon/android-chrome-512x512.png new file mode 100644 index 00000000000..bab2df65fdb Binary files /dev/null and b/opentrons-ai-client/src/assets/images/favicon/android-chrome-512x512.png differ diff --git a/opentrons-ai-client/src/assets/images/favicon/apple-touch-icon.png b/opentrons-ai-client/src/assets/images/favicon/apple-touch-icon.png new file mode 100644 index 00000000000..ccbd74a497b Binary files /dev/null and b/opentrons-ai-client/src/assets/images/favicon/apple-touch-icon.png differ diff --git a/opentrons-ai-client/src/assets/images/favicon/favicon-16x16.png b/opentrons-ai-client/src/assets/images/favicon/favicon-16x16.png new file mode 100644 index 00000000000..4edd2e8b352 Binary files /dev/null and b/opentrons-ai-client/src/assets/images/favicon/favicon-16x16.png differ diff --git a/opentrons-ai-client/src/assets/images/favicon/favicon-32x32.png b/opentrons-ai-client/src/assets/images/favicon/favicon-32x32.png new file mode 100644 index 00000000000..eed71c70949 Binary files /dev/null and b/opentrons-ai-client/src/assets/images/favicon/favicon-32x32.png differ diff --git a/opentrons-ai-client/src/assets/images/favicon/favicon.ico b/opentrons-ai-client/src/assets/images/favicon/favicon.ico new file mode 100644 index 00000000000..d1266c550bf Binary files /dev/null and b/opentrons-ai-client/src/assets/images/favicon/favicon.ico differ diff --git a/opentrons-ai-client/src/assets/images/favicon/site.webmanifest b/opentrons-ai-client/src/assets/images/favicon/site.webmanifest new file mode 100644 index 00000000000..fe3af17b5d1 --- /dev/null +++ b/opentrons-ai-client/src/assets/images/favicon/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "opentrons_favicon", + "short_name": "favicon", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/opentrons-ai-client/src/atoms/SendButton/__tests__/SendButton.test.tsx b/opentrons-ai-client/src/atoms/SendButton/__tests__/SendButton.test.tsx new file mode 100644 index 00000000000..dcf90ec1022 --- /dev/null +++ b/opentrons-ai-client/src/atoms/SendButton/__tests__/SendButton.test.tsx @@ -0,0 +1,53 @@ +import React from 'react' +import { describe, it, vi, beforeEach, expect } from 'vitest' +import { fireEvent, screen } from '@testing-library/react' +import { renderWithProviders } from '../../../__testing-utils__' + +import { SendButton } from '../index' + +const mockHandleClick = vi.fn() +const render = (props: React.ComponentProps) => { + return renderWithProviders() +} + +describe('SendButton', () => { + let props: React.ComponentProps + + beforeEach(() => { + props = { + handleClick: mockHandleClick, + disabled: true, + isLoading: false, + } + }) + it('should render button with send icon and its initially disabled', () => { + render(props) + const button = screen.getByRole('button') + expect(button).toBeDisabled() + screen.getByTestId('SendButton_icon_send') + }) + + it('should render button and its not disabled when disabled false', () => { + props = { ...props, disabled: false } + render(props) + const button = screen.getByRole('button') + expect(button).not.toBeDisabled() + screen.getByTestId('SendButton_icon_send') + }) + + it('should render button with spinner icon when isLoading', () => { + props = { ...props, isLoading: true } + render(props) + const button = screen.getByRole('button') + expect(button).toBeDisabled() + screen.getByTestId('SendButton_icon_ot-spinner') + }) + + it('should call a mock function when clicking the button', () => { + props = { ...props, disabled: false } + render(props) + const button = screen.getByRole('button') + fireEvent.click(button) + expect(mockHandleClick).toHaveBeenCalled() + }) +}) diff --git a/opentrons-ai-client/src/atoms/SendButton/index.tsx b/opentrons-ai-client/src/atoms/SendButton/index.tsx new file mode 100644 index 00000000000..e165762b2ab --- /dev/null +++ b/opentrons-ai-client/src/atoms/SendButton/index.tsx @@ -0,0 +1,74 @@ +import React from 'react' +import { css } from 'styled-components' + +import { + ALIGN_CENTER, + BORDERS, + Btn, + COLORS, + DISPLAY_FLEX, + Icon, + JUSTIFY_CENTER, +} from '@opentrons/components' + +interface SendButtonProps { + handleClick: () => void + disabled?: boolean + isLoading?: boolean +} + +export function SendButton({ + handleClick, + disabled = false, + isLoading = false, +}: SendButtonProps): JSX.Element { + const playButtonStyle = css` + -webkit-tap-highlight-color: transparent; + &:focus { + background-color: ${COLORS.blue60}; + color: ${COLORS.white}; + } + + &:hover { + background-color: ${COLORS.blue50}; + color: ${COLORS.white}; + } + + &:focus-visible { + background-color: ${COLORS.blue50}; + } + + &:active { + background-color: ${COLORS.blue60}; + color: ${COLORS.white}; + } + + &:disabled { + background-color: ${COLORS.grey35}; + color: ${COLORS.grey50}; + } + ` + return ( + + + + ) +} diff --git a/opentrons-ai-client/src/main.tsx b/opentrons-ai-client/src/main.tsx index a5719bc94d8..a2f1338bd7b 100644 --- a/opentrons-ai-client/src/main.tsx +++ b/opentrons-ai-client/src/main.tsx @@ -2,7 +2,6 @@ import React from 'react' import ReactDOM from 'react-dom/client' import { I18nextProvider } from 'react-i18next' import { GlobalStyle } from './atoms/GlobalStyle' -import { PromptProvider } from './organisms/PromptButton/PromptProvider' import { i18n } from './i18n' import { App } from './App' @@ -13,9 +12,7 @@ if (rootElement != null) { - - - + ) diff --git a/opentrons-ai-client/src/molecules/ChatDisplay/ChatDisplay.stories.tsx b/opentrons-ai-client/src/molecules/ChatDisplay/ChatDisplay.stories.tsx index ae03a25f754..e3e0a1a6f36 100644 --- a/opentrons-ai-client/src/molecules/ChatDisplay/ChatDisplay.stories.tsx +++ b/opentrons-ai-client/src/molecules/ChatDisplay/ChatDisplay.stories.tsx @@ -24,7 +24,9 @@ type Story = StoryObj export const OpentronsAI: Story = { args: { - content: ` + chat: { + role: 'assistant', + content: ` ## sample output from OpentronsAI \`\`\`py @@ -50,13 +52,15 @@ def run(protocol: protocol_api.ProtocolContext): TEMP_DECK_WAIT_TIME = 50 # seconds \`\`\` `, - isUserInput: false, + }, }, } export const User: Story = { args: { - content: ` + chat: { + role: 'user', + content: ` - Application: Reagent transfer - Robot: OT-2 - API: 2.13 @@ -76,6 +80,6 @@ export const User: Story = { to first well in the destination labware. Use new tip for each transfer. `, - isUserInput: true, + }, }, } diff --git a/opentrons-ai-client/src/molecules/ChatDisplay/__tests__/ChatDisplay.test.tsx b/opentrons-ai-client/src/molecules/ChatDisplay/__tests__/ChatDisplay.test.tsx index 75b99717abb..98fd30274ee 100644 --- a/opentrons-ai-client/src/molecules/ChatDisplay/__tests__/ChatDisplay.test.tsx +++ b/opentrons-ai-client/src/molecules/ChatDisplay/__tests__/ChatDisplay.test.tsx @@ -15,8 +15,10 @@ describe('ChatDisplay', () => { beforeEach(() => { props = { - content: 'mock text from the backend', - isUserInput: false, + chat: { + role: 'assistant', + content: 'mock text from the backend', + }, } }) it('should display response from the backend and label', () => { @@ -29,8 +31,10 @@ describe('ChatDisplay', () => { }) it('should display input from use and label', () => { props = { - content: 'mock text from user input', - isUserInput: true, + chat: { + role: 'user', + content: 'mock text from user input', + }, } render(props) screen.getByText('You') diff --git a/opentrons-ai-client/src/molecules/ChatDisplay/index.tsx b/opentrons-ai-client/src/molecules/ChatDisplay/index.tsx index c2d52e6a593..3b5c54ebbc6 100644 --- a/opentrons-ai-client/src/molecules/ChatDisplay/index.tsx +++ b/opentrons-ai-client/src/molecules/ChatDisplay/index.tsx @@ -1,4 +1,5 @@ import React from 'react' +// import { css } from 'styled-components' import { useTranslation } from 'react-i18next' import Markdown from 'react-markdown' import { @@ -10,37 +11,82 @@ import { StyledText, } from '@opentrons/components' +import type { ChatData } from '../../resources/types' + interface ChatDisplayProps { - content: string - isUserInput: boolean + chat: ChatData } -export function ChatDisplay({ - content, - isUserInput, -}: ChatDisplayProps): JSX.Element { +export function ChatDisplay({ chat }: ChatDisplayProps): JSX.Element { const { t } = useTranslation('protocol_generator') + const { role, content } = chat + const isUser = role === 'user' return ( - {isUserInput ? t('you') : t('opentronsai')} + {isUser ? t('you') : t('opentronsai')} {/* text should be markdown so this component will have a package or function to parse markdown */} - {/* ToDo (kk:04/19/2024) I will get feedback for additional styling from the design team. */} + {/* ToDo (kk:05/02/2024) This part is waiting for Mel's design */} + {/* + {content} + */} {content} ) } + +// ToDo (kk:05/02/2024) This part is waiting for Mel's design +// function ExternalLink(props: JSX.IntrinsicAttributes): JSX.Element { +// return +// } + +// function ParagraphText(props: JSX.IntrinsicAttributes): JSX.Element { +// return +// } + +// function HeaderText(props: JSX.IntrinsicAttributes): JSX.Element { +// return +// } + +// function ListItemText(props: JSX.IntrinsicAttributes): JSX.Element { +// return +// } + +// function UnnumberedListText(props: JSX.IntrinsicAttributes): JSX.Element { +// return +// } + +// const CODE_TEXT_STYLE = css` +// padding: ${SPACING.spacing16}; +// font-family: monospace; +// color: ${COLORS.white}; +// background-color: ${COLORS.black90}; +// ` + +// function CodeText(props: JSX.IntrinsicAttributes): JSX.Element { +// return +// } diff --git a/opentrons-ai-client/src/molecules/InputPrompt/index.tsx b/opentrons-ai-client/src/molecules/InputPrompt/index.tsx index cdff4e7c44b..e8a8dda0c20 100644 --- a/opentrons-ai-client/src/molecules/InputPrompt/index.tsx +++ b/opentrons-ai-client/src/molecules/InputPrompt/index.tsx @@ -2,65 +2,115 @@ import React from 'react' import { useTranslation } from 'react-i18next' import styled, { css } from 'styled-components' import { useForm } from 'react-hook-form' +import { useAtom } from 'jotai' +import axios from 'axios' import { ALIGN_CENTER, BORDERS, - Btn, COLORS, DIRECTION_ROW, - DISPLAY_FLEX, Flex, - Icon, JUSTIFY_CENTER, SPACING, TYPOGRAPHY, } from '@opentrons/components' -import { promptContext } from '../../organisms/PromptButton/PromptProvider' -import type { SubmitHandler } from 'react-hook-form' +import { SendButton } from '../../atoms/SendButton' +import { preparedPromptAtom, chatDataAtom } from '../../resources/atoms' -// ToDo (kk:04/19/2024) Note this interface will be used by prompt buttons in SidePanel -// interface InputPromptProps {} +import type { ChatData } from '../../resources/types' + +// ToDo (kk:05/02/2024) This url is temporary +const url = 'http://localhost:8000/streaming/ask' interface InputType { userPrompt: string } -export function InputPrompt(/* props: InputPromptProps */): JSX.Element { +export function InputPrompt(): JSX.Element { const { t } = useTranslation('protocol_generator') - const { register, handleSubmit, watch, setValue } = useForm({ + const { register, watch, setValue, reset } = useForm({ defaultValues: { userPrompt: '', }, }) - const usePromptValue = (): string => React.useContext(promptContext) - const promptFromButton = usePromptValue() - const userPrompt = watch('userPrompt') ?? '' + const [preparedPrompt] = useAtom(preparedPromptAtom) + const [, setChatData] = useAtom(chatDataAtom) + const [submitted, setSubmitted] = React.useState(false) - const onSubmit: SubmitHandler = async data => { - // ToDo (kk: 04/19/2024) call api - const { userPrompt } = data - console.log('user prompt', userPrompt) - } + const [data, setData] = React.useState(null) + const [loading, setLoading] = React.useState(false) + const [error, setError] = React.useState('') + + const userPrompt = watch('userPrompt') ?? '' const calcTextAreaHeight = (): number => { const rowsNum = userPrompt.split('\n').length return rowsNum } + const fetchData = async (prompt: string): Promise => { + if (prompt !== '') { + setLoading(true) + try { + const response = await axios.post(url, { + headers: { + 'Content-Type': 'application/json', + }, + query: prompt, + }) + setData(response.data) + } catch (err) { + setError('Error fetching data from the API.') + } finally { + setLoading(false) + } + } + } + + const handleClick = (): void => { + const userInput: ChatData = { + role: 'user', + content: userPrompt, + } + setChatData(chatData => [...chatData, userInput]) + void fetchData(userPrompt) + setSubmitted(true) + reset() + } + + React.useEffect(() => { + if (preparedPrompt !== '') setValue('userPrompt', preparedPrompt as string) + }, [preparedPrompt, setValue]) + React.useEffect(() => { - if (promptFromButton !== '') setValue('userPrompt', promptFromButton) - }, [promptFromButton, setValue]) + if (submitted && data && !loading) { + const { role, content } = data.data + const assistantResponse: ChatData = { + role, + content, + } + setChatData(chatData => [...chatData, assistantResponse]) + setSubmitted(false) + } + }, [data, loading, submitted]) + + // ToDo (kk:05/02/2024) This is also temp. Asking the design about error. + console.error('error', error) return ( - handleSubmit(onSubmit)}> + - + ) @@ -106,65 +156,3 @@ const StyledTextarea = styled.textarea` transform: translateY(-50%); } ` - -interface PlayButtonProps { - onPlay?: () => void - disabled?: boolean - isLoading?: boolean -} - -function PlayButton({ - onPlay, - disabled = false, - isLoading = false, -}: PlayButtonProps): JSX.Element { - const playButtonStyle = css` - -webkit-tap-highlight-color: transparent; - &:focus { - background-color: ${COLORS.blue60}; - color: ${COLORS.white}; - } - - &:hover { - background-color: ${COLORS.blue50}; - color: ${COLORS.white}; - } - - &:focus-visible { - background-color: ${COLORS.blue50}; - } - - &:active { - background-color: ${COLORS.blue60}; - color: ${COLORS.white}; - } - - &:disabled { - background-color: ${COLORS.grey35}; - color: ${COLORS.grey50}; - } - ` - return ( - - - - ) -} diff --git a/opentrons-ai-client/src/organisms/ChatContainer/index.tsx b/opentrons-ai-client/src/organisms/ChatContainer/index.tsx index be6c4d619da..8a120c65112 100644 --- a/opentrons-ai-client/src/organisms/ChatContainer/index.tsx +++ b/opentrons-ai-client/src/organisms/ChatContainer/index.tsx @@ -1,6 +1,8 @@ import React from 'react' import { useTranslation } from 'react-i18next' -import { css } from 'styled-components' +import styled, { css } from 'styled-components' +import { useAtom } from 'jotai' + import { COLORS, DIRECTION_COLUMN, @@ -13,10 +15,13 @@ import { } from '@opentrons/components' import { PromptGuide } from '../../molecules/PromptGuide' import { InputPrompt } from '../../molecules/InputPrompt' +import { ChatDisplay } from '../../molecules/ChatDisplay' +import { chatDataAtom } from '../../resources/atoms' export function ChatContainer(): JSX.Element { const { t } = useTranslation('protocol_generator') - const isDummyInitial = true + const [chatData] = useAtom(chatDataAtom) + return ( {/* This will be updated when input textbox and function are implemented */} - {isDummyInitial ? ( + + + + {t('opentronsai')} + {/* Prompt Guide remain as a reference for users. */} + + {chatData.length > 0 + ? chatData.map((chat, index) => ( + + )) + : null} + - - {t('opentronsai')} - - - - - - {t('disclaimer')} - - + + {t('disclaimer')} - ) : null} + ) } +const ChatDataContainer = styled(Flex)` + max-height: calc(100vh); + overflow-y: auto; + flex-direction: ${DIRECTION_COLUMN}; + grid-gap: ${SPACING.spacing12}; + width: 100%; +` + const DISCLAIMER_TEXT_STYLE = css` color: ${COLORS.grey55}; font-size: ${TYPOGRAPHY.fontSize20}; diff --git a/opentrons-ai-client/src/organisms/PromptButton/PromptButton.stories.tsx b/opentrons-ai-client/src/organisms/PromptButton/PromptButton.stories.tsx index cc992b5b70d..f300b302393 100644 --- a/opentrons-ai-client/src/organisms/PromptButton/PromptButton.stories.tsx +++ b/opentrons-ai-client/src/organisms/PromptButton/PromptButton.stories.tsx @@ -1,6 +1,4 @@ import React from 'react' -import { Flex, SPACING } from '@opentrons/components' -import { PromptProvider, promptContext } from './PromptProvider' import { PromptButton as PromptButtonComponent } from '.' import type { Meta, StoryObj } from '@storybook/react' @@ -27,22 +25,15 @@ const meta: Meta = { decorators: [ Story => { return ( - + <> - - + ) }, ], } export default meta -const PromptDisplay = (): JSX.Element => { - const usePromptValue = (): string => React.useContext(promptContext) - const promptFromButton = usePromptValue() - return {promptFromButton} -} - type Story = StoryObj export const PromptButton: Story = { diff --git a/opentrons-ai-client/src/organisms/PromptButton/PromptProvider.tsx b/opentrons-ai-client/src/organisms/PromptButton/PromptProvider.tsx deleted file mode 100644 index f148e4fdd94..00000000000 --- a/opentrons-ai-client/src/organisms/PromptButton/PromptProvider.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react' - -export const promptContext = React.createContext('') -export const setPromptContext = React.createContext< - React.Dispatch> ->(() => undefined) - -interface PromptProviderProps { - children: React.ReactNode -} - -export function PromptProvider({ - children, -}: PromptProviderProps): React.ReactElement { - const [prompt, setPrompt] = React.useState('') - - return ( - - - {children} - - - ) -} diff --git a/opentrons-ai-client/src/organisms/PromptButton/__tests__/PromptButton.test.tsx b/opentrons-ai-client/src/organisms/PromptButton/__tests__/PromptButton.test.tsx index b4dadfcc931..d4659cc3c84 100644 --- a/opentrons-ai-client/src/organisms/PromptButton/__tests__/PromptButton.test.tsx +++ b/opentrons-ai-client/src/organisms/PromptButton/__tests__/PromptButton.test.tsx @@ -1,20 +1,15 @@ import React from 'react' -import { fireEvent, screen } from '@testing-library/react' -import { describe, it, vi, beforeEach, expect } from 'vitest' +import { useAtom } from 'jotai' +import { fireEvent, screen, renderHook } from '@testing-library/react' +import { describe, it, beforeEach, expect } from 'vitest' import { renderWithProviders } from '../../../__testing-utils__' -import { setPromptContext } from '../PromptProvider' import { reagentTransfer } from '../../../assets/prompts' +import { preparedPromptAtom } from '../../../resources/atoms' import { PromptButton } from '../index' -const mockSetPrompt = vi.fn() - const render = (props: React.ComponentProps) => { - return renderWithProviders( - - s - - ) + return renderWithProviders() } describe('PromptButton', () => { @@ -34,6 +29,8 @@ describe('PromptButton', () => { render(props) const button = screen.getByRole('button', { name: 'Reagent Transfer' }) fireEvent.click(button) - expect(mockSetPrompt).toHaveBeenCalledWith(reagentTransfer) + const { result } = renderHook(() => useAtom(preparedPromptAtom)) + fireEvent.click(button) + expect(result.current[0]).toBe(reagentTransfer) }) }) diff --git a/opentrons-ai-client/src/organisms/PromptButton/__tests__/PromptProvider.test.tsx b/opentrons-ai-client/src/organisms/PromptButton/__tests__/PromptProvider.test.tsx deleted file mode 100644 index 5caedf2c3ad..00000000000 --- a/opentrons-ai-client/src/organisms/PromptButton/__tests__/PromptProvider.test.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react' -import { describe, it, expect } from 'vitest' -import { fireEvent, screen } from '@testing-library/react' - -import { renderWithProviders } from '../../../__testing-utils__' -import { - PromptProvider, - promptContext, - setPromptContext, -} from '../PromptProvider' - -const TestComponent = () => { - const usePromptValue = (): string => React.useContext(promptContext) - const prompt = usePromptValue() - - const usePromptSetValue = (): React.Dispatch> => - React.useContext(setPromptContext) - const setPrompt = usePromptSetValue() - - return ( -
-
{prompt}
- -
- ) -} - -const render = () => { - return renderWithProviders( - - - - ) -} - -describe('PromptProvider', () => { - it('should render initial value', () => { - render() - const prompt = screen.getByTestId('mock_prompt') - expect(prompt.textContent).toEqual('') - }) - - it('should set a mock prompt', () => { - render() - fireEvent.click(screen.getByRole('button')) - expect(screen.getByText('Test Prompt')).toBeInTheDocument() - }) -}) diff --git a/opentrons-ai-client/src/organisms/PromptButton/index.tsx b/opentrons-ai-client/src/organisms/PromptButton/index.tsx index 452a615e67b..13a12cb492c 100644 --- a/opentrons-ai-client/src/organisms/PromptButton/index.tsx +++ b/opentrons-ai-client/src/organisms/PromptButton/index.tsx @@ -1,13 +1,14 @@ -import React, { useCallback } from 'react' +import React from 'react' import styled from 'styled-components' +import { useAtom } from 'jotai' import { BORDERS, PrimaryButton } from '@opentrons/components' -import { setPromptContext } from './PromptProvider' import { reagentTransfer, flexReagentTransfer, pcr, flexPcr, } from '../../assets/prompts' +import { preparedPromptAtom } from '../../resources/atoms' interface PromptButtonProps { buttonText: string @@ -30,18 +31,11 @@ const PROMPT_BY_NAME: Record = { } export function PromptButton({ buttonText }: PromptButtonProps): JSX.Element { - const usePromptSetValue = (): React.Dispatch> => - React.useContext(setPromptContext) - const setPrompt = usePromptSetValue() - - const handleClick = useCallback( - (event: React.MouseEvent) => { - const { prompt } = PROMPT_BY_NAME[buttonText] - setPrompt(prompt) - event.currentTarget.blur() - }, - [setPrompt, buttonText] - ) + const [, setPreparedPrompt] = useAtom(preparedPromptAtom) + const handleClick = (): void => { + const { prompt } = PROMPT_BY_NAME[buttonText] + setPreparedPrompt(prompt) + } return {buttonText} } diff --git a/opentrons-ai-client/src/resources/atoms.ts b/opentrons-ai-client/src/resources/atoms.ts new file mode 100644 index 00000000000..98ebd7df6f1 --- /dev/null +++ b/opentrons-ai-client/src/resources/atoms.ts @@ -0,0 +1,9 @@ +// jotai's atoms +import { atom } from 'jotai' +import type { ChatData } from './types' + +/** preparedPromptAtom is for PromptButton */ +export const preparedPromptAtom = atom('') + +/** ChatDataAtom is for chat data (user prompt and response from OpenAI API) */ +export const chatDataAtom = atom([]) diff --git a/opentrons-ai-client/src/resources/types.ts b/opentrons-ai-client/src/resources/types.ts new file mode 100644 index 00000000000..a0f5ebca959 --- /dev/null +++ b/opentrons-ai-client/src/resources/types.ts @@ -0,0 +1,6 @@ +export interface ChatData { + /** assistant: ChatGPT API, user: user */ + role: 'assistant' | 'user' + /** content ChatGPT API return or user prompt */ + content: string +} diff --git a/package.json b/package.json index 4301ebd9fb7..5b16dff3979 100755 --- a/package.json +++ b/package.json @@ -105,6 +105,7 @@ "handlebars-loader": "^1.7.1", "html-webpack-plugin": "^3.2.0", "identity-obj-proxy": "^3.0.0", + "jotai": "2.8.0", "jsdom": "^16.4.0", "lost": "^8.3.1", "madge": "^3.6.0", diff --git a/protocol-designer/cypress/e2e/migrations.cy.js b/protocol-designer/cypress/e2e/migrations.cy.js index 4339f40be5f..08fd71b7206 100644 --- a/protocol-designer/cypress/e2e/migrations.cy.js +++ b/protocol-designer/cypress/e2e/migrations.cy.js @@ -26,7 +26,7 @@ describe('Protocol fixtures migrate and match snapshots', () => { expectedExportFixture: '../../fixtures/protocol/8/doItAllV3MigratedToV8.json', unusedPipettes: false, - migrationModal: 'v8', + migrationModal: 'v8.1', }, { title: 'doItAllV4 (schema 4, PD version 4.0.0) -> PD 8.1.x, schema 8', @@ -34,7 +34,7 @@ describe('Protocol fixtures migrate and match snapshots', () => { expectedExportFixture: '../../fixtures/protocol/8/doItAllV4MigratedToV8.json', unusedPipettes: false, - migrationModal: 'v8', + migrationModal: 'v8.1', }, { title: @@ -43,7 +43,7 @@ describe('Protocol fixtures migrate and match snapshots', () => { expectedExportFixture: '../../fixtures/protocol/8/doItAllV7MigratedToV8.json', unusedPipettes: false, - migrationModal: 'v8', + migrationModal: 'v8.1', }, { title: @@ -63,6 +63,16 @@ describe('Protocol fixtures migrate and match snapshots', () => { migrationModal: null, unusedPipettes: false, }, + { + title: + 'new advanced settings with multi temp => reimported, should not migrate and stay at 8.1.x, schema 8', + importFixture: + '../../fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json', + expectedExportFixture: + '../../fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json', + migrationModal: null, + unusedPipettes: false, + }, ] testCases.forEach( @@ -93,9 +103,11 @@ describe('Protocol fixtures migrate and match snapshots', () => { }) if (migrationModal) { - if (migrationModal === 'v8') { + if (migrationModal === 'v8.1') { cy.get('div') - .contains('Protocol Designer no longer supports aspirate or mix') + .contains( + 'The default dispense height is now 1mm from the bottom of the well' + ) .should('exist') cy.get('button').contains('ok', { matchCase: false }).click() } else if (migrationModal === 'newLabwareDefs') { diff --git a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json index e448368f932..9407020457b 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV3MigratedToV8.json @@ -6,7 +6,7 @@ "author": "Fixture", "description": "Test all v3 commands", "created": 1585930833548, - "lastModified": 1711742442671, + "lastModified": 1714570099662, "category": null, "subcategory": null, "tags": [] @@ -15,10 +15,10 @@ "name": "opentrons/protocol-designer", "version": "8.1.0", "data": { - "_internalAppBuildDate": "Fri, 29 Mar 2024 20:00:04 GMT", + "_internalAppBuildDate": "Wed, 01 May 2024 13:16:50 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 0.5, + "dispense_mmFromBottom": 1, "touchTip_mmFromTop": -1, "blowout_mmFromTop": 0 }, @@ -101,7 +101,6 @@ "dispense_touchTip_mmFromBottom": 40, "disposalVolume_checkbox": true, "disposalVolume_volume": "20", - "blowout_z_offset": 0, "blowout_checkbox": false, "blowout_location": "8053a205-f2dc-4b1d-8d05-bf8233949e2e:trashBin", "preWetTip": false, @@ -121,6 +120,8 @@ "dispense_y_position": 0, "aspirate_x_position": 0, "aspirate_y_position": 0, + "blowout_z_offset": 0, + "blowout_flowRate": null, "id": "3961e4c0-75c7-11ea-b42f-4b64e50f43e5", "stepType": "moveLiquid", "stepName": "transfer", @@ -158,7 +159,6 @@ "labware": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", "mix_wellOrder_first": "t2b", "mix_wellOrder_second": "l2r", - "blowout_z_offset": 0, "blowout_checkbox": true, "blowout_location": "8053a205-f2dc-4b1d-8d05-bf8233949e2e:trashBin", "mix_mmFromBottom": 0.5, @@ -178,6 +178,8 @@ "tipRack": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", "mix_x_position": 0, "mix_y_position": 0, + "blowout_z_offset": 0, + "blowout_flowRate": 46.43, "id": "a4cee9a0-75dc-11ea-b42f-4b64e50f43e5", "stepType": "mix", "stepName": "mix", @@ -2526,7 +2528,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "d371b7e2-71a8-4a60-90bc-7e865d9881b9", + "key": "5dcb42c0-ef1c-4a3b-a383-82fa21354cf8", "commandType": "loadPipette", "params": { "pipetteName": "p300_single_gen2", @@ -2535,7 +2537,7 @@ } }, { - "key": "424963b7-59f8-434a-bedc-9597e7b72c9f", + "key": "a777658d-cb9e-411c-9377-d7c965ededd2", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Tip Rack 300 µL", @@ -2547,7 +2549,7 @@ } }, { - "key": "05ef86f7-dec0-4134-a15d-5e38ef81cf8e", + "key": "723094b7-6539-41ae-8657-225153d07ed2", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -2559,7 +2561,7 @@ } }, { - "key": "ddefc5ef-b69a-4172-921b-959ba5e8d8d2", + "key": "382eb174-58a8-445b-9216-67953b1431cc", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap", @@ -2572,7 +2574,7 @@ }, { "commandType": "loadLiquid", - "key": "2a2084d5-67d8-4806-b919-5962a6258c1f", + "key": "a8535ce0-8b05-4dd7-b82e-ce108e7b1644", "params": { "liquidId": "0", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -2598,12 +2600,12 @@ }, { "commandType": "waitForDuration", - "key": "c1a1eff4-7ef7-46be-aee7-ebca5924ace8", + "key": "1cf744b2-f1ec-40d3-9afb-8dde33832ac4", "params": { "seconds": 62, "message": "" } }, { "commandType": "pickUpTip", - "key": "63ca0ab5-4cb6-4531-b912-1ba22e1b1a03", + "key": "8335cc6a-f1a7-42de-9085-60a58f3c099f", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2612,7 +2614,7 @@ }, { "commandType": "aspirate", - "key": "5ead7532-0eb2-4ad9-b704-856422fc9408", + "key": "bd82daf5-9bbd-468a-9266-3a0feb5235a7", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2627,7 +2629,7 @@ }, { "commandType": "dispense", - "key": "3838f7d1-3450-49cc-a222-c8113eecf108", + "key": "02f9b8eb-ad2a-48e6-8eaf-f1446fad8bc9", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2642,7 +2644,7 @@ }, { "commandType": "aspirate", - "key": "25697ae7-169d-447a-906c-4e7f02950fe9", + "key": "eab61544-7238-4479-a195-8999806e7294", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2657,7 +2659,7 @@ }, { "commandType": "dispense", - "key": "49a139f4-87ba-421d-9ef4-4ebe13beb987", + "key": "deacca0e-f618-4159-bcf8-ad4d5010ffbf", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2672,7 +2674,7 @@ }, { "commandType": "aspirate", - "key": "4e96faa5-c669-4b60-b15c-9d2f01c9c3fe", + "key": "296ea248-151d-4c80-9445-6678f9bbdd16", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 100, @@ -2687,7 +2689,7 @@ }, { "commandType": "touchTip", - "key": "8eff88a1-fec9-46d7-b292-f6ce378e5ad9", + "key": "93a2f17f-35e4-4585-9f32-cfbd4e80de75", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -2697,7 +2699,7 @@ }, { "commandType": "dispense", - "key": "c95e323c-be69-4460-8acf-d1d4b74384bd", + "key": "a64de676-0aea-4dc8-a417-d1d0a7749aba", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 40, @@ -2712,7 +2714,7 @@ }, { "commandType": "touchTip", - "key": "0da25745-5e25-4138-b67c-dfc4c89c8949", + "key": "3714818d-0ea7-4b21-807c-3fc99647fcd8", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "21ed8f60-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1", @@ -2722,7 +2724,7 @@ }, { "commandType": "dispense", - "key": "28eeb3d1-6e83-4414-8c0d-e8761ca2f75a", + "key": "8062fd11-8818-4956-958d-ca27f740d5ac", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 40, @@ -2737,7 +2739,7 @@ }, { "commandType": "touchTip", - "key": "8cd5d90d-df0b-4c3b-8cb3-cea6f1849fef", + "key": "dd3759ef-133b-49ec-94b9-20a05b4044e7", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "21ed8f60-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_24_aluminumblock_generic_2ml_screwcap/1", @@ -2747,7 +2749,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "35643d1f-ae0b-4a90-9de4-c9eb3c9b775e", + "key": "7b851c66-19ed-4d4e-ad2d-f8149744a720", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2756,7 +2758,7 @@ }, { "commandType": "blowOutInPlace", - "key": "d540a57a-6968-44a0-8645-b221a9b7bfd7", + "key": "ccf8dea1-5c66-42dc-985b-91728f9d80c2", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "flowRate": 46.43 @@ -2764,7 +2766,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "c721cfd7-fef8-4fcb-9d6f-1d78f2317729", + "key": "276e3971-8910-4e53-8130-90f4bcb6f2c6", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2774,17 +2776,17 @@ }, { "commandType": "dropTipInPlace", - "key": "a18788f3-cd5f-4470-8831-455d14883d1c", + "key": "4ba17bb2-3dbc-440e-a6ac-323eda333bdb", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } }, { "commandType": "waitForResume", - "key": "a54eb58b-ce5c-4a59-ba85-ed75438146a7", + "key": "6ffda031-bdb9-4b93-9749-9376f0487817", "params": { "message": "Wait until user intervention" } }, { "commandType": "pickUpTip", - "key": "c1bddcd0-d5cf-4d7c-b830-a5b27a5a71cb", + "key": "0eea0f55-ccb9-4805-89d5-f7f5069ac146", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2793,7 +2795,7 @@ }, { "commandType": "aspirate", - "key": "1660f6c2-9072-4348-b034-cb45712f8cd7", + "key": "6c133bc3-4f21-474d-b7a1-8dc575f05d07", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2808,7 +2810,7 @@ }, { "commandType": "dispense", - "key": "c3683fde-b4e0-4432-ad96-932292f2ebcd", + "key": "927af8f8-3e17-4adc-8cf8-25e3e3b032a3", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2823,7 +2825,7 @@ }, { "commandType": "aspirate", - "key": "59251222-f64d-400b-98a6-71f95f24bec7", + "key": "8a286376-d039-4868-b43a-5a4dc18a7684", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2838,7 +2840,7 @@ }, { "commandType": "dispense", - "key": "a370936b-c12f-4039-88d0-97bb262cb80e", + "key": "52758061-375e-4238-a3e8-fd8d8ac7c109", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2853,7 +2855,7 @@ }, { "commandType": "aspirate", - "key": "8f428646-3bd6-4a90-9674-23d3e3be8a63", + "key": "0f7bcdd1-626a-4e8a-b9de-cbe1ddcab0b5", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2868,7 +2870,7 @@ }, { "commandType": "dispense", - "key": "445797f5-5799-486a-b0e2-299e2f23ca2a", + "key": "385cdb61-97e6-44a5-9bbb-d3c2a4042461", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2883,7 +2885,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "d740d713-a3cb-4bdb-81a5-798059db8be7", + "key": "c82f0730-3269-43ba-b7aa-bdce062fa8e1", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2892,15 +2894,15 @@ }, { "commandType": "blowOutInPlace", - "key": "ba227a58-a0b1-4d83-93f8-4a3566cbedf1", + "key": "b04ddf2b-fd58-4c5f-bb5e-3454a593424c", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", - "flowRate": 35 + "flowRate": 46.43 } }, { "commandType": "touchTip", - "key": "68b765bb-a232-49ec-b6be-fc6b375b0a15", + "key": "8b977bb4-262a-4437-a89c-aea221051c77", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -2910,7 +2912,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "1464952c-cb00-48eb-a9db-8a4367d3ce0b", + "key": "f6624d29-db3e-4a60-8fd9-a81d7d5e589f", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2920,12 +2922,12 @@ }, { "commandType": "dropTipInPlace", - "key": "2d96c742-46d0-4efa-8e94-3118e975bdd4", + "key": "eab34b0e-b50f-4d4c-a7fc-2e4dfb46e95e", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } }, { "commandType": "pickUpTip", - "key": "75a6817c-7f41-4a8c-a184-5e6e7aad51e9", + "key": "6cd7a187-1252-4f7e-81e9-a012173a96e7", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2934,7 +2936,7 @@ }, { "commandType": "aspirate", - "key": "3e1db7e3-a5eb-473c-a98b-1c91e9b70c3d", + "key": "9655cd15-caff-4f78-ab83-2398146afa54", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2949,7 +2951,7 @@ }, { "commandType": "dispense", - "key": "d37facff-0753-4d92-9599-93141c97a90f", + "key": "645cf76c-a1d3-4d72-82e3-29ca0bc7a68a", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2964,7 +2966,7 @@ }, { "commandType": "aspirate", - "key": "df03e618-352a-44e8-8890-859f53229f10", + "key": "cf49d7f4-8175-44db-a0f6-5cc9c500ded7", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2979,7 +2981,7 @@ }, { "commandType": "dispense", - "key": "0b93f43f-b456-47fa-b9d7-89086cd9c20b", + "key": "8f7c947b-43a9-439d-b8e0-dc52b5243ecc", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -2994,7 +2996,7 @@ }, { "commandType": "aspirate", - "key": "310303b6-76e3-4765-bd82-042eac727669", + "key": "5534b4fa-7a7e-4606-a0eb-511a08febe55", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3009,7 +3011,7 @@ }, { "commandType": "dispense", - "key": "9881ac40-2932-4197-a03b-77c936651a3b", + "key": "3fedeb8a-10ed-4798-bd26-66bc4ac4faf7", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 35, @@ -3024,7 +3026,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "f521a11f-1676-4dc2-a022-f5eba1c5d22e", + "key": "d4588b11-4268-40d9-aee4-312c5c1f7e3e", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -3033,15 +3035,15 @@ }, { "commandType": "blowOutInPlace", - "key": "daede461-9d74-4259-91e6-ecf7ddaa4897", + "key": "146bf039-743e-46f9-80d8-635451a2a40b", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", - "flowRate": 35 + "flowRate": 46.43 } }, { "commandType": "touchTip", - "key": "0cde152c-2aeb-4e86-9745-3732e0074ba7", + "key": "a263b140-4162-4871-a852-cae73b375e8f", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -3051,7 +3053,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "cb24aade-655e-4f6f-83d7-1b60457b56e6", + "key": "da3d817e-fcf6-4a50-bdb7-a3e71fc71f0e", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -3061,7 +3063,7 @@ }, { "commandType": "dropTipInPlace", - "key": "6970ad16-6e47-4f5c-afba-3704abe0eabb", + "key": "30463b38-428f-460c-90bd-09f50776320c", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } } ], diff --git a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json index f8fec2171af..15e2e2203dd 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV4MigratedToV8.json @@ -6,7 +6,7 @@ "author": "Fixture", "description": "Test all v4 commands", "created": 1585930833548, - "lastModified": 1711742493128, + "lastModified": 1714570366192, "category": null, "subcategory": null, "tags": [] @@ -15,10 +15,10 @@ "name": "opentrons/protocol-designer", "version": "8.1.0", "data": { - "_internalAppBuildDate": "Fri, 29 Mar 2024 20:00:04 GMT", + "_internalAppBuildDate": "Wed, 01 May 2024 13:32:34 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 0.5, + "dispense_mmFromBottom": 1, "touchTip_mmFromTop": -1, "blowout_mmFromTop": 0 }, @@ -135,7 +135,6 @@ "dispense_touchTip_mmFromBottom": null, "disposalVolume_checkbox": true, "disposalVolume_volume": "20", - "blowout_z_offset": 0, "blowout_checkbox": false, "blowout_location": "84882326-9cd3-428e-8352-89f133a1fe5d:trashBin", "preWetTip": false, @@ -155,6 +154,8 @@ "dispense_y_position": 0, "aspirate_x_position": 0, "aspirate_y_position": 0, + "blowout_z_offset": 0, + "blowout_flowRate": null, "id": "3961e4c0-75c7-11ea-b42f-4b64e50f43e5", "stepType": "moveLiquid", "stepName": "transfer", @@ -2551,7 +2552,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "b7185c84-9b15-4b6e-a315-e331249569fa", + "key": "d99eb537-6cb6-4cd4-8331-3eeafdd4e45e", "commandType": "loadPipette", "params": { "pipetteName": "p300_single_gen2", @@ -2560,7 +2561,7 @@ } }, { - "key": "0d1f6599-70d5-4e99-9608-7d249135b5a9", + "key": "ecbb4b97-d248-4f78-a340-d412e0e87be4", "commandType": "loadModule", "params": { "model": "magneticModuleV2", @@ -2569,7 +2570,7 @@ } }, { - "key": "2ee81ffe-c8fa-4cac-be56-62a902e301f7", + "key": "c08483ea-e4a8-46a0-9533-12a340bd377a", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", @@ -2578,7 +2579,7 @@ } }, { - "key": "e1da2e62-ac25-405f-b896-99384ab081d8", + "key": "8e908f00-8462-449a-b59b-8bad8a8bf655", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Tip Rack 300 µL", @@ -2590,7 +2591,7 @@ } }, { - "key": "2895d8a7-239c-4d6b-afc8-69defe261790", + "key": "4977d62d-75a5-4a20-ae8e-8b62e88c3b0f", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -2604,7 +2605,7 @@ } }, { - "key": "46b84345-0c06-41f8-860d-1dfafa424e80", + "key": "d62c61f4-cdf2-4313-8183-4b6401d1c807", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap", @@ -2619,7 +2620,7 @@ }, { "commandType": "loadLiquid", - "key": "25dd8768-7731-4dee-9f5a-d54b9eb0983c", + "key": "3cc4e4b7-0121-484e-af30-19b202941154", "params": { "liquidId": "0", "labwareId": "1e610d40-75c7-11ea-b42f-4b64e50f43e5:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/1", @@ -2645,7 +2646,7 @@ }, { "commandType": "magneticModule/engage", - "key": "3471fe25-a3a8-4be0-b6d8-545819c4aea0", + "key": "c9af3ef4-d79b-4f75-aea9-5daf8c7b95f1", "params": { "moduleId": "0b419310-75c7-11ea-b42f-4b64e50f43e5:magneticModuleType", "height": 6 @@ -2653,7 +2654,7 @@ }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "610ae127-200b-48ae-8cbc-7ba4b5ca7b30", + "key": "fb5cdf77-8b2d-430d-9d38-09556cb6fa40", "params": { "moduleId": "0b4319b0-75c7-11ea-b42f-4b64e50f43e5:temperatureModuleType", "celsius": 25 @@ -2661,12 +2662,12 @@ }, { "commandType": "waitForDuration", - "key": "94aa4488-7792-49bc-ac3d-6a260bad0f86", + "key": "5d2283e2-5f14-4c7b-a98b-a7fb464c0bb8", "params": { "seconds": 62, "message": "" } }, { "commandType": "pickUpTip", - "key": "1a838ef5-ea1a-4680-bac0-6eaf473465a4", + "key": "a9b8a288-1a4a-44b7-88c3-c6cdb4b52b89", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2675,7 +2676,7 @@ }, { "commandType": "aspirate", - "key": "f74c2687-f02c-4034-aa03-9a73c1ee47af", + "key": "e91dc8c3-dfda-441b-9546-0f7e8dad4882", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2690,7 +2691,7 @@ }, { "commandType": "dispense", - "key": "507c7fff-1193-4c14-a0b1-e4bb9fe9d96e", + "key": "3a1820bb-4dc3-4cde-8e88-a863d9419e8a", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2705,7 +2706,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "5a050ced-d1a9-4031-bf16-ed49cb561e60", + "key": "a4c10a8c-e960-430c-b5f5-f5b10c109a3a", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2715,12 +2716,12 @@ }, { "commandType": "dropTipInPlace", - "key": "8083dcbe-8c00-4178-90c0-4d4a921bca9c", + "key": "8cd24129-b76d-4c65-95a7-b148358e0db9", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } }, { "commandType": "pickUpTip", - "key": "e6db98b2-7239-4f6b-9e41-02e1dd108ad6", + "key": "66a6278b-9e16-43c1-bde2-1e5c3da0e2d7", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "labwareId": "0b44c760-75c7-11ea-b42f-4b64e50f43e5:opentrons/opentrons_96_tiprack_300ul/1", @@ -2729,7 +2730,7 @@ }, { "commandType": "aspirate", - "key": "47cf3011-68e2-40cd-8563-145e460f93aa", + "key": "5a8abdb2-2ac2-4069-b010-2eaac95acece", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2744,7 +2745,7 @@ }, { "commandType": "dispense", - "key": "1f1d966a-9095-4857-9137-36131c91bfd2", + "key": "58b3983a-9383-4013-8145-0a6b3398ad78", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "volume": 30, @@ -2759,7 +2760,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "ac6074f6-2f28-4012-914b-d3b28eb8453d", + "key": "a1175c8b-d19c-4e97-bad0-6ae84eb0bec5", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5", "addressableAreaName": "fixedTrash", @@ -2769,12 +2770,12 @@ }, { "commandType": "dropTipInPlace", - "key": "074050d3-0c4c-4fc0-8036-a5dc9afe99ef", + "key": "1457d4ac-4aee-4b32-845e-64a1025f0007", "params": { "pipetteId": "0b3f2210-75c7-11ea-b42f-4b64e50f43e5" } }, { "commandType": "temperatureModule/waitForTemperature", - "key": "89672a34-bd2f-4e2a-bacc-407bb5f563a1", + "key": "a22d457a-2815-43dd-9f56-a7ee53f6e628", "params": { "moduleId": "0b4319b0-75c7-11ea-b42f-4b64e50f43e5:temperatureModuleType", "celsius": 25 @@ -2782,19 +2783,19 @@ }, { "commandType": "magneticModule/disengage", - "key": "26603c88-f0a7-49b3-a65c-37e9e23ac2ff", + "key": "e07424ee-2e30-49bc-927d-dc8a4f3fc2f2", "params": { "moduleId": "0b419310-75c7-11ea-b42f-4b64e50f43e5:magneticModuleType" } }, { "commandType": "waitForResume", - "key": "f0e0a8c0-01df-47d7-92e5-c3c16e962f4f", + "key": "bc1b0315-d129-4d58-9013-eea4ec766761", "params": { "message": "Wait until user intervention" } }, { "commandType": "temperatureModule/deactivate", - "key": "bde12c91-d991-4d57-8d7b-172706f3aa2a", + "key": "8fd9574a-d9bf-4a7d-9b3e-c2bc99ce6e5b", "params": { "moduleId": "0b4319b0-75c7-11ea-b42f-4b64e50f43e5:temperatureModuleType" } diff --git a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json index 66a4cab5f90..b9981a7badd 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV7MigratedToV8.json @@ -6,7 +6,7 @@ "author": "", "description": "", "created": 1689346890165, - "lastModified": 1713443721060, + "lastModified": 1714570422365, "category": null, "subcategory": null, "tags": [] @@ -15,10 +15,10 @@ "name": "opentrons/protocol-designer", "version": "8.1.0", "data": { - "_internalAppBuildDate": "Thu, 18 Apr 2024 12:35:12 GMT", + "_internalAppBuildDate": "Wed, 01 May 2024 13:32:34 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 0.5, + "dispense_mmFromBottom": 1, "touchTip_mmFromTop": -1, "blowout_mmFromTop": 0 }, @@ -180,7 +180,7 @@ "disposalVolume_checkbox": true, "disposalVolume_volume": "100", "blowout_checkbox": false, - "blowout_location": "4824b094-5999-4549-9e6b-7098a9b30a8b:trashBin", + "blowout_location": "134504e1-b212-41cf-966d-2560deb5b693:trashBin", "preWetTip": false, "aspirate_airGap_checkbox": false, "aspirate_airGap_volume": "0", @@ -192,13 +192,14 @@ "dispense_delay_checkbox": false, "dispense_delay_seconds": "1", "dispense_delay_mmFromBottom": null, - "dropTip_location": "4824b094-5999-4549-9e6b-7098a9b30a8b:trashBin", + "dropTip_location": "134504e1-b212-41cf-966d-2560deb5b693:trashBin", "nozzles": null, "dispense_x_position": 0, "dispense_y_position": 0, "aspirate_x_position": 0, "aspirate_y_position": 0, "blowout_z_offset": 0, + "blowout_flowRate": null, "id": "f9a294f1-f42b-4cae-893a-592405349d56", "stepType": "moveLiquid", "stepName": "transfer", @@ -211,7 +212,7 @@ "mix_wellOrder_first": "t2b", "mix_wellOrder_second": "l2r", "blowout_checkbox": false, - "blowout_location": "4824b094-5999-4549-9e6b-7098a9b30a8b:trashBin", + "blowout_location": "134504e1-b212-41cf-966d-2560deb5b693:trashBin", "mix_mmFromBottom": 0.5, "pipette": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": "10", @@ -224,12 +225,13 @@ "dispense_delay_seconds": "1", "mix_touchTip_checkbox": false, "mix_touchTip_mmFromBottom": null, - "dropTip_location": "4824b094-5999-4549-9e6b-7098a9b30a8b:trashBin", + "dropTip_location": "134504e1-b212-41cf-966d-2560deb5b693:trashBin", "nozzles": null, "tipRack": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", "mix_x_position": 0, "mix_y_position": 0, "blowout_z_offset": 0, + "blowout_flowRate": null, "id": "5fdb9a12-fab4-42fd-886f-40af107b15d6", "stepType": "mix", "stepName": "mix", @@ -3761,7 +3763,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "6221e85d-921e-4067-83c9-4741f4b85904", + "key": "a466d0dc-e276-4eca-8c03-5bf4104f7be2", "commandType": "loadPipette", "params": { "pipetteName": "p1000_single_flex", @@ -3770,7 +3772,7 @@ } }, { - "key": "b599e98c-88f7-431b-85f7-2cce0941a720", + "key": "52475912-17f0-4539-9595-01e27c4a3994", "commandType": "loadPipette", "params": { "pipetteName": "p50_multi_flex", @@ -3779,7 +3781,7 @@ } }, { - "key": "cd153de4-f26f-4875-9a36-6ae084bcb4b5", + "key": "9a9006cb-c81c-41ea-82ca-d7422647f7f6", "commandType": "loadModule", "params": { "model": "magneticBlockV1", @@ -3788,7 +3790,7 @@ } }, { - "key": "a237e138-0b4c-4cc1-93e6-b0140ab1defd", + "key": "709aa475-25dd-4c78-b9a2-c65e654b9f5d", "commandType": "loadModule", "params": { "model": "heaterShakerModuleV1", @@ -3797,7 +3799,7 @@ } }, { - "key": "3cacc7b3-161e-4df2-b578-ef3dcc40e13a", + "key": "4a938cf9-7ff4-4a5e-8be8-4983f4d96e3f", "commandType": "loadModule", "params": { "model": "temperatureModuleV2", @@ -3806,7 +3808,7 @@ } }, { - "key": "444ebe6c-015e-4ab8-b4e1-b2f8c0ebe828", + "key": "1b0bbdd3-3885-441d-9310-57809d457a09", "commandType": "loadModule", "params": { "model": "thermocyclerModuleV2", @@ -3815,7 +3817,7 @@ } }, { - "key": "5bce906a-7bde-4a7f-bf60-f6ed123f4fd4", + "key": "328bf7a0-d0ac-4ff3-ae73-78618fd8d822", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 Flat Bottom Heater-Shaker Adapter", @@ -3829,7 +3831,7 @@ } }, { - "key": "d2dd55f3-b4a9-47a8-9b7e-db4dda1c493a", + "key": "1a3bd842-7dd1-4805-be2c-99bdd24aeb84", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Filter Tip Rack 50 µL", @@ -3841,7 +3843,7 @@ } }, { - "key": "226fb70b-20aa-477d-91fe-c1bf4b68b82c", + "key": "f4e4f3ed-5a86-41bb-a9c3-377182e26868", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", @@ -3855,7 +3857,7 @@ } }, { - "key": "9e34c746-37a9-4275-8705-86a6a576e968", + "key": "91648cab-a243-4f8e-abe0-a540eeca2e9d", "commandType": "loadLabware", "params": { "displayName": "Opentrons 24 Well Aluminum Block with NEST 1.5 mL Snapcap", @@ -3869,7 +3871,7 @@ } }, { - "key": "0ffdcd99-a6ba-427c-afdb-9fad59ee716f", + "key": "11e8b668-a20f-4080-b2ca-a782d62fd3e3", "commandType": "loadLabware", "params": { "displayName": "NEST 96 Well Plate 200 µL Flat", @@ -3884,7 +3886,7 @@ }, { "commandType": "loadLiquid", - "key": "ab63485c-6a51-42d9-8168-cb68515fdafe", + "key": "bb85f067-473e-4e12-9115-205e8dff5687", "params": { "liquidId": "1", "labwareId": "a793a135-06aa-4ed6-a1d3-c176c7810afa:opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1", @@ -3893,7 +3895,7 @@ }, { "commandType": "loadLiquid", - "key": "113f57e7-b869-43d7-9373-c9f664aa7cfa", + "key": "7060bb0a-3534-49da-932e-ba8b73e46af5", "params": { "liquidId": "0", "labwareId": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", @@ -3911,7 +3913,7 @@ }, { "commandType": "temperatureModule/setTargetTemperature", - "key": "a3871c48-ec0a-42e7-864e-b40a38f244db", + "key": "f59ece51-dd41-44db-b64b-36d232eccdf1", "params": { "moduleId": "ef44ad7f-0fd9-46d6-8bc0-c70785644cc8:temperatureModuleType", "celsius": 4 @@ -3919,7 +3921,7 @@ }, { "commandType": "heaterShaker/waitForTemperature", - "key": "df704427-687e-4c53-81df-7ea3a76d05e9", + "key": "da21219e-ef9b-4373-875c-9d5a09989aec", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType", "celsius": 4 @@ -3927,14 +3929,14 @@ }, { "commandType": "thermocycler/closeLid", - "key": "20d652d8-b74b-4583-9378-f970465eabc1", + "key": "20f3146d-9731-4efa-809e-36633bb54370", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetLidTemperature", - "key": "5d0b1c68-1e79-4683-9cf2-37c3cf708ead", + "key": "28ee0f3a-c4b6-4e02-987d-10901017c010", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType", "celsius": 40 @@ -3942,14 +3944,14 @@ }, { "commandType": "thermocycler/waitForLidTemperature", - "key": "1a5297e5-6384-4f42-acf0-7006c9005bfa", + "key": "a8d1fb79-c73b-4ff1-9182-552e327cc60c", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/runProfile", - "key": "45aecec9-638b-449d-b4e5-648d7940442b", + "key": "f7ae03ff-0b0f-4956-8bd4-e66dbf90528f", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType", "profile": [ @@ -3961,28 +3963,28 @@ }, { "commandType": "thermocycler/deactivateBlock", - "key": "f1a3a1a7-b52f-4375-82f2-078c6e03313b", + "key": "046285cc-fc6a-4191-9dca-b9b7994d4244", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/deactivateLid", - "key": "703bd4bf-69ac-4ba3-9984-1989e71e397e", + "key": "2decfbea-68ec-423f-a798-dc0c06a76e17", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "thermocycler/openLid", - "key": "b9f0f8aa-c5c5-4f21-9526-5803f3c0e4ab", + "key": "35dc75ed-4760-42ac-9b83-d37ec2f717b0", "params": { "moduleId": "627b7a27-5bb7-46de-a530-67af45652e3b:thermocyclerModuleType" } }, { "commandType": "pickUpTip", - "key": "d942b290-e41c-44b9-bab8-bc1fee368c01", + "key": "97f422da-3677-412b-a859-9ca064fa8e2c", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -3991,7 +3993,7 @@ }, { "commandType": "aspirate", - "key": "017d9080-9d8c-4249-b91a-df02e4d7c98e", + "key": "1c813b91-1e33-4aae-9841-20af63299a68", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4006,7 +4008,7 @@ }, { "commandType": "dispense", - "key": "50cc87f3-cd5e-41cb-b2cd-0861d5b537e8", + "key": "c562ed92-a5b5-4fce-8a99-f02358ab6941", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4014,14 +4016,14 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "a5b327e8-d4ef-4ba1-8abe-4fe005c1b72d", + "key": "a7b2f8fe-b6ab-4184-8170-0647a05d7c86", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4031,12 +4033,12 @@ }, { "commandType": "dropTipInPlace", - "key": "7a7ea09c-59a4-4466-b317-18b502407b40", + "key": "2dee7eea-fc2a-485a-aea1-beb064e5109b", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "f097f49d-50e3-4c03-851a-08582413197b", + "key": "35d005a3-7a97-4190-b9b0-f05d929e6c50", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4045,7 +4047,7 @@ }, { "commandType": "aspirate", - "key": "dd7efe76-a487-4f2e-9104-54f9ccc431d7", + "key": "2dee8a38-087d-4f5b-85fa-c93e5a731475", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4060,7 +4062,7 @@ }, { "commandType": "dispense", - "key": "edb834a0-93bb-4d93-880b-04fa45d74c3a", + "key": "6aa3c0b2-9191-4cce-9fac-908b9ecdb0ce", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4068,14 +4070,14 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "8bc803c0-0828-4266-b360-0e59ea759fa7", + "key": "ef663141-ba95-4cab-83f4-a98800deb903", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4085,12 +4087,12 @@ }, { "commandType": "dropTipInPlace", - "key": "2a2cb565-d10b-40b5-bbe1-ec341dc8cda2", + "key": "921a5d1b-a920-4e75-b3d6-2a9385baf2a1", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "fcb5a288-3661-40ed-be41-598af6dbb04a", + "key": "8bb26abd-e67d-4a27-82fd-b5095e6b863a", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4099,7 +4101,7 @@ }, { "commandType": "aspirate", - "key": "cabf020e-9093-45e9-8f9a-c86bee3d8716", + "key": "69e87e9c-5758-4029-838a-f601d85c57c7", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4114,7 +4116,7 @@ }, { "commandType": "dispense", - "key": "17dc69a7-8ff8-489a-814d-829285732f35", + "key": "b8fdb45a-1bb1-4f5b-90ff-99a3f90ef378", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4122,14 +4124,14 @@ "wellName": "B1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "7eb184aa-3ef3-475c-8747-f5706db36de1", + "key": "3a91ac83-be4f-49e5-971f-d50995d87a5f", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4139,12 +4141,12 @@ }, { "commandType": "dropTipInPlace", - "key": "53985655-c51f-42e3-a60b-beac9e445f8e", + "key": "076167d0-7192-455c-8329-78d36e1e0bbe", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "c92cebae-c6e5-402f-a820-d36e07154a16", + "key": "763fb955-8bcd-4a20-9523-ebe78894a2cc", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4153,7 +4155,7 @@ }, { "commandType": "aspirate", - "key": "bc03bede-aa9f-4a4b-bd24-4fc7ac5f8d35", + "key": "7ed1e15c-ae12-492c-8e69-9615a7128692", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4168,7 +4170,7 @@ }, { "commandType": "dispense", - "key": "513583b8-e5cf-4953-b809-1e635ef0deef", + "key": "a35f983c-9d71-41b0-b134-408254afffc9", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4176,14 +4178,14 @@ "wellName": "B1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "ce89a96c-1964-4526-8511-9b5ef1c70841", + "key": "036dffc0-eb5c-4ad1-a468-2810c6d40404", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4193,12 +4195,12 @@ }, { "commandType": "dropTipInPlace", - "key": "546722cb-480c-49cd-9ef6-f8376a157d1e", + "key": "728b951b-ac30-42b2-8733-66047e15104d", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "751019fa-c8cb-4970-9719-9ca306198c43", + "key": "2f679268-9e41-4d25-a1d2-a02146993957", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4207,7 +4209,7 @@ }, { "commandType": "aspirate", - "key": "4af0b92f-22f6-4075-8505-564a71775307", + "key": "9fc88d82-b344-4d58-bc88-21f7da6420ad", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4222,7 +4224,7 @@ }, { "commandType": "dispense", - "key": "1ee99a9f-437a-4b81-95e5-683cf776a0c9", + "key": "cd9e1f2e-8d97-4360-be45-77fef790a7ab", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4230,14 +4232,14 @@ "wellName": "C1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "122b028b-8712-4be2-ad67-7ffb305b0ec6", + "key": "09f656d5-2ca6-4496-961e-bd9e1d91b126", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4247,12 +4249,12 @@ }, { "commandType": "dropTipInPlace", - "key": "9b2c8348-47d2-4cac-9ce8-466c12add906", + "key": "fccb75f1-699b-4c8b-8151-dbd58d18ef06", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "b3a8b996-6cbb-41a1-b2ac-e4a469020db0", + "key": "a3701c28-7d35-45b6-8af6-bafd6e9a4b78", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4261,7 +4263,7 @@ }, { "commandType": "aspirate", - "key": "b59f5fb8-f15d-4e18-abde-3293ee790e6b", + "key": "4ee690e6-a74b-4417-b62a-fd3fee7d65e4", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4276,7 +4278,7 @@ }, { "commandType": "dispense", - "key": "47a6a5e9-9c07-42b1-9845-f6089567df5c", + "key": "8eafdd0e-0d05-403d-91b2-7e5499688f93", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4284,14 +4286,14 @@ "wellName": "C1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "a9c5a2e8-c74e-4fc6-ae21-0fd9fd3d0513", + "key": "1ca0e890-4dd7-406b-b957-ac5122beb4ed", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4301,12 +4303,12 @@ }, { "commandType": "dropTipInPlace", - "key": "da688e48-bec6-48f7-961f-9654900fb753", + "key": "c4bc3f8e-96d8-48cb-ab98-9aa4f4bafda2", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "ce417704-8708-44ee-9b8e-75dcec347805", + "key": "2f72e6b5-7349-47c6-8ed4-99b059460e7e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4315,7 +4317,7 @@ }, { "commandType": "aspirate", - "key": "ad46e9da-47d2-4527-b6c7-068ce4bab5b8", + "key": "662be64a-6a00-487c-886e-0f6c2979dd0e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4330,7 +4332,7 @@ }, { "commandType": "dispense", - "key": "81a3513f-9627-4874-ab3a-b7a7ce2c64ea", + "key": "7f81ae52-4dcd-4b71-9247-2ae073990a98", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4338,14 +4340,14 @@ "wellName": "D1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "269c6242-9712-4cb8-bd64-d18799047e33", + "key": "180c5597-e041-4f4a-a8c6-42e4f2526525", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4355,12 +4357,12 @@ }, { "commandType": "dropTipInPlace", - "key": "929645f3-9cbb-4032-a6af-fe26bd61cd2c", + "key": "a151f233-ffa8-487c-8058-cc58d52c4181", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "5560ef5b-2f4b-4780-8a09-2752c9a1b60d", + "key": "dcd3ad54-3401-4d65-a7c6-c6ec7f6027ec", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4369,7 +4371,7 @@ }, { "commandType": "aspirate", - "key": "19dbd5a5-4ca5-421f-b443-6dd0f23eea89", + "key": "32fcd712-9792-4269-be8c-1eab474ecf4c", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4384,7 +4386,7 @@ }, { "commandType": "dispense", - "key": "ce588c4b-28db-49ef-b2b2-e3cd6fb41038", + "key": "e8b25c7f-01ad-461d-94d6-86575cc51a56", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4392,14 +4394,14 @@ "wellName": "D1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "78b93dce-d551-49cc-8958-60cfe114ee33", + "key": "ebf51a3b-0060-435a-afcc-873460507190", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4409,12 +4411,12 @@ }, { "commandType": "dropTipInPlace", - "key": "b7b96af8-2d7b-4cdb-8ea0-5c571f861c6c", + "key": "e77f841b-88ec-407c-beb8-e3321040fb2a", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "a885c66b-67aa-4c91-bef9-8887165a08a6", + "key": "e06e9602-6ec1-44e4-b6ee-192cd5597aaf", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4423,7 +4425,7 @@ }, { "commandType": "aspirate", - "key": "cd0a813d-8943-4799-bbc3-8ff66c036f65", + "key": "2b552829-1350-47ff-8f33-e6a2705b08cc", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4438,7 +4440,7 @@ }, { "commandType": "dispense", - "key": "90716aec-e282-4cbf-aff3-5560a10f6b1e", + "key": "69bc9bfc-b130-4594-a912-f32493df9f5c", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4446,14 +4448,14 @@ "wellName": "E1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "edf9b480-7eb3-49c4-8766-ba795e8a7115", + "key": "c8553dff-22c7-47e0-b188-fe47ba20c06f", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4463,12 +4465,12 @@ }, { "commandType": "dropTipInPlace", - "key": "393f693c-9021-44a5-9f41-44fef2473da6", + "key": "e6173c85-aa29-4970-a017-e1d56173d529", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "e8ebcfa1-ab44-47fc-bf61-2195ecc037e9", + "key": "c4ac3ecf-35ae-444a-a4d9-b90b289d7020", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4477,7 +4479,7 @@ }, { "commandType": "aspirate", - "key": "c18d9596-75c4-47c9-b886-01881bc466d7", + "key": "07af8116-6872-43f4-8e6a-2acfd9ae056d", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4492,7 +4494,7 @@ }, { "commandType": "dispense", - "key": "07a1703c-cac3-4204-8d5f-2af3b784b309", + "key": "c2a1b95f-eead-476a-af6b-eaecd597c58a", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4500,14 +4502,14 @@ "wellName": "E1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "da0eb4ba-8852-4789-a540-90670525bc53", + "key": "ae02c807-ad04-407b-a8bd-2536d326053a", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4517,12 +4519,12 @@ }, { "commandType": "dropTipInPlace", - "key": "79efe973-9dc8-406b-9a9d-8718df7456a0", + "key": "9ff56b91-52d2-4823-b1a7-d168b6610d39", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "d14d47cc-9b15-4fba-bd0b-14ed6252b5d8", + "key": "2ee82bb2-a652-4372-b208-79381d3a2264", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4531,7 +4533,7 @@ }, { "commandType": "aspirate", - "key": "30a0a6a6-7499-4aed-9fc6-5338fd4c7d44", + "key": "fba01fbc-0c97-448e-85c0-0163f435eec9", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4546,7 +4548,7 @@ }, { "commandType": "dispense", - "key": "944d54c3-0a8b-4932-8bc6-421be966d35e", + "key": "899aee37-aa0f-499b-8d81-87e50da36e24", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4554,14 +4556,14 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "63ad1220-e0fc-4972-88d1-dd245136289f", + "key": "d90d5984-3d21-464c-b92a-81a00180e27a", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4571,12 +4573,12 @@ }, { "commandType": "dropTipInPlace", - "key": "b5ed9c60-0df8-4c2d-b630-ac8a34247207", + "key": "4b7837b9-6c57-4349-9411-f5cd659fdf44", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "9f6cfe6a-c257-4863-9110-bbb461ad2fcb", + "key": "073269b2-c1ef-4568-be8a-e700e01c1fb0", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4585,7 +4587,7 @@ }, { "commandType": "aspirate", - "key": "2e0a36c3-2ed7-4622-b866-a8e203aeae2a", + "key": "7f2b602e-f8f3-481f-9bcf-a149126f6b55", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4600,7 +4602,7 @@ }, { "commandType": "dispense", - "key": "a7747373-d5d6-49f0-9d97-25038acf1444", + "key": "0fe0f127-2b1c-4d2d-ab09-d860f3cceead", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4608,14 +4610,14 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "c8f6434a-6f37-469e-9d68-da6b8986ff0a", + "key": "e1977b77-4bb4-4065-b4df-71a45adc0456", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4625,12 +4627,12 @@ }, { "commandType": "dropTipInPlace", - "key": "f7d1e8a1-406b-492c-8790-60822745a861", + "key": "bfe36534-d079-4187-a2a5-9438bcd9c33f", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "2a3a4014-3564-404c-9c8e-b8eca070b4cf", + "key": "07a11b3e-ed6f-4ba3-8c0a-470b956cf7e0", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4639,7 +4641,7 @@ }, { "commandType": "aspirate", - "key": "d22f1918-7e2b-4048-9dde-5c2667d3177b", + "key": "e5b0fda2-844a-4edb-b91b-3c41936dac98", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4654,7 +4656,7 @@ }, { "commandType": "dispense", - "key": "0bfa72a6-c216-4a8d-aa03-3e318a1ac4f1", + "key": "571ad2e1-63a6-40d6-8a3b-f1750059ae7f", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4662,14 +4664,14 @@ "wellName": "G1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "b5228eca-74c0-4336-8905-f270742014d2", + "key": "0b034b3e-45c4-4cb9-b820-357f3e230e55", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4679,12 +4681,12 @@ }, { "commandType": "dropTipInPlace", - "key": "49bb2ab9-7a30-439e-b5c7-50cd7b085f76", + "key": "2da8c88c-d811-4b24-a8c3-483fbb746ecf", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "462d1a08-c3c8-4bcb-be21-64fc59160a12", + "key": "751d9a11-3483-4b6f-bb41-7599943010ad", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4693,7 +4695,7 @@ }, { "commandType": "aspirate", - "key": "f38fb05c-8554-4f06-ae13-5296ce97f7df", + "key": "69b99917-3f64-40ea-b8b6-8c151a50138b", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4708,7 +4710,7 @@ }, { "commandType": "dispense", - "key": "2a02466b-3f7a-43ca-bf1e-8a737db30822", + "key": "7cf6c2ab-0fae-4ecb-8170-f88aaa06a661", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4716,14 +4718,14 @@ "wellName": "G1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "ba7d2aad-470f-477b-9bff-c31ca1722686", + "key": "d6841291-2f66-444c-9075-479264b99da2", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4733,12 +4735,12 @@ }, { "commandType": "dropTipInPlace", - "key": "80dde7d3-6af3-4c81-90e7-5907015cc714", + "key": "a31c0031-274d-4b0d-9a1e-5798c30ec56a", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "8f5d140b-a2fe-40a5-b789-17279666f401", + "key": "a79d29d3-2c41-4c92-8c6a-d326490796c1", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4747,7 +4749,7 @@ }, { "commandType": "aspirate", - "key": "370b0d86-e5bc-4f6c-a47f-6212f2bcbee1", + "key": "c1d0c16c-ac57-458b-9684-28a980d2bfb8", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4762,7 +4764,7 @@ }, { "commandType": "dispense", - "key": "7811759e-ad05-429a-b7cb-89365fb0e5fa", + "key": "b3bfc4e3-cc87-4d0a-bf93-e011e94f1faa", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4770,14 +4772,14 @@ "wellName": "H1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "d5cac3b5-8e2c-4b1f-ad42-bac90972bd06", + "key": "562b921d-47ef-410f-a6e9-89ca3de47781", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4787,12 +4789,12 @@ }, { "commandType": "dropTipInPlace", - "key": "b60fdbea-f73d-4ad6-a396-b9c39e41681b", + "key": "0a571744-aab1-4e5f-8714-4ef214eed2b4", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "9c512ff3-31b8-4e2f-92a3-bebb9fbdf449", + "key": "76f26d7f-424a-47d7-b58b-25da0153e99e", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4801,7 +4803,7 @@ }, { "commandType": "aspirate", - "key": "ac6afee2-95f8-4b14-90bb-00ea6e5cb9aa", + "key": "2ee21344-b3c9-4a1c-8d16-ba87685c941d", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4816,7 +4818,7 @@ }, { "commandType": "dispense", - "key": "468fab39-9a90-4b08-9a91-ccf0f8080a7c", + "key": "0aa240d7-4f11-4e27-b267-b2293756ccd9", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "volume": 50, @@ -4824,14 +4826,14 @@ "wellName": "H1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 478 } }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "16e076a7-9850-4ed9-9b10-31079a7cec7e", + "key": "7ce94c87-441f-4b94-b130-2ac389df6173", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe", "addressableAreaName": "movableTrashA3", @@ -4841,12 +4843,12 @@ }, { "commandType": "dropTipInPlace", - "key": "d85b048b-02ff-47ec-abf8-eea59905d6bc", + "key": "3d97c296-3db4-4aeb-a90a-d606b403b06f", "params": { "pipetteId": "2e7c6344-58ab-465c-b542-489883cb63fe" } }, { "commandType": "pickUpTip", - "key": "2c7aaef7-a6ec-4a82-9f6c-70232c99062a", + "key": "8f82c107-45a2-4a38-84fc-66f0271d2801", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "labwareId": "23ed35de-5bfd-4bb0-8f54-da99a2804ed9:opentrons/opentrons_flex_96_filtertiprack_50ul/1", @@ -4855,7 +4857,7 @@ }, { "commandType": "configureForVolume", - "key": "61eb227a-2372-41cf-aeed-e3fa3fd38b66", + "key": "756cc4d4-1166-43e6-973e-e36da881b3b8", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10 @@ -4863,7 +4865,7 @@ }, { "commandType": "aspirate", - "key": "a6140727-c21f-4282-bc9a-b5145937643f", + "key": "11e401a4-f3f9-4140-8440-b9720b25e64b", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -4878,7 +4880,7 @@ }, { "commandType": "dispense", - "key": "81d7b5c4-2482-4f69-a470-3668e423c679", + "key": "d203a431-0e58-4eae-a58a-1867345d2097", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -4893,7 +4895,7 @@ }, { "commandType": "aspirate", - "key": "ee15c250-d1fd-403f-9ef6-6a3cc2be4676", + "key": "47cd47b9-0e5e-4cfb-8a34-04e38972042f", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -4908,7 +4910,7 @@ }, { "commandType": "dispense", - "key": "1cf3a88d-03bd-4a3d-bf14-94691c277bde", + "key": "8c82d2df-c0b3-4e83-84b7-c49c5a679d7a", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "volume": 10, @@ -4923,7 +4925,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "d323a933-4ba8-4b24-a1fa-8616b75a2acb", + "key": "87891819-4db8-485f-ac1c-2cb8dfa8da58", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193", "addressableAreaName": "movableTrashA3", @@ -4933,12 +4935,12 @@ }, { "commandType": "dropTipInPlace", - "key": "0428fbf2-4a65-40db-ac59-e92f8a060772", + "key": "c8b87235-132f-4c2b-8d4e-b09292e6bbeb", "params": { "pipetteId": "6d1e53c3-2db3-451b-ad60-3fe13781a193" } }, { "commandType": "moveLabware", - "key": "00daa040-08a8-4985-9d6b-4d32e9d97401", + "key": "70be0944-8068-4d60-aa0f-9d157c6419a5", "params": { "labwareId": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", "strategy": "usingGripper", @@ -4947,12 +4949,12 @@ }, { "commandType": "waitForDuration", - "key": "2552e97d-4fcf-45c7-a88c-c272dc6143d9", + "key": "fef747ed-386a-4b20-9cf1-e37c46181425", "params": { "seconds": 60, "message": "" } }, { "commandType": "moveLabware", - "key": "b78b90be-5d24-4628-9488-d3c1b4d2ab50", + "key": "e837119a-5b27-46f1-b451-212a7df67b07", "params": { "labwareId": "fcba73e7-b88e-438e-963e-f8b9a5de0983:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", "strategy": "usingGripper", @@ -4961,21 +4963,21 @@ }, { "commandType": "heaterShaker/closeLabwareLatch", - "key": "94bde363-df4a-467b-bd6b-d7fa6ff17124", + "key": "8b4b0719-bc42-4ed4-8ce0-a7a7cedf66ea", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "62598859-38b6-4d90-a680-b19f9878cadf", + "key": "3b7b0570-3a7a-4e33-9bad-b059fe89c1a1", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/setAndWaitForShakeSpeed", - "key": "30761114-6005-4449-bc9e-5f5ceb272eff", + "key": "2f7bcf2d-638d-4dcc-8024-56d5ecaf2295", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType", "rpm": 500 @@ -4983,28 +4985,28 @@ }, { "commandType": "heaterShaker/deactivateHeater", - "key": "79382671-fa28-4897-9cd7-ef1e2ffa4b8c", + "key": "8949fdba-7c3e-4f80-a875-196c32f509a6", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateShaker", - "key": "9ab194ad-d4b3-458b-88b8-e4f3d46cded0", + "key": "9fed3869-0f75-4283-b074-9b6d9024f265", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "heaterShaker/openLabwareLatch", - "key": "79bb839c-d30d-481d-b2b8-3e56ec65fe43", + "key": "9d2c8737-d1e2-4536-8c62-438680f796d2", "params": { "moduleId": "c19dffa3-cb34-4702-bcf6-dcea786257d1:heaterShakerModuleType" } }, { "commandType": "moveLabware", - "key": "cb594255-8ae1-4c5f-a416-0b370799976f", + "key": "8135e5e6-0d7a-4671-948a-4820a609c7ff", "params": { "labwareId": "a793a135-06aa-4ed6-a1d3-c176c7810afa:opentrons/opentrons_24_aluminumblock_nest_1.5ml_snapcap/1", "strategy": "manualMoveWithPause", @@ -5013,14 +5015,14 @@ }, { "commandType": "temperatureModule/deactivate", - "key": "0867192a-84b8-49f9-bace-8e84b9da9055", + "key": "b71aa9a8-2433-4896-936d-ab813c8018df", "params": { "moduleId": "ef44ad7f-0fd9-46d6-8bc0-c70785644cc8:temperatureModuleType" } }, { "commandType": "moveLabware", - "key": "cd47db8e-00c2-44e3-8209-337221a02f75", + "key": "e896fc7d-b93e-4507-84bf-5af3d69ce722", "params": { "labwareId": "239ceac8-23ec-4900-810a-70aeef880273:opentrons/nest_96_wellplate_200ul_flat/2", "strategy": "manualMoveWithPause", diff --git a/protocol-designer/fixtures/protocol/8/doItAllV8.json b/protocol-designer/fixtures/protocol/8/doItAllV8.json index 7f6e678b396..2d4953ee801 100644 --- a/protocol-designer/fixtures/protocol/8/doItAllV8.json +++ b/protocol-designer/fixtures/protocol/8/doItAllV8.json @@ -6,7 +6,7 @@ "author": "", "description": "", "created": 1701659107408, - "lastModified": 1713443592769, + "lastModified": 1714570438503, "category": null, "subcategory": null, "tags": [] @@ -15,10 +15,10 @@ "name": "opentrons/protocol-designer", "version": "8.1.0", "data": { - "_internalAppBuildDate": "Thu, 18 Apr 2024 12:32:56 GMT", + "_internalAppBuildDate": "Wed, 01 May 2024 13:32:34 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 0.5, + "dispense_mmFromBottom": 1, "touchTip_mmFromTop": -1, "blowout_mmFromTop": 0 }, @@ -159,6 +159,7 @@ "aspirate_x_position": 0, "aspirate_y_position": 0, "blowout_z_offset": 0, + "blowout_flowRate": null, "id": "d2f74144-a7bf-4ba2-aaab-30d70b2b62c7", "stepType": "moveLiquid", "stepName": "transfer", @@ -3426,7 +3427,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "40f32b29-7920-4902-8dce-c45a822b9607", + "key": "a1b95079-5b17-428d-b40c-a8236a9890c5", "commandType": "loadPipette", "params": { "pipetteName": "p1000_single_flex", @@ -3435,7 +3436,7 @@ } }, { - "key": "356c37ae-a4b4-4557-b865-79361f86be1e", + "key": "6f1e3ad3-8f03-4583-8031-be6be2fcd903", "commandType": "loadModule", "params": { "model": "heaterShakerModuleV1", @@ -3444,7 +3445,7 @@ } }, { - "key": "79c058f0-8637-455f-88d2-38c29f542b69", + "key": "4997a543-7788-434f-8eae-1c4aa3a2a805", "commandType": "loadModule", "params": { "model": "thermocyclerModuleV2", @@ -3453,7 +3454,7 @@ } }, { - "key": "5a3a1223-c085-4e04-9e07-1984a6c15f1b", + "key": "8bfb6d48-4d08-4ea0-8ce7-f8efe90e202c", "commandType": "loadLabware", "params": { "displayName": "Opentrons 96 PCR Heater-Shaker Adapter", @@ -3467,7 +3468,7 @@ } }, { - "key": "01049981-be49-4bc2-9df2-5a6610e1de60", + "key": "988395e3-9b85-4bb0-89a4-3afc1d7330fd", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 1000 µL", @@ -3479,7 +3480,7 @@ } }, { - "key": "a32901d5-39f8-427a-a8e1-48e314ae654a", + "key": "0d60425e-5a6f-4205-ac59-d38a080f2e92", "commandType": "loadLabware", "params": { "displayName": "Opentrons Tough 96 Well Plate 200 µL PCR Full Skirt", @@ -3493,7 +3494,7 @@ } }, { - "key": "17f7f181-5359-416b-9a35-040424a7a367", + "key": "eba272e9-3eed-46bb-91aa-d1aee8da58da", "commandType": "loadLabware", "params": { "displayName": "Axygen 1 Well Reservoir 90 mL", @@ -3506,7 +3507,7 @@ }, { "commandType": "loadLiquid", - "key": "1dac398a-24dc-497a-8165-e8c601130c59", + "key": "45d432f8-581b-4272-9813-e73b9168a0ad", "params": { "liquidId": "1", "labwareId": "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", @@ -3524,7 +3525,7 @@ }, { "commandType": "loadLiquid", - "key": "697cdc45-2de6-4573-b758-899fb5433559", + "key": "7ec93f2a-3d22-4d30-b37a-e9f0d41a1847", "params": { "liquidId": "0", "labwareId": "8bacda22-9e05-45e8-bef4-cc04414a204f:opentrons/axygen_1_reservoir_90ml/1", @@ -3533,14 +3534,14 @@ }, { "commandType": "thermocycler/openLid", - "key": "52e4683b-1a0f-4ff6-bf5e-7426f156e29b", + "key": "ba1731c6-2906-4987-b948-ea1931ad3e64", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "moveLabware", - "key": "df2967a1-e0ce-4f8b-9d21-6127232a812f", + "key": "134cdae8-8ba1-45e4-98d7-cb931358eb01", "params": { "labwareId": "8bacda22-9e05-45e8-bef4-cc04414a204f:opentrons/axygen_1_reservoir_90ml/1", "strategy": "usingGripper", @@ -3549,7 +3550,7 @@ }, { "commandType": "pickUpTip", - "key": "ba9b0d63-e3ae-4440-a038-6aecd96ac436", + "key": "6a5f30cc-8bea-4899-b058-7bf2095efe86", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3558,7 +3559,7 @@ }, { "commandType": "aspirate", - "key": "c0d9580a-1db4-4510-bbfc-0095bff9b60a", + "key": "71fc15e9-ad19-4c77-a32f-abba4ea5e6f9", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3573,7 +3574,7 @@ }, { "commandType": "dispense", - "key": "5bcd0ac0-8a0f-444b-b15f-2f019ab0ab80", + "key": "a94a08b1-ed23-4c91-a853-27192da2aa70", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3581,14 +3582,14 @@ "wellName": "A1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "47188996-9652-4201-bf4c-623e4eb5b5f4", + "key": "9f8c952b-88e2-4a6d-b6a2-e943f9b032e0", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3597,12 +3598,12 @@ }, { "commandType": "dropTipInPlace", - "key": "6c8f7a15-e98a-4625-a923-1742758d53b8", + "key": "734f7c4e-be2c-4a45-ae26-d81fb6b58729", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "2955ab48-ca0c-4282-b836-afd41fc22314", + "key": "e3f54bb0-ef58-4e56-ad44-1dc944d2ebd8", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3611,7 +3612,7 @@ }, { "commandType": "aspirate", - "key": "e0cc1dd8-e249-4816-9f3a-70b594868ec8", + "key": "d5dee037-06a2-4f63-a5dd-08f285db802f", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3626,7 +3627,7 @@ }, { "commandType": "dispense", - "key": "cd3df764-af5c-4ca9-b10b-aea5eddef555", + "key": "db77cb48-9d63-4eb9-bac9-82c7137c7940", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3634,14 +3635,14 @@ "wellName": "B1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "31c749fd-fbbc-4afe-a9d4-ff52bb52b405", + "key": "c4a205b9-6a31-4993-a7dd-de84e3c40fab", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3650,12 +3651,12 @@ }, { "commandType": "dropTipInPlace", - "key": "923ea88b-4af9-4564-8bcd-6bd242d9ca1d", + "key": "c1a58bc4-c922-4989-8259-3a011cb6548e", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "44655fc6-6a51-45b5-ab9c-4536da6db5a6", + "key": "4660a8b7-c24f-4cbd-b5f7-0fff091af818", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3664,7 +3665,7 @@ }, { "commandType": "aspirate", - "key": "d630c56e-fcdf-4bdf-a3fd-3cb61610f58a", + "key": "9ac1cb1d-2876-4816-87bc-bcbeb3d0cc45", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3679,7 +3680,7 @@ }, { "commandType": "dispense", - "key": "e82f1cc1-5f3f-44d2-b14f-ab2e59081caa", + "key": "1e8856de-95c7-483f-bf9a-a8a08dbd51b5", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3687,14 +3688,14 @@ "wellName": "C1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "cd82948c-82d6-4edf-a775-ee091776f3ab", + "key": "df45d90b-b122-4a73-8166-7c36cb4b1739", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3703,12 +3704,12 @@ }, { "commandType": "dropTipInPlace", - "key": "2ebf1172-81c0-4971-9b3e-50e7d17ca4d2", + "key": "893249ff-853b-4294-bd2c-12da0e5cb8af", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "3d6d1437-5919-4d0e-aa3e-df63df6528b0", + "key": "2e4913f4-1f2e-4039-964b-ca6f8905e551", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3717,7 +3718,7 @@ }, { "commandType": "aspirate", - "key": "80285a48-65ae-4eae-a5bd-f24d9bd60ce8", + "key": "bd2ac396-b44d-41a8-b050-ff8ab4a25575", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3732,7 +3733,7 @@ }, { "commandType": "dispense", - "key": "9cb9f1e9-a51a-4dd1-84c3-cb028937e9c2", + "key": "df68ab20-61c0-4077-bf0e-b1ef2997251a", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3740,14 +3741,14 @@ "wellName": "D1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "158a777d-091a-43d3-a37e-e3afd41f5227", + "key": "4b7f1a58-2bf5-45e8-a312-e165130f208c", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3756,12 +3757,12 @@ }, { "commandType": "dropTipInPlace", - "key": "290cdc32-1458-4c68-895a-8940881aa76f", + "key": "2fc06e3a-f20d-47b9-ac7f-0a062b45beeb", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "5597bb4a-7a24-455e-9970-b3cae41cf26e", + "key": "9b4955da-0d09-40da-83b2-6c398dcf5e6e", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3770,7 +3771,7 @@ }, { "commandType": "aspirate", - "key": "004d4dc5-9898-4585-8e14-c6191be0ea36", + "key": "05a4a082-6381-4107-bb26-0e64351d3263", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3785,7 +3786,7 @@ }, { "commandType": "dispense", - "key": "0412d0ae-18de-439e-bcc5-3e7b511fc425", + "key": "a494e205-1cf5-4718-b5f0-43fe74c962bc", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3793,14 +3794,14 @@ "wellName": "E1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "f45fa8af-a371-4ff8-a887-51b1f7e6e6eb", + "key": "e4cf4c42-d1c3-40e7-9848-3e02e01250a8", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3809,12 +3810,12 @@ }, { "commandType": "dropTipInPlace", - "key": "3b0b8782-22fc-4b47-970f-8f614c824e7b", + "key": "397d6c15-97ae-4ab5-a2dc-e0fe75562d17", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "b3e52771-08e8-4e26-89ad-7e05bc78f7a0", + "key": "86178307-33f6-4902-9207-51fc704d579c", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3823,7 +3824,7 @@ }, { "commandType": "aspirate", - "key": "91a103c5-218d-4ff1-ba08-e64abfd4a6dc", + "key": "f2964ad3-9dac-4566-b636-afb59de61116", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3838,7 +3839,7 @@ }, { "commandType": "dispense", - "key": "ead8edb2-de34-44d8-93ee-e6c5f8f3a79b", + "key": "68c9104b-3796-4ca1-9bc5-22afec8024d9", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3846,14 +3847,14 @@ "wellName": "F1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "6fac362d-9b2f-4ee3-809b-6acdd5c97429", + "key": "9a10a801-1aaa-4238-89a9-c256f09deea0", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3862,12 +3863,12 @@ }, { "commandType": "dropTipInPlace", - "key": "78c79e71-f751-4435-95c0-e32e4d603d16", + "key": "73d1b9c9-4c1f-40a2-8932-7f0110da78dc", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "5751ccf4-4d6b-4330-8333-0b4638512921", + "key": "5818e249-0b61-4f76-af80-c835a4ad0033", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3876,7 +3877,7 @@ }, { "commandType": "aspirate", - "key": "01253366-2da9-40df-abd1-c836dd13f8ef", + "key": "38df8344-789d-4490-bd8a-cbe9121b2692", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3891,7 +3892,7 @@ }, { "commandType": "dispense", - "key": "85471a92-721f-4a5b-a7ed-8c48e30515d9", + "key": "13593038-b554-447e-9963-0f3666ccd11a", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3899,14 +3900,14 @@ "wellName": "G1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "ec1821ce-f6f7-4088-8cea-55b5c1388e00", + "key": "361985e0-7e23-4651-b0ed-5277cb5f1bec", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3915,12 +3916,12 @@ }, { "commandType": "dropTipInPlace", - "key": "e52e528a-e7e4-4bea-a506-be1d4919b08a", + "key": "0d1c0aa2-d5f6-45d9-9341-bc623c07f366", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "pickUpTip", - "key": "06200920-ed5b-4b04-8891-64797633ff60", + "key": "ef384b08-03fd-4ec1-8ea9-f7741ac9050e", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", @@ -3929,7 +3930,7 @@ }, { "commandType": "aspirate", - "key": "989a4e77-f23d-4644-926e-6bf14dcd4830", + "key": "29bcc74a-cbba-4d19-9150-889378a34530", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3944,7 +3945,7 @@ }, { "commandType": "dispense", - "key": "b134f05e-ebc3-4afd-b82c-1593c713a095", + "key": "e1f51c21-1522-4538-af60-b97dc37d7b9a", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "volume": 100, @@ -3952,14 +3953,14 @@ "wellName": "H1", "wellLocation": { "origin": "bottom", - "offset": { "z": 0.5, "x": 0, "y": 0 } + "offset": { "z": 1, "x": 0, "y": 0 } }, "flowRate": 716 } }, { "commandType": "moveToAddressableArea", - "key": "893eabc9-96b2-44d6-966f-15c4b0945de0", + "key": "93516cec-406e-41e8-8c4c-9b2b145509f7", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc", "addressableAreaName": "1ChannelWasteChute", @@ -3968,19 +3969,19 @@ }, { "commandType": "dropTipInPlace", - "key": "29f2661e-ad07-4bc6-a148-8f7b8570d0e4", + "key": "d9a0a1d2-f813-488e-a28a-daae69cbc072", "params": { "pipetteId": "9fcd50d9-92b2-45ac-acf1-e2cf773feffc" } }, { "commandType": "thermocycler/closeLid", - "key": "7001c990-372b-448a-92c3-d5c88824788f", + "key": "6c34d1f1-bfeb-46d9-9669-c9b71732b6ab", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "thermocycler/setTargetBlockTemperature", - "key": "529ec9ae-b2c9-48b2-9cc0-dbc8acfdecac", + "key": "5ec65b6a-2b1c-4f8c-961f-c6e0ee700b49", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType", "celsius": 40 @@ -3988,47 +3989,47 @@ }, { "commandType": "thermocycler/waitForBlockTemperature", - "key": "4c8d1f54-9af8-45fb-8559-86b7e617f2b8", + "key": "9f90e933-131f-44eb-ab12-efb152c9cb83", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "waitForDuration", - "key": "53066ac3-308e-4260-8cc2-d0e1d5f366f3", + "key": "f580c50f-08bb-42c4-b4a2-2764ed2fc090", "params": { "seconds": 60, "message": "" } }, { "commandType": "thermocycler/openLid", - "key": "76bf61d3-6a46-45db-acf6-52c4ca845bf9", + "key": "f739bfc8-f438-4fa2-8d57-dc839ac29f24", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "thermocycler/deactivateBlock", - "key": "0bbee337-af9e-43da-aef9-f28b075bbfd2", + "key": "4561d98c-b565-48db-a7af-6bcd31520340", "params": { "moduleId": "fd6da9f1-d63b-414b-929e-c646b64790e9:thermocyclerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "a650851d-fc87-43e2-90ae-91613d662ce0", + "key": "79dd17bf-f86a-4fe9-990a-e4e567798c87", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/openLabwareLatch", - "key": "2b82eec2-4419-4b5d-b25c-57a37d407033", + "key": "995a2630-7a9c-4b70-aef8-ddccb7ce26ce", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "moveLabware", - "key": "07a2f986-11e4-4316-b139-50bda41c7fed", + "key": "9d1035a4-617f-4fcc-a7a3-1b7a8c52b4c6", "params": { "labwareId": "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", "strategy": "usingGripper", @@ -4039,21 +4040,21 @@ }, { "commandType": "heaterShaker/closeLabwareLatch", - "key": "3ab6549d-25a0-4ba5-b8d8-748560cbf3b9", + "key": "a244eacc-4cbc-48af-b54a-6c08cd534a51", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "468a12a1-4f36-40e5-a799-3d23b3888f01", + "key": "a6970f26-4800-4949-8592-d977df547d8b", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/setAndWaitForShakeSpeed", - "key": "d3593c08-0f8d-4424-99a5-bcdeed25a335", + "key": "ef808dac-1e14-47a1-843d-ce4ce63bdfce", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType", "rpm": 200 @@ -4061,40 +4062,40 @@ }, { "commandType": "waitForDuration", - "key": "e5e5d847-700b-4777-bca2-d58a2b970dd8", + "key": "5b47f11e-0755-47d2-b844-f1363e28a54e", "params": { "seconds": 60 } }, { "commandType": "heaterShaker/deactivateShaker", - "key": "f5dad8a0-f55f-4bcb-9283-2c53a4bb766a", + "key": "614ec8d0-8abf-4aa4-b771-23ff2bde2881", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "9053dc6d-b840-4e37-9a99-b0dd48dcebe6", + "key": "dbbe307e-d361-4cb9-afe7-afeab944bfce", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/deactivateHeater", - "key": "d2e3759b-d4eb-4581-ab71-383a2c9fcb9b", + "key": "62f98610-cbff-4acb-ba36-a3fbb9527ba9", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "heaterShaker/openLabwareLatch", - "key": "769b1ef1-c018-40df-b20c-96b9d1a6f966", + "key": "81cfeab1-175f-4501-8732-1ea1bc9b528b", "params": { "moduleId": "23347241-80bb-4a7e-9c91-5d9727a9e483:heaterShakerModuleType" } }, { "commandType": "moveLabware", - "key": "80578ae1-16b6-47d1-b6a0-c8bb30e00ce1", + "key": "279df4d0-2c87-4f01-b016-5c42d5edce96", "params": { "labwareId": "54370838-4fca-4a14-b88a-7840e4903649:opentrons/opentrons_96_wellplate_200ul_pcr_full_skirt/2", "strategy": "usingGripper", @@ -4103,7 +4104,7 @@ }, { "commandType": "moveLabware", - "key": "a26e3b9c-79d4-4bea-895f-48d95bea70fc", + "key": "f88f41dc-ddf9-4242-9ba4-21bd728ca25f", "params": { "labwareId": "f2d371ea-5146-4c89-8200-9c056a7f321a:opentrons/opentrons_flex_96_tiprack_1000ul/1", "strategy": "usingGripper", diff --git a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json index 56b9885aea9..efb8deaad57 100644 --- a/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json +++ b/protocol-designer/fixtures/protocol/8/example_1_1_0MigratedToV8.json @@ -6,7 +6,7 @@ "author": "Author name", "description": "Description here", "created": 1560957631666, - "lastModified": 1711902162091, + "lastModified": 1714570455185, "category": null, "subcategory": null, "tags": [] @@ -15,10 +15,10 @@ "name": "opentrons/protocol-designer", "version": "8.1.0", "data": { - "_internalAppBuildDate": "Sun, 31 Mar 2024 16:22:18 GMT", + "_internalAppBuildDate": "Wed, 01 May 2024 13:32:34 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 0.5, + "dispense_mmFromBottom": 1, "touchTip_mmFromTop": -1, "blowout_mmFromTop": 0 }, @@ -114,7 +114,6 @@ "disposalVolume_checkbox": true, "disposalVolume_volume": "1", "blowout_checkbox": true, - "blowout_z_offset": 0, "blowout_location": "9b1c0d01-9d4f-4016-afe6-9e08b46acf5e:trashBin", "preWetTip": false, "aspirate_airGap_checkbox": false, @@ -133,6 +132,8 @@ "dispense_y_position": 0, "aspirate_x_position": 0, "aspirate_y_position": 0, + "blowout_z_offset": 0, + "blowout_flowRate": 1000, "id": "e7d36200-92a5-11e9-ac62-1b173f839d9e", "stepType": "moveLiquid", "stepName": "transfer things", @@ -144,7 +145,6 @@ "labware": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", "mix_wellOrder_first": "t2b", "mix_wellOrder_second": "l2r", - "blowout_z_offset": 0, "blowout_checkbox": true, "blowout_location": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", "mix_mmFromBottom": 0.5, @@ -164,6 +164,8 @@ "tipRack": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", "mix_x_position": 0, "mix_y_position": 0, + "blowout_z_offset": 0, + "blowout_flowRate": 1000, "id": "18113c80-92a6-11e9-ac62-1b173f839d9e", "stepType": "mix", "stepName": "mix", @@ -3344,7 +3346,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "818878e2-9a2b-498e-be2d-1d317f6f7af8", + "key": "f6753216-417b-49fa-88cc-e359adae26f6", "commandType": "loadPipette", "params": { "pipetteName": "p10_single", @@ -3353,7 +3355,7 @@ } }, { - "key": "1ae8e180-58c4-4970-b372-9a8f1869f297", + "key": "aeec3001-087f-4074-b098-9dfdb465e008", "commandType": "loadPipette", "params": { "pipetteName": "p50_single", @@ -3362,7 +3364,7 @@ } }, { - "key": "ce9f8375-8577-4062-a9ff-12bc33d3bec5", + "key": "c540d35e-88e1-49da-aa90-5f9cbcd9068f", "commandType": "loadLabware", "params": { "displayName": "tiprack 10ul (1)", @@ -3374,7 +3376,7 @@ } }, { - "key": "8f2f7622-476b-40ff-b692-768a69158aa2", + "key": "827e73cf-2870-43d6-aa0b-5ac87d8996c4", "commandType": "loadLabware", "params": { "displayName": "tiprack 200ul (1)", @@ -3386,7 +3388,7 @@ } }, { - "key": "6802ec5e-204e-4a63-87a9-c6066788e537", + "key": "c519abb5-64ae-4068-bcb7-198e29e865e0", "commandType": "loadLabware", "params": { "displayName": "96 deep well (1)", @@ -3399,7 +3401,7 @@ }, { "commandType": "loadLiquid", - "key": "c63af547-a330-4e04-96ea-f04ef3c93ca1", + "key": "ae991255-3f64-47be-a541-cbe63e0ef907", "params": { "liquidId": "1", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -3408,7 +3410,7 @@ }, { "commandType": "loadLiquid", - "key": "d1af9a18-bb2f-4929-b952-7b1e21eadac8", + "key": "1b2418da-a26d-4cb3-9578-17782cf79f1b", "params": { "liquidId": "0", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -3423,7 +3425,7 @@ }, { "commandType": "pickUpTip", - "key": "24f9ab3b-48fd-42cb-8e0d-2128427459fe", + "key": "3e69c4c9-2255-4043-b548-1b9c410360aa", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -3432,7 +3434,7 @@ }, { "commandType": "aspirate", - "key": "426ca672-56a0-430d-bdba-23632ad728b0", + "key": "9ce167a0-b022-45cf-bc14-d3ec56381d9d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3447,7 +3449,7 @@ }, { "commandType": "dispense", - "key": "ea2eab58-723d-462e-ae8b-d0daa9462ece", + "key": "85330ac5-e850-47d3-8089-b38866d4a2d0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3462,7 +3464,7 @@ }, { "commandType": "aspirate", - "key": "fa061fa1-e5d5-42cf-b9dd-d4b9a6b6eabe", + "key": "1db1dfc0-62db-4d89-9de5-3d2fa230ff07", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3477,7 +3479,7 @@ }, { "commandType": "dispense", - "key": "1e21ebe5-4e6f-4bc5-8dc3-1f1aa9158ff5", + "key": "1a39e7f0-8a76-4936-ac5d-114f8c10ae91", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3492,7 +3494,7 @@ }, { "commandType": "aspirate", - "key": "7ad7bdad-84eb-42a0-b4ac-48949808a041", + "key": "496b2ad5-b4da-4259-be84-8b441d0a4b60", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3507,7 +3509,7 @@ }, { "commandType": "dispense", - "key": "dd723bb6-9eba-4ab6-bc80-03f6f6db17df", + "key": "93ab5d06-a448-45b3-a276-272edfd91873", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3522,7 +3524,7 @@ }, { "commandType": "aspirate", - "key": "eddfcde7-5497-42e7-bff4-56d2052bc552", + "key": "3d0984ed-5b02-4d38-912e-10c031b55ee0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3537,7 +3539,7 @@ }, { "commandType": "touchTip", - "key": "e3e8b3d6-a118-43de-9155-7d1a1da67dbd", + "key": "4d66aa3a-446e-400f-a24a-ac34accfbc3b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -3547,7 +3549,7 @@ }, { "commandType": "dispense", - "key": "080a9a26-92ba-48ba-84ed-0a10743b7918", + "key": "d6f1e7d9-d050-46e0-9403-d7ab6ac26ffb", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3562,7 +3564,7 @@ }, { "commandType": "aspirate", - "key": "ac6f0caf-5fe8-4d45-9659-1265fd022295", + "key": "10b51ab7-5889-447a-a992-b74734023f81", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3577,7 +3579,7 @@ }, { "commandType": "dispense", - "key": "b9e03bec-0741-4dc9-b953-cadd7e7c40b6", + "key": "caa702df-9c41-421a-8c98-76d9d7f95889", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3592,7 +3594,7 @@ }, { "commandType": "aspirate", - "key": "017fd13a-0e3a-4f54-94c3-8d5fc8eb4ba4", + "key": "cb96c8d0-5f14-484b-80fc-60753c2c6b14", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3607,7 +3609,7 @@ }, { "commandType": "dispense", - "key": "7961e88d-1b9b-4615-bcbd-31320a03f81c", + "key": "a7ddff78-c39b-4fb0-9db6-cdadea58a4e2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3622,7 +3624,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "4d60aa9f-e59b-491a-b494-aef4b877f6fa", + "key": "80b7c947-e20f-4331-9b87-2c7bebebfa07", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -3631,7 +3633,7 @@ }, { "commandType": "blowOutInPlace", - "key": "8bf8312b-7058-430e-8344-84ed35dda280", + "key": "e26b883d-9bb2-49e2-9a26-62626eb04e04", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -3639,7 +3641,7 @@ }, { "commandType": "touchTip", - "key": "728468cd-08a9-4811-b5a8-ce0649835d29", + "key": "87a0b1e4-f375-4dee-9597-87f8f15b8c25", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -3649,7 +3651,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "1b5e20e3-85d5-4d87-89f9-7d9568696f6d", + "key": "268d8310-7f0a-4545-a8ed-ef2fb22a3085", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -3659,12 +3661,12 @@ }, { "commandType": "dropTipInPlace", - "key": "3f520a13-6e4f-4ade-bbf8-2fdd35b875c3", + "key": "abbc727f-81d6-4b5d-8a52-cd8f966e8fbf", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "4b8db7a7-609e-431a-bf9d-7cf858c4b8f7", + "key": "292c5f17-65f9-4af7-88fd-33c012df2059", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -3673,7 +3675,7 @@ }, { "commandType": "aspirate", - "key": "0355948e-57ca-4572-baa5-7a64b7ef28cc", + "key": "1bb202e6-007b-4631-8aa0-5f5211c263fc", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3688,7 +3690,7 @@ }, { "commandType": "dispense", - "key": "193a745f-0698-4427-8d0d-d1e4fe24de24", + "key": "cdf0ab85-fdd3-41ab-89f7-5c7b696c48dd", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3703,7 +3705,7 @@ }, { "commandType": "aspirate", - "key": "8d205199-aa0a-4640-9a23-b3adcca61be2", + "key": "b8d9161d-0835-44b3-8223-73fa752a5a5a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3718,7 +3720,7 @@ }, { "commandType": "dispense", - "key": "fe86a1bb-8c8e-4307-b06e-c92a8e231679", + "key": "33c2f20d-6d68-4b63-a812-7f40735bbaaa", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3733,7 +3735,7 @@ }, { "commandType": "aspirate", - "key": "1976e9d0-ee3f-4ca0-a039-147dd8c21399", + "key": "95d4ac3a-8094-46fc-9c30-275f37701e3f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3748,7 +3750,7 @@ }, { "commandType": "dispense", - "key": "b75876f5-cbf6-43ae-8bb5-1b71641ccc6a", + "key": "cef01434-9fa2-48dd-8139-755a0d5f5568", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3763,7 +3765,7 @@ }, { "commandType": "aspirate", - "key": "c6ff48bc-a06c-4e5b-9172-986375d8a934", + "key": "67786140-5e0b-4290-a448-925cec83c85c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3778,7 +3780,7 @@ }, { "commandType": "touchTip", - "key": "7a15666d-4676-41b5-8752-26cc8a07f17e", + "key": "4f6e1cc6-67be-49ab-814d-d7534a0da726", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -3788,7 +3790,7 @@ }, { "commandType": "dispense", - "key": "ec56b383-c163-402e-9996-d4cc69a1cffd", + "key": "7b33de85-68cb-4888-8023-8be805f5a77a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -3803,7 +3805,7 @@ }, { "commandType": "aspirate", - "key": "cabfdd05-1309-43e2-bfbd-d04bc7de85c9", + "key": "13c080bb-8e30-41c9-a237-e2591f09ee3c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3818,7 +3820,7 @@ }, { "commandType": "dispense", - "key": "05cb631d-9092-46e9-b802-6175fbae1e1f", + "key": "61c081de-e44b-4583-b963-89be8985723f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3833,7 +3835,7 @@ }, { "commandType": "aspirate", - "key": "ea50ada1-23d9-4ecf-af9d-3246930afd26", + "key": "63421ac3-10f1-4472-b813-2cce280b2ddc", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3848,7 +3850,7 @@ }, { "commandType": "dispense", - "key": "2523b9ed-ef76-40c9-8947-18c039e50939", + "key": "56253d18-7874-44ab-83a5-bb39c3c306e8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -3863,7 +3865,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "58c4751a-5628-4596-a171-1ac260259c28", + "key": "f7030e97-02d3-46c0-9275-d53932064855", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -3872,7 +3874,7 @@ }, { "commandType": "blowOutInPlace", - "key": "ba5016a9-cd7a-41c8-bf17-aadb64664190", + "key": "1a5179e1-6ec6-4028-9b13-32bae277e68e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -3880,7 +3882,7 @@ }, { "commandType": "touchTip", - "key": "1314e2d9-8d46-4663-9bf3-458a300b0add", + "key": "aa2fa938-b38e-4d92-a4c5-0123131b29a7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -3890,7 +3892,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "8527d992-4185-4f20-99a9-864541aaa7b6", + "key": "c90e2918-1615-4d2a-b7a0-daaa013e2a42", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -3900,12 +3902,12 @@ }, { "commandType": "dropTipInPlace", - "key": "8c564bbd-34dd-44d2-ace8-995097f571b9", + "key": "220b1148-9a8f-4826-b515-6a2e87419f4c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "5377f188-8a31-4ff3-8ed3-ff5b651e467b", + "key": "001b95fd-fd21-425a-8846-432768900785", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -3914,7 +3916,7 @@ }, { "commandType": "aspirate", - "key": "70c291fd-f5c9-4216-9446-de8191fff376", + "key": "a1e24a66-7c37-40d8-8415-9ae9ce1107b5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3929,7 +3931,7 @@ }, { "commandType": "dispense", - "key": "7f1299ec-8930-457d-a2d9-c18876da3769", + "key": "42b2126b-b283-469f-b3f9-dfa2b78c5958", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3944,7 +3946,7 @@ }, { "commandType": "aspirate", - "key": "d04dee6f-90a4-4b4b-89b8-05f1104431fd", + "key": "b73d2141-34cd-4cd0-828a-6640f6f75ded", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3959,7 +3961,7 @@ }, { "commandType": "dispense", - "key": "c983ed9b-783b-411a-8df2-50ef254b4deb", + "key": "ad64a163-5293-4b98-89df-28766993bf09", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3974,7 +3976,7 @@ }, { "commandType": "aspirate", - "key": "678dc318-94d9-488b-b2e3-f04ed29a2863", + "key": "b514ff83-cd73-41ee-8d08-9862e6989924", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -3989,7 +3991,7 @@ }, { "commandType": "dispense", - "key": "6aee8385-14b4-48fa-bef0-3a642d38c1cd", + "key": "0d5bba7e-ac6a-48a6-82f0-cb46cdc0d5cd", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4004,7 +4006,7 @@ }, { "commandType": "aspirate", - "key": "c9e9500e-5c89-450c-a56e-7058720a74ce", + "key": "c20937ce-e7d3-4f45-9e71-80d6c8439a08", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4019,7 +4021,7 @@ }, { "commandType": "touchTip", - "key": "eeabdbf7-0dda-4246-859f-de8b643184c0", + "key": "ee7d026d-e7fa-4027-8ba8-8ac575ea7ead", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -4029,7 +4031,7 @@ }, { "commandType": "dispense", - "key": "60f965e4-60af-4183-99de-15c77232416d", + "key": "fe445e71-616e-42a1-ac92-3b2dd37ac7f1", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4044,7 +4046,7 @@ }, { "commandType": "aspirate", - "key": "7a40b467-9754-4c02-ae2e-4644cb997555", + "key": "4ebe6cc3-442a-4a2c-80ba-9dee24865d15", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4059,7 +4061,7 @@ }, { "commandType": "dispense", - "key": "a24675b2-41c7-4908-97ce-6bcf04c3d149", + "key": "092fcbe7-cd36-4077-8ab4-7e7b3ee5e2d2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4074,7 +4076,7 @@ }, { "commandType": "aspirate", - "key": "71a467a6-4c67-46e1-b829-f9a02fb6669e", + "key": "27d6abf5-7f62-441c-aab3-fb0d0d68bf3a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4089,7 +4091,7 @@ }, { "commandType": "dispense", - "key": "b58fb6c6-17f0-44cf-add2-5ad3a99a06fe", + "key": "3acb966b-898d-43bb-a212-f23a9351fb00", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4104,7 +4106,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "b97a7e69-13c0-444b-9405-c84d8ab431bf", + "key": "10f4ee73-f68b-45c9-a2cb-e4826433e952", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4113,7 +4115,7 @@ }, { "commandType": "blowOutInPlace", - "key": "7e767220-28ab-4b59-ae54-1df3a59ac491", + "key": "5d40f966-01f9-441e-b16f-05782f0a6921", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4121,7 +4123,7 @@ }, { "commandType": "touchTip", - "key": "a4329dfb-0547-498b-a132-5314bdc37453", + "key": "e79182b7-eb3d-4421-b6a5-73e3f7e9df54", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -4131,7 +4133,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "222528ae-afc3-459f-bd12-291fb6e92977", + "key": "11dd25c1-64f6-47b3-ba17-1f8d4c85b30f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4141,12 +4143,12 @@ }, { "commandType": "dropTipInPlace", - "key": "a2b1c413-6b6d-4db7-b39f-36e801bb67bf", + "key": "c2d99c79-fa4b-448b-ab79-c5ea22d3b5db", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "ee7cca8e-9d5a-4308-b437-91b3ac59e95c", + "key": "70a9d1cf-db05-4510-9219-d0e18e0ceab6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -4155,7 +4157,7 @@ }, { "commandType": "aspirate", - "key": "9c65eb65-086b-4535-8dd4-fcdc3b1ce711", + "key": "88a00826-d936-495b-81a0-08b2db4b0cbd", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4170,7 +4172,7 @@ }, { "commandType": "dispense", - "key": "de99e84e-c816-42d7-bbaf-c685cf196c84", + "key": "e62b965a-6150-4857-81a4-83808731bb63", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4185,7 +4187,7 @@ }, { "commandType": "aspirate", - "key": "2bb3b611-e413-4866-9f88-2093be26c559", + "key": "dfd3261d-d508-45db-bc07-4b66aab7f4ee", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4200,7 +4202,7 @@ }, { "commandType": "dispense", - "key": "51c61ed1-215a-4304-b0bc-f7c0787d9759", + "key": "fd6702e4-1dc4-42b3-a479-ccd252df34b7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4215,7 +4217,7 @@ }, { "commandType": "aspirate", - "key": "a5cb7070-9db9-4d93-94a0-baafdb9e1246", + "key": "4a5703bb-d4fd-431f-9c3c-928fd654d667", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4230,7 +4232,7 @@ }, { "commandType": "dispense", - "key": "b4812aa0-2c04-4f9f-a060-dcddb31655eb", + "key": "cd9e2d71-2f8d-4a3e-beb5-664df5b40ed4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4245,7 +4247,7 @@ }, { "commandType": "aspirate", - "key": "09657153-451a-4ce8-a0aa-d238e97b5d4a", + "key": "f43a5ddf-41e8-4763-a897-5463be83a450", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4260,7 +4262,7 @@ }, { "commandType": "touchTip", - "key": "1ba61ffa-26f7-4258-806e-459483f8aee2", + "key": "9a38f25f-8e70-4e48-906f-5ad8549f97a9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -4270,7 +4272,7 @@ }, { "commandType": "dispense", - "key": "3e54188d-9608-4976-b2a8-0262bc6cd9a8", + "key": "356a5ed5-4055-434b-925e-dc9d74b86916", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4285,7 +4287,7 @@ }, { "commandType": "aspirate", - "key": "12abbaa6-4354-4635-86c7-53da228b89e9", + "key": "83147cc6-40bd-4d31-8d7c-cebc82587da2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4300,7 +4302,7 @@ }, { "commandType": "dispense", - "key": "75989dac-fb90-46e0-8510-05946f0bb820", + "key": "e48e7e86-5bcf-411f-85aa-fd880047317d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4315,7 +4317,7 @@ }, { "commandType": "aspirate", - "key": "970cd398-3ad1-46ee-a917-9781c74964c8", + "key": "3ed7361d-167a-4624-90e7-be018382c29d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4330,7 +4332,7 @@ }, { "commandType": "dispense", - "key": "224042a5-8347-4867-b30c-ea349eee0eb0", + "key": "edcad86c-128a-4b11-b3f6-c00af215f751", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4345,7 +4347,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "5bca8d87-fae2-4082-92f1-5da5e9b0b01a", + "key": "f524c6b9-a2c8-4e20-8088-ebc799e37701", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4354,7 +4356,7 @@ }, { "commandType": "blowOutInPlace", - "key": "6a40c11f-2894-4c0d-ae8c-3069aa7a3ac6", + "key": "017496c5-bfda-45b4-a70d-cae13a05406f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4362,7 +4364,7 @@ }, { "commandType": "touchTip", - "key": "9667d8ab-87f8-4af8-a61c-39fa46e15928", + "key": "88956734-eece-42e3-a7d8-8d759f9de247", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -4372,7 +4374,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "54efaffe-8b67-45b0-8a1b-34eb9929230b", + "key": "c5550d27-fdd6-43c9-a876-aa3e50489707", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4382,12 +4384,12 @@ }, { "commandType": "dropTipInPlace", - "key": "4732e9c8-8b22-447d-9e8a-04360782f50c", + "key": "9eaf32a8-bdec-434e-a644-22f6bba08a6b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "55fbea4b-e8d2-4cc9-84f1-e531eedc46c8", + "key": "ecb5d2d9-7e63-43b0-b8b9-5464c9478ed0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -4396,7 +4398,7 @@ }, { "commandType": "aspirate", - "key": "d735d944-73ff-4713-ac51-c1341e5cc1a9", + "key": "09671823-b2bf-4803-8b7f-d21f37e064bb", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4411,7 +4413,7 @@ }, { "commandType": "dispense", - "key": "33e8c95b-801c-42c3-9048-fa14b6aa7f29", + "key": "05adf9ce-7912-44ec-8639-248408431a8d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4426,7 +4428,7 @@ }, { "commandType": "aspirate", - "key": "b25b278a-8b01-4bc2-a1f8-456c7bf8c526", + "key": "91630cc1-d209-4c82-ba0d-cc0a16a8b24f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4441,7 +4443,7 @@ }, { "commandType": "dispense", - "key": "23d673c8-d769-480b-858b-43ac62636220", + "key": "94f28a06-4afd-4bde-809f-33a6ef4c4479", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4456,7 +4458,7 @@ }, { "commandType": "aspirate", - "key": "3452e515-d862-40d0-99e1-34dd0404337f", + "key": "cf37f60a-7f87-483d-ae7d-b637273a9f65", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4471,7 +4473,7 @@ }, { "commandType": "dispense", - "key": "36c73f15-d9cd-410c-8699-f19396584618", + "key": "dae3c16b-f335-4f48-8fa0-f7304d986601", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4486,7 +4488,7 @@ }, { "commandType": "aspirate", - "key": "7b78234d-4513-49cc-83e7-10b662ff8675", + "key": "91698561-8c9a-43a6-be0e-48fc7169be0c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4501,7 +4503,7 @@ }, { "commandType": "touchTip", - "key": "b1b3ee6f-a9be-4220-8004-7296970de788", + "key": "0a0d2b0f-de56-41dd-b69b-901ff5899ac9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -4511,7 +4513,7 @@ }, { "commandType": "dispense", - "key": "f7c5a31f-1a71-478f-a145-eb5c5c567c6d", + "key": "8f9ab04c-96e7-4e9d-9a19-5075e18519a6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4526,7 +4528,7 @@ }, { "commandType": "aspirate", - "key": "5e4a8c3c-5a80-488b-898d-d1074f2c426c", + "key": "03610238-537c-4b82-8c6d-fa101cae4631", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4541,7 +4543,7 @@ }, { "commandType": "dispense", - "key": "da0e8d29-8619-47e1-b8da-98ccaf2c56fc", + "key": "071af969-3818-4807-9fd7-26cd00945ab0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4556,7 +4558,7 @@ }, { "commandType": "aspirate", - "key": "3fd622c1-93bc-4e5d-92cb-3dc40f38d92d", + "key": "ff423f6d-35ef-4ecd-bf8f-435776a5a3b2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4571,7 +4573,7 @@ }, { "commandType": "dispense", - "key": "7fe8ecbf-6872-4c45-9f41-b3f5e31b8c42", + "key": "44d4dacd-8cac-4961-892e-cda32094f127", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4586,7 +4588,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "7e7f40a5-1b19-414d-b1ec-b0f632ee81eb", + "key": "53b1ccc5-7b58-4d48-b8fd-0c6ac738b4d1", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4595,7 +4597,7 @@ }, { "commandType": "blowOutInPlace", - "key": "e7d928ca-d918-43a1-973a-e56361029dcd", + "key": "c812e493-c61f-4719-a31f-ac74b2019c54", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4603,7 +4605,7 @@ }, { "commandType": "touchTip", - "key": "1665f0f5-1778-49ed-a765-bcdcc3a9c13a", + "key": "ac2ff63c-9b28-4835-89aa-22d3c1edfca8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -4613,7 +4615,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "5f71c216-2dd4-4b3f-9958-feac1e0ba419", + "key": "8f6ec1bb-1f7f-49e7-8830-0881bd980638", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4623,12 +4625,12 @@ }, { "commandType": "dropTipInPlace", - "key": "0d98fee0-4ada-4ddd-98cc-ee4f51763615", + "key": "749b4670-f63f-4377-bae9-57e1115f6756", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "1eca1b12-6dda-4a57-84cc-48ed09a5dcc7", + "key": "38da00e9-f4aa-4e74-b377-b19d635f62a8", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -4637,7 +4639,7 @@ }, { "commandType": "aspirate", - "key": "6468842b-d755-431a-8f39-63390afc45aa", + "key": "c8dad345-cf97-45ef-95a5-13ab38df4734", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4652,7 +4654,7 @@ }, { "commandType": "dispense", - "key": "3f19926d-5262-4869-8830-7eb13951f4fe", + "key": "b6f8c5d0-1348-4eff-a0e5-e90cd5a0b34b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4667,7 +4669,7 @@ }, { "commandType": "aspirate", - "key": "0816f07a-7ddf-41da-91a8-6c55bcf902ff", + "key": "662d7128-430c-46aa-ab97-348de5ae1b59", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4682,7 +4684,7 @@ }, { "commandType": "dispense", - "key": "6ac9d9b6-b45e-4b0a-90c5-835a680ab914", + "key": "08d301f7-b6b8-46f8-983f-3e33e5727c25", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4697,7 +4699,7 @@ }, { "commandType": "aspirate", - "key": "2c0b977d-cc77-44bb-b0a3-62339279f8d4", + "key": "24bbc121-f08f-42e4-8a4d-37a88bca03c7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4712,7 +4714,7 @@ }, { "commandType": "dispense", - "key": "b15ab048-c8ae-491b-ba0a-ddb84af43b8a", + "key": "9d07468c-42c4-41c9-a67e-3fdeac16fa0b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4727,7 +4729,7 @@ }, { "commandType": "aspirate", - "key": "ebb52c59-bc4d-4f3a-b1b4-10ceea23ecd4", + "key": "44cc4edd-ff47-487c-ac33-9815b9af3ae9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4742,7 +4744,7 @@ }, { "commandType": "touchTip", - "key": "1c48b0b0-c786-4278-a95b-180d8bc8d7fb", + "key": "5f0a3727-1976-4927-852b-8fee2e8cff77", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -4752,7 +4754,7 @@ }, { "commandType": "dispense", - "key": "6db1da99-4bfc-4723-a37b-db57a913a5a0", + "key": "a69b2c7d-115d-4ffe-ac02-6b65b306411e", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4767,7 +4769,7 @@ }, { "commandType": "aspirate", - "key": "b040900a-f61c-462e-9238-87746a45c0b8", + "key": "d8fc74ae-bbef-43b5-afcb-c04c86f98b71", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4782,7 +4784,7 @@ }, { "commandType": "dispense", - "key": "8e2de19c-a6b1-4af7-a614-8f692815d667", + "key": "4d83b666-8df0-47cb-8cca-5bb9532e21b0", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4797,7 +4799,7 @@ }, { "commandType": "aspirate", - "key": "a72f4e61-2874-4af0-a471-d97434970e2b", + "key": "984cc219-9237-49b9-a775-93589e5a66ae", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4812,7 +4814,7 @@ }, { "commandType": "dispense", - "key": "ff833f33-6c7e-417a-8293-f9a2c2eead8c", + "key": "a45e7f3f-64d4-4dc9-aab3-10a6d2c38660", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -4827,7 +4829,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "40d74de4-9953-43ae-b4bc-518d39005303", + "key": "e440bc8d-adbd-47c9-b0b9-2432a13f8664", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4836,7 +4838,7 @@ }, { "commandType": "blowOutInPlace", - "key": "7570e6a2-b2a3-4836-aaa0-13c90ceb08f4", + "key": "f78482cb-1663-43ca-ad28-2aa0f9c1e926", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -4844,7 +4846,7 @@ }, { "commandType": "touchTip", - "key": "5de67294-430d-4856-aa25-0177b32ef514", + "key": "f7ef1b94-cceb-4ae8-9a22-65b1a7339438", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -4854,7 +4856,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "b25ac8f3-fe61-4f87-b5f2-40936132a6dd", + "key": "50ca2b65-11fe-4b52-bfc6-60efba9a6445", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -4864,12 +4866,12 @@ }, { "commandType": "dropTipInPlace", - "key": "aa3d17b8-8d52-462f-9e39-b0d2d83e5407", + "key": "1dc894fa-effa-4b0a-b1a4-50766e1a9454", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "188da1f2-486b-4dfd-b2c8-e0903544fa8d", + "key": "2c14e46f-4257-485a-abd9-a6fa88233d08", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -4878,7 +4880,7 @@ }, { "commandType": "aspirate", - "key": "df11a136-0f66-4502-ad52-443adc71ca2b", + "key": "a75ee83e-f86a-4ba7-8982-1e67573eebc5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4893,7 +4895,7 @@ }, { "commandType": "dispense", - "key": "00502ab3-b649-4532-ba39-184ff41b00cb", + "key": "93d11701-ab94-4693-bd67-2c9a5b8ca905", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4908,7 +4910,7 @@ }, { "commandType": "aspirate", - "key": "cdc0749e-e66b-480e-afe0-3ad6c5e739e4", + "key": "618e28e9-06d3-40ed-af8c-beebf2b230ed", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4923,7 +4925,7 @@ }, { "commandType": "dispense", - "key": "65529980-e475-4f51-a8dc-cd1f7e5a5020", + "key": "8096ab04-2d76-4c5c-ba8c-c3eb0791ac16", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4938,7 +4940,7 @@ }, { "commandType": "aspirate", - "key": "d9e94497-0439-4675-bb57-cc2e62ea7a84", + "key": "d7f16642-48b2-44e8-990c-d152f2e3effd", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4953,7 +4955,7 @@ }, { "commandType": "dispense", - "key": "27bd35c9-4ef4-471f-954b-289db56992ad", + "key": "20c1fb9e-82ff-4329-8e06-bbf3b69312f5", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -4968,7 +4970,7 @@ }, { "commandType": "aspirate", - "key": "9241c560-e1d0-4468-ac78-10c9511d0113", + "key": "a7904076-7aa5-4af0-9b33-0b782e4c574b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -4983,7 +4985,7 @@ }, { "commandType": "touchTip", - "key": "67e511d9-8198-4c0d-808e-c9600f2aff6b", + "key": "f8314e7a-2934-4f37-87ff-df93adee027c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -4993,7 +4995,7 @@ }, { "commandType": "dispense", - "key": "ea876b75-dbb7-445e-afb4-efa1fd12eda8", + "key": "5261a98e-b9ef-4654-be05-63bd6d625b95", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5008,7 +5010,7 @@ }, { "commandType": "aspirate", - "key": "7551fb8d-3899-42f4-ba52-9e03c2410ae5", + "key": "2d7e6164-5ff0-474f-8793-bed55e9268f6", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5023,7 +5025,7 @@ }, { "commandType": "dispense", - "key": "dae940af-8337-439f-83c5-39745994b216", + "key": "b1d778c2-7c4b-4989-9819-4f70959bf690", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5038,7 +5040,7 @@ }, { "commandType": "aspirate", - "key": "d9c4b87f-8e3f-415b-9c61-b14cff73fa6e", + "key": "2da23b46-c32e-45a9-93b4-e6ba54209279", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5053,7 +5055,7 @@ }, { "commandType": "dispense", - "key": "6e1ae4be-0622-490d-811a-1442a54f38c6", + "key": "c0f8e9a6-704d-409e-86c6-cdfece6d75cf", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5068,7 +5070,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "2172c551-8f66-49ec-b092-3cecb3ecd1e6", + "key": "f9669e2a-89c9-4e89-b11a-792ca9372110", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5077,7 +5079,7 @@ }, { "commandType": "blowOutInPlace", - "key": "70f94de0-45c2-4082-85c7-000a3c7d4e05", + "key": "76f1f9d1-5ed9-4fe9-ac86-e44b8669bcef", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5085,7 +5087,7 @@ }, { "commandType": "touchTip", - "key": "7a8c6027-3547-4415-97e2-e4a8839cefcb", + "key": "44c1606d-102c-4b0e-9af4-27719c14bf25", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -5095,7 +5097,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "9e76549d-de35-4be7-b42f-83e81eb148e5", + "key": "e8d9bb09-8188-46d1-bb5b-2fe490c85243", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5105,12 +5107,12 @@ }, { "commandType": "dropTipInPlace", - "key": "edb7a124-0334-41a3-b82f-237bf2a63e37", + "key": "4e5f18e9-9192-46eb-932f-0dcf604c4649", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "f040345b-250f-4fa6-abc0-62e27fe59938", + "key": "52647b11-c226-4918-80ea-9bac8a02a373", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -5119,7 +5121,7 @@ }, { "commandType": "aspirate", - "key": "cd942842-7300-40c1-87a6-28f073ea3dc5", + "key": "e3239197-dbe6-4c71-917a-4fd41af8d75d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5134,7 +5136,7 @@ }, { "commandType": "dispense", - "key": "f6a45b15-269b-482d-983b-d3bc5db57d26", + "key": "01f40e1b-bdd0-4973-b2b8-ee4785ea9c6f", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5149,7 +5151,7 @@ }, { "commandType": "aspirate", - "key": "7d61c0b4-4555-435c-b837-b559b360a82e", + "key": "5be5ae28-4e96-40dc-833c-60ac08044f96", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5164,7 +5166,7 @@ }, { "commandType": "dispense", - "key": "9f9dfc52-5ca3-42e2-b9d5-3bfa8521de49", + "key": "001da4d7-697d-49b0-9654-8d0bdde1ac93", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5179,7 +5181,7 @@ }, { "commandType": "aspirate", - "key": "11346b4b-af47-46f0-9461-52664eec0d39", + "key": "b4c0188b-ee1f-4859-9856-a7426109c2e3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5194,7 +5196,7 @@ }, { "commandType": "dispense", - "key": "23982cac-52ae-484f-b3e7-c52c029b1e9a", + "key": "00de49e0-d834-4458-9e4b-1a01ce5ed2c3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5209,7 +5211,7 @@ }, { "commandType": "aspirate", - "key": "148dd2de-1425-482f-8fec-32731007bbff", + "key": "5522605f-01b7-46a6-8f6a-2b51f0edc8ca", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5224,7 +5226,7 @@ }, { "commandType": "touchTip", - "key": "41e664b1-6199-4a33-9857-76df944f516d", + "key": "9040c7b6-7714-48b9-94ad-b2d992287dad", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -5234,7 +5236,7 @@ }, { "commandType": "dispense", - "key": "152340ce-cde0-469e-9882-a8ef3d4a1cde", + "key": "8d65f1cf-058a-4666-8da5-403be4b98fed", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5249,7 +5251,7 @@ }, { "commandType": "aspirate", - "key": "e4e8529f-89fc-4a94-a49d-410b799aa539", + "key": "b710f746-3424-40cb-80a0-c77bcaf03816", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5264,7 +5266,7 @@ }, { "commandType": "dispense", - "key": "01461514-1395-4f09-95db-29dea71c1f5b", + "key": "a91072f7-47c9-4c85-8b43-491dc6d0b0be", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5279,7 +5281,7 @@ }, { "commandType": "aspirate", - "key": "ff195ab9-cb65-45d1-93a8-a071d0bbed98", + "key": "6dc84887-b4b4-432c-87d8-92ab8431c127", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5294,7 +5296,7 @@ }, { "commandType": "dispense", - "key": "8ba714b7-bcc2-48c3-8c57-0d0ac933b976", + "key": "b463a520-0c4c-4dbe-b5b9-330a35fcef55", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5309,7 +5311,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "8c2017b4-9145-46bc-a91f-83f27cc0a828", + "key": "9ba7bef1-dca0-43fe-b6e1-382a1e2dd958", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5318,7 +5320,7 @@ }, { "commandType": "blowOutInPlace", - "key": "6dba0671-c83f-4fc2-8d9c-3e309448d0e9", + "key": "9f279224-1420-4f8f-a2ff-ac959fb45c42", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5326,7 +5328,7 @@ }, { "commandType": "touchTip", - "key": "15c49bf0-ce06-4687-aeb5-a5dd0736f2f5", + "key": "270a207d-7ad2-43bb-8392-11d68bde94ce", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -5336,7 +5338,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "5e494f88-ee95-42f1-bbd4-23b449649b93", + "key": "ad560eb4-0e24-4801-9a9f-aeaf7f21cb75", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5346,12 +5348,12 @@ }, { "commandType": "dropTipInPlace", - "key": "e1f4d20a-b36c-4da1-9b1f-529aef638f1f", + "key": "ebdaf15a-14d8-4527-9dc8-0b1027009ee9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "c3d944d3-abe8-4f4c-8e4d-70792c3303f2", + "key": "7ffd9d57-22c6-40ca-85fb-8e0ab86c881a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -5360,7 +5362,7 @@ }, { "commandType": "aspirate", - "key": "4432786d-94e4-4958-ae49-8d0679c97fc0", + "key": "7115280b-eea5-462f-aa18-815a876a9213", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5375,7 +5377,7 @@ }, { "commandType": "dispense", - "key": "3efc13e5-aac5-4f23-b060-52003c8c827f", + "key": "5c04e6ab-5619-47e3-8421-49667b56ebc3", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5390,7 +5392,7 @@ }, { "commandType": "aspirate", - "key": "5ec72861-9ac4-4a9b-91e2-907932819e58", + "key": "b065331a-9ce4-45a6-860a-9d8ae5eda44a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5405,7 +5407,7 @@ }, { "commandType": "dispense", - "key": "994b0746-ea15-4cfb-afa7-d00ff124e0f1", + "key": "2eaa51b7-ade3-43aa-8f84-d6e908d256fa", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5420,7 +5422,7 @@ }, { "commandType": "aspirate", - "key": "2acee0bb-366c-4f1d-b165-f69a1c03b05f", + "key": "7af395d3-372b-44c8-89e2-cc7961567036", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5435,7 +5437,7 @@ }, { "commandType": "dispense", - "key": "a44857c1-e5d2-4ce7-a428-41a68e426f3c", + "key": "25d443bc-3925-492d-9341-102d29aa125d", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 2, @@ -5450,7 +5452,7 @@ }, { "commandType": "aspirate", - "key": "09f55bdd-61ff-4667-878f-c79e0a21b9c5", + "key": "30a6ae71-1028-4137-b11f-7bd905b6bd74", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5465,7 +5467,7 @@ }, { "commandType": "touchTip", - "key": "4daa0f4c-e10e-488e-9d19-3a8602a548f4", + "key": "5d318386-78b3-4b6e-998a-bfd61ce94e29", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -5475,7 +5477,7 @@ }, { "commandType": "dispense", - "key": "5f54be1c-fff2-41ae-b512-01a9bb28cc4a", + "key": "e2019112-8a64-4b03-9812-a0a840a7d035", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 6, @@ -5490,7 +5492,7 @@ }, { "commandType": "aspirate", - "key": "6e42ea13-01ed-461b-8dfa-9bd360982ddf", + "key": "09b49957-6e19-43a1-b402-9c1eed0857d4", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5505,7 +5507,7 @@ }, { "commandType": "dispense", - "key": "63d6f42e-0caa-47c4-9341-e3a950f85128", + "key": "5f04a962-0466-4791-a019-4af5217a06f2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5520,7 +5522,7 @@ }, { "commandType": "aspirate", - "key": "c8791232-20bd-4068-a778-4630548b49ae", + "key": "b8c78bae-cc23-4415-9f63-fab416b2d674", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5535,7 +5537,7 @@ }, { "commandType": "dispense", - "key": "98e4d5e2-4b75-435f-8809-099806e98694", + "key": "41c297e4-fa47-487d-9219-f4959d2b3f6a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 3, @@ -5550,7 +5552,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "921371a0-2df9-4f3e-b28f-0282399e98a3", + "key": "23137a5d-6b82-4ecc-9180-f1ebd051f54a", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5559,7 +5561,7 @@ }, { "commandType": "blowOutInPlace", - "key": "f9c7ae2a-b401-4c92-8e6a-4366ffb93643", + "key": "3ec2c77d-bd1e-4aa6-b36f-37757218adee", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "flowRate": 1000 @@ -5567,7 +5569,7 @@ }, { "commandType": "touchTip", - "key": "70fbf7e3-cae6-49e7-bfd3-65a5376b5e3e", + "key": "10638801-4c1c-45d5-a61e-1160a9c4ddca", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -5577,7 +5579,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "74d53fee-f9c6-4a27-a54b-80a79e906b6c", + "key": "fcbf438c-40c0-4446-acae-d8f6ccce95e7", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5587,12 +5589,12 @@ }, { "commandType": "dropTipInPlace", - "key": "28dc2329-937d-4d2c-8fc3-eecf3f321041", + "key": "cd3743de-0470-48bb-98f1-4c1cc9f05491", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "pickUpTip", - "key": "5ad18635-8559-4904-8db4-4e2b19546238", + "key": "3fce8a1e-1857-4146-8a5d-296a06fa5101", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul", @@ -5601,7 +5603,7 @@ }, { "commandType": "aspirate", - "key": "1227b40e-adda-4545-9724-5509ff790adf", + "key": "555deb27-6ccf-4f69-a22a-e88693869e01", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5616,7 +5618,7 @@ }, { "commandType": "dispense", - "key": "b9c1000c-c52f-4b04-9790-9a2dec7dadd3", + "key": "c720bf94-d982-4989-8d05-5be11f5c56ac", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5631,7 +5633,7 @@ }, { "commandType": "aspirate", - "key": "0b5da711-8961-40d0-a294-b4d9eed6c77a", + "key": "56079904-e3a0-4c8d-b302-8351c2f23cf9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5646,7 +5648,7 @@ }, { "commandType": "dispense", - "key": "12b3c883-f2b2-4651-816e-e38bb8cb5c85", + "key": "591975c1-bc72-456d-b186-2c5900e8990c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5661,7 +5663,7 @@ }, { "commandType": "aspirate", - "key": "b30463df-33e7-4038-97d6-298f7e9cef8e", + "key": "44c87d5e-e8c7-414f-abcc-4f7dbab5448b", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5676,7 +5678,7 @@ }, { "commandType": "dispense", - "key": "b2c2c14c-6874-406a-b9d1-33bc02b7a74f", + "key": "a10a0fa5-b411-4227-b5c0-03bd0f00f1da", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "volume": 5.5, @@ -5691,18 +5693,18 @@ }, { "commandType": "blowout", - "key": "98f8d095-46f4-4349-8c93-21eebfcf05d3", + "key": "d23eab2f-7882-4bed-907e-baf8755ab557", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", "wellName": "A1", - "flowRate": 7, + "flowRate": 1000, "wellLocation": { "origin": "top", "offset": { "z": 0 } } } }, { "commandType": "touchTip", - "key": "d6985dc6-551c-4ceb-bcc9-c833301b1eac", + "key": "916eabaf-7965-4280-b583-043637f47e1c", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "labwareId": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", @@ -5712,7 +5714,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "cdf5e0f0-0598-4e4d-98e8-70a57ff83a4a", + "key": "f03d51ec-9bd4-4a21-b8da-a0ebbffaaac2", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e", "addressableAreaName": "fixedTrash", @@ -5722,12 +5724,12 @@ }, { "commandType": "dropTipInPlace", - "key": "1c0dee1c-97fa-4f33-bb36-9b3b7a2ef73e", + "key": "64a539fe-7de8-4176-9a56-cd0a4201fae9", "params": { "pipetteId": "c6f45030-92a5-11e9-ac62-1b173f839d9e" } }, { "commandType": "waitForDuration", - "key": "d306df0a-3ad2-48ac-9ac2-1151895982e0", + "key": "55faff89-fd16-49ed-ad0b-760f5f359f5e", "params": { "seconds": 3723, "message": "Delay plz" } } ], diff --git a/protocol-designer/fixtures/protocol/8/mix_8_0_0.json b/protocol-designer/fixtures/protocol/8/mix_8_0_0.json index 6ace9e70926..766dcbc177e 100644 --- a/protocol-designer/fixtures/protocol/8/mix_8_0_0.json +++ b/protocol-designer/fixtures/protocol/8/mix_8_0_0.json @@ -6,7 +6,7 @@ "author": "", "description": "A test for 5.0.0 -> 5.1.0 migration", "created": 1600714068238, - "lastModified": 1711742569351, + "lastModified": 1714570500165, "category": null, "subcategory": null, "tags": [] @@ -15,10 +15,10 @@ "name": "opentrons/protocol-designer", "version": "8.1.0", "data": { - "_internalAppBuildDate": "Fri, 29 Mar 2024 20:00:04 GMT", + "_internalAppBuildDate": "Wed, 01 May 2024 13:32:34 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 0.5, + "dispense_mmFromBottom": 1, "touchTip_mmFromTop": -1, "blowout_mmFromTop": 0 }, @@ -58,7 +58,6 @@ "labware": null, "mix_wellOrder_first": "t2b", "mix_wellOrder_second": "l2r", - "blowout_z_offset": 0, "blowout_checkbox": false, "blowout_location": "5ba7047d-d3e2-4845-9eaa-1974af796ead:trashBin", "mix_mmFromBottom": 0.5, @@ -78,6 +77,8 @@ "tipRack": "f1c677c0-fc3a-11ea-8809-e959e7d61d96:opentrons/opentrons_96_tiprack_10ul/1", "mix_x_position": 0, "mix_y_position": 0, + "blowout_z_offset": 0, + "blowout_flowRate": null, "id": "fc4dc7c0-fc3a-11ea-8809-e959e7d61d96", "stepType": "mix", "stepName": "mix", @@ -2128,7 +2129,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "3004b46c-2b41-4453-8ddc-1629ec3b5249", + "key": "d66aa1db-df76-492d-ab2c-533b982522aa", "commandType": "loadPipette", "params": { "pipetteName": "p20_single_gen2", @@ -2137,7 +2138,7 @@ } }, { - "key": "c318feee-5ec6-40a0-9ecc-554e67b30ce1", + "key": "78921c11-0ed3-49c6-b4c3-08fd71b68917", "commandType": "loadLabware", "params": { "displayName": "Opentrons OT-2 96 Tip Rack 10 µL", @@ -2149,7 +2150,7 @@ } }, { - "key": "3350dee6-aa60-4569-a801-0dfeb5baf8ed", + "key": "f9f07c5b-a0dd-4c3c-8479-15a63ae0642e", "commandType": "loadLabware", "params": { "displayName": "Bio-Rad 96 Well Plate 200 µL PCR", @@ -2162,7 +2163,7 @@ }, { "commandType": "waitForDuration", - "key": "797e70f3-5310-48c2-ba06-12adb92a7b4e", + "key": "72be26a3-bb77-455d-bc32-f100e1a84a0b", "params": { "seconds": 3723, "message": "" } } ], diff --git a/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json b/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json new file mode 100644 index 00000000000..ebcb9862d7b --- /dev/null +++ b/protocol-designer/fixtures/protocol/8/newAdvancedSettingsAndMultiTemp.json @@ -0,0 +1,3739 @@ +{ + "$otSharedSchema": "#/protocol/schemas/8", + "schemaVersion": 8, + "metadata": { + "protocolName": "New advanced settings", + "author": "", + "description": "", + "created": 1714565695341, + "lastModified": 1714565808161, + "category": null, + "subcategory": null, + "tags": [] + }, + "designerApplication": { + "name": "opentrons/protocol-designer", + "version": "8.1.0", + "data": { + "_internalAppBuildDate": "Wed, 01 May 2024 12:14:18 GMT", + "defaultValues": { + "aspirate_mmFromBottom": 1, + "dispense_mmFromBottom": 1, + "touchTip_mmFromTop": -1, + "blowout_mmFromTop": 0 + }, + "pipetteTiprackAssignments": { + "21087f15-4c03-4587-8a2b-1ba0b5a501a0": [ + "opentrons/opentrons_flex_96_tiprack_50ul/1" + ] + }, + "dismissedWarnings": { "form": {}, "timeline": {} }, + "ingredients": {}, + "ingredLocations": {}, + "savedStepForms": { + "__INITIAL_DECK_SETUP_STEP__": { + "stepType": "manualIntervention", + "id": "__INITIAL_DECK_SETUP_STEP__", + "labwareLocationUpdate": { + "0d39213c-49c2-4170-bf19-4c09e1b72aca:opentrons/opentrons_flex_96_tiprack_50ul/1": "C2", + "c3c4e3fd-069f-4f3d-9b70-016a20f36de7:opentrons/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", + "32b596f6-79bb-4ad8-a34a-c44620fdb68f:opentrons/opentrons_96_well_aluminum_block/1": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", + "c0093e5f-3f7d-4cbf-aa17-d88394108501:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": "32b596f6-79bb-4ad8-a34a-c44620fdb68f:opentrons/opentrons_96_well_aluminum_block/1" + }, + "pipetteLocationUpdate": { + "21087f15-4c03-4587-8a2b-1ba0b5a501a0": "left" + }, + "moduleLocationUpdate": { + "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType": "D3", + "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType": "C3" + } + }, + "292e8b18-f59e-4c63-b0f3-e242bf50094b": { + "id": "292e8b18-f59e-4c63-b0f3-e242bf50094b", + "stepType": "moveLiquid", + "stepName": "transfer", + "stepDetails": "", + "pipette": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", + "volume": "10", + "tipRack": "0d39213c-49c2-4170-bf19-4c09e1b72aca:opentrons/opentrons_flex_96_tiprack_50ul/1", + "changeTip": "always", + "path": "single", + "aspirate_wells_grouped": false, + "aspirate_flowRate": null, + "aspirate_labware": "c0093e5f-3f7d-4cbf-aa17-d88394108501:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", + "aspirate_wells": ["C1"], + "aspirate_wellOrder_first": "t2b", + "aspirate_wellOrder_second": "l2r", + "aspirate_mix_checkbox": false, + "aspirate_mix_times": null, + "aspirate_mix_volume": null, + "aspirate_mmFromBottom": 29, + "aspirate_touchTip_checkbox": false, + "aspirate_touchTip_mmFromBottom": null, + "dispense_flowRate": null, + "dispense_labware": "c3c4e3fd-069f-4f3d-9b70-016a20f36de7:opentrons/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1", + "dispense_wells": ["B3"], + "dispense_wellOrder_first": "t2b", + "dispense_wellOrder_second": "l2r", + "dispense_mix_checkbox": false, + "dispense_mix_times": null, + "dispense_mix_volume": null, + "dispense_mmFromBottom": null, + "dispense_touchTip_checkbox": false, + "dispense_touchTip_mmFromBottom": null, + "disposalVolume_checkbox": true, + "disposalVolume_volume": "1", + "blowout_checkbox": true, + "blowout_location": "source_well", + "preWetTip": false, + "aspirate_airGap_checkbox": false, + "aspirate_airGap_volume": "1", + "aspirate_delay_checkbox": false, + "aspirate_delay_mmFromBottom": null, + "aspirate_delay_seconds": "1", + "dispense_airGap_checkbox": false, + "dispense_airGap_volume": "1", + "dispense_delay_checkbox": false, + "dispense_delay_seconds": "1", + "dispense_delay_mmFromBottom": null, + "dropTip_location": "20ab923c-1290-402e-8476-bba30991f24e:trashBin", + "nozzles": null, + "dispense_x_position": 0, + "dispense_y_position": 0, + "aspirate_x_position": 2, + "aspirate_y_position": -2, + "blowout_z_offset": -12, + "blowout_flowRate": 20 + }, + "960c2d3b-9cf9-49b0-ab4c-af4113f6671a": { + "id": "960c2d3b-9cf9-49b0-ab4c-af4113f6671a", + "stepType": "temperature", + "stepName": "temperature", + "stepDetails": "", + "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", + "setTemperature": "true", + "targetTemperature": "40" + }, + "5055c5a3-92b7-41e5-935d-e8150e9f4f1c": { + "id": "5055c5a3-92b7-41e5-935d-e8150e9f4f1c", + "stepType": "pause", + "stepName": "pause", + "stepDetails": "", + "pauseAction": "untilTemperature", + "pauseHour": null, + "pauseMinute": null, + "pauseSecond": null, + "pauseMessage": "", + "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", + "pauseTemperature": "40" + }, + "68a83fc0-726b-4df4-9a14-c43802aa9d0f": { + "id": "68a83fc0-726b-4df4-9a14-c43802aa9d0f", + "stepType": "temperature", + "stepName": "temperature", + "stepDetails": "", + "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", + "setTemperature": "true", + "targetTemperature": "4" + }, + "c72b4af9-7488-4109-8221-15a5433f4fd8": { + "id": "c72b4af9-7488-4109-8221-15a5433f4fd8", + "stepType": "pause", + "stepName": "pause", + "stepDetails": "", + "pauseAction": "untilTemperature", + "pauseHour": null, + "pauseMinute": null, + "pauseSecond": null, + "pauseMessage": "", + "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", + "pauseTemperature": "4" + }, + "ffb0d1ff-8146-409c-9248-2065a3b27c4d": { + "id": "ffb0d1ff-8146-409c-9248-2065a3b27c4d", + "stepType": "temperature", + "stepName": "temperature", + "stepDetails": "", + "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", + "setTemperature": "false", + "targetTemperature": null + }, + "eab2ec89-6d11-4246-ae91-d451cb3a5b1d": { + "id": "eab2ec89-6d11-4246-ae91-d451cb3a5b1d", + "stepType": "temperature", + "stepName": "temperature", + "stepDetails": "", + "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", + "setTemperature": "false", + "targetTemperature": null + } + }, + "orderedStepIds": [ + "292e8b18-f59e-4c63-b0f3-e242bf50094b", + "960c2d3b-9cf9-49b0-ab4c-af4113f6671a", + "5055c5a3-92b7-41e5-935d-e8150e9f4f1c", + "68a83fc0-726b-4df4-9a14-c43802aa9d0f", + "c72b4af9-7488-4109-8221-15a5433f4fd8", + "ffb0d1ff-8146-409c-9248-2065a3b27c4d", + "eab2ec89-6d11-4246-ae91-d451cb3a5b1d" + ] + } + }, + "robot": { "model": "OT-3 Standard", "deckId": "ot3_standard" }, + "labwareDefinitionSchemaId": "opentronsLabwareSchemaV2", + "labwareDefinitions": { + "opentrons/opentrons_flex_96_tiprack_50ul/1": { + "ordering": [ + ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + ["A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2"], + ["A3", "B3", "C3", "D3", "E3", "F3", "G3", "H3"], + ["A4", "B4", "C4", "D4", "E4", "F4", "G4", "H4"], + ["A5", "B5", "C5", "D5", "E5", "F5", "G5", "H5"], + ["A6", "B6", "C6", "D6", "E6", "F6", "G6", "H6"], + ["A7", "B7", "C7", "D7", "E7", "F7", "G7", "H7"], + ["A8", "B8", "C8", "D8", "E8", "F8", "G8", "H8"], + ["A9", "B9", "C9", "D9", "E9", "F9", "G9", "H9"], + ["A10", "B10", "C10", "D10", "E10", "F10", "G10", "H10"], + ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], + ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] + ], + "brand": { "brand": "Opentrons", "brandId": [] }, + "metadata": { + "displayName": "Opentrons Flex 96 Tip Rack 50 µL", + "displayCategory": "tipRack", + "displayVolumeUnits": "µL", + "tags": [] + }, + "dimensions": { + "xDimension": 127.75, + "yDimension": 85.75, + "zDimension": 99 + }, + "gripForce": 16, + "gripHeightFromLabwareBottom": 23.9, + "wells": { + "A1": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 14.38, + "y": 74.38, + "z": 1.5 + }, + "B1": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 14.38, + "y": 65.38, + "z": 1.5 + }, + "C1": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 14.38, + "y": 56.38, + "z": 1.5 + }, + "D1": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 14.38, + "y": 47.38, + "z": 1.5 + }, + "E1": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 14.38, + "y": 38.38, + "z": 1.5 + }, + "F1": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 14.38, + "y": 29.38, + "z": 1.5 + }, + "G1": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 14.38, + "y": 20.38, + "z": 1.5 + }, + "H1": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 14.38, + "y": 11.38, + "z": 1.5 + }, + "A2": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 23.38, + "y": 74.38, + "z": 1.5 + }, + "B2": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 23.38, + "y": 65.38, + "z": 1.5 + }, + "C2": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 23.38, + "y": 56.38, + "z": 1.5 + }, + "D2": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 23.38, + "y": 47.38, + "z": 1.5 + }, + "E2": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 23.38, + "y": 38.38, + "z": 1.5 + }, + "F2": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 23.38, + "y": 29.38, + "z": 1.5 + }, + "G2": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 23.38, + "y": 20.38, + "z": 1.5 + }, + "H2": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 23.38, + "y": 11.38, + "z": 1.5 + }, + "A3": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 32.38, + "y": 74.38, + "z": 1.5 + }, + "B3": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 32.38, + "y": 65.38, + "z": 1.5 + }, + "C3": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 32.38, + "y": 56.38, + "z": 1.5 + }, + "D3": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 32.38, + "y": 47.38, + "z": 1.5 + }, + "E3": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 32.38, + "y": 38.38, + "z": 1.5 + }, + "F3": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 32.38, + "y": 29.38, + "z": 1.5 + }, + "G3": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 32.38, + "y": 20.38, + "z": 1.5 + }, + "H3": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 32.38, + "y": 11.38, + "z": 1.5 + }, + "A4": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 41.38, + "y": 74.38, + "z": 1.5 + }, + "B4": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 41.38, + "y": 65.38, + "z": 1.5 + }, + "C4": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 41.38, + "y": 56.38, + "z": 1.5 + }, + "D4": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 41.38, + "y": 47.38, + "z": 1.5 + }, + "E4": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 41.38, + "y": 38.38, + "z": 1.5 + }, + "F4": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 41.38, + "y": 29.38, + "z": 1.5 + }, + "G4": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 41.38, + "y": 20.38, + "z": 1.5 + }, + "H4": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 41.38, + "y": 11.38, + "z": 1.5 + }, + "A5": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 50.38, + "y": 74.38, + "z": 1.5 + }, + "B5": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 50.38, + "y": 65.38, + "z": 1.5 + }, + "C5": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 50.38, + "y": 56.38, + "z": 1.5 + }, + "D5": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 50.38, + "y": 47.38, + "z": 1.5 + }, + "E5": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 50.38, + "y": 38.38, + "z": 1.5 + }, + "F5": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 50.38, + "y": 29.38, + "z": 1.5 + }, + "G5": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 50.38, + "y": 20.38, + "z": 1.5 + }, + "H5": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 50.38, + "y": 11.38, + "z": 1.5 + }, + "A6": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 59.38, + "y": 74.38, + "z": 1.5 + }, + "B6": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 59.38, + "y": 65.38, + "z": 1.5 + }, + "C6": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 59.38, + "y": 56.38, + "z": 1.5 + }, + "D6": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 59.38, + "y": 47.38, + "z": 1.5 + }, + "E6": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 59.38, + "y": 38.38, + "z": 1.5 + }, + "F6": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 59.38, + "y": 29.38, + "z": 1.5 + }, + "G6": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 59.38, + "y": 20.38, + "z": 1.5 + }, + "H6": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 59.38, + "y": 11.38, + "z": 1.5 + }, + "A7": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 68.38, + "y": 74.38, + "z": 1.5 + }, + "B7": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 68.38, + "y": 65.38, + "z": 1.5 + }, + "C7": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 68.38, + "y": 56.38, + "z": 1.5 + }, + "D7": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 68.38, + "y": 47.38, + "z": 1.5 + }, + "E7": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 68.38, + "y": 38.38, + "z": 1.5 + }, + "F7": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 68.38, + "y": 29.38, + "z": 1.5 + }, + "G7": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 68.38, + "y": 20.38, + "z": 1.5 + }, + "H7": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 68.38, + "y": 11.38, + "z": 1.5 + }, + "A8": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 77.38, + "y": 74.38, + "z": 1.5 + }, + "B8": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 77.38, + "y": 65.38, + "z": 1.5 + }, + "C8": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 77.38, + "y": 56.38, + "z": 1.5 + }, + "D8": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 77.38, + "y": 47.38, + "z": 1.5 + }, + "E8": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 77.38, + "y": 38.38, + "z": 1.5 + }, + "F8": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 77.38, + "y": 29.38, + "z": 1.5 + }, + "G8": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 77.38, + "y": 20.38, + "z": 1.5 + }, + "H8": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 77.38, + "y": 11.38, + "z": 1.5 + }, + "A9": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 86.38, + "y": 74.38, + "z": 1.5 + }, + "B9": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 86.38, + "y": 65.38, + "z": 1.5 + }, + "C9": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 86.38, + "y": 56.38, + "z": 1.5 + }, + "D9": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 86.38, + "y": 47.38, + "z": 1.5 + }, + "E9": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 86.38, + "y": 38.38, + "z": 1.5 + }, + "F9": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 86.38, + "y": 29.38, + "z": 1.5 + }, + "G9": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 86.38, + "y": 20.38, + "z": 1.5 + }, + "H9": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 86.38, + "y": 11.38, + "z": 1.5 + }, + "A10": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 95.38, + "y": 74.38, + "z": 1.5 + }, + "B10": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 95.38, + "y": 65.38, + "z": 1.5 + }, + "C10": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 95.38, + "y": 56.38, + "z": 1.5 + }, + "D10": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 95.38, + "y": 47.38, + "z": 1.5 + }, + "E10": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 95.38, + "y": 38.38, + "z": 1.5 + }, + "F10": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 95.38, + "y": 29.38, + "z": 1.5 + }, + "G10": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 95.38, + "y": 20.38, + "z": 1.5 + }, + "H10": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 95.38, + "y": 11.38, + "z": 1.5 + }, + "A11": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 104.38, + "y": 74.38, + "z": 1.5 + }, + "B11": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 104.38, + "y": 65.38, + "z": 1.5 + }, + "C11": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 104.38, + "y": 56.38, + "z": 1.5 + }, + "D11": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 104.38, + "y": 47.38, + "z": 1.5 + }, + "E11": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 104.38, + "y": 38.38, + "z": 1.5 + }, + "F11": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 104.38, + "y": 29.38, + "z": 1.5 + }, + "G11": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 104.38, + "y": 20.38, + "z": 1.5 + }, + "H11": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 104.38, + "y": 11.38, + "z": 1.5 + }, + "A12": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 113.38, + "y": 74.38, + "z": 1.5 + }, + "B12": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 113.38, + "y": 65.38, + "z": 1.5 + }, + "C12": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 113.38, + "y": 56.38, + "z": 1.5 + }, + "D12": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 113.38, + "y": 47.38, + "z": 1.5 + }, + "E12": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 113.38, + "y": 38.38, + "z": 1.5 + }, + "F12": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 113.38, + "y": 29.38, + "z": 1.5 + }, + "G12": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 113.38, + "y": 20.38, + "z": 1.5 + }, + "H12": { + "depth": 97.5, + "shape": "circular", + "diameter": 5.58, + "totalLiquidVolume": 50, + "x": 113.38, + "y": 11.38, + "z": 1.5 + } + }, + "groups": [ + { + "metadata": {}, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5", + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6", + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7", + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8", + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9", + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10", + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11", + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + } + ], + "parameters": { + "format": "96Standard", + "quirks": [], + "isTiprack": true, + "tipLength": 57.9, + "tipOverlap": 10.5, + "isMagneticModuleCompatible": false, + "loadName": "opentrons_flex_96_tiprack_50ul" + }, + "namespace": "opentrons", + "version": 1, + "schemaVersion": 2, + "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "stackingOffsetWithLabware": { + "opentrons_flex_96_tiprack_adapter": { "x": 0, "y": 0, "z": 121 } + } + }, + "opentrons/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1": { + "ordering": [ + ["A1", "B1", "C1", "D1"], + ["A2", "B2", "C2", "D2"], + ["A3", "B3", "C3", "D3"], + ["A4", "B4", "C4", "D4"], + ["A5", "B5", "C5", "D5"], + ["A6", "B6", "C6", "D6"] + ], + "brand": { + "brand": "Opentrons", + "brandId": [], + "links": ["https://shop.opentrons.com/aluminum-block-set/"] + }, + "metadata": { + "displayName": "Opentrons 24 Well Aluminum Block with NEST 1.5 mL Screwcap", + "displayCategory": "aluminumBlock", + "displayVolumeUnits": "mL", + "tags": [] + }, + "dimensions": { + "xDimension": 127.75, + "yDimension": 85.5, + "zDimension": 49.35 + }, + "wells": { + "A1": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 20.75, + "y": 68.62, + "z": 5.45 + }, + "B1": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 20.75, + "y": 51.37, + "z": 5.45 + }, + "C1": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 20.75, + "y": 34.12, + "z": 5.45 + }, + "D1": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 20.75, + "y": 16.87, + "z": 5.45 + }, + "A2": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 38, + "y": 68.62, + "z": 5.45 + }, + "B2": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 38, + "y": 51.37, + "z": 5.45 + }, + "C2": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 38, + "y": 34.12, + "z": 5.45 + }, + "D2": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 38, + "y": 16.87, + "z": 5.45 + }, + "A3": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 55.25, + "y": 68.62, + "z": 5.45 + }, + "B3": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 55.25, + "y": 51.37, + "z": 5.45 + }, + "C3": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 55.25, + "y": 34.12, + "z": 5.45 + }, + "D3": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 55.25, + "y": 16.87, + "z": 5.45 + }, + "A4": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 72.5, + "y": 68.62, + "z": 5.45 + }, + "B4": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 72.5, + "y": 51.37, + "z": 5.45 + }, + "C4": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 72.5, + "y": 34.12, + "z": 5.45 + }, + "D4": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 72.5, + "y": 16.87, + "z": 5.45 + }, + "A5": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 89.75, + "y": 68.62, + "z": 5.45 + }, + "B5": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 89.75, + "y": 51.37, + "z": 5.45 + }, + "C5": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 89.75, + "y": 34.12, + "z": 5.45 + }, + "D5": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 89.75, + "y": 16.87, + "z": 5.45 + }, + "A6": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 107, + "y": 68.62, + "z": 5.45 + }, + "B6": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 107, + "y": 51.37, + "z": 5.45 + }, + "C6": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 107, + "y": 34.12, + "z": 5.45 + }, + "D6": { + "depth": 43.9, + "shape": "circular", + "diameter": 8.69, + "totalLiquidVolume": 1500, + "x": 107, + "y": 16.87, + "z": 5.45 + } + }, + "groups": [ + { + "metadata": { + "displayName": "NEST 24x1.5 mL Screwcap", + "displayCategory": "tubeRack", + "wellBottomShape": "v" + }, + "brand": { + "brand": "NEST", + "brandId": ["634001"], + "links": ["https://www.nest-biotech.com/sample-vials/59299027.html"] + }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "A2", + "B2", + "C2", + "D2", + "A3", + "B3", + "C3", + "D3", + "A4", + "B4", + "C4", + "D4", + "A5", + "B5", + "C5", + "D5", + "A6", + "B6", + "C6", + "D6" + ] + } + ], + "parameters": { + "format": "irregular", + "quirks": ["gripperIncompatible"], + "isTiprack": false, + "isMagneticModuleCompatible": false, + "loadName": "opentrons_24_aluminumblock_nest_1.5ml_screwcap" + }, + "namespace": "opentrons", + "version": 1, + "schemaVersion": 2, + "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 } + }, + "opentrons/opentrons_96_well_aluminum_block/1": { + "ordering": [ + ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + ["A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2"], + ["A3", "B3", "C3", "D3", "E3", "F3", "G3", "H3"], + ["A4", "B4", "C4", "D4", "E4", "F4", "G4", "H4"], + ["A5", "B5", "C5", "D5", "E5", "F5", "G5", "H5"], + ["A6", "B6", "C6", "D6", "E6", "F6", "G6", "H6"], + ["A7", "B7", "C7", "D7", "E7", "F7", "G7", "H7"], + ["A8", "B8", "C8", "D8", "E8", "F8", "G8", "H8"], + ["A9", "B9", "C9", "D9", "E9", "F9", "G9", "H9"], + ["A10", "B10", "C10", "D10", "E10", "F10", "G10", "H10"], + ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], + ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] + ], + "brand": { "brand": "Opentrons", "brandId": [] }, + "metadata": { + "displayName": "Opentrons 96 Well Aluminum Block", + "displayCategory": "adapter", + "displayVolumeUnits": "µL", + "tags": [] + }, + "dimensions": { + "xDimension": 127.76, + "yDimension": 85.48, + "zDimension": 18.16 + }, + "wells": { + "A1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 14.38, + "y": 74.24, + "z": 3.38 + }, + "B1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 14.38, + "y": 65.24, + "z": 3.38 + }, + "C1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 14.38, + "y": 56.24, + "z": 3.38 + }, + "D1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 14.38, + "y": 47.24, + "z": 3.38 + }, + "E1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 14.38, + "y": 38.24, + "z": 3.38 + }, + "F1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 14.38, + "y": 29.24, + "z": 3.38 + }, + "G1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 14.38, + "y": 20.24, + "z": 3.38 + }, + "H1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 14.38, + "y": 11.24, + "z": 3.38 + }, + "A2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 23.38, + "y": 74.24, + "z": 3.38 + }, + "B2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 23.38, + "y": 65.24, + "z": 3.38 + }, + "C2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 23.38, + "y": 56.24, + "z": 3.38 + }, + "D2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 23.38, + "y": 47.24, + "z": 3.38 + }, + "E2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 23.38, + "y": 38.24, + "z": 3.38 + }, + "F2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 23.38, + "y": 29.24, + "z": 3.38 + }, + "G2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 23.38, + "y": 20.24, + "z": 3.38 + }, + "H2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 23.38, + "y": 11.24, + "z": 3.38 + }, + "A3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 32.38, + "y": 74.24, + "z": 3.38 + }, + "B3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 32.38, + "y": 65.24, + "z": 3.38 + }, + "C3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 32.38, + "y": 56.24, + "z": 3.38 + }, + "D3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 32.38, + "y": 47.24, + "z": 3.38 + }, + "E3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 32.38, + "y": 38.24, + "z": 3.38 + }, + "F3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 32.38, + "y": 29.24, + "z": 3.38 + }, + "G3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 32.38, + "y": 20.24, + "z": 3.38 + }, + "H3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 32.38, + "y": 11.24, + "z": 3.38 + }, + "A4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 41.38, + "y": 74.24, + "z": 3.38 + }, + "B4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 41.38, + "y": 65.24, + "z": 3.38 + }, + "C4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 41.38, + "y": 56.24, + "z": 3.38 + }, + "D4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 41.38, + "y": 47.24, + "z": 3.38 + }, + "E4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 41.38, + "y": 38.24, + "z": 3.38 + }, + "F4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 41.38, + "y": 29.24, + "z": 3.38 + }, + "G4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 41.38, + "y": 20.24, + "z": 3.38 + }, + "H4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 41.38, + "y": 11.24, + "z": 3.38 + }, + "A5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 50.38, + "y": 74.24, + "z": 3.38 + }, + "B5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 50.38, + "y": 65.24, + "z": 3.38 + }, + "C5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 50.38, + "y": 56.24, + "z": 3.38 + }, + "D5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 50.38, + "y": 47.24, + "z": 3.38 + }, + "E5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 50.38, + "y": 38.24, + "z": 3.38 + }, + "F5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 50.38, + "y": 29.24, + "z": 3.38 + }, + "G5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 50.38, + "y": 20.24, + "z": 3.38 + }, + "H5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 50.38, + "y": 11.24, + "z": 3.38 + }, + "A6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 59.38, + "y": 74.24, + "z": 3.38 + }, + "B6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 59.38, + "y": 65.24, + "z": 3.38 + }, + "C6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 59.38, + "y": 56.24, + "z": 3.38 + }, + "D6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 59.38, + "y": 47.24, + "z": 3.38 + }, + "E6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 59.38, + "y": 38.24, + "z": 3.38 + }, + "F6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 59.38, + "y": 29.24, + "z": 3.38 + }, + "G6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 59.38, + "y": 20.24, + "z": 3.38 + }, + "H6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 59.38, + "y": 11.24, + "z": 3.38 + }, + "A7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 68.38, + "y": 74.24, + "z": 3.38 + }, + "B7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 68.38, + "y": 65.24, + "z": 3.38 + }, + "C7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 68.38, + "y": 56.24, + "z": 3.38 + }, + "D7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 68.38, + "y": 47.24, + "z": 3.38 + }, + "E7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 68.38, + "y": 38.24, + "z": 3.38 + }, + "F7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 68.38, + "y": 29.24, + "z": 3.38 + }, + "G7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 68.38, + "y": 20.24, + "z": 3.38 + }, + "H7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 68.38, + "y": 11.24, + "z": 3.38 + }, + "A8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 77.38, + "y": 74.24, + "z": 3.38 + }, + "B8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 77.38, + "y": 65.24, + "z": 3.38 + }, + "C8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 77.38, + "y": 56.24, + "z": 3.38 + }, + "D8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 77.38, + "y": 47.24, + "z": 3.38 + }, + "E8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 77.38, + "y": 38.24, + "z": 3.38 + }, + "F8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 77.38, + "y": 29.24, + "z": 3.38 + }, + "G8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 77.38, + "y": 20.24, + "z": 3.38 + }, + "H8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 77.38, + "y": 11.24, + "z": 3.38 + }, + "A9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 86.38, + "y": 74.24, + "z": 3.38 + }, + "B9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 86.38, + "y": 65.24, + "z": 3.38 + }, + "C9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 86.38, + "y": 56.24, + "z": 3.38 + }, + "D9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 86.38, + "y": 47.24, + "z": 3.38 + }, + "E9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 86.38, + "y": 38.24, + "z": 3.38 + }, + "F9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 86.38, + "y": 29.24, + "z": 3.38 + }, + "G9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 86.38, + "y": 20.24, + "z": 3.38 + }, + "H9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 86.38, + "y": 11.24, + "z": 3.38 + }, + "A10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 95.38, + "y": 74.24, + "z": 3.38 + }, + "B10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 95.38, + "y": 65.24, + "z": 3.38 + }, + "C10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 95.38, + "y": 56.24, + "z": 3.38 + }, + "D10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 95.38, + "y": 47.24, + "z": 3.38 + }, + "E10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 95.38, + "y": 38.24, + "z": 3.38 + }, + "F10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 95.38, + "y": 29.24, + "z": 3.38 + }, + "G10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 95.38, + "y": 20.24, + "z": 3.38 + }, + "H10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 95.38, + "y": 11.24, + "z": 3.38 + }, + "A11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 104.38, + "y": 74.24, + "z": 3.38 + }, + "B11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 104.38, + "y": 65.24, + "z": 3.38 + }, + "C11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 104.38, + "y": 56.24, + "z": 3.38 + }, + "D11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 104.38, + "y": 47.24, + "z": 3.38 + }, + "E11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 104.38, + "y": 38.24, + "z": 3.38 + }, + "F11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 104.38, + "y": 29.24, + "z": 3.38 + }, + "G11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 104.38, + "y": 20.24, + "z": 3.38 + }, + "H11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 104.38, + "y": 11.24, + "z": 3.38 + }, + "A12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 113.38, + "y": 74.24, + "z": 3.38 + }, + "B12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 113.38, + "y": 65.24, + "z": 3.38 + }, + "C12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 113.38, + "y": 56.24, + "z": 3.38 + }, + "D12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 113.38, + "y": 47.24, + "z": 3.38 + }, + "E12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 113.38, + "y": 38.24, + "z": 3.38 + }, + "F12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 113.38, + "y": 29.24, + "z": 3.38 + }, + "G12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 113.38, + "y": 20.24, + "z": 3.38 + }, + "H12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 0, + "x": 113.38, + "y": 11.24, + "z": 3.38 + } + }, + "groups": [ + { + "metadata": { "wellBottomShape": "v" }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5", + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6", + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7", + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8", + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9", + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10", + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11", + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + } + ], + "parameters": { + "format": "96Standard", + "quirks": [], + "isTiprack": false, + "isMagneticModuleCompatible": false, + "loadName": "opentrons_96_well_aluminum_block" + }, + "namespace": "opentrons", + "version": 1, + "schemaVersion": 2, + "allowedRoles": ["adapter"], + "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "gripperOffsets": { + "default": { + "pickUpOffset": { "x": 0, "y": 0, "z": 0 }, + "dropOffset": { "x": 0, "y": 0, "z": 1 } + } + } + }, + "opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2": { + "ordering": [ + ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"], + ["A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2"], + ["A3", "B3", "C3", "D3", "E3", "F3", "G3", "H3"], + ["A4", "B4", "C4", "D4", "E4", "F4", "G4", "H4"], + ["A5", "B5", "C5", "D5", "E5", "F5", "G5", "H5"], + ["A6", "B6", "C6", "D6", "E6", "F6", "G6", "H6"], + ["A7", "B7", "C7", "D7", "E7", "F7", "G7", "H7"], + ["A8", "B8", "C8", "D8", "E8", "F8", "G8", "H8"], + ["A9", "B9", "C9", "D9", "E9", "F9", "G9", "H9"], + ["A10", "B10", "C10", "D10", "E10", "F10", "G10", "H10"], + ["A11", "B11", "C11", "D11", "E11", "F11", "G11", "H11"], + ["A12", "B12", "C12", "D12", "E12", "F12", "G12", "H12"] + ], + "brand": { + "brand": "NEST", + "brandId": ["402501"], + "links": ["https://www.nest-biotech.com/pcr-plates/58773587.html"] + }, + "metadata": { + "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", + "displayCategory": "wellPlate", + "displayVolumeUnits": "µL", + "tags": [] + }, + "dimensions": { + "xDimension": 127.76, + "yDimension": 85.48, + "zDimension": 15.7 + }, + "gripForce": 15, + "gripHeightFromLabwareBottom": 10.65, + "wells": { + "A1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 14.38, + "y": 74.24, + "z": 0.92 + }, + "B1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 14.38, + "y": 65.24, + "z": 0.92 + }, + "C1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 14.38, + "y": 56.24, + "z": 0.92 + }, + "D1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 14.38, + "y": 47.24, + "z": 0.92 + }, + "E1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 14.38, + "y": 38.24, + "z": 0.92 + }, + "F1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 14.38, + "y": 29.24, + "z": 0.92 + }, + "G1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 14.38, + "y": 20.24, + "z": 0.92 + }, + "H1": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 14.38, + "y": 11.24, + "z": 0.92 + }, + "A2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 23.38, + "y": 74.24, + "z": 0.92 + }, + "B2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 23.38, + "y": 65.24, + "z": 0.92 + }, + "C2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 23.38, + "y": 56.24, + "z": 0.92 + }, + "D2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 23.38, + "y": 47.24, + "z": 0.92 + }, + "E2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 23.38, + "y": 38.24, + "z": 0.92 + }, + "F2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 23.38, + "y": 29.24, + "z": 0.92 + }, + "G2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 23.38, + "y": 20.24, + "z": 0.92 + }, + "H2": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 23.38, + "y": 11.24, + "z": 0.92 + }, + "A3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 32.38, + "y": 74.24, + "z": 0.92 + }, + "B3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 32.38, + "y": 65.24, + "z": 0.92 + }, + "C3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 32.38, + "y": 56.24, + "z": 0.92 + }, + "D3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 32.38, + "y": 47.24, + "z": 0.92 + }, + "E3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 32.38, + "y": 38.24, + "z": 0.92 + }, + "F3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 32.38, + "y": 29.24, + "z": 0.92 + }, + "G3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 32.38, + "y": 20.24, + "z": 0.92 + }, + "H3": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 32.38, + "y": 11.24, + "z": 0.92 + }, + "A4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 41.38, + "y": 74.24, + "z": 0.92 + }, + "B4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 41.38, + "y": 65.24, + "z": 0.92 + }, + "C4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 41.38, + "y": 56.24, + "z": 0.92 + }, + "D4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 41.38, + "y": 47.24, + "z": 0.92 + }, + "E4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 41.38, + "y": 38.24, + "z": 0.92 + }, + "F4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 41.38, + "y": 29.24, + "z": 0.92 + }, + "G4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 41.38, + "y": 20.24, + "z": 0.92 + }, + "H4": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 41.38, + "y": 11.24, + "z": 0.92 + }, + "A5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 50.38, + "y": 74.24, + "z": 0.92 + }, + "B5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 50.38, + "y": 65.24, + "z": 0.92 + }, + "C5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 50.38, + "y": 56.24, + "z": 0.92 + }, + "D5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 50.38, + "y": 47.24, + "z": 0.92 + }, + "E5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 50.38, + "y": 38.24, + "z": 0.92 + }, + "F5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 50.38, + "y": 29.24, + "z": 0.92 + }, + "G5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 50.38, + "y": 20.24, + "z": 0.92 + }, + "H5": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 50.38, + "y": 11.24, + "z": 0.92 + }, + "A6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 59.38, + "y": 74.24, + "z": 0.92 + }, + "B6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 59.38, + "y": 65.24, + "z": 0.92 + }, + "C6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 59.38, + "y": 56.24, + "z": 0.92 + }, + "D6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 59.38, + "y": 47.24, + "z": 0.92 + }, + "E6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 59.38, + "y": 38.24, + "z": 0.92 + }, + "F6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 59.38, + "y": 29.24, + "z": 0.92 + }, + "G6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 59.38, + "y": 20.24, + "z": 0.92 + }, + "H6": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 59.38, + "y": 11.24, + "z": 0.92 + }, + "A7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 68.38, + "y": 74.24, + "z": 0.92 + }, + "B7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 68.38, + "y": 65.24, + "z": 0.92 + }, + "C7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 68.38, + "y": 56.24, + "z": 0.92 + }, + "D7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 68.38, + "y": 47.24, + "z": 0.92 + }, + "E7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 68.38, + "y": 38.24, + "z": 0.92 + }, + "F7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 68.38, + "y": 29.24, + "z": 0.92 + }, + "G7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 68.38, + "y": 20.24, + "z": 0.92 + }, + "H7": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 68.38, + "y": 11.24, + "z": 0.92 + }, + "A8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 77.38, + "y": 74.24, + "z": 0.92 + }, + "B8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 77.38, + "y": 65.24, + "z": 0.92 + }, + "C8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 77.38, + "y": 56.24, + "z": 0.92 + }, + "D8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 77.38, + "y": 47.24, + "z": 0.92 + }, + "E8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 77.38, + "y": 38.24, + "z": 0.92 + }, + "F8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 77.38, + "y": 29.24, + "z": 0.92 + }, + "G8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 77.38, + "y": 20.24, + "z": 0.92 + }, + "H8": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 77.38, + "y": 11.24, + "z": 0.92 + }, + "A9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 86.38, + "y": 74.24, + "z": 0.92 + }, + "B9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 86.38, + "y": 65.24, + "z": 0.92 + }, + "C9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 86.38, + "y": 56.24, + "z": 0.92 + }, + "D9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 86.38, + "y": 47.24, + "z": 0.92 + }, + "E9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 86.38, + "y": 38.24, + "z": 0.92 + }, + "F9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 86.38, + "y": 29.24, + "z": 0.92 + }, + "G9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 86.38, + "y": 20.24, + "z": 0.92 + }, + "H9": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 86.38, + "y": 11.24, + "z": 0.92 + }, + "A10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 95.38, + "y": 74.24, + "z": 0.92 + }, + "B10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 95.38, + "y": 65.24, + "z": 0.92 + }, + "C10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 95.38, + "y": 56.24, + "z": 0.92 + }, + "D10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 95.38, + "y": 47.24, + "z": 0.92 + }, + "E10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 95.38, + "y": 38.24, + "z": 0.92 + }, + "F10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 95.38, + "y": 29.24, + "z": 0.92 + }, + "G10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 95.38, + "y": 20.24, + "z": 0.92 + }, + "H10": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 95.38, + "y": 11.24, + "z": 0.92 + }, + "A11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 104.38, + "y": 74.24, + "z": 0.92 + }, + "B11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 104.38, + "y": 65.24, + "z": 0.92 + }, + "C11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 104.38, + "y": 56.24, + "z": 0.92 + }, + "D11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 104.38, + "y": 47.24, + "z": 0.92 + }, + "E11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 104.38, + "y": 38.24, + "z": 0.92 + }, + "F11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 104.38, + "y": 29.24, + "z": 0.92 + }, + "G11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 104.38, + "y": 20.24, + "z": 0.92 + }, + "H11": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 104.38, + "y": 11.24, + "z": 0.92 + }, + "A12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 113.38, + "y": 74.24, + "z": 0.92 + }, + "B12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 113.38, + "y": 65.24, + "z": 0.92 + }, + "C12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 113.38, + "y": 56.24, + "z": 0.92 + }, + "D12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 113.38, + "y": 47.24, + "z": 0.92 + }, + "E12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 113.38, + "y": 38.24, + "z": 0.92 + }, + "F12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 113.38, + "y": 29.24, + "z": 0.92 + }, + "G12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 113.38, + "y": 20.24, + "z": 0.92 + }, + "H12": { + "depth": 14.78, + "shape": "circular", + "diameter": 5.34, + "totalLiquidVolume": 100, + "x": 113.38, + "y": 11.24, + "z": 0.92 + } + }, + "groups": [ + { + "metadata": { "wellBottomShape": "v" }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5", + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6", + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7", + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8", + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9", + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10", + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11", + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + } + ], + "parameters": { + "format": "96Standard", + "isTiprack": false, + "isMagneticModuleCompatible": true, + "magneticModuleEngageHeight": 20, + "loadName": "nest_96_wellplate_100ul_pcr_full_skirt" + }, + "namespace": "opentrons", + "version": 2, + "schemaVersion": 2, + "cornerOffsetFromSlot": { "x": 0, "y": 0, "z": 0 }, + "stackingOffsetWithLabware": { + "opentrons_96_pcr_adapter": { "x": 0, "y": 0, "z": 10.2 }, + "opentrons_96_well_aluminum_block": { "x": 0, "y": 0, "z": 12.66 } + }, + "stackingOffsetWithModule": { + "thermocyclerModuleV2": { "x": 0, "y": 0, "z": 10.8 } + } + } + }, + "liquidSchemaId": "opentronsLiquidSchemaV1", + "liquids": {}, + "commandSchemaId": "opentronsCommandSchemaV8", + "commands": [ + { + "key": "dd8e7395-4f5d-47da-932c-581e6b330102", + "commandType": "loadPipette", + "params": { + "pipetteName": "p50_single_flex", + "mount": "left", + "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0" + } + }, + { + "key": "069341d0-374a-457f-811a-beb25f824ceb", + "commandType": "loadModule", + "params": { + "model": "temperatureModuleV2", + "location": { "slotName": "D3" }, + "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType" + } + }, + { + "key": "f2dbc8cc-b373-4043-b9f3-68f5eae4d69d", + "commandType": "loadModule", + "params": { + "model": "temperatureModuleV2", + "location": { "slotName": "C3" }, + "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType" + } + }, + { + "key": "f425f1d1-02c9-488b-865b-13f95497c9e8", + "commandType": "loadLabware", + "params": { + "displayName": "Opentrons 96 Well Aluminum Block", + "labwareId": "32b596f6-79bb-4ad8-a34a-c44620fdb68f:opentrons/opentrons_96_well_aluminum_block/1", + "loadName": "opentrons_96_well_aluminum_block", + "namespace": "opentrons", + "version": 1, + "location": { + "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType" + } + } + }, + { + "key": "ecc436f2-34ab-42bc-9dcd-12cbcd00a835", + "commandType": "loadLabware", + "params": { + "displayName": "Opentrons Flex 96 Tip Rack 50 µL", + "labwareId": "0d39213c-49c2-4170-bf19-4c09e1b72aca:opentrons/opentrons_flex_96_tiprack_50ul/1", + "loadName": "opentrons_flex_96_tiprack_50ul", + "namespace": "opentrons", + "version": 1, + "location": { "slotName": "C2" } + } + }, + { + "key": "212e0de6-00dc-460b-ac07-cd6a12fbc04f", + "commandType": "loadLabware", + "params": { + "displayName": "Opentrons 24 Well Aluminum Block with NEST 1.5 mL Screwcap", + "labwareId": "c3c4e3fd-069f-4f3d-9b70-016a20f36de7:opentrons/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1", + "loadName": "opentrons_24_aluminumblock_nest_1.5ml_screwcap", + "namespace": "opentrons", + "version": 1, + "location": { + "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType" + } + } + }, + { + "key": "a8b0443f-afad-4e59-91a7-5b61f7e6836e", + "commandType": "loadLabware", + "params": { + "displayName": "NEST 96 Well Plate 100 µL PCR Full Skirt", + "labwareId": "c0093e5f-3f7d-4cbf-aa17-d88394108501:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", + "loadName": "nest_96_wellplate_100ul_pcr_full_skirt", + "namespace": "opentrons", + "version": 2, + "location": { + "labwareId": "32b596f6-79bb-4ad8-a34a-c44620fdb68f:opentrons/opentrons_96_well_aluminum_block/1" + } + } + }, + { + "commandType": "pickUpTip", + "key": "ae442c49-0f55-4982-9796-91213f5c51f9", + "params": { + "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", + "labwareId": "0d39213c-49c2-4170-bf19-4c09e1b72aca:opentrons/opentrons_flex_96_tiprack_50ul/1", + "wellName": "A1" + } + }, + { + "commandType": "configureForVolume", + "key": "1d992cbb-79cc-426e-9b4a-29768a75f092", + "params": { + "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", + "volume": 10 + } + }, + { + "commandType": "aspirate", + "key": "5e59176d-a8e7-4c39-9337-053a2d6e02db", + "params": { + "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", + "volume": 10, + "labwareId": "c0093e5f-3f7d-4cbf-aa17-d88394108501:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", + "wellName": "C1", + "wellLocation": { + "origin": "bottom", + "offset": { "z": 29, "x": 2, "y": -2 } + }, + "flowRate": 35 + } + }, + { + "commandType": "dispense", + "key": "4e9f4b46-e095-40e2-95c8-abed29538675", + "params": { + "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", + "volume": 10, + "labwareId": "c3c4e3fd-069f-4f3d-9b70-016a20f36de7:opentrons/opentrons_24_aluminumblock_nest_1.5ml_screwcap/1", + "wellName": "B3", + "wellLocation": { + "origin": "bottom", + "offset": { "z": 1, "x": 0, "y": 0 } + }, + "flowRate": 57 + } + }, + { + "commandType": "blowout", + "key": "5ae1dc28-2095-453a-88e4-2e6dd50e5c4d", + "params": { + "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", + "labwareId": "c0093e5f-3f7d-4cbf-aa17-d88394108501:opentrons/nest_96_wellplate_100ul_pcr_full_skirt/2", + "wellName": "C1", + "flowRate": 20, + "wellLocation": { "origin": "top", "offset": { "z": -12 } } + } + }, + { + "commandType": "moveToAddressableAreaForDropTip", + "key": "7786878c-2a71-41b6-9971-14ea88c3bf9d", + "params": { + "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0", + "addressableAreaName": "movableTrashA3", + "offset": { "x": 0, "y": 0, "z": 0 }, + "alternateDropLocation": true + } + }, + { + "commandType": "dropTipInPlace", + "key": "77da638e-5609-40a6-be69-1309b7ae9eb6", + "params": { "pipetteId": "21087f15-4c03-4587-8a2b-1ba0b5a501a0" } + }, + { + "commandType": "temperatureModule/setTargetTemperature", + "key": "8eedd2c4-7474-4246-a896-f93040722a01", + "params": { + "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", + "celsius": 40 + } + }, + { + "commandType": "temperatureModule/waitForTemperature", + "key": "a4cad3c5-b771-4278-8776-5b5417ac659e", + "params": { + "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType", + "celsius": 40 + } + }, + { + "commandType": "temperatureModule/setTargetTemperature", + "key": "9849f4ff-8723-4851-a637-3d311d9af210", + "params": { + "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", + "celsius": 4 + } + }, + { + "commandType": "temperatureModule/waitForTemperature", + "key": "d3c30460-b6a7-4834-8c86-f1f3302e670f", + "params": { + "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType", + "celsius": 4 + } + }, + { + "commandType": "temperatureModule/deactivate", + "key": "82b767e6-0bfb-4175-8780-e48fbbc8f35c", + "params": { + "moduleId": "d6966555-6c0e-45e0-8056-428d7c486401:temperatureModuleType" + } + }, + { + "commandType": "temperatureModule/deactivate", + "key": "60f2762f-a1ef-40cc-a729-95cf514640ea", + "params": { + "moduleId": "b9c56153-9026-42d1-8113-949e15254571:temperatureModuleType" + } + } + ], + "commandAnnotationSchemaId": "opentronsCommandAnnotationSchemaV1", + "commandAnnotations": [] +} diff --git a/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json b/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json index 702945f0b8c..b642d0cb564 100644 --- a/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json +++ b/protocol-designer/fixtures/protocol/8/ninetySixChannelFullAndColumn.json @@ -6,7 +6,7 @@ "author": "", "description": "", "created": 1701805621086, - "lastModified": 1711742604736, + "lastModified": 1714570523087, "category": null, "subcategory": null, "tags": [] @@ -15,10 +15,10 @@ "name": "opentrons/protocol-designer", "version": "8.1.0", "data": { - "_internalAppBuildDate": "Fri, 29 Mar 2024 20:00:04 GMT", + "_internalAppBuildDate": "Wed, 01 May 2024 13:32:34 GMT", "defaultValues": { "aspirate_mmFromBottom": 1, - "dispense_mmFromBottom": 0.5, + "dispense_mmFromBottom": 1, "touchTip_mmFromTop": -1, "blowout_mmFromTop": 0 }, @@ -78,7 +78,6 @@ "dispense_touchTip_mmFromBottom": null, "disposalVolume_checkbox": true, "disposalVolume_volume": "5", - "blowout_z_offset": 0, "blowout_checkbox": false, "blowout_location": null, "preWetTip": false, @@ -98,6 +97,8 @@ "dispense_y_position": 0, "aspirate_x_position": 0, "aspirate_y_position": 0, + "blowout_z_offset": 0, + "blowout_flowRate": null, "id": "83a095fa-b649-4105-99d4-177f1a3f363a", "stepType": "moveLiquid", "stepName": "transfer", @@ -134,7 +135,6 @@ "dispense_touchTip_mmFromBottom": null, "disposalVolume_checkbox": true, "disposalVolume_volume": "5", - "blowout_z_offset": 0, "blowout_checkbox": false, "blowout_location": null, "preWetTip": false, @@ -154,6 +154,8 @@ "dispense_y_position": 0, "aspirate_x_position": 0, "aspirate_y_position": 0, + "blowout_z_offset": 0, + "blowout_flowRate": null, "id": "f5ea3139-1585-4848-9d5f-832eb88c99ca", "stepType": "moveLiquid", "stepName": "transfer", @@ -2243,7 +2245,7 @@ "commandSchemaId": "opentronsCommandSchemaV8", "commands": [ { - "key": "7224d1a7-a7b3-4bb3-bc5c-65aa98565616", + "key": "1370b9a4-1e65-4203-9106-896db3db3bd3", "commandType": "loadPipette", "params": { "pipetteName": "p1000_96", @@ -2252,7 +2254,7 @@ } }, { - "key": "dcddeb3c-66d9-4868-9f9f-fbd47d754fc4", + "key": "d65a7183-875a-443a-b26a-6a2470291dce", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack Adapter", @@ -2264,7 +2266,7 @@ } }, { - "key": "c206434e-aa1e-44ee-8667-29accd89941a", + "key": "d05d92c6-d0d1-4886-aaef-c180b6953763", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", @@ -2278,7 +2280,7 @@ } }, { - "key": "3cdba839-f0fa-4e50-8399-94338cced032", + "key": "bb161828-5fd9-4d84-8209-c1f5de48ba99", "commandType": "loadLabware", "params": { "displayName": "Bio-Rad 96 Well Plate 200 µL PCR", @@ -2290,7 +2292,7 @@ } }, { - "key": "7f75bf03-3036-4847-afbf-4bbefdf6cee8", + "key": "8821778d-8456-4c74-8e29-da7604c012ec", "commandType": "loadLabware", "params": { "displayName": "Opentrons Flex 96 Tip Rack 50 µL", @@ -2303,7 +2305,7 @@ }, { "commandType": "configureNozzleLayout", - "key": "2326c781-0416-4319-b954-16929077b5e3", + "key": "a2a88d61-5c01-45bf-bcb8-91c893328b53", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "configurationParams": { "style": "ALL" } @@ -2311,7 +2313,7 @@ }, { "commandType": "pickUpTip", - "key": "86f7ac25-739d-4a38-8bf4-4730a8e6cce7", + "key": "747ca334-8955-4069-8473-351be7666ee0", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "labwareId": "75aa666f-98d8-4af9-908e-963ced428580:opentrons/opentrons_flex_96_tiprack_50ul/1", @@ -2320,7 +2322,7 @@ }, { "commandType": "aspirate", - "key": "0113e27d-0949-4305-8f0b-5467753dfac3", + "key": "b1ffc410-ed41-4c83-bebd-145ae0ca05d8", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2335,7 +2337,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "79c134c0-5042-4243-8a81-95ad54594ab3", + "key": "9100f4e2-b808-43d3-8c72-355dcce98b33", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", @@ -2344,7 +2346,7 @@ }, { "commandType": "dispenseInPlace", - "key": "2ce5b534-62b3-4415-bdd6-747fb57545be", + "key": "4088260b-f0e9-4d3a-852c-13b7d467cc2d", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2353,7 +2355,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "7212407e-0bd1-4ef5-a8c7-4c6f95cee357", + "key": "8169cddb-5337-4bcf-bbfb-eb6307764b90", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", @@ -2363,12 +2365,12 @@ }, { "commandType": "dropTipInPlace", - "key": "55286f40-e2c1-44f6-a3f3-032bfbf89f3d", + "key": "e0db70c1-546f-44ce-91c7-b18c37fcbcef", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9" } }, { "commandType": "configureNozzleLayout", - "key": "47ab8f5c-a2dc-40e0-a6db-3c2ff6c48778", + "key": "97fb0aee-ce45-427f-b3af-b9b9a1923778", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "configurationParams": { "primaryNozzle": "A12", "style": "COLUMN" } @@ -2376,7 +2378,7 @@ }, { "commandType": "pickUpTip", - "key": "c6f563fd-4f3f-4bd8-833e-3519c4fb0026", + "key": "203d9332-ea93-4047-97e8-58516d18373b", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "labwareId": "9bd16b50-4ae9-4cfd-8583-3378087e6a6c:opentrons/opentrons_flex_96_tiprack_50ul/1", @@ -2385,7 +2387,7 @@ }, { "commandType": "aspirate", - "key": "ee919504-5c21-40c5-9205-00e8aee06718", + "key": "3b5ef144-b0a9-4136-8579-3ddef13d60d1", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2400,7 +2402,7 @@ }, { "commandType": "moveToAddressableArea", - "key": "6c1dbdec-0d3a-4693-810b-b28984382fce", + "key": "b1b0cb96-cf8a-4c19-ad8b-7a515b720c80", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", @@ -2409,7 +2411,7 @@ }, { "commandType": "dispenseInPlace", - "key": "d7ad2bf5-3033-4168-adf4-082306dc5467", + "key": "b49b05e6-f82a-4dd3-9288-8f5eba004b2a", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "volume": 10, @@ -2418,7 +2420,7 @@ }, { "commandType": "moveToAddressableAreaForDropTip", - "key": "9ca4968e-0995-4354-95a1-37964599784f", + "key": "6e0104da-5608-490a-ae14-e67db91331fe", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9", "addressableAreaName": "movableTrashA3", @@ -2428,7 +2430,7 @@ }, { "commandType": "dropTipInPlace", - "key": "548bbf90-da13-4487-a878-dd363b17d906", + "key": "a1266ec5-4602-43e7-a5e5-6512e7560eb9", "params": { "pipetteId": "de7da440-95ec-43e8-8723-851321fbd6f9" } } ], diff --git a/protocol-designer/src/components/ColorPicker/index.tsx b/protocol-designer/src/components/ColorPicker/index.tsx index 65fb33d1980..676eae59397 100644 --- a/protocol-designer/src/components/ColorPicker/index.tsx +++ b/protocol-designer/src/components/ColorPicker/index.tsx @@ -11,6 +11,7 @@ interface ColorPickerProps { } export function ColorPicker(props: ColorPickerProps): JSX.Element { + const { value, onChange } = props const [showColorPicker, setShowColorPicker] = React.useState(false) return ( @@ -27,7 +28,7 @@ export function ColorPicker(props: ColorPickerProps): JSX.Element {
@@ -39,9 +40,9 @@ export function ColorPicker(props: ColorPickerProps): JSX.Element { /> { - props.onChange(color.hex) + onChange(color.hex) }} /> diff --git a/protocol-designer/src/components/EditModules.tsx b/protocol-designer/src/components/EditModules.tsx index 7a4ef5b48c7..b3d62ac1c70 100644 --- a/protocol-designer/src/components/EditModules.tsx +++ b/protocol-designer/src/components/EditModules.tsx @@ -10,7 +10,6 @@ import { } from '../step-forms' import { moveDeckItem } from '../labware-ingred/actions/actions' import { getRobotType } from '../file-data/selectors' -import { getEnableMoam } from '../feature-flags/selectors' import { EditMultipleModulesModal } from './modals/EditModulesModal/EditMultipleModulesModal' import { useBlockingHint } from './Hints/useBlockingHint' import { MagneticModuleWarningModalContent } from './modals/EditModulesModal/MagneticModuleWarningModalContent' @@ -35,11 +34,8 @@ export const EditModules = (props: EditModulesProps): JSX.Element => { const { moduleId, moduleType } = moduleToEdit const _initialDeckSetup = useSelector(stepFormSelectors.getInitialDeckSetup) const robotType = useSelector(getRobotType) - const moamFf = useSelector(getEnableMoam) const showMultipleModuleModal = - robotType === FLEX_ROBOT_TYPE && - moduleType === TEMPERATURE_MODULE_TYPE && - moamFf + robotType === FLEX_ROBOT_TYPE && moduleType === TEMPERATURE_MODULE_TYPE const moduleOnDeck = moduleId ? _initialDeckSetup.modules[moduleId] : null const [ diff --git a/protocol-designer/src/components/LabwareSelectionModal/LabwareSelectionModal.tsx b/protocol-designer/src/components/LabwareSelectionModal/LabwareSelectionModal.tsx index f0958eb1364..58da8b83dbc 100644 --- a/protocol-designer/src/components/LabwareSelectionModal/LabwareSelectionModal.tsx +++ b/protocol-designer/src/components/LabwareSelectionModal/LabwareSelectionModal.tsx @@ -470,7 +470,7 @@ export function LabwareSelectionModal(): JSX.Element | null {
    {customLabwareURIs.length > 0 ? ( { }) render() fireEvent.click( - screen.getByText(nestedTextMatcher('adapter compatible labware')) + screen.getByText(nestedTextMatcher('Adapter Compatible Labware')) ) screen.getByText('Opentrons GEB 1000uL Tiprack') }) diff --git a/protocol-designer/src/components/LiquidsPage/LiquidEditForm.tsx b/protocol-designer/src/components/LiquidsPage/LiquidEditForm.tsx index 887e1ac8f64..13a01dcb314 100644 --- a/protocol-designer/src/components/LiquidsPage/LiquidEditForm.tsx +++ b/protocol-designer/src/components/LiquidsPage/LiquidEditForm.tsx @@ -4,7 +4,6 @@ import { Controller, useForm } from 'react-hook-form' import { yupResolver } from '@hookform/resolvers/yup' import { useSelector } from 'react-redux' import * as Yup from 'yup' -import { swatchColors } from '../swatchColors' import { Card, DeprecatedCheckboxField, @@ -18,18 +17,23 @@ import { } from '@opentrons/components' import { DEPRECATED_WHALE_GREY } from '@opentrons/shared-data' import { selectors } from '../../labware-ingred/selectors' +import { swatchColors } from '../swatchColors' +import { ColorPicker } from '../ColorPicker' import styles from './LiquidEditForm.module.css' import formStyles from '../forms/forms.module.css' -import { LiquidGroup } from '../../labware-ingred/types' -import { ColorPicker } from '../ColorPicker' -import { ColorResult } from 'react-color' +import type { ColorResult } from 'react-color' +import type { LiquidGroup } from '../../labware-ingred/types' -type Props = LiquidGroup & { +interface LiquidEditFormProps { + serialize: boolean canDelete: boolean - deleteLiquidGroup: () => unknown - cancelForm: () => unknown - saveForm: (liquidGroup: LiquidGroup) => unknown + deleteLiquidGroup: () => void + cancelForm: () => void + saveForm: (liquidGroup: LiquidGroup) => void + displayColor?: string + name?: string | null + description?: string | null } interface LiquidEditFormValues { @@ -69,17 +73,26 @@ export const liquidEditFormSchema: any = Yup.object().shape({ serialize: Yup.boolean(), }) -export function LiquidEditForm(props: Props): JSX.Element { - const { deleteLiquidGroup, cancelForm, canDelete, saveForm } = props +export function LiquidEditForm(props: LiquidEditFormProps): JSX.Element { + const { + deleteLiquidGroup, + cancelForm, + canDelete, + saveForm, + displayColor, + name: propName, + description: propDescription, + serialize, + } = props const selectedLiquid = useSelector(selectors.getSelectedLiquidGroupState) const nextGroupId = useSelector(selectors.getNextLiquidGroupId) const liquidId = selectedLiquid.liquidGroupId ?? nextGroupId const { t } = useTranslation(['form', 'button']) const initialValues: LiquidEditFormValues = { - name: props.name || '', - displayColor: props.displayColor ?? swatchColors(liquidId), - description: props.description || '', - serialize: props.serialize || false, + name: propName || '', + displayColor: displayColor ?? swatchColors(liquidId), + description: propDescription || '', + serialize: serialize || false, } const { @@ -94,6 +107,7 @@ export function LiquidEditForm(props: Props): JSX.Element { }) const name = watch('name') const description = watch('description') + const color = watch('displayColor') const handleLiquidEdits = (values: LiquidEditFormValues): void => { saveForm({ @@ -150,9 +164,10 @@ export function LiquidEditForm(props: Props): JSX.Element { control={control} render={({ field }) => ( { setValue('displayColor', color) + field.onChange(color) }} /> )} diff --git a/protocol-designer/src/components/LiquidsPage/index.tsx b/protocol-designer/src/components/LiquidsPage/index.tsx index 3b9f4f977fe..e6f4387e936 100644 --- a/protocol-designer/src/components/LiquidsPage/index.tsx +++ b/protocol-designer/src/components/LiquidsPage/index.tsx @@ -44,12 +44,6 @@ export function LiquidsPage(): JSX.Element { }) ) } - console.assert( - !(liquidGroupId && !selectedIngredFields), - `Expected selected liquid group "${String( - liquidGroupId - )}" to have fields in allIngredientGroupFields` - ) return showForm ? ( diff --git a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.tsx b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.tsx index baaafeb3318..06862663e97 100644 --- a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/FlowRateInput.tsx @@ -7,19 +7,23 @@ import { FormGroup, RadioGroup, InputField, + Flex, + useHoverTooltip, + Tooltip, } from '@opentrons/components' import { getMainPagePortalEl } from '../../../portals/MainPageModalPortal' +import type { FieldProps } from '../../types' + import modalStyles from '../../../modals/modal.module.css' import stepFormStyles from '../../StepEditForm.module.css' import styles from './FlowRateInput.module.css' -import type { FieldProps } from '../../types' const DECIMALS_ALLOWED = 1 /** When flow rate is falsey (including 0), it means 'use default' */ export interface FlowRateInputProps extends FieldProps { defaultFlowRate?: number | null - flowRateType: 'aspirate' | 'dispense' + flowRateType: 'aspirate' | 'dispense' | 'blowout' label?: string | null minFlowRate: number maxFlowRate: number @@ -46,7 +50,9 @@ export const FlowRateInput = (props: FlowRateInputProps): JSX.Element => { minFlowRate, name, pipetteDisplayName, + tooltipContent, } = props + const [targetProps, tooltipProps] = useHoverTooltip() const { t } = useTranslation(['form', 'application', 'shared']) const DEFAULT_LABEL = t('step_edit_form.field.flow_rate.label') @@ -206,21 +212,37 @@ export const FlowRateInput = (props: FlowRateInputProps): JSX.Element => { ) return ( - - - - + <> + {flowRateType === 'blowout' ? ( + + + {tooltipContent} + + ) : ( + + + + )} {showModal && FlowRateModal} - + ) } diff --git a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/__tests__/FlowRateField.test.tsx b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/__tests__/FlowRateField.test.tsx index 5a5bcc5a468..2e6cea00cf8 100644 --- a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/__tests__/FlowRateField.test.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/__tests__/FlowRateField.test.tsx @@ -1,5 +1,6 @@ import * as React from 'react' -import { describe, it, vi, beforeEach } from 'vitest' +import '@testing-library/jest-dom/vitest' +import { describe, it, vi, beforeEach, expect } from 'vitest' import { fireEvent, screen } from '@testing-library/react' import { fixtureP100096V2Specs } from '@opentrons/shared-data' import { renderWithProviders } from '../../../../../__testing-utils__' @@ -65,4 +66,19 @@ describe('FlowRateField', () => { screen.getByText('Cancel') screen.getByText('Done') }) + it('renders the information for blowout field', () => { + props.flowRateType = 'blowout' + render(props) + expect(screen.queryByText('Flow Rate')).not.toBeInTheDocument() + fireEvent.click(screen.getByRole('textbox')) + screen.getByText( + 'The default mockPipDisplayName flow rate is optimal for handling aqueous liquids' + ) + screen.getByText('blowout speed') + screen.getByText('80 μL/s (default)') + screen.getByText('Custom') + screen.getByText('between 0.1 and Infinity') + screen.getByText('Cancel') + screen.getByText('Done') + }) }) diff --git a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/index.tsx index d8dda0e6784..165ec2553a1 100644 --- a/protocol-designer/src/components/StepEditForm/fields/FlowRateField/index.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/FlowRateField/index.tsx @@ -42,6 +42,9 @@ export function FlowRateField(props: FlowRateFieldProps): JSX.Element { } else if (flowRateType === 'dispense') { defaultFlowRate = matchingTipLiquidSpecs?.defaultDispenseFlowRate.default ?? 0 + } else if (flowRateType === 'blowout') { + defaultFlowRate = + matchingTipLiquidSpecs?.defaultBlowOutFlowRate.default ?? 0 } } return ( diff --git a/protocol-designer/src/components/StepEditForm/fields/LabwareLocationField/index.tsx b/protocol-designer/src/components/StepEditForm/fields/LabwareLocationField/index.tsx index 072f7fa5e02..2cbb465c1fc 100644 --- a/protocol-designer/src/components/StepEditForm/fields/LabwareLocationField/index.tsx +++ b/protocol-designer/src/components/StepEditForm/fields/LabwareLocationField/index.tsx @@ -1,12 +1,8 @@ import * as React from 'react' import { useSelector } from 'react-redux' import { useTranslation } from 'react-i18next' +import { getModuleDisplayName } from '@opentrons/shared-data' import { - getModuleDisplayName, - WASTE_CHUTE_CUTOUT, -} from '@opentrons/shared-data' -import { - getAdditionalEquipmentEntities, getLabwareEntities, getModuleEntities, } from '../../../../step-forms/selectors' @@ -14,7 +10,6 @@ import { getRobotStateAtActiveItem, getUnoccupiedLabwareLocationOptions, } from '../../../../top-selectors/labware-locations' -import { getHasWasteChute } from '../../../labware' import { StepFormDropdown } from '../StepFormDropdownField' export function LabwareLocationField( @@ -27,32 +22,18 @@ export function LabwareLocationField( const labwareEntities = useSelector(getLabwareEntities) const robotState = useSelector(getRobotStateAtActiveItem) const moduleEntities = useSelector(getModuleEntities) - const additionalEquipmentEntities = useSelector( - getAdditionalEquipmentEntities - ) - const hasWasteChute = getHasWasteChute(additionalEquipmentEntities) const isLabwareOffDeck = labware != null ? robotState?.labware[labware]?.slot === 'offDeck' : false - const displayWasteChuteValue = - useGripper && hasWasteChute && !isLabwareOffDeck let unoccupiedLabwareLocationsOptions = useSelector(getUnoccupiedLabwareLocationOptions) ?? [] - if (isLabwareOffDeck && hasWasteChute) { - unoccupiedLabwareLocationsOptions = unoccupiedLabwareLocationsOptions.filter( - option => - option.value !== 'offDeck' && option.value !== WASTE_CHUTE_CUTOUT - ) - } else if (useGripper || isLabwareOffDeck) { + if (useGripper || isLabwareOffDeck) { unoccupiedLabwareLocationsOptions = unoccupiedLabwareLocationsOptions.filter( option => option.value !== 'offDeck' ) - } else if (!displayWasteChuteValue) { - unoccupiedLabwareLocationsOptions = unoccupiedLabwareLocationsOptions.filter( - option => option.name !== 'Waste Chute in D3' - ) } + const location: string = value as string const bothFieldsSelected = labware != null && value != null diff --git a/protocol-designer/src/components/StepEditForm/forms/MixForm.tsx b/protocol-designer/src/components/StepEditForm/forms/MixForm.tsx index f0eb043b081..324c1c9754c 100644 --- a/protocol-designer/src/components/StepEditForm/forms/MixForm.tsx +++ b/protocol-designer/src/components/StepEditForm/forms/MixForm.tsx @@ -213,6 +213,13 @@ export const MixForm = (props: StepFormProps): JSX.Element => { stepType: formData.stepType, })} /> + { stepType: formData.stepType, })} /> + ) => { return renderWithProviders(, { i18nInstance: i18n, @@ -66,7 +64,6 @@ describe('EditModules', () => { ) vi.mocked(getDismissedHints).mockReturnValue([hintKey]) vi.mocked(getRobotType).mockReturnValue(OT2_ROBOT_TYPE) - vi.mocked(getEnableMoam).mockReturnValue(true) }) it('renders the edit modules modal for single modules', () => { diff --git a/protocol-designer/src/components/modals/CreateFileWizard/ModulesAndOtherTile.tsx b/protocol-designer/src/components/modals/CreateFileWizard/ModulesAndOtherTile.tsx index 2c1dd51286a..cc0906c34b8 100644 --- a/protocol-designer/src/components/modals/CreateFileWizard/ModulesAndOtherTile.tsx +++ b/protocol-designer/src/components/modals/CreateFileWizard/ModulesAndOtherTile.tsx @@ -37,7 +37,6 @@ import { getIsCrashablePipetteSelected } from '../../../step-forms' import gripperImage from '../../../images/flex_gripper.png' import wasteChuteImage from '../../../images/waste_chute.png' import trashBinImage from '../../../images/flex_trash_bin.png' -import { getEnableMoam } from '../../../feature-flags/selectors' import { uuid } from '../../../utils' import { selectors as featureFlagSelectors } from '../../../feature-flags' import { CrashInfoBox, ModuleDiagram } from '../../modules' @@ -191,7 +190,6 @@ export function ModulesAndOtherTile(props: WizardTileProps): JSX.Element { function FlexModuleFields(props: WizardTileProps): JSX.Element { const { watch, setValue } = props - const enableMoamFf = useSelector(getEnableMoam) const modules = watch('modules') const additionalEquipment = watch('additionalEquipment') const moduleTypesOnDeck = @@ -261,10 +259,7 @@ function FlexModuleFields(props: WizardTileProps): JSX.Element { } const handleOnClick = (): void => { - if ( - (moduleType !== TEMPERATURE_MODULE_TYPE && enableMoamFf) || - !enableMoamFf - ) { + if (moduleType !== TEMPERATURE_MODULE_TYPE) { if (isModuleOnDeck) { const updatedModules = modules != null @@ -302,7 +297,7 @@ function FlexModuleFields(props: WizardTileProps): JSX.Element { } onClick={handleOnClick} multiples={ - moduleType === TEMPERATURE_MODULE_TYPE && enableMoamFf + moduleType === TEMPERATURE_MODULE_TYPE ? { maxItems: MAX_TEMPERATURE_MODULES, setValue: handleMultiplesClick, @@ -316,9 +311,7 @@ function FlexModuleFields(props: WizardTileProps): JSX.Element { } : undefined } - showCheckbox={ - enableMoamFf ? moduleType !== TEMPERATURE_MODULE_TYPE : true - } + showCheckbox={moduleType !== TEMPERATURE_MODULE_TYPE} /> ) })} diff --git a/protocol-designer/src/components/modals/CreateFileWizard/__tests__/ModulesAndOtherTile.test.tsx b/protocol-designer/src/components/modals/CreateFileWizard/__tests__/ModulesAndOtherTile.test.tsx index 63da7f3ed30..ba9924ee13e 100644 --- a/protocol-designer/src/components/modals/CreateFileWizard/__tests__/ModulesAndOtherTile.test.tsx +++ b/protocol-designer/src/components/modals/CreateFileWizard/__tests__/ModulesAndOtherTile.test.tsx @@ -5,10 +5,7 @@ import { fireEvent, screen, cleanup } from '@testing-library/react' import { FLEX_ROBOT_TYPE, OT2_ROBOT_TYPE } from '@opentrons/shared-data' import { renderWithProviders } from '../../../../__testing-utils__' import { i18n } from '../../../../localization' -import { - getDisableModuleRestrictions, - getEnableMoam, -} from '../../../../feature-flags/selectors' +import { getDisableModuleRestrictions } from '../../../../feature-flags/selectors' import { CrashInfoBox } from '../../../modules' import { ModuleFields } from '../../FilePipettesModal/ModuleFields' import { ModulesAndOtherTile } from '../ModulesAndOtherTile' @@ -61,7 +58,6 @@ describe('ModulesAndOtherTile', () => { ...props, ...mockWizardTileProps, } as WizardTileProps - vi.mocked(getEnableMoam).mockReturnValue(true) vi.mocked(CrashInfoBox).mockReturnValue(
    mock CrashInfoBox
    ) vi.mocked(EquipmentOption).mockReturnValue(
    mock EquipmentOption
    ) vi.mocked(getDisableModuleRestrictions).mockReturnValue(false) diff --git a/protocol-designer/src/components/modals/FilePipettesModal/index.tsx b/protocol-designer/src/components/modals/FilePipettesModal/index.tsx index 9567e753085..9b415280ef2 100644 --- a/protocol-designer/src/components/modals/FilePipettesModal/index.tsx +++ b/protocol-designer/src/components/modals/FilePipettesModal/index.tsx @@ -24,11 +24,6 @@ import { OT2_ROBOT_TYPE, getPipetteSpecsV2, } from '@opentrons/shared-data' -import { StepChangesConfirmModal } from '../EditPipettesModal/StepChangesConfirmModal' -import { PipetteFields } from './PipetteFields' -import { CrashInfoBox } from '../../modules' -import styles from './FilePipettesModal.module.css' -import modalStyles from '../modal.module.css' import { actions as stepFormActions, selectors as stepFormSelectors, @@ -42,14 +37,29 @@ import { INITIAL_DECK_SETUP_STEP_ID } from '../../../constants' import { NewProtocolFields } from '../../../load-file' import { getRobotType } from '../../../file-data/selectors' import { uuid } from '../../../utils' +import { getLabwareEntities } from '../../../step-forms/selectors' +import { + createContainer, + deleteContainer, +} from '../../../labware-ingred/actions' import { actions as steplistActions } from '../../../steplist' import { selectors as featureFlagSelectors } from '../../../feature-flags' +import { CrashInfoBox } from '../../modules' import { getCrashableModuleSelected } from '../CreateFileWizard/utils' +import { adapter96ChannelDefUri } from '../CreateFileWizard' +import { StepChangesConfirmModal } from '../EditPipettesModal/StepChangesConfirmModal' +import { PipetteFields } from './PipetteFields' +import type { + LabwareEntities, + NormalizedPipette, +} from '@opentrons/step-generation' import type { DeckSlot, ThunkDispatch } from '../../../types' -import type { NormalizedPipette } from '@opentrons/step-generation' import type { StepIdType } from '../../../form-types' +import styles from './FilePipettesModal.module.css' +import modalStyles from '../modal.module.css' + export type PipetteFieldsData = Omit< PipetteOnDeck, 'id' | 'spec' | 'tiprackLabwareDef' @@ -124,6 +134,7 @@ const validationSchema: any = Yup.object().shape({ }) const makeUpdatePipettes = ( + labwareEntities: LabwareEntities, prevPipettes: { [pipetteId: string]: PipetteOnDeck }, orderedStepIds: StepIdType[], dispatch: ThunkDispatch, @@ -159,6 +170,38 @@ const makeUpdatePipettes = ( } } }) + const newTiprackUris = new Set( + newPipetteArray.flatMap(pipette => pipette.tiprackDefURI) + ) + const previousTiprackLabwares = Object.values(labwareEntities).filter( + labware => labware.def.parameters.isTiprack + ) + + const previousTiprackUris = new Set( + previousTiprackLabwares.map(labware => labware.labwareDefURI) + ) + + // Find tipracks to delete (old tipracks not in new pipettes) + previousTiprackLabwares + .filter(labware => !newTiprackUris.has(labware.labwareDefURI)) + .forEach(labware => dispatch(deleteContainer({ labwareId: labware.id }))) + + // Create new tipracks that are not in previous tiprackURIs + newTiprackUris.forEach(tiprackDefUri => { + if (!previousTiprackUris.has(tiprackDefUri)) { + const adapterUnderLabwareDefURI = newPipetteArray.some( + pipette => pipette.name === 'p1000_96' + ) + ? adapter96ChannelDefUri + : undefined + dispatch( + createContainer({ + labwareDefURI: tiprackDefUri, + adapterUnderLabwareDefURI, + }) + ) + } + }) dispatch( stepFormActions.createPipettes( @@ -275,6 +318,7 @@ export const FilePipettesModal = (props: Props): JSX.Element => { const { t } = useTranslation(['modal', 'button', 'form']) const robotType = useSelector(getRobotType) const dispatch = useDispatch() + const labwareEntities = useSelector(getLabwareEntities) const initialPipettes = useSelector( stepFormSelectors.getPipettesForEditPipetteForm ) @@ -295,6 +339,7 @@ export const FilePipettesModal = (props: Props): JSX.Element => { modules: ModuleCreationArgs[] pipettes: PipetteFieldsData[] }) => void = makeUpdatePipettes( + labwareEntities, prevPipettes, orderedStepIds, dispatch, diff --git a/protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.tsx b/protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.tsx index f09052a5c5f..8f7af3bc68f 100644 --- a/protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.tsx +++ b/protocol-designer/src/components/modals/FileUploadMessageModal/modalContents.tsx @@ -96,6 +96,23 @@ export const getToV8MigrationMessage = (props: ModalProps): ModalContents => { } } +export const getToV8_1MigrationMessage = (props: ModalProps): ModalContents => { + const { t } = props + + return { + title: t('migrations.header', { pd: PD }), + body: ( +
    +

    +

    {t('migrations.toV8_1Migration.body1')}

    +

    +

    {t('migrations.toV8_1Migration.body2')}

    +

    {t('migrations.toV8_1Migration.body3')}

    +
    + ), + } +} + export const getToV3MigrationMessage = (props: ModalProps): ModalContents => { const { t } = props @@ -152,9 +169,12 @@ export const getMigrationMessage = ( ) { return getNoBehaviorChangeMessage({ t }) } - if (migrationsRan.includes('8.0.0')) { + if (migrationsRan.includes('8.1.0')) { + return getToV8_1MigrationMessage({ t }) + } else if (migrationsRan.includes('8.0.0')) { return getToV8MigrationMessage({ t }) } + return getGenericDidMigrateMessage({ t }) } diff --git a/protocol-designer/src/components/modules/TrashModal.tsx b/protocol-designer/src/components/modules/TrashModal.tsx index d8fffc264ee..dad0f799213 100644 --- a/protocol-designer/src/components/modules/TrashModal.tsx +++ b/protocol-designer/src/components/modules/TrashModal.tsx @@ -87,11 +87,14 @@ const TrashModalComponent = (props: TrashModalComponentProps): JSX.Element => { name: 'selectedSlot', defaultValue: defaultValue, }) - const isSlotEmpty = getSlotIsEmpty( - initialDeckSetup, - selectedSlot, - trashName === 'trashBin' - ) + const hasTrashAlreadyInSlot = Object.values( + initialDeckSetup.additionalEquipmentOnDeck + ).find(aE => aE.name === 'trashBin' && aE.location === selectedSlot) + + const isSlotEmpty = + getSlotIsEmpty(initialDeckSetup, selectedSlot, trashName === 'trashBin') || + hasTrashAlreadyInSlot + const slotFromCutout = selectedSlot.replace('cutout', '') const flexDeck = getDeckDefFromRobotType(FLEX_ROBOT_TYPE) diff --git a/protocol-designer/src/constants.ts b/protocol-designer/src/constants.ts index b92192565c2..14308884b81 100644 --- a/protocol-designer/src/constants.ts +++ b/protocol-designer/src/constants.ts @@ -58,7 +58,7 @@ export const INITIAL_DECK_SETUP_STEP_ID = '__INITIAL_DECK_SETUP_STEP__' export const DEFAULT_CHANGE_TIP_OPTION: 'always' = 'always' // TODO: Ian 2019-06-13 don't keep these as hard-coded static values (see #3587) export const DEFAULT_MM_FROM_BOTTOM_ASPIRATE = 1 -export const DEFAULT_MM_FROM_BOTTOM_DISPENSE = 0.5 +export const DEFAULT_MM_FROM_BOTTOM_DISPENSE = 1 // NOTE: in the negative Z direction, to go down from top export const DEFAULT_MM_TOUCH_TIP_OFFSET_FROM_TOP = -1 export const DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP = 0 diff --git a/protocol-designer/src/feature-flags/reducers.ts b/protocol-designer/src/feature-flags/reducers.ts index 0fb93e30a8f..bddaa38c628 100644 --- a/protocol-designer/src/feature-flags/reducers.ts +++ b/protocol-designer/src/feature-flags/reducers.ts @@ -21,8 +21,6 @@ const initialFlags: Flags = { process.env.OT_PD_DISABLE_MODULE_RESTRICTIONS === '1' || false, OT_PD_ALLOW_ALL_TIPRACKS: process.env.OT_PD_ALLOW_ALL_TIPRACKS === '1' || false, - OT_PD_ENABLE_MULTI_TIP: process.env.OT_PD_ENABLE_MULTI_TIP === '1' || false, - OT_PD_ENABLE_MOAM: process.env.OT_PD_ENABLE_MOAM === '1' || false, } // @ts-expect-error(sa, 2021-6-10): cannot use string literals as action type // TODO IMMEDIATELY: refactor this to the old fashioned way if we cannot have type safety: https://github.com/redux-utilities/redux-actions/issues/282#issuecomment-595163081 diff --git a/protocol-designer/src/feature-flags/selectors.ts b/protocol-designer/src/feature-flags/selectors.ts index 49aaa937cb4..35f69dd70da 100644 --- a/protocol-designer/src/feature-flags/selectors.ts +++ b/protocol-designer/src/feature-flags/selectors.ts @@ -19,11 +19,3 @@ export const getAllowAllTipracks: Selector = createSelector( getFeatureFlagData, flags => flags.OT_PD_ALLOW_ALL_TIPRACKS ?? false ) -export const getEnableMultiTip: Selector = createSelector( - getFeatureFlagData, - flags => flags.OT_PD_ENABLE_MULTI_TIP ?? false -) -export const getEnableMoam: Selector = createSelector( - getFeatureFlagData, - flags => flags.OT_PD_ENABLE_MOAM ?? false -) diff --git a/protocol-designer/src/feature-flags/types.ts b/protocol-designer/src/feature-flags/types.ts index 99b4b76b1f6..7a9c04b5af9 100644 --- a/protocol-designer/src/feature-flags/types.ts +++ b/protocol-designer/src/feature-flags/types.ts @@ -22,14 +22,14 @@ export const DEPRECATED_FLAGS = [ 'OT_PD_ENABLE_OT_3', 'OT_PD_ALLOW_96_CHANNEL', 'OT_PD_ENABLE_FLEX_DECK_MODIFICATION', + 'OT_PD_ENABLE_MULTI_TIP', + 'OT_PD_ENABLE_MOAM', ] // union of feature flag string constant IDs export type FlagTypes = | 'PRERELEASE_MODE' | 'OT_PD_DISABLE_MODULE_RESTRICTIONS' | 'OT_PD_ALLOW_ALL_TIPRACKS' - | 'OT_PD_ENABLE_MULTI_TIP' - | 'OT_PD_ENABLE_MOAM' // flags that are not in this list only show in prerelease mode export const userFacingFlags: FlagTypes[] = [ 'OT_PD_DISABLE_MODULE_RESTRICTIONS', diff --git a/protocol-designer/src/form-types.ts b/protocol-designer/src/form-types.ts index f369844ad37..1e12911f1ac 100644 --- a/protocol-designer/src/form-types.ts +++ b/protocol-designer/src/form-types.ts @@ -233,6 +233,7 @@ export interface HydratedMoveLiquidFormData { dispense_x_position?: number | null dispense_y_position?: number | null blowout_z_offset?: number | null + blowout_flowRate?: number | null } } @@ -277,6 +278,7 @@ export interface HydratedMixFormDataLegacy { mix_x_position?: number | null mix_y_position?: number | null blowout_z_offset?: number | null + blowout_flowRate?: number | null } export type MagnetAction = 'engage' | 'disengage' export type HydratedMagnetFormData = AnnotationFields & { diff --git a/protocol-designer/src/load-file/migration/8_1_0.ts b/protocol-designer/src/load-file/migration/8_1_0.ts index 755ef2a3ed2..8c268252867 100644 --- a/protocol-designer/src/load-file/migration/8_1_0.ts +++ b/protocol-designer/src/load-file/migration/8_1_0.ts @@ -1,6 +1,9 @@ +import { getDefaultBlowoutFlowRate } from './utils/getDefaultBlowoutFlowRate' import type { + LoadPipetteCreateCommand, LoadLabwareCreateCommand, ProtocolFile, + PipetteName, } from '@opentrons/shared-data' import type { DesignerApplicationData } from './utils/getLoadLiquidCommands' @@ -47,6 +50,10 @@ export const migrateFile = ( (command): command is LoadLabwareCreateCommand => command.commandType === 'loadLabware' ) + const loadPipetteCommands = commands.filter( + (command): command is LoadPipetteCreateCommand => + command.commandType === 'loadPipette' + ) const savedStepForms = designerApplication.data ?.savedStepForms as DesignerApplicationData['savedStepForms'] @@ -64,9 +71,12 @@ export const migrateFile = ( `expected to find tiprack definition with labwareDefintionURI ${tipRackUri} but could not` ) } - const tiprackIds = loadLabwareCommands - .filter(command => command.params.loadName === tiprackLoadName) - .map(command => command.params.labwareId) + const tiprackLoadCommands = loadLabwareCommands.filter( + command => command.params.loadName === tiprackLoadName + ) + const tiprackIds = tiprackLoadCommands.map( + command => command.params.labwareId + ) const xyKeys = item.stepType === 'mix' ? { mix_x_position: 0, mix_y_position: 0 } @@ -76,8 +86,39 @@ export const migrateFile = ( dispense_x_position: 0, dispense_y_position: 0, } + const matchingTiprackCommand = tiprackLoadCommands.find( + command => command.params.labwareId === item.tipRack + ) + if (matchingTiprackCommand == null) { + console.error( + `expected to find a tiprack loadname from tiprack ${item.tipRack} but could not ` + ) + } + const matchingTiprackURI = + matchingTiprackCommand != null + ? `${matchingTiprackCommand.params.namespace}/${matchingTiprackCommand.params.loadName}/${matchingTiprackCommand.params.version}` + : null + const tipLength = + matchingTiprackURI != null + ? labwareDefinitions[matchingTiprackURI].parameters.tipLength ?? 0 + : 0 + const pipetteName = loadPipetteCommands.find( + pipette => pipette.params.pipetteId === item.pipette + )?.params.pipetteName + const defaultBlowOutFlowRate = getDefaultBlowoutFlowRate( + pipetteName as PipetteName, + item.volume, + tipLength + ) + + let blowoutFlowRate: number | null = defaultBlowOutFlowRate + if (item.blowout_checkbox === false) { + blowoutFlowRate = null + } + acc[item.id] = { ...item, + blowout_flowRate: blowoutFlowRate, blowout_z_offset: 0, tipRack: tiprackIds[0], ...xyKeys, diff --git a/protocol-designer/src/load-file/migration/__tests__/__snapshots__/3_0_0.test.ts.snap b/protocol-designer/src/load-file/migration/__tests__/__snapshots__/3_0_0.test.ts.snap index 5fe841bb055..d0eeb3dde9e 100644 --- a/protocol-designer/src/load-file/migration/__tests__/__snapshots__/3_0_0.test.ts.snap +++ b/protocol-designer/src/load-file/migration/__tests__/__snapshots__/3_0_0.test.ts.snap @@ -297,301 +297,3 @@ exports[`migrate to 3.0.0 > snapshot test 1`] = ` "schemaVersion": 3, } `; - -exports[`migrate to 3.0.0 snapshot test 1`] = ` -Object { - "commands": Array [], - "designerApplication": Object { - "data": Object { - "dismissedWarnings": Object { - "form": Object {}, - "timeline": Object {}, - }, - "ingredLocations": Object { - "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well": Object { - "A1": Object { - "0": Object { - "volume": 121, - }, - }, - "B1": Object { - "0": Object { - "volume": 121, - }, - }, - "C1": Object { - "0": Object { - "volume": 121, - }, - }, - "D1": Object { - "0": Object { - "volume": 121, - }, - }, - "E1": Object { - "0": Object { - "volume": 121, - }, - }, - "F1": Object { - "1": Object { - "volume": 44, - }, - }, - "G1": Object { - "1": Object { - "volume": 44, - }, - }, - "H1": Object { - "1": Object { - "volume": 44, - }, - }, - }, - }, - "ingredients": Object { - "0": Object { - "description": null, - "liquidGroupId": "0", - "name": "samples", - "serialize": false, - }, - "1": Object { - "description": null, - "liquidGroupId": "1", - "name": "dna", - "serialize": false, - }, - }, - "orderedStepIds": Array [ - "e7d36200-92a5-11e9-ac62-1b173f839d9e", - "18113c80-92a6-11e9-ac62-1b173f839d9e", - "2e622080-92a6-11e9-ac62-1b173f839d9e", - ], - "pipetteTiprackAssignments": Object { - "c6f45030-92a5-11e9-ac62-1b173f839d9e": "fixture/fixture_regular_example_1/1", - "c6f47740-92a5-11e9-ac62-1b173f839d9e": "fixture/fixture_regular_example_1/1", - }, - "savedStepForms": Object { - "18113c80-92a6-11e9-ac62-1b173f839d9e": Object { - "aspirate_flowRate": 8, - "blowout_checkbox": true, - "blowout_location": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", - "changeTip": "always", - "dispense_flowRate": 7, - "id": "18113c80-92a6-11e9-ac62-1b173f839d9e", - "labware": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", - "mix_mmFromBottom": 0.5, - "mix_touchTip_checkbox": true, - "mix_touchTip_mmFromBottom": 30.5, - "mix_wellOrder_first": "t2b", - "mix_wellOrder_second": "l2r", - "pipette": "c6f45030-92a5-11e9-ac62-1b173f839d9e", - "stepDetails": "", - "stepName": "mix", - "stepType": "mix", - "times": 3, - "volume": "5.5", - "wells": Array [ - "F1", - ], - }, - "2e622080-92a6-11e9-ac62-1b173f839d9e": Object { - "id": "2e622080-92a6-11e9-ac62-1b173f839d9e", - "pauseForAmountOfTime": "true", - "pauseHour": 1, - "pauseMessage": "Delay plz", - "pauseMinute": 2, - "pauseSecond": 3, - "stepDetails": "", - "stepName": "pause", - "stepType": "pause", - }, - "__INITIAL_DECK_SETUP_STEP__": Object { - "id": "__INITIAL_DECK_SETUP_STEP__", - "labwareLocationUpdate": Object { - "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul": "1", - "c6f51380-92a5-11e9-ac62-1b173f839d9e:tiprack-200ul": "2", - "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well": "10", - "trashId": "12", - }, - "pipetteLocationUpdate": Object { - "c6f45030-92a5-11e9-ac62-1b173f839d9e": "left", - "c6f47740-92a5-11e9-ac62-1b173f839d9e": "right", - }, - "stepType": "manualIntervention", - }, - "e7d36200-92a5-11e9-ac62-1b173f839d9e": Object { - "aspirate_flowRate": 0.6, - "aspirate_labware": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", - "aspirate_mix_checkbox": true, - "aspirate_mix_times": 3, - "aspirate_mix_volume": "2", - "aspirate_mmFromBottom": 1, - "aspirate_touchTip_checkbox": true, - "aspirate_touchTip_mmFromBottom": 28.5, - "aspirate_wellOrder_first": "t2b", - "aspirate_wellOrder_second": "l2r", - "aspirate_wells": Array [ - "A1", - ], - "aspirate_wells_grouped": false, - "blowout_checkbox": true, - "blowout_location": "trashId", - "changeTip": "always", - "dispense_labware": "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well", - "dispense_mix_checkbox": true, - "dispense_mix_times": 2, - "dispense_mix_volume": "3", - "dispense_mmFromBottom": 2.5, - "dispense_touchTip_checkbox": true, - "dispense_wellOrder_first": "b2t", - "dispense_wellOrder_second": "r2l", - "dispense_wells": Array [ - "C6", - "D6", - "E6", - "C7", - "D7", - "E7", - "C8", - "D8", - "E8", - ], - "disposalVolume_checkbox": true, - "disposalVolume_volume": "1", - "id": "e7d36200-92a5-11e9-ac62-1b173f839d9e", - "path": "single", - "pipette": "c6f45030-92a5-11e9-ac62-1b173f839d9e", - "preWetTip": false, - "stepDetails": "yeah notes", - "stepName": "transfer things", - "stepType": "moveLiquid", - "volume": "6", - }, - }, - }, - "name": "opentrons/protocol-designer", - "version": "3.0.0", - }, - "labware": Object { - "c6f4ec70-92a5-11e9-ac62-1b173f839d9e:tiprack-10ul": Object { - "definitionId": "fixture/fixture_regular_example_1/1", - "displayName": "tiprack 10ul (1)", - "slot": "1", - }, - "c6f51380-92a5-11e9-ac62-1b173f839d9e:tiprack-200ul": Object { - "definitionId": "fixture/fixture_regular_example_1/1", - "displayName": "tiprack 200ul (1)", - "slot": "2", - }, - "dafd4000-92a5-11e9-ac62-1b173f839d9e:96-deep-well": Object { - "definitionId": "fixture/fixture_regular_example_1/1", - "displayName": "96 deep well (1)", - "slot": "10", - }, - "trashId": Object { - "definitionId": "fixture/fixture_regular_example_1/1", - "displayName": "Trash", - "slot": "12", - }, - }, - "labwareDefinitions": Object { - "fixture/fixture_regular_example_1/1": Object { - "brand": Object { - "brand": "opentrons", - "brandId": Array [ - "t40u9sernisofsea", - ], - }, - "cornerOffsetFromSlot": Object { - "x": 0, - "y": 0, - "z": 0, - }, - "dimensions": Object { - "xDimension": 127.76, - "yDimension": 85.48, - "zDimension": 50, - }, - "groups": Array [ - Object { - "metadata": Object {}, - "wells": Array [ - "A1", - "A2", - ], - }, - ], - "metadata": Object { - "displayCategory": "wellPlate", - "displayName": "fake labware", - "displayVolumeUnits": "µL", - }, - "namespace": "fixture", - "ordering": Array [ - Array [ - "A1", - ], - Array [ - "A2", - ], - ], - "parameters": Object { - "format": "96Standard", - "isMagneticModuleCompatible": false, - "isTiprack": false, - "loadName": "fixture_regular_example_1", - }, - "schemaVersion": 2, - "version": 1, - "wells": Object { - "A1": Object { - "depth": 40, - "diameter": 30, - "shape": "circular", - "totalLiquidVolume": 100, - "x": 10, - "y": 75.48, - "z": 15, - }, - "A2": Object { - "depth": 40, - "diameter": 30, - "shape": "circular", - "totalLiquidVolume": 100, - "x": 20, - "y": 75.48, - "z": 15, - }, - }, - }, - }, - "metadata": Object { - "author": "Author name", - "category": null, - "created": 1560957631666, - "description": "Description here", - "lastModified": undefined, - "protocolName": "Some name!", - "subcategory": null, - "tags": Array [], - }, - "pipettes": Object { - "c6f45030-92a5-11e9-ac62-1b173f839d9e": Object { - "mount": "left", - "name": "p10_single", - }, - "c6f47740-92a5-11e9-ac62-1b173f839d9e": Object { - "mount": "right", - "name": "p50_single", - }, - }, - "robot": Object { - "model": "OT-2 Standard", - }, - "schemaVersion": 3, -} -`; diff --git a/protocol-designer/src/load-file/migration/utils/getDefaultBlowoutFlowRate.ts b/protocol-designer/src/load-file/migration/utils/getDefaultBlowoutFlowRate.ts new file mode 100644 index 00000000000..7fa927177b4 --- /dev/null +++ b/protocol-designer/src/load-file/migration/utils/getDefaultBlowoutFlowRate.ts @@ -0,0 +1,36 @@ +import { LOW_VOLUME_PIPETTES, getPipetteSpecsV2 } from '@opentrons/shared-data' +import type { PipetteName } from '@opentrons/shared-data' + +export function getDefaultBlowoutFlowRate( + pipetteName: PipetteName, + volume: number, + tipLength: number +): number { + const specs = getPipetteSpecsV2(pipetteName) + + console.assert( + specs, + `expected to find pipette specs from pipetteName ${pipetteName} but could not` + ) + + const isLowVolumePipette = LOW_VOLUME_PIPETTES.includes(pipetteName) + const isUsingLowVolume = volume < 5 + const liquidType = + isLowVolumePipette && isUsingLowVolume ? 'lowVolumeDefault' : 'default' + const liquidSupportedTips = + specs != null ? Object.values(specs.liquids[liquidType].supportedTips) : [] + + // find the supported tip liquid specs that either exactly match + // tipLength or are closest, this accounts for custom tipracks + const matchingTipLiquidSpecs = liquidSupportedTips.sort((tipA, tipB) => { + const differenceA = Math.abs(tipA.defaultTipLength - tipLength) + const differenceB = Math.abs(tipB.defaultTipLength - tipLength) + return differenceA - differenceB + })[0] + console.assert( + matchingTipLiquidSpecs, + `expected to find the tip liquid specs but could not with pipetteName ${pipetteName}` + ) + + return matchingTipLiquidSpecs.defaultBlowOutFlowRate.default +} diff --git a/protocol-designer/src/localization/en/feature_flags.json b/protocol-designer/src/localization/en/feature_flags.json index ebab1c9635d..7f2f9883bbd 100644 --- a/protocol-designer/src/localization/en/feature_flags.json +++ b/protocol-designer/src/localization/en/feature_flags.json @@ -11,13 +11,5 @@ "OT_PD_ALLOW_ALL_TIPRACKS": { "title": "Allow all tip rack options", "description": "Enable selection of all tip racks for each pipette." - }, - "OT_PD_ENABLE_MULTI_TIP": { - "title": "Enable multi tiprack support", - "description": "Allow users to select multiple tipracks per pipette" - }, - "OT_PD_ENABLE_MOAM": { - "title": "Enable multiples of a module", - "description": "Allow users to select multiples of a module" } } diff --git a/protocol-designer/src/localization/en/modal.json b/protocol-designer/src/localization/en/modal.json index 37c5b41a043..f02b0053466 100644 --- a/protocol-designer/src/localization/en/modal.json +++ b/protocol-designer/src/localization/en/modal.json @@ -272,6 +272,11 @@ "body2": "We have added new features since the last time this protocol was updated, but have not made any changes to existing protocol behavior. Because of this we do not expect any changes in how the robot will execute this protocol. To be safe we will still recommend keeping a separate copy of the file you just imported.", "body3": "As always, please contact us with any questions or feedback." }, + "toV8_1Migration": { + "body1": "Your protocol will be automatically updated to the latest version.", + "body2": "The default dispense height is now 1mm from the bottom of the well. If your protocol contains any dispense commands without a custom height, it will be automatically updated.", + "body3": "As always, please contact us with any questions or feedback." + }, "toV8Migration": { "body1": "Your protocol will be automatically updated to the latest version.", "body2": "{{pd}} no longer supports aspirate or mix actions in a trash bin. If your protocol contains these actions, an error icon will appear next to them in the Protocol Timeline. To resolve the error, choose another location for aspirating or mixing.", diff --git a/protocol-designer/src/localization/en/modules.json b/protocol-designer/src/localization/en/modules.json index 5cad25ca050..0f7911f45c4 100644 --- a/protocol-designer/src/localization/en/modules.json +++ b/protocol-designer/src/localization/en/modules.json @@ -1,4 +1,6 @@ { + "adapter_compatible_labware": "Adapter Compatible Labware", + "custom_labware": "Custom Labware", "additional_equipment_display_names": { "gripper": "Flex Gripper", "stagingAreas": "Staging Area Slots", diff --git a/protocol-designer/src/localization/en/tooltip.json b/protocol-designer/src/localization/en/tooltip.json index 8e293d8efdd..b3ac4786fdc 100644 --- a/protocol-designer/src/localization/en/tooltip.json +++ b/protocol-designer/src/localization/en/tooltip.json @@ -49,7 +49,8 @@ "mix_touchTip_mmFromBottom": "Distance from the bottom of the well", "preWetTip": "Pre-wet pipette tip by aspirating and dispensing 2/3 of the tip's max volume", "volume": "Volume to dispense in each well", - "blowout_z_offset": "The height at which blowout occurs from the top of the well" + "blowout_z_offset": "The height at which blowout occurs from the top of the well", + "blowout_flowRate": "Blowout speed" }, "indeterminate": { "aspirate_airGap_checkbox": "Not all selected steps are using this setting", diff --git a/protocol-designer/src/step-forms/reducers/index.ts b/protocol-designer/src/step-forms/reducers/index.ts index 5d42a31b086..c901e2e8876 100644 --- a/protocol-designer/src/step-forms/reducers/index.ts +++ b/protocol-designer/src/step-forms/reducers/index.ts @@ -1381,11 +1381,13 @@ export const additionalEquipmentInvariantProperties = handleActions { const stagingAreaId = `${uuid()}:stagingArea` @@ -1460,7 +1462,6 @@ export const additionalEquipmentInvariantProperties = handleActions { dispense_x_position: 0, dispense_y_position: 0, blowout_z_offset: 0, + blowout_flowRate: null, }) }) describe('mix step', () => { @@ -228,6 +229,7 @@ describe('createPresavedStepForm', () => { aspirate_flowRate: null, dispense_flowRate: null, tipRack: null, + blowout_flowRate: null, }) }) }) diff --git a/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts b/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts index b90eb6f028e..a6933bc85e4 100644 --- a/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts +++ b/protocol-designer/src/steplist/formLevel/getDefaultsForStepType.ts @@ -41,6 +41,7 @@ export function getDefaultsForStepType( mix_x_position: 0, mix_y_position: 0, blowout_z_offset: DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP, + blowout_flowRate: null, } case 'moveLiquid': @@ -95,6 +96,7 @@ export function getDefaultsForStepType( aspirate_x_position: 0, aspirate_y_position: 0, blowout_z_offset: DEFAULT_MM_BLOWOUT_OFFSET_FROM_TOP, + blowout_flowRate: null, } case 'moveLabware': diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts index d28f6dc42df..4b22040578f 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/mixFormToArgs.ts @@ -70,7 +70,7 @@ export const mixFormToArgs = ( : null // Blowout settings const blowoutFlowRateUlSec = - hydratedFormData.dispense_flowRate ?? + hydratedFormData.blowout_flowRate ?? matchingTipLiquidSpecs?.defaultBlowOutFlowRate.default const blowoutOffsetFromTopMm = blowoutLocation diff --git a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts index 05910f13332..04f87317ff0 100644 --- a/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts +++ b/protocol-designer/src/steplist/formLevel/stepFormToArgs/moveLiquidFormToArgs.ts @@ -202,7 +202,7 @@ export const moveLiquidFormToArgs = ( dispenseOffsetFromBottomMm: fields.dispense_mmFromBottom || DEFAULT_MM_FROM_BOTTOM_DISPENSE, blowoutFlowRateUlSec: - fields.dispense_flowRate || + fields.blowout_flowRate || matchingTipLiquidSpecs.defaultBlowOutFlowRate.default, blowoutOffsetFromTopMm, changeTip: fields.changeTip, diff --git a/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts b/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts index 081d7809566..2d2d1fa5e25 100644 --- a/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts +++ b/protocol-designer/src/steplist/formLevel/test/getDefaultsForStepType.test.ts @@ -52,6 +52,7 @@ describe('getDefaultsForStepType', () => { blowout_checkbox: false, blowout_location: null, + blowout_flowRate: null, preWetTip: false, aspirate_airGap_checkbox: false, @@ -87,6 +88,7 @@ describe('getDefaultsForStepType', () => { mix_wellOrder_second: DEFAULT_WELL_ORDER_SECOND_OPTION, blowout_checkbox: false, blowout_location: null, + blowout_flowRate: null, mix_mmFromBottom: DEFAULT_MM_FROM_BOTTOM_DISPENSE, mix_touchTip_mmFromBottom: null, mix_touchTip_checkbox: false, diff --git a/protocol-designer/src/steplist/generateSubstepItem.ts b/protocol-designer/src/steplist/generateSubstepItem.ts index edfac2fd19e..2c58befeeda 100644 --- a/protocol-designer/src/steplist/generateSubstepItem.ts +++ b/protocol-designer/src/steplist/generateSubstepItem.ts @@ -112,8 +112,12 @@ export const mergeSubstepRowsSingleChannel = (args: { showDispenseVol: boolean }): StepItemSourceDestRow[] => { const { substepRows, showDispenseVol } = args + // TODO(jr, 5/2/24): filtering out air gap steps for now since a refactor would be required + // to figure out if the air gap is for the aspirate or dispense labware. Otherwise, a white screen + // was happening with an air gap step trying to happen in an aspirate labware well that did not exist + const filteredSubstepRows = substepRows.filter(row => !row.isAirGap) return steplistUtils.mergeWhen( - substepRows, + filteredSubstepRows, ( currentRow, nextRow // NOTE: if aspirate then dispense rows are adjacent, collapse them into one row @@ -160,8 +164,12 @@ export const mergeSubstepRowsMultiChannel = (args: { showDispenseVol: boolean }): StepItemSourceDestRow[][] => { const { substepRows, channels, isMixStep, showDispenseVol } = args + // TODO(jr, 5/2/24): filtering out air gap steps for now since a refactor would be required + // to figure out if the air gap is for the aspirate or dispense labware. Otherwise, a white screen + // was happening with an air gap step trying to happen in an aspirate labware well that did not exist + const filteredSubstepRows = substepRows.filter(row => !row.isAirGap) return steplistUtils.mergeWhen( - substepRows, + filteredSubstepRows, ( currentMultiRow: SubstepTimelineFrame, nextMultiRow: SubstepTimelineFrame diff --git a/protocol-designer/src/steplist/substepTimeline.ts b/protocol-designer/src/steplist/substepTimeline.ts index 19971df04fc..d164a33bedf 100644 --- a/protocol-designer/src/steplist/substepTimeline.ts +++ b/protocol-designer/src/steplist/substepTimeline.ts @@ -64,11 +64,23 @@ const _createNextTimelineFrame = (args: { volume: args.volume, activeTips: _getNewActiveTips(args.nextFrame.commands.slice(0, args.index)), } + const command = args.command + const isAirGapCommand = + 'meta' in command && command.meta != null && 'isAirGap' in command.meta + const newTimelineFrame = args.command.commandType === 'aspirate' || args.command.commandType === 'aspirateInPlace' - ? { ..._newTimelineFrameKeys, source: args.wellInfo } - : { ..._newTimelineFrameKeys, dest: args.wellInfo } + ? { + ..._newTimelineFrameKeys, + source: args.wellInfo, + isAirGap: isAirGapCommand, + } + : { + ..._newTimelineFrameKeys, + dest: args.wellInfo, + isAirGap: isAirGapCommand, + } return newTimelineFrame } diff --git a/protocol-designer/src/steplist/test/__snapshots__/mergeSubstepsFns.test.ts.snap b/protocol-designer/src/steplist/test/__snapshots__/mergeSubstepsFns.test.ts.snap index 77a3cc5bbb1..87122a8b5d0 100644 --- a/protocol-designer/src/steplist/test/__snapshots__/mergeSubstepsFns.test.ts.snap +++ b/protocol-designer/src/steplist/test/__snapshots__/mergeSubstepsFns.test.ts.snap @@ -1011,1015 +1011,3 @@ exports[`mergeSubstepRowsMultiChannel > mock transfer 1`] = ` ], ] `; - -exports[`mergeSubstepRowsMultiChannel mock consolidate 1`] = ` -Array [ - Array [ - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": undefined, - "source": Object { - "postIngreds": Object { - "ingred1Id": 25, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "A1", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": undefined, - "source": Object { - "postIngreds": undefined, - "preIngreds": undefined, - "well": undefined, - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": undefined, - "source": Object { - "postIngreds": undefined, - "preIngreds": undefined, - "well": undefined, - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": undefined, - "source": Object { - "postIngreds": undefined, - "preIngreds": undefined, - "well": undefined, - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": undefined, - "source": Object { - "postIngreds": undefined, - "preIngreds": undefined, - "well": undefined, - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": undefined, - "source": Object { - "postIngreds": undefined, - "preIngreds": undefined, - "well": undefined, - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": undefined, - "source": Object { - "postIngreds": undefined, - "preIngreds": undefined, - "well": undefined, - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": undefined, - "source": Object { - "postIngreds": undefined, - "preIngreds": undefined, - "well": undefined, - }, - "volume": 5, - }, - ], - Array [ - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "A12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 31, - }, - "preIngreds": Object { - "ingred1Id": 36, - }, - "well": "A2", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "B12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 31, - }, - "preIngreds": Object { - "ingred1Id": 36, - }, - "well": "B2", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "C12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 31, - }, - "preIngreds": Object { - "ingred1Id": 36, - }, - "well": "C2", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "D12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 31, - }, - "preIngreds": Object { - "ingred1Id": 36, - }, - "well": "D2", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "E12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 31, - }, - "preIngreds": Object { - "ingred1Id": 36, - }, - "well": "E2", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "F12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 31, - }, - "preIngreds": Object { - "ingred1Id": 36, - }, - "well": "F2", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "G12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 31, - }, - "preIngreds": Object { - "ingred1Id": 36, - }, - "well": "G2", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "H12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 31, - }, - "preIngreds": Object { - "ingred1Id": 36, - }, - "well": "H2", - }, - "volume": 5, - }, - ], -] -`; - -exports[`mergeSubstepRowsMultiChannel mock distribute 1`] = ` -Array [ - Array [ - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "A11", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "A1", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "B11", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "B1", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "C11", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "C1", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "D11", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "D1", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "E11", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "E1", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "F11", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "F1", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "G11", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "G1", - }, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "H11", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "H1", - }, - "volume": 5, - }, - ], - Array [ - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "A12", - }, - "source": undefined, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "B12", - }, - "source": undefined, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "C12", - }, - "source": undefined, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "D12", - }, - "source": undefined, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "E12", - }, - "source": undefined, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "F12", - }, - "source": undefined, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "G12", - }, - "source": undefined, - "volume": 5, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 5, - }, - "preIngreds": Object {}, - "well": "H12", - }, - "source": undefined, - "volume": 5, - }, - ], -] -`; - -exports[`mergeSubstepRowsMultiChannel mock mix 1`] = ` -Array [ - Array [ - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "A1", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "A1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "B1", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "B1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "C1", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "C1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "D1", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "D1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "E1", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "E1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "F1", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "F1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "G1", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "G1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "H1", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "H1", - }, - "volume": 10, - }, - ], -] -`; - -exports[`mergeSubstepRowsMultiChannel mock transfer 1`] = ` -Array [ - Array [ - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "A12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "A1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "B12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "B1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "C12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "C1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "D12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "D1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "E12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "E1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "F12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "F1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "G12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "G1", - }, - "volume": 10, - }, - Object { - "activeTips": Object { - "labware": "someTiprackId", - "well": "A6", - }, - "dest": Object { - "postIngreds": Object { - "ingred1Id": 10, - }, - "preIngreds": Object {}, - "well": "H12", - }, - "source": Object { - "postIngreds": Object { - "ingred1Id": 20, - }, - "preIngreds": Object { - "ingred1Id": 30, - }, - "well": "H1", - }, - "volume": 10, - }, - ], -] -`; diff --git a/protocol-designer/src/steplist/test/generateSubsteps.test.ts b/protocol-designer/src/steplist/test/generateSubsteps.test.ts index 1c2483e0487..6e70c18cacf 100644 --- a/protocol-designer/src/steplist/test/generateSubsteps.test.ts +++ b/protocol-designer/src/steplist/test/generateSubsteps.test.ts @@ -231,6 +231,7 @@ describe('generateSubstepItem', () => { preIngreds: {}, well: 'C1', }, + isAirGap: false, }, ], }, @@ -269,6 +270,7 @@ describe('generateSubstepItem', () => { preIngreds: {}, well: 'A1', }, + isAirGap: false, source: { postIngreds: {}, preIngreds: {}, @@ -323,6 +325,7 @@ describe('generateSubstepItem', () => { labwareId: tiprackId, wellName: 'A1', }, + isAirGap: false, source: { well: 'A1', preIngreds: {}, postIngreds: {} }, dest: { well: 'A1', @@ -343,6 +346,7 @@ describe('generateSubstepItem', () => { labwareId: tiprackId, wellName: 'A1', }, + isAirGap: false, dest: { postIngreds: { __air__: { @@ -434,6 +438,7 @@ describe('generateSubstepItem', () => { preIngreds: {}, well: 'A1', }, + isAirGap: false, source: { postIngreds: {}, preIngreds: {}, @@ -460,6 +465,7 @@ describe('generateSubstepItem', () => { }, well: 'A1', }, + isAirGap: false, source: { postIngreds: { __air__: { @@ -490,6 +496,7 @@ describe('generateSubstepItem', () => { preIngreds: {}, well: 'A2', }, + isAirGap: false, source: { postIngreds: {}, preIngreds: {}, @@ -516,6 +523,7 @@ describe('generateSubstepItem', () => { }, well: 'A2', }, + isAirGap: false, source: { postIngreds: { __air__: { diff --git a/protocol-designer/src/steplist/types.ts b/protocol-designer/src/steplist/types.ts index 297c13e7194..6855104c5dd 100644 --- a/protocol-designer/src/steplist/types.ts +++ b/protocol-designer/src/steplist/types.ts @@ -48,6 +48,7 @@ export interface SourceDestData { postIngreds: WellIngredientVolumeData } export interface SubstepTimelineFrame { + isAirGap?: boolean substepIndex?: number activeTips: TipLocation | null | undefined source?: SourceDestData diff --git a/protocol-designer/src/top-selectors/substep-highlight.ts b/protocol-designer/src/top-selectors/substep-highlight.ts index 1e47785be88..1144b81fe59 100644 --- a/protocol-designer/src/top-selectors/substep-highlight.ts +++ b/protocol-designer/src/top-selectors/substep-highlight.ts @@ -202,13 +202,19 @@ function _getSelectedWellsForSubstep( // source + dest steps - // @ts-expect-error(sa, 2021-6-22): `sourceLabware` is missing in `MixArgs` - if (stepArgs.sourceLabware && stepArgs.sourceLabware === labwareId) { + if ( + 'sourceLabware' in stepArgs && + stepArgs.sourceLabware != null && + stepArgs.sourceLabware === labwareId + ) { wells.push(...getWells('source')) } - // @ts-expect-error(sa, 2021-6-22): property `destLabware` is missing in `MixArgs` - if (stepArgs.destLabware && stepArgs.destLabware === labwareId) { + if ( + 'destLabware' in stepArgs && + stepArgs.destLabware != null && + stepArgs.destLabware === labwareId + ) { wells.push(...getWells('dest')) } diff --git a/protocol-designer/src/ui/steps/test/selectors.test.ts b/protocol-designer/src/ui/steps/test/selectors.test.ts index e5aa13d10c5..22b93569b04 100644 --- a/protocol-designer/src/ui/steps/test/selectors.test.ts +++ b/protocol-designer/src/ui/steps/test/selectors.test.ts @@ -418,7 +418,10 @@ describe('_getSavedMultiSelectFieldValues', () => { isIndeterminate: false, value: undefined, }, - + blowout_flowRate: { + isIndeterminate: false, + value: undefined, + }, aspirate_labware: { value: 'aspirate_labware_id', isIndeterminate: false, @@ -642,6 +645,7 @@ describe('_getSavedMultiSelectFieldValues', () => { dispense_wellOrder_first: 'b2t', dispense_wellOrder_second: 'r2l', dispense_mix_checkbox: false, + blowout_flowRate: null, // same thing here with mix times or mix volumes dispense_delay_checkbox: false, // same thing here for delay seconds and mm from bottom @@ -670,6 +674,9 @@ describe('_getSavedMultiSelectFieldValues', () => { tipRack: { isIndeterminate: false, }, + blowout_flowRate: { + isIndeterminate: true, + }, aspirate_flowRate: { isIndeterminate: true, }, @@ -862,6 +869,9 @@ describe('_getSavedMultiSelectFieldValues', () => { ).toEqual({ volume: { value: '100', isIndeterminate: false }, tipRack: { isIndeterminate: false }, + blowout_flowRate: { + isIndeterminate: false, + }, times: { value: null, isIndeterminate: false }, changeTip: { value: 'always', isIndeterminate: false }, labware: { value: 'some_labware_id', isIndeterminate: false }, @@ -940,6 +950,9 @@ describe('_getSavedMultiSelectFieldValues', () => { ) ).toEqual({ tipRack: { isIndeterminate: false }, + blowout_flowRate: { + isIndeterminate: false, + }, volume: { isIndeterminate: true }, times: { isIndeterminate: true }, changeTip: { isIndeterminate: true }, diff --git a/react-api-client/src/runs/index.ts b/react-api-client/src/runs/index.ts index a77e01b2b42..5790abb860b 100644 --- a/react-api-client/src/runs/index.ts +++ b/react-api-client/src/runs/index.ts @@ -10,6 +10,7 @@ export { usePauseRunMutation } from './usePauseRunMutation' export { useStopRunMutation } from './useStopRunMutation' export { useRunActionMutations } from './useRunActionMutations' export { useAllCommandsQuery } from './useAllCommandsQuery' +export { useAllCommandsAsPreSerializedList } from './useAllCommandsAsPreSerializedList' export { useCommandQuery } from './useCommandQuery' export * from './useCreateLabwareOffsetMutation' export * from './useCreateLabwareDefinitionMutation' diff --git a/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts b/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts new file mode 100644 index 00000000000..3d30d13c579 --- /dev/null +++ b/react-api-client/src/runs/useAllCommandsAsPreSerializedList.ts @@ -0,0 +1,52 @@ +import { UseQueryResult, useQuery } from 'react-query' +import { getCommandsAsPreSerializedList } from '@opentrons/api-client' +import { useHost } from '../api' +import type { UseQueryOptions } from 'react-query' +import type { + GetCommandsParams, + HostConfig, + CommandsData, + RunCommandSummary, +} from '@opentrons/api-client' + +const DEFAULT_PAGE_LENGTH = 30 +export const DEFAULT_PARAMS: GetCommandsParams = { + cursor: null, + pageLength: DEFAULT_PAGE_LENGTH, +} + +export function useAllCommandsAsPreSerializedList( + runId: string | null, + params?: GetCommandsParams | null, + options: UseQueryOptions = {} +): UseQueryResult { + const host = useHost() + const nullCheckedParams = params ?? DEFAULT_PARAMS + + const allOptions: UseQueryOptions = { + ...options, + enabled: host !== null && runId != null && options.enabled !== false, + } + const { cursor, pageLength } = nullCheckedParams + const query = useQuery( + [host, 'runs', runId, 'getCommandsAsPreSerializedList', cursor, pageLength], + () => { + return getCommandsAsPreSerializedList( + host as HostConfig, + runId as string, + nullCheckedParams + ).then(response => { + const responseData = response.data + return { + ...responseData, + data: responseData.data.map( + command => JSON.parse(command) as RunCommandSummary + ), + } + }) + }, + allOptions + ) + + return query +} diff --git a/robot-server/robot_server/maintenance_runs/router/base_router.py b/robot-server/robot_server/maintenance_runs/router/base_router.py index c115d46509f..54533d8f977 100644 --- a/robot-server/robot_server/maintenance_runs/router/base_router.py +++ b/robot-server/robot_server/maintenance_runs/router/base_router.py @@ -39,7 +39,7 @@ get_deck_configuration_store, ) from robot_server.deck_configuration.store import DeckConfigurationStore -from robot_server.service.notifications import get_notify_publishers +from robot_server.service.notifications import get_pe_notify_publishers log = logging.getLogger(__name__) base_router = APIRouter() @@ -156,7 +156,7 @@ async def create_run( deck_configuration_store: DeckConfigurationStore = Depends( get_deck_configuration_store ), - notify_publishers: Callable[[], None] = Depends(get_notify_publishers), + notify_publishers: Callable[[], None] = Depends(get_pe_notify_publishers), ) -> PydanticResponse[SimpleBody[MaintenanceRun]]: """Create a new maintenance run. diff --git a/robot-server/robot_server/runs/router/actions_router.py b/robot-server/robot_server/runs/router/actions_router.py index b662d59f554..25aae8cfd19 100644 --- a/robot-server/robot_server/runs/router/actions_router.py +++ b/robot-server/robot_server/runs/router/actions_router.py @@ -28,6 +28,7 @@ MaintenanceEngineStore, ) from robot_server.maintenance_runs.dependencies import get_maintenance_engine_store +from robot_server.service.notifications import get_runs_publisher, RunsPublisher log = logging.getLogger(__name__) actions_router = APIRouter() @@ -45,6 +46,7 @@ async def get_run_controller( task_runner: TaskRunner = Depends(get_task_runner), engine_store: EngineStore = Depends(get_engine_store), run_store: RunStore = Depends(get_run_store), + runs_publisher: RunsPublisher = Depends(get_runs_publisher), ) -> RunController: """Get a RunController for the current run. @@ -67,6 +69,7 @@ async def get_run_controller( task_runner=task_runner, engine_store=engine_store, run_store=run_store, + runs_publisher=runs_publisher, ) diff --git a/robot-server/robot_server/runs/router/base_router.py b/robot-server/robot_server/runs/router/base_router.py index 728966823fb..375bc7bf556 100644 --- a/robot-server/robot_server/runs/router/base_router.py +++ b/robot-server/robot_server/runs/router/base_router.py @@ -45,7 +45,7 @@ get_deck_configuration_store, ) from robot_server.deck_configuration.store import DeckConfigurationStore -from robot_server.service.notifications import get_notify_publishers +from robot_server.service.notifications import get_pe_notify_publishers log = logging.getLogger(__name__) base_router = APIRouter() @@ -144,7 +144,7 @@ async def create_run( deck_configuration_store: DeckConfigurationStore = Depends( get_deck_configuration_store ), - notify_publishers: Callable[[], None] = Depends(get_notify_publishers), + notify_publishers: Callable[[], None] = Depends(get_pe_notify_publishers), ) -> PydanticResponse[SimpleBody[Union[Run, BadRun]]]: """Create a new run. diff --git a/robot-server/robot_server/runs/router/commands_router.py b/robot-server/robot_server/runs/router/commands_router.py index 47a64c5d800..b220ae33c04 100644 --- a/robot-server/robot_server/runs/router/commands_router.py +++ b/robot-server/robot_server/runs/router/commands_router.py @@ -6,6 +6,7 @@ from anyio import move_on_after from fastapi import APIRouter, Depends, Query, status + from pydantic import BaseModel, Field from opentrons.protocol_engine import ( @@ -21,11 +22,12 @@ MultiBody, MultiBodyMeta, PydanticResponse, + SimpleMultiBody, ) from robot_server.robot.control.dependencies import require_estop_in_good_state from ..run_models import RunCommandSummary -from ..run_data_manager import RunDataManager +from ..run_data_manager import RunDataManager, PreSerializedCommandsNotAvailableError from ..engine_store import EngineStore from ..run_store import RunStore, CommandNotFoundError from ..run_models import RunNotFoundError @@ -70,6 +72,18 @@ class CommandNotAllowed(ErrorDetails): title: str = "Command Not Allowed" +class PreSerializedCommandsNotAvailable(ErrorDetails): + """An error if one tries to fetch pre-serialized commands before they are written to the database.""" + + id: Literal[ + "PreSerializedCommandsNotAvailable" + ] = "PreSerializedCommandsNotAvailable" + title: str = "Pre-Serialized commands not available." + detail: str = ( + "Pre-serialized commands are only available once a run has finished running." + ) + + class CommandLinkMeta(BaseModel): """Metadata about a command resource referenced in `links`.""" @@ -351,6 +365,56 @@ async def get_run_commands( ) +# TODO (spp, 2024-05-01): explore alternatives to returning commands as list of strings. +# Options: 1. JSON Lines +# 2. Simple de-serialized commands list w/o pydantic model conversion +@PydanticResponse.wrap_route( + commands_router.get, + path="/runs/{runId}/commandsAsPreSerializedList", + summary="Get all commands of a completed run as a list of pre-serialized commands", + description=( + "Get all commands of a completed run as a list of pre-serialized commands." + "**Warning:** This endpoint is experimental. We may change or remove it without warning." + "\n\n" + "The commands list will only be available after a run has completed" + " (whether successful, failed or stopped) and its data has been committed to the database." + " If a request is received before the run is completed, it will return a 503 Unavailable error." + " This is a faster alternative to fetching the full commands list using" + " `GET /runs/{runId}/commands`. For large protocols (10k+ commands), the above" + " endpoint can take minutes to respond, whereas this one should only take a few seconds." + ), + responses={ + status.HTTP_404_NOT_FOUND: {"model": ErrorBody[RunNotFound]}, + status.HTTP_503_SERVICE_UNAVAILABLE: { + "model": ErrorBody[PreSerializedCommandsNotAvailable] + }, + }, +) +async def get_run_commands_as_pre_serialized_list( + runId: str, + run_data_manager: RunDataManager = Depends(get_run_data_manager), +) -> PydanticResponse[SimpleMultiBody[str]]: + """Get all commands of a completed run as a list of pre-serialized (string encoded) commands. + + Arguments: + runId: Requested run ID, from the URL + run_data_manager: Run data retrieval interface. + """ + try: + commands = run_data_manager.get_all_commands_as_preserialized_list(runId) + except RunNotFoundError as e: + raise RunNotFound.from_exc(e).as_error(status.HTTP_404_NOT_FOUND) from e + except PreSerializedCommandsNotAvailableError as e: + raise PreSerializedCommandsNotAvailable.from_exc(e).as_error( + status.HTTP_503_SERVICE_UNAVAILABLE + ) from e + return await PydanticResponse.create( + content=SimpleMultiBody.construct( + data=commands, meta=MultiBodyMeta(cursor=0, totalLength=len(commands)) + ) + ) + + @PydanticResponse.wrap_route( commands_router.get, path="/runs/{runId}/commands/{commandId}", diff --git a/robot-server/robot_server/runs/run_controller.py b/robot-server/robot_server/runs/run_controller.py index 923c9cfa64e..e7e55080aed 100644 --- a/robot-server/robot_server/runs/run_controller.py +++ b/robot-server/robot_server/runs/run_controller.py @@ -13,6 +13,8 @@ from opentrons.protocol_engine.types import DeckConfigurationType +from robot_server.service.notifications import RunsPublisher + log = logging.getLogger(__name__) @@ -21,7 +23,7 @@ class RunActionNotAllowedError(RoboticsInteractionError): class RunController: - """An interface to manage the side-effects of requested run actions.""" + """An interface to manage the side effects of requested run actions.""" def __init__( self, @@ -29,11 +31,13 @@ def __init__( task_runner: TaskRunner, engine_store: EngineStore, run_store: RunStore, + runs_publisher: RunsPublisher, ) -> None: self._run_id = run_id self._task_runner = task_runner self._engine_store = engine_store self._run_store = run_store + self._runs_publisher = runs_publisher def create_action( self, @@ -108,3 +112,6 @@ async def _run_protocol_and_insert_result( commands=result.commands, run_time_parameters=result.parameters, ) + await self._runs_publisher.publish_pre_serialized_commands_notification( + self._run_id + ) diff --git a/robot-server/robot_server/runs/run_data_manager.py b/robot-server/robot_server/runs/run_data_manager.py index 8548104911b..311cfb93b40 100644 --- a/robot-server/robot_server/runs/run_data_manager.py +++ b/robot-server/robot_server/runs/run_data_manager.py @@ -112,6 +112,10 @@ class RunNotCurrentError(ValueError): """Error raised when a requested run is not the current run.""" +class PreSerializedCommandsNotAvailableError(LookupError): + """Error raised when a run's commands are not available as pre-serialized list of commands.""" + + class RunDataManager: """Collaborator to manage current and historical run data. @@ -290,10 +294,16 @@ async def delete(self, run_id: str) -> None: self._run_store.remove(run_id=run_id) async def update(self, run_id: str, current: Optional[bool]) -> Union[Run, BadRun]: - """Get and potentially archive a run. + """Get and potentially archive the current run. Args: run_id: The run to get and maybe archive. + current: Whether to mark the run as current or not. + If `current` set to False, then the run is 'un-current'ed by + stopping the run, saving the final run data to the run store, + and clearing the engine and runner. + If 'current' is True or not specified, we simply fetch the run's + data from memory and database. Returns: The updated run. @@ -320,6 +330,9 @@ async def update(self, run_id: str, current: Optional[bool]) -> Union[Run, BadRu commands=commands, run_time_parameters=parameters, ) + await self._runs_publisher.publish_pre_serialized_commands_notification( + run_id + ) else: state_summary = self._engine_store.engine.state_view.get_summary() parameters = self._engine_store.runner.run_time_parameters @@ -387,6 +400,17 @@ def get_command(self, run_id: str, command_id: str) -> Command: return self._run_store.get_command(run_id=run_id, command_id=command_id) + def get_all_commands_as_preserialized_list(self, run_id: str) -> List[str]: + """Get all commands of a run in a serialized json list.""" + if ( + run_id == self._engine_store.current_run_id + and not self._engine_store.engine.state_view.commands.get_is_terminal() + ): + raise PreSerializedCommandsNotAvailableError( + "Pre-serialized commands are only available after a run has ended." + ) + return self._run_store.get_all_commands_as_preserialized_list(run_id) + def _get_state_summary(self, run_id: str) -> Union[StateSummary, BadStateSummary]: if run_id == self._engine_store.current_run_id: return self._engine_store.engine.state_view.get_summary() diff --git a/robot-server/robot_server/runs/run_store.py b/robot-server/robot_server/runs/run_store.py index b86ec8e19ea..6cf86d14af1 100644 --- a/robot-server/robot_server/runs/run_store.py +++ b/robot-server/robot_server/runs/run_store.py @@ -428,7 +428,6 @@ def get_commands_slice( ) .order_by(run_command_table.c.index_in_run) ) - slice_result = transaction.execute(select_slice).all() sliced_commands: List[Command] = [ @@ -442,6 +441,19 @@ def get_commands_slice( commands=sliced_commands, ) + def get_all_commands_as_preserialized_list(self, run_id: str) -> List[str]: + """Get all commands of the run as a list of strings of json command objects.""" + with self._sql_engine.begin() as transaction: + if not self._run_exists(run_id, transaction): + raise RunNotFoundError(run_id=run_id) + select_commands = ( + sqlalchemy.select(run_command_table.c.command) + .where(run_command_table.c.run_id == run_id) + .order_by(run_command_table.c.index_in_run) + ) + commands_result = transaction.scalars(select_commands).all() + return commands_result + @lru_cache(maxsize=_CACHE_ENTRIES) def get_command(self, run_id: str, command_id: str) -> Command: """Get run command by id. diff --git a/robot-server/robot_server/service/notifications/__init__.py b/robot-server/robot_server/service/notifications/__init__.py index defb62e2af7..e62402f06f5 100644 --- a/robot-server/robot_server/service/notifications/__init__.py +++ b/robot-server/robot_server/service/notifications/__init__.py @@ -6,7 +6,7 @@ get_notification_client, clean_up_notification_client, ) -from .publisher_notifier import PublisherNotifier, get_notify_publishers +from .publisher_notifier import PublisherNotifier, get_pe_notify_publishers from .publishers import ( MaintenanceRunsPublisher, RunsPublisher, @@ -15,7 +15,6 @@ get_runs_publisher, get_deck_configuration_publisher, ) -from .change_notifier import ChangeNotifier from .topics import Topics __all__ = [ @@ -30,12 +29,11 @@ "clean_up_notification_client", # for use by FastAPI "get_notification_client", - "get_notify_publishers", + "get_pe_notify_publishers", "get_maintenance_runs_publisher", "get_runs_publisher", "get_deck_configuration_publisher", # for testing "PublisherNotifier", - "ChangeNotifier", "Topics", ] diff --git a/robot-server/robot_server/service/notifications/change_notifier.py b/robot-server/robot_server/service/notifications/change_notifier.py deleted file mode 100644 index 60c36c420af..00000000000 --- a/robot-server/robot_server/service/notifications/change_notifier.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Simple state change notification interface.""" -import asyncio - - -class ChangeNotifier: - """An interface to emit or subscribe to state change notifications.""" - - def __init__(self) -> None: - """Initialize the ChangeNotifier with an internal Event.""" - self._event = asyncio.Event() - - def notify(self) -> None: - """Notify all `waiters` of a change.""" - self._event.set() - - async def wait(self) -> None: - """Wait until the next change notification.""" - self._event.clear() - await self._event.wait() - - def clear(self) -> None: - """Reset the internal event flag.""" - self._event.clear() diff --git a/robot-server/robot_server/service/notifications/initialize_notifications.py b/robot-server/robot_server/service/notifications/initialize_notifications.py index d5569d09eff..3691ba1a668 100644 --- a/robot-server/robot_server/service/notifications/initialize_notifications.py +++ b/robot-server/robot_server/service/notifications/initialize_notifications.py @@ -2,10 +2,10 @@ from server_utils.fastapi_utils.app_state import AppState from .notification_client import initialize_notification_client -from .publisher_notifier import initialize_publisher_notifier +from .publisher_notifier import initialize_pe_publisher_notifier async def initialize_notifications(app_state: AppState) -> None: """Initialize the notification system for the given app state.""" initialize_notification_client(app_state) - await initialize_publisher_notifier(app_state) + await initialize_pe_publisher_notifier(app_state) diff --git a/robot-server/robot_server/service/notifications/publisher_notifier.py b/robot-server/robot_server/service/notifications/publisher_notifier.py index d1769ac4379..22b5c34b79e 100644 --- a/robot-server/robot_server/service/notifications/publisher_notifier.py +++ b/robot-server/robot_server/service/notifications/publisher_notifier.py @@ -1,7 +1,7 @@ """Provides an interface for alerting notification publishers to events and related lifecycle utilities.""" import asyncio from fastapi import Depends -from typing import Optional, Callable, List, Awaitable +from typing import Optional, Callable, List, Awaitable, Union from server_utils.fastapi_utils.app_state import ( AppState, @@ -9,18 +9,15 @@ get_app_state, ) -from .change_notifier import ChangeNotifier +from opentrons.util.change_notifier import ChangeNotifier, ChangeNotifier_ts class PublisherNotifier: """An interface that invokes notification callbacks whenever a generic notify event occurs.""" - def __init__( - self, - change_notifier: Optional[ChangeNotifier] = None, - ): - self._change_notifier = change_notifier or ChangeNotifier() - self._pe_notifier: Optional[asyncio.Task[None]] = None + def __init__(self, change_notifier: Union[ChangeNotifier, ChangeNotifier_ts]): + self._change_notifier = change_notifier + self._notifier: Optional[asyncio.Task[None]] = None self._callbacks: List[Callable[[], Awaitable[None]]] = [] def register_publish_callbacks( @@ -31,7 +28,7 @@ def register_publish_callbacks( async def _initialize(self) -> None: """Initializes an instance of PublisherNotifier. This method should only be called once.""" - self._pe_notifier = asyncio.create_task(self._wait_for_event()) + self._notifier = asyncio.create_task(self._wait_for_event()) def _notify_publishers(self) -> None: """A generic notifier, alerting all `waiters` of a change.""" @@ -45,37 +42,39 @@ async def _wait_for_event(self) -> None: await callback() -_publisher_notifier_accessor: AppStateAccessor[PublisherNotifier] = AppStateAccessor[ +_pe_publisher_notifier_accessor: AppStateAccessor[PublisherNotifier] = AppStateAccessor[ PublisherNotifier ]("publisher_notifier") -def get_publisher_notifier( +def get_pe_publisher_notifier( app_state: AppState = Depends(get_app_state), ) -> PublisherNotifier: - """Intended for use by various publishers only.""" - publisher_notifier = _publisher_notifier_accessor.get_from(app_state) + """Intended for use by various publishers only. Intended for protocol engine.""" + publisher_notifier = _pe_publisher_notifier_accessor.get_from(app_state) assert publisher_notifier is not None return publisher_notifier -def get_notify_publishers( +def get_pe_notify_publishers( app_state: AppState = Depends(get_app_state), ) -> Callable[[], None]: - """Provides access to the callback used to notify publishers of changes.""" - publisher_notifier = _publisher_notifier_accessor.get_from(app_state) + """Provides access to the callback used to notify publishers of changes. Intended for protocol engine.""" + publisher_notifier = _pe_publisher_notifier_accessor.get_from(app_state) assert isinstance(publisher_notifier, PublisherNotifier) return publisher_notifier._notify_publishers -async def initialize_publisher_notifier(app_state: AppState) -> None: +async def initialize_pe_publisher_notifier(app_state: AppState) -> None: """Create a new `NotificationClient` and store it on `app_state`. Intended to be called just once, when the server starts up. """ - publisher_notifier: PublisherNotifier = PublisherNotifier() - _publisher_notifier_accessor.set_on(app_state, publisher_notifier) + publisher_notifier: PublisherNotifier = PublisherNotifier( + change_notifier=ChangeNotifier() + ) + _pe_publisher_notifier_accessor.set_on(app_state, publisher_notifier) await publisher_notifier._initialize() diff --git a/robot-server/robot_server/service/notifications/publishers/runs_publisher.py b/robot-server/robot_server/service/notifications/publishers/runs_publisher.py index fef23c8a875..056877b7ec6 100644 --- a/robot-server/robot_server/service/notifications/publishers/runs_publisher.py +++ b/robot-server/robot_server/service/notifications/publishers/runs_publisher.py @@ -11,7 +11,7 @@ get_app_state, ) from ..notification_client import NotificationClient, get_notification_client -from ..publisher_notifier import PublisherNotifier, get_publisher_notifier +from ..publisher_notifier import PublisherNotifier, get_pe_publisher_notifier from ..topics import Topics @@ -95,9 +95,23 @@ async def _publish_runs_advise_refetch_async(self, run_id: str) -> None: async def _publish_runs_advise_unsubscribe_async(self, run_id: str) -> None: """Publish an unsubscribe flag for relevant runs topics.""" - await self._client.publish_advise_unsubscribe_async( - topic=f"{Topics.RUNS}/{run_id}" - ) + if self._run_hooks is not None: + await self._client.publish_advise_unsubscribe_async( + topic=f"{Topics.RUNS}/{run_id}" + ) + await self._client.publish_advise_unsubscribe_async( + topic=Topics.RUNS_CURRENT_COMMAND + ) + await self._client.publish_advise_unsubscribe_async( + topic=f"{Topics.RUNS_PRE_SERIALIZED_COMMANDS}/{run_id}" + ) + + async def publish_pre_serialized_commands_notification(self, run_id: str) -> None: + """Publishes notification for GET /runs/:runId/commandsAsPreSerializedList.""" + if self._run_hooks is not None: + await self._client.publish_advise_refetch_async( + topic=f"{Topics.RUNS_PRE_SERIALIZED_COMMANDS}/{run_id}" + ) async def _handle_current_command_change(self) -> None: """Publish a refetch flag if the current command has changed.""" @@ -137,7 +151,7 @@ async def _handle_engine_status_change(self) -> None: async def get_runs_publisher( app_state: AppState = Depends(get_app_state), notification_client: NotificationClient = Depends(get_notification_client), - publisher_notifier: PublisherNotifier = Depends(get_publisher_notifier), + publisher_notifier: PublisherNotifier = Depends(get_pe_publisher_notifier), ) -> RunsPublisher: """Get a singleton RunsPublisher to publish runs topics.""" runs_publisher = _runs_publisher_accessor.get_from(app_state) diff --git a/robot-server/robot_server/service/notifications/topics.py b/robot-server/robot_server/service/notifications/topics.py index 26d53cc3516..f8a6ecaf701 100644 --- a/robot-server/robot_server/service/notifications/topics.py +++ b/robot-server/robot_server/service/notifications/topics.py @@ -15,3 +15,4 @@ class Topics(str, Enum): RUNS_CURRENT_COMMAND = f"{_TOPIC_BASE}/runs/current_command" RUNS = f"{_TOPIC_BASE}/runs" DECK_CONFIGURATION = f"{_TOPIC_BASE}/deck_configuration" + RUNS_PRE_SERIALIZED_COMMANDS = f"{_TOPIC_BASE}/runs/pre_serialized_commands" diff --git a/robot-server/robot_server/subsystems/firmware_update_manager.py b/robot-server/robot_server/subsystems/firmware_update_manager.py index 12aacc4feb4..43394e972ee 100644 --- a/robot-server/robot_server/subsystems/firmware_update_manager.py +++ b/robot-server/robot_server/subsystems/firmware_update_manager.py @@ -139,12 +139,13 @@ def __init__( created_at: datetime, update_id: str, complete_callback: Callable[[], Awaitable[None]], + status_cache: Optional[UpdateProgress] = None, ) -> None: """Build an _UpdateProcess. Should only be done by the manager.""" self._status_queue = Queue() self._hw_handle = hw_handle self._subsystem = subsystem - self._status_cache = None + self._status_cache = status_cache self._status_cache_lock = Lock() self._created_at = created_at self._update_id = update_id @@ -346,7 +347,12 @@ async def _complete() -> None: log.exception(f"Double pop for update on {subsystem}") self._all_updates_by_id[update_id] = _UpdateProcess( - self._hardware_handle, hw_subsystem, creation_time, update_id, _complete + self._hardware_handle, + hw_subsystem, + creation_time, + update_id, + _complete, + UpdateProgress(UpdateState.queued, 0, None), ) self._running_updates_by_subsystem[hw_subsystem] = self._all_updates_by_id[ update_id diff --git a/robot-server/tests/integration/http_api/runs/test_persistence.py b/robot-server/tests/integration/http_api/runs/test_persistence.py index 45b55202fda..943f644e8d3 100644 --- a/robot-server/tests/integration/http_api/runs/test_persistence.py +++ b/robot-server/tests/integration/http_api/runs/test_persistence.py @@ -1,3 +1,4 @@ +import json from copy import deepcopy from datetime import datetime from typing import Any, AsyncGenerator, Dict, NamedTuple, cast @@ -250,6 +251,9 @@ async def test_run_commands_persist(client_and_server: ClientServerFixture) -> N get_persisted_command_response = await client.get_run_command( run_id=run_id, command_id=command_id ) + get_preserialized_commands_response = await client.get_preserialized_commands( + run_id=run_id + ) # ensure the persisted commands still match the original ones assert get_all_persisted_commands_response.json()["data"] == [ @@ -259,6 +263,11 @@ async def test_run_commands_persist(client_and_server: ClientServerFixture) -> N ] assert get_persisted_command_response.json()["data"] == expected_command + json_converted_command = json.loads( + get_preserialized_commands_response.json()["data"][0] + ) + assert json_converted_command == expected_command + async def test_runs_completed_started_at_persist_via_actions_router( client_and_server: ClientServerFixture, diff --git a/robot-server/tests/integration/http_api/runs/test_run_queued_protocol_commands.tavern.yaml b/robot-server/tests/integration/http_api/runs/test_run_queued_protocol_commands.tavern.yaml index 0d4a0010281..9d188402deb 100644 --- a/robot-server/tests/integration/http_api/runs/test_run_queued_protocol_commands.tavern.yaml +++ b/robot-server/tests/integration/http_api/runs/test_run_queued_protocol_commands.tavern.yaml @@ -198,3 +198,19 @@ stages: createdAt: !re_search "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+\\+\\d{2}:\\d{2}$" startedAt: !re_search "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+\\+\\d{2}:\\d{2}$" completedAt: !re_search "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+\\+\\d{2}:\\d{2}$" + + - name: Get all the commands in the run as a pre-serialized list + request: + url: '{ot2_server_base_url}/runs/{run_id}/commandsAsPreSerializedList' + method: GET + response: + status_code: 200 + json: + data: + - !anystr + - !anystr + - !anystr + - !anystr + meta: + cursor: 0 + totalLength: 4 \ No newline at end of file diff --git a/robot-server/tests/integration/robot_client.py b/robot-server/tests/integration/robot_client.py index c4511f8d315..9af11d50cdb 100644 --- a/robot-server/tests/integration/robot_client.py +++ b/robot-server/tests/integration/robot_client.py @@ -220,6 +220,14 @@ async def get_run_command(self, run_id: str, command_id: str) -> Response: response.raise_for_status() return response + async def get_preserialized_commands(self, run_id: str) -> Response: + """GET /runs/:run_id/commandsAsPreSerializedList.""" + response = await self.httpx_client.get( + url=f"{self.base_url}/runs/{run_id}/commandsAsPreSerializedList", + ) + response.raise_for_status() + return response + async def post_labware_offset( self, run_id: str, diff --git a/robot-server/tests/runs/test_run_controller.py b/robot-server/tests/runs/test_run_controller.py index a844cdcc6d5..71fc92f8466 100644 --- a/robot-server/tests/runs/test_run_controller.py +++ b/robot-server/tests/runs/test_run_controller.py @@ -14,6 +14,7 @@ from opentrons.protocol_engine.types import RunTimeParameter, BooleanParameter from opentrons.protocol_runner import RunResult, JsonRunner, PythonAndLegacyRunner +from robot_server.service.notifications import RunsPublisher from robot_server.service.task_runner import TaskRunner from robot_server.runs.action_models import RunAction, RunActionType from robot_server.runs.engine_store import EngineStore @@ -41,6 +42,12 @@ def mock_task_runner(decoy: Decoy) -> TaskRunner: return decoy.mock(cls=TaskRunner) +@pytest.fixture() +def mock_runs_publisher(decoy: Decoy) -> RunsPublisher: + """Get a mock RunsPublisher.""" + return decoy.mock(cls=RunsPublisher) + + @pytest.fixture def run_id() -> str: """A run identifier value.""" @@ -90,6 +97,7 @@ def subject( mock_engine_store: EngineStore, mock_run_store: RunStore, mock_task_runner: TaskRunner, + mock_runs_publisher: RunsPublisher, ) -> RunController: """Get a RunController test subject.""" return RunController( @@ -97,6 +105,7 @@ def subject( engine_store=mock_engine_store, run_store=mock_run_store, task_runner=mock_task_runner, + runs_publisher=mock_runs_publisher, ) @@ -135,6 +144,7 @@ async def test_create_play_action_to_start( mock_engine_store: EngineStore, mock_run_store: RunStore, mock_task_runner: TaskRunner, + mock_runs_publisher: RunsPublisher, engine_state_summary: StateSummary, run_time_parameters: List[RunTimeParameter], protocol_commands: List[pe_commands.Command], @@ -181,6 +191,7 @@ async def test_create_play_action_to_start( commands=protocol_commands, run_time_parameters=run_time_parameters, ), + await mock_runs_publisher.publish_pre_serialized_commands_notification(run_id), times=1, ) diff --git a/robot-server/tests/runs/test_run_data_manager.py b/robot-server/tests/runs/test_run_data_manager.py index 547ec0a7b74..12ced28fdb0 100644 --- a/robot-server/tests/runs/test_run_data_manager.py +++ b/robot-server/tests/runs/test_run_data_manager.py @@ -23,7 +23,11 @@ from robot_server.protocols.protocol_store import ProtocolResource from robot_server.runs.engine_store import EngineStore, EngineConflictError -from robot_server.runs.run_data_manager import RunDataManager, RunNotCurrentError +from robot_server.runs.run_data_manager import ( + RunDataManager, + RunNotCurrentError, + PreSerializedCommandsNotAvailableError, +) from robot_server.runs.run_models import Run, BadRun, RunNotFoundError, RunDataError from robot_server.runs.run_store import ( RunStore, @@ -583,6 +587,7 @@ async def test_update_current( run_command: commands.Command, mock_engine_store: EngineStore, mock_run_store: RunStore, + mock_runs_publisher: RunsPublisher, subject: RunDataManager, ) -> None: """It should persist the current run and clear the engine on current=false.""" @@ -607,6 +612,10 @@ async def test_update_current( result = await subject.update(run_id=run_id, current=False) + decoy.verify( + await mock_runs_publisher.publish_pre_serialized_commands_notification(run_id), + times=1, + ) assert result == Run( current=False, id=run_resource.run_id, @@ -633,6 +642,7 @@ async def test_update_current_noop( run_command: commands.Command, mock_engine_store: EngineStore, mock_run_store: RunStore, + mock_runs_publisher: RunsPublisher, subject: RunDataManager, current: Optional[bool], ) -> None: @@ -657,6 +667,7 @@ async def test_update_current_noop( commands=matchers.Anything(), run_time_parameters=matchers.Anything(), ), + await mock_runs_publisher.publish_pre_serialized_commands_notification(run_id), times=0, ) @@ -932,6 +943,38 @@ def test_get_command_from_db_command_not_found( subject.get_command("run-id", "command-id") +def test_get_all_commands_as_preserialized_list( + decoy: Decoy, + subject: RunDataManager, + mock_run_store: RunStore, + mock_engine_store: EngineStore, +) -> None: + """It should return the pre-serialized commands list.""" + decoy.when(mock_engine_store.current_run_id).then_return(None) + decoy.when( + mock_run_store.get_all_commands_as_preserialized_list("run-id") + ).then_return(['{"id": command-1}', '{"id": command-2}']) + assert subject.get_all_commands_as_preserialized_list("run-id") == [ + '{"id": command-1}', + '{"id": command-2}', + ] + + +def test_get_all_commands_as_preserialized_list_errors_for_active_runs( + decoy: Decoy, + subject: RunDataManager, + mock_run_store: RunStore, + mock_engine_store: EngineStore, +) -> None: + """It should raise an error when fetching pre-serialized commands list while run is active.""" + decoy.when(mock_engine_store.current_run_id).then_return("current-run-id") + decoy.when( + mock_engine_store.engine.state_view.commands.get_is_terminal() + ).then_return(False) + with pytest.raises(PreSerializedCommandsNotAvailableError): + subject.get_all_commands_as_preserialized_list("current-run-id") + + async def test_get_current_run_labware_definition( decoy: Decoy, mock_engine_store: EngineStore, diff --git a/robot-server/tests/runs/test_run_store.py b/robot-server/tests/runs/test_run_store.py index c6108cf5407..ee7697107f6 100644 --- a/robot-server/tests/runs/test_run_store.py +++ b/robot-server/tests/runs/test_run_store.py @@ -734,3 +734,31 @@ def test_get_commands_slice_run_not_found(subject: RunStore) -> None: ) with pytest.raises(RunNotFoundError): subject.get_commands_slice(run_id="not-run-id", cursor=1, length=3) + + +def test_get_all_commands_as_preserialized_list( + subject: RunStore, + protocol_commands: List[pe_commands.Command], + state_summary: StateSummary, +) -> None: + """It should get all commands stored in DB as a pre-serialized list.""" + subject.insert( + run_id="run-id", + protocol_id=None, + created_at=datetime(year=2021, month=1, day=1, tzinfo=timezone.utc), + ) + subject.update_run_state( + run_id="run-id", + summary=state_summary, + commands=protocol_commands, + run_time_parameters=[], + ) + result = subject.get_all_commands_as_preserialized_list(run_id="run-id") + assert result == [ + '{"id": "pause-1", "createdAt": "2021-01-01T00:00:00", "commandType": "waitForResume",' + ' "key": "command-key", "status": "succeeded", "params": {"message": "hello world"}, "result": {}}', + '{"id": "pause-2", "createdAt": "2022-02-02T00:00:00", "commandType": "waitForResume",' + ' "key": "command-key", "status": "succeeded", "params": {"message": "hey world"}, "result": {}}', + '{"id": "pause-3", "createdAt": "2023-03-03T00:00:00", "commandType": "waitForResume",' + ' "key": "command-key", "status": "succeeded", "params": {"message": "sup world"}, "result": {}}', + ] diff --git a/robot-server/tests/service/notifications/publishers/test_runs_publisher.py b/robot-server/tests/service/notifications/publishers/test_runs_publisher.py index a889664cbee..f8fdaf0cf9f 100644 --- a/robot-server/tests/service/notifications/publishers/test_runs_publisher.py +++ b/robot-server/tests/service/notifications/publishers/test_runs_publisher.py @@ -4,7 +4,7 @@ from unittest.mock import MagicMock, AsyncMock from robot_server.service.notifications import RunsPublisher, Topics -from opentrons.protocol_engine import CurrentCommand, EngineStatus +from opentrons.protocol_engine import CurrentCommand, EngineStatus, StateSummary def mock_curent_command(command_id: str) -> CurrentCommand: @@ -17,6 +17,19 @@ def mock_curent_command(command_id: str) -> CurrentCommand: ) +def mock_state_summary(run_id: str) -> StateSummary: + return StateSummary.construct( + status=EngineStatus.FAILED, + errors=[], + labware=[], + pipettes=[], + modules=[], + labwareOffsets=[], + startedAt=None, + completedAt=datetime(year=2021, month=1, day=1), + ) + + @pytest.fixture def notification_client() -> AsyncMock: """Mocked notification client.""" @@ -80,6 +93,12 @@ async def test_clean_up_current_run( notification_client.publish_advise_unsubscribe_async.assert_any_await( topic=f"{Topics.RUNS}/1234" ) + notification_client.publish_advise_unsubscribe_async.assert_any_await( + topic=Topics.RUNS_CURRENT_COMMAND + ) + notification_client.publish_advise_unsubscribe_async.assert_any_await( + topic=f"{Topics.RUNS_PRE_SERIALIZED_COMMANDS}/1234" + ) @pytest.mark.asyncio @@ -143,3 +162,24 @@ async def test_handle_engine_status_change( notification_client.publish_advise_refetch_async.assert_any_await( topic=f"{Topics.RUNS}/1234" ) + + +async def test_publish_pre_serialized_commannds_notif( + runs_publisher: RunsPublisher, notification_client: AsyncMock +) -> None: + """It should send out a notification for pre serialized commands.""" + await runs_publisher.initialize( + "1234", lambda _: mock_curent_command("command1"), AsyncMock() + ) + + assert runs_publisher._run_hooks + assert runs_publisher._engine_state_slice + assert notification_client.publish_advise_refetch_async.call_count == 2 + + await runs_publisher.publish_pre_serialized_commands_notification(run_id="1234") + + assert notification_client.publish_advise_refetch_async.call_count == 3 + + notification_client.publish_advise_refetch_async.assert_any_await( + topic=f"{Topics.RUNS_PRE_SERIALIZED_COMMANDS}/1234" + ) diff --git a/robot-server/tests/service/notifications/test_publisher_notifier.py b/robot-server/tests/service/notifications/test_publisher_notifier.py index 125cfdd1806..02ee12f3ee6 100644 --- a/robot-server/tests/service/notifications/test_publisher_notifier.py +++ b/robot-server/tests/service/notifications/test_publisher_notifier.py @@ -1,15 +1,16 @@ import asyncio from unittest.mock import Mock, MagicMock +from opentrons.util.change_notifier import ChangeNotifier + from robot_server.service.notifications import ( PublisherNotifier, - ChangeNotifier, ) async def test_initialize() -> None: """It should create a new task.""" - publisher_notifier = PublisherNotifier() + publisher_notifier = PublisherNotifier(ChangeNotifier()) await publisher_notifier._initialize() @@ -28,7 +29,7 @@ def test_notify_publishers() -> None: def test_register_publish_callbacks() -> None: """It should extend the list of callbacks within a given list of callbacks.""" - publisher_notifier = PublisherNotifier() + publisher_notifier = PublisherNotifier(ChangeNotifier()) callback1 = Mock() callback2 = Mock() diff --git a/setup-vitest.ts b/setup-vitest.ts index eb30f021428..4488cc17bf6 100644 --- a/setup-vitest.ts +++ b/setup-vitest.ts @@ -7,7 +7,16 @@ vi.mock('electron-store') vi.mock('electron-updater') vi.mock('electron') vi.mock('./app/src/redux/shell/remote') -vi.mock('./app/src/resources/useNotifyService') +vi.mock('./app/src/resources/useNotifyService', async () => { + const actual = await vi.importActual('./app/src/resources/useNotifyService') + return { + ...actual, + useNotifyService: () => ({ + notifyOnSettled: vi.fn(), + isNotifyEnabled: true, + }), + } +}) process.env.OT_PD_VERSION = 'fake_PD_version' global._PKG_VERSION_ = 'test environment' diff --git a/shared-data/js/constants.ts b/shared-data/js/constants.ts index aaef2eb2430..71b4813c07e 100644 --- a/shared-data/js/constants.ts +++ b/shared-data/js/constants.ts @@ -345,24 +345,7 @@ export const MAGNETIC_BLOCK_C3_ADDRESSABLE_AREA: 'magneticBlockV1C3' = export const MAGNETIC_BLOCK_D3_ADDRESSABLE_AREA: 'magneticBlockV1D3' = 'magneticBlockV1D3' -export const FLEX_MODULE_ADDRESSABLE_AREAS: AddressableAreaName[] = [ - THERMOCYCLER_ADDRESSABLE_AREA, - HEATERSHAKER_A1_ADDRESSABLE_AREA, - HEATERSHAKER_B1_ADDRESSABLE_AREA, - HEATERSHAKER_C1_ADDRESSABLE_AREA, - HEATERSHAKER_D1_ADDRESSABLE_AREA, - HEATERSHAKER_A3_ADDRESSABLE_AREA, - HEATERSHAKER_B3_ADDRESSABLE_AREA, - HEATERSHAKER_C3_ADDRESSABLE_AREA, - HEATERSHAKER_D3_ADDRESSABLE_AREA, - TEMPERATURE_MODULE_A1_ADDRESSABLE_AREA, - TEMPERATURE_MODULE_B1_ADDRESSABLE_AREA, - TEMPERATURE_MODULE_C1_ADDRESSABLE_AREA, - TEMPERATURE_MODULE_D1_ADDRESSABLE_AREA, - TEMPERATURE_MODULE_A3_ADDRESSABLE_AREA, - TEMPERATURE_MODULE_B3_ADDRESSABLE_AREA, - TEMPERATURE_MODULE_C3_ADDRESSABLE_AREA, - TEMPERATURE_MODULE_D3_ADDRESSABLE_AREA, +export const MAGNETIC_BLOCK_ADDRESSABLE_AREAS: AddressableAreaName[] = [ MAGNETIC_BLOCK_A1_ADDRESSABLE_AREA, MAGNETIC_BLOCK_B1_ADDRESSABLE_AREA, MAGNETIC_BLOCK_C1_ADDRESSABLE_AREA, @@ -377,6 +360,39 @@ export const FLEX_MODULE_ADDRESSABLE_AREAS: AddressableAreaName[] = [ MAGNETIC_BLOCK_D3_ADDRESSABLE_AREA, ] +export const TEMPERATURE_MODULE_ADDRESSABLE_AREAS: AddressableAreaName[] = [ + TEMPERATURE_MODULE_A1_ADDRESSABLE_AREA, + TEMPERATURE_MODULE_B1_ADDRESSABLE_AREA, + TEMPERATURE_MODULE_C1_ADDRESSABLE_AREA, + TEMPERATURE_MODULE_D1_ADDRESSABLE_AREA, + TEMPERATURE_MODULE_A3_ADDRESSABLE_AREA, + TEMPERATURE_MODULE_B3_ADDRESSABLE_AREA, + TEMPERATURE_MODULE_C3_ADDRESSABLE_AREA, + TEMPERATURE_MODULE_D3_ADDRESSABLE_AREA, +] + +export const HEATERSHAKER_ADDRESSABLE_AREAS: AddressableAreaName[] = [ + HEATERSHAKER_A1_ADDRESSABLE_AREA, + HEATERSHAKER_B1_ADDRESSABLE_AREA, + HEATERSHAKER_C1_ADDRESSABLE_AREA, + HEATERSHAKER_D1_ADDRESSABLE_AREA, + HEATERSHAKER_A3_ADDRESSABLE_AREA, + HEATERSHAKER_B3_ADDRESSABLE_AREA, + HEATERSHAKER_C3_ADDRESSABLE_AREA, + HEATERSHAKER_D3_ADDRESSABLE_AREA, +] + +export const FLEX_USB_MODULE_ADDRESSABLE_AREAS: AddressableAreaName[] = [ + THERMOCYCLER_ADDRESSABLE_AREA, + ...HEATERSHAKER_ADDRESSABLE_AREAS, + ...TEMPERATURE_MODULE_ADDRESSABLE_AREAS, +] + +export const FLEX_MODULE_ADDRESSABLE_AREAS: AddressableAreaName[] = [ + ...FLEX_USB_MODULE_ADDRESSABLE_AREAS, + ...MAGNETIC_BLOCK_ADDRESSABLE_AREAS, +] + export const ADDRESSABLE_AREA_1: '1' = '1' export const ADDRESSABLE_AREA_2: '2' = '2' export const ADDRESSABLE_AREA_3: '3' = '3' @@ -485,6 +501,18 @@ export const MODULE_FIXTURES_BY_MODEL: { ], } +export const FLEX_USB_MODULE_FIXTURES: CutoutFixtureId[] = [ + HEATERSHAKER_MODULE_V1_FIXTURE, + TEMPERATURE_MODULE_V2_FIXTURE, + THERMOCYCLER_V2_REAR_FIXTURE, + THERMOCYCLER_V2_FRONT_FIXTURE, +] + +export const MAGNETIC_BLOCK_FIXTURES: CutoutFixtureId[] = [ + MAGNETIC_BLOCK_V1_FIXTURE, + STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE, +] + export const SINGLE_SLOT_FIXTURES: CutoutFixtureId[] = [ SINGLE_LEFT_SLOT_FIXTURE, SINGLE_CENTER_SLOT_FIXTURE, diff --git a/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts b/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts index 928a3eb281e..d24ed0a4c21 100644 --- a/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts +++ b/step-generation/src/__tests__/dispenseUpdateLiquidState.test.ts @@ -8,7 +8,12 @@ import merge from 'lodash/merge' import omit from 'lodash/omit' import produce from 'immer' import { createEmptyLiquidState, createTipLiquidState } from '../utils' -import { makeContext, DEFAULT_PIPETTE, SOURCE_LABWARE } from '../fixtures' +import { + makeContext, + DEFAULT_PIPETTE, + SOURCE_LABWARE, + getInitialRobotStateStandard, +} from '../fixtures' import { dispenseUpdateLiquidState, @@ -33,6 +38,10 @@ beforeEach(() => { useFullVolume: false, labwareId: SOURCE_LABWARE, wellName: 'A1', + robotStateAndWarnings: { + robotState: getInitialRobotStateStandard(invariantContext), + warnings: [], + }, } }) @@ -396,6 +405,10 @@ describe('...8-channel pipette', () => { useFullVolume: false, volume: 150, wellName: 'A1', + robotStateAndWarnings: { + robotState: getInitialRobotStateStandard(invariantContext), + warnings: [], + }, }, initialLiquidState ) diff --git a/step-generation/src/commandCreators/atomic/aspirate.ts b/step-generation/src/commandCreators/atomic/aspirate.ts index d7226da3387..c429f7ed24c 100644 --- a/step-generation/src/commandCreators/atomic/aspirate.ts +++ b/step-generation/src/commandCreators/atomic/aspirate.ts @@ -41,6 +41,7 @@ export const aspirate: CommandCreator = ( yOffset, } = args const actionName = 'aspirate' + const labwareState = prevRobotState.labware const errors: CommandCreatorError[] = [] const pipetteSpec = invariantContext.pipetteEntities[pipette]?.spec const isFlexPipette = @@ -75,6 +76,13 @@ export const aspirate: CommandCreator = ( if (COLUMN_4_SLOTS.includes(slotName)) { errors.push(errorCreators.pipettingIntoColumn4({ typeOfStep: actionName })) + } else if (labwareState[slotName] != null) { + const adapterSlot = labwareState[slotName].slot + if (COLUMN_4_SLOTS.includes(adapterSlot)) { + errors.push( + errorCreators.pipettingIntoColumn4({ typeOfStep: actionName }) + ) + } } if ( diff --git a/step-generation/src/commandCreators/atomic/blowout.ts b/step-generation/src/commandCreators/atomic/blowout.ts index ff3be46d786..b56c57fc9db 100644 --- a/step-generation/src/commandCreators/atomic/blowout.ts +++ b/step-generation/src/commandCreators/atomic/blowout.ts @@ -15,6 +15,7 @@ export const blowout: CommandCreator = ( const actionName = 'blowout' const errors: CommandCreatorError[] = [] const pipetteData = prevRobotState.pipettes[pipetteId] + const labwareState = prevRobotState.labware const slotName = getLabwareSlot( labwareId, prevRobotState.labware, @@ -56,6 +57,13 @@ export const blowout: CommandCreator = ( if (COLUMN_4_SLOTS.includes(slotName)) { errors.push(errorCreators.pipettingIntoColumn4({ typeOfStep: actionName })) + } else if (labwareState[slotName] != null) { + const adapterSlot = labwareState[slotName].slot + if (COLUMN_4_SLOTS.includes(adapterSlot)) { + errors.push( + errorCreators.pipettingIntoColumn4({ typeOfStep: actionName }) + ) + } } if (errors.length > 0) { diff --git a/step-generation/src/commandCreators/atomic/dispense.ts b/step-generation/src/commandCreators/atomic/dispense.ts index 2bec571bd6e..8523eab1f84 100644 --- a/step-generation/src/commandCreators/atomic/dispense.ts +++ b/step-generation/src/commandCreators/atomic/dispense.ts @@ -38,6 +38,7 @@ export const dispense: CommandCreator = ( yOffset, } = args const actionName = 'dispense' + const labwareState = prevRobotState.labware const errors: CommandCreatorError[] = [] const pipetteSpec = invariantContext.pipetteEntities[pipette]?.spec const isFlexPipette = @@ -93,6 +94,13 @@ export const dispense: CommandCreator = ( if (COLUMN_4_SLOTS.includes(slotName)) { errors.push(errorCreators.pipettingIntoColumn4({ typeOfStep: actionName })) + } else if (labwareState[slotName] != null) { + const adapterSlot = labwareState[slotName].slot + if (COLUMN_4_SLOTS.includes(adapterSlot)) { + errors.push( + errorCreators.pipettingIntoColumn4({ typeOfStep: actionName }) + ) + } } if ( diff --git a/step-generation/src/commandCreators/atomic/moveToWell.ts b/step-generation/src/commandCreators/atomic/moveToWell.ts index e16f1cff417..920d86daffc 100644 --- a/step-generation/src/commandCreators/atomic/moveToWell.ts +++ b/step-generation/src/commandCreators/atomic/moveToWell.ts @@ -26,6 +26,7 @@ export const moveToWell: CommandCreator = ( const { pipette, labware, well, offset, minimumZHeight, forceDirect } = args const actionName = 'moveToWell' const errors: CommandCreatorError[] = [] + const labwareState = prevRobotState.labware // TODO(2020-07-30, IL): the below is duplicated or at least similar // across aspirate/dispense/blowout, we can probably DRY it up const pipetteSpec = invariantContext.pipetteEntities[pipette]?.spec @@ -63,6 +64,13 @@ export const moveToWell: CommandCreator = ( errors.push( errorCreators.pipettingIntoColumn4({ typeOfStep: 'move to well' }) ) + } else if (labwareState[slotName] != null) { + const adapterSlot = labwareState[slotName].slot + if (COLUMN_4_SLOTS.includes(adapterSlot)) { + errors.push( + errorCreators.pipettingIntoColumn4({ typeOfStep: actionName }) + ) + } } if ( diff --git a/step-generation/src/commandCreators/atomic/replaceTip.ts b/step-generation/src/commandCreators/atomic/replaceTip.ts index 7aae3b98be1..856b89c9e30 100644 --- a/step-generation/src/commandCreators/atomic/replaceTip.ts +++ b/step-generation/src/commandCreators/atomic/replaceTip.ts @@ -39,6 +39,13 @@ const _pickUpTip: CommandCreator = ( errors.push( errorCreators.pipettingIntoColumn4({ typeOfStep: 'pick up tip' }) ) + } else if (prevRobotState.labware[tiprackSlot] != null) { + const adapterSlot = prevRobotState.labware[tiprackSlot].slot + if (COLUMN_4_SLOTS.includes(adapterSlot)) { + errors.push( + errorCreators.pipettingIntoColumn4({ typeOfStep: 'pick up tip' }) + ) + } } if (errors.length > 0) { diff --git a/step-generation/src/commandCreators/compound/mix.ts b/step-generation/src/commandCreators/compound/mix.ts index 734be8c1a39..317613c1524 100644 --- a/step-generation/src/commandCreators/compound/mix.ts +++ b/step-generation/src/commandCreators/compound/mix.ts @@ -178,8 +178,6 @@ export const mix: CommandCreator = ( return { errors: [errorCreators.dropTipLocationDoesNotExist()] } } - console.log(invariantContext.pipetteEntities[pipette]) - if (is96Channel && data.nozzles === COLUMN) { const isAspirateSafePipetteMovement = getIsSafePipetteMovement( prevRobotState, diff --git a/step-generation/src/getNextRobotStateAndWarnings/dispenseUpdateLiquidState.ts b/step-generation/src/getNextRobotStateAndWarnings/dispenseUpdateLiquidState.ts index cf27f155d05..84d26e219c1 100644 --- a/step-generation/src/getNextRobotStateAndWarnings/dispenseUpdateLiquidState.ts +++ b/step-generation/src/getNextRobotStateAndWarnings/dispenseUpdateLiquidState.ts @@ -1,6 +1,6 @@ -import assert from 'assert' import mapValues from 'lodash/mapValues' import reduce from 'lodash/reduce' +import { COLUMN } from '@opentrons/shared-data' import { splitLiquid, mergeLiquid, @@ -12,7 +12,9 @@ import type { InvariantContext, LocationLiquidState, SourceAndDest, + RobotStateAndWarnings, } from '../types' + type LiquidState = RobotState['liquidState'] export interface DispenseUpdateLiquidStateArgs { invariantContext: InvariantContext @@ -20,6 +22,7 @@ export interface DispenseUpdateLiquidStateArgs { pipetteId: string // volume value is required when useFullVolume is false useFullVolume: boolean + robotStateAndWarnings: RobotStateAndWarnings wellName?: string labwareId?: string volume?: number @@ -30,6 +33,7 @@ export function dispenseUpdateLiquidState( args: DispenseUpdateLiquidStateArgs ): void { const { + robotStateAndWarnings, invariantContext, labwareId, pipetteId, @@ -39,6 +43,8 @@ export function dispenseUpdateLiquidState( wellName, } = args const pipetteSpec = invariantContext.pipetteEntities[pipetteId].spec + const nozzles = robotStateAndWarnings.robotState.pipettes[pipetteId].nozzles + const channels = nozzles === COLUMN ? 8 : pipetteSpec.channels const trashId = Object.values( invariantContext.additionalEquipmentEntities ).find(aE => aE.name === 'wasteChute' || aE.name === 'trashBin')?.id @@ -59,17 +65,17 @@ export function dispenseUpdateLiquidState( const labwareDef = labwareId != null ? invariantContext.labwareEntities[labwareId].def : null - assert( + console.assert( !(useFullVolume && typeof volume === 'number'), 'dispenseUpdateLiquidState takes either `volume` or `useFullVolume`, but got both' ) - assert( + console.assert( typeof volume === 'number' || useFullVolume, 'in dispenseUpdateLiquidState, either volume or useFullVolume are required' ) const { wellsForTips, allWellsShared } = labwareDef != null && wellName != null - ? getWellsForTips(pipetteSpec.channels, labwareDef, wellName) + ? getWellsForTips(channels, labwareDef, wellName) : { wellsForTips: null, allWellsShared: true } const liquidLabware = diff --git a/step-generation/src/getNextRobotStateAndWarnings/forAspirate.ts b/step-generation/src/getNextRobotStateAndWarnings/forAspirate.ts index 62cd0348ded..e8572dd77fc 100644 --- a/step-generation/src/getNextRobotStateAndWarnings/forAspirate.ts +++ b/step-generation/src/getNextRobotStateAndWarnings/forAspirate.ts @@ -1,4 +1,3 @@ -import assert from 'assert' import range from 'lodash/range' import isEmpty from 'lodash/isEmpty' import uniq from 'lodash/uniq' @@ -32,7 +31,7 @@ export function forAspirate( params.wellName ) - assert( + console.assert( // @ts-expect-error (sa, 2021-05-03): this assert is unnecessary uniq(wellsForTips).length === allWellsShared ? 1 : wellsForTips.length, `expected all wells to be shared, or no wells to be shared. Got: ${JSON.stringify( diff --git a/step-generation/src/getNextRobotStateAndWarnings/forBlowout.ts b/step-generation/src/getNextRobotStateAndWarnings/forBlowout.ts index 2bcffe0bc23..13a2470854e 100644 --- a/step-generation/src/getNextRobotStateAndWarnings/forBlowout.ts +++ b/step-generation/src/getNextRobotStateAndWarnings/forBlowout.ts @@ -15,5 +15,6 @@ export function forBlowout( wellName, prevLiquidState: robotState.liquidState, invariantContext, + robotStateAndWarnings, }) } diff --git a/step-generation/src/getNextRobotStateAndWarnings/forDispense.ts b/step-generation/src/getNextRobotStateAndWarnings/forDispense.ts index 8b08591ea84..6ffaa3da814 100644 --- a/step-generation/src/getNextRobotStateAndWarnings/forDispense.ts +++ b/step-generation/src/getNextRobotStateAndWarnings/forDispense.ts @@ -16,5 +16,6 @@ export function forDispense( useFullVolume: false, volume, wellName, + robotStateAndWarnings, }) } diff --git a/step-generation/src/getNextRobotStateAndWarnings/forDropTip.ts b/step-generation/src/getNextRobotStateAndWarnings/forDropTip.ts index 7ada991f2e4..d389b50f9ff 100644 --- a/step-generation/src/getNextRobotStateAndWarnings/forDropTip.ts +++ b/step-generation/src/getNextRobotStateAndWarnings/forDropTip.ts @@ -20,6 +20,7 @@ export function forDropTip( labwareId, useFullVolume: true, wellName, + robotStateAndWarnings, }) robotState.tipState.pipettes[pipetteId] = false } diff --git a/step-generation/src/getNextRobotStateAndWarnings/inPlaceCommandUpdates.ts b/step-generation/src/getNextRobotStateAndWarnings/inPlaceCommandUpdates.ts index e14b1b37344..18cb8ead615 100644 --- a/step-generation/src/getNextRobotStateAndWarnings/inPlaceCommandUpdates.ts +++ b/step-generation/src/getNextRobotStateAndWarnings/inPlaceCommandUpdates.ts @@ -27,6 +27,7 @@ export const forDispenseInPlace = ( prevLiquidState: robotState.liquidState, useFullVolume: false, volume, + robotStateAndWarnings, }) } @@ -42,6 +43,7 @@ export const forBlowOutInPlace = ( pipetteId, prevLiquidState: robotState.liquidState, useFullVolume: true, + robotStateAndWarnings, }) } @@ -59,5 +61,6 @@ export const forDropTipInPlace = ( prevLiquidState: robotState.liquidState, pipetteId, useFullVolume: true, + robotStateAndWarnings, }) } diff --git a/step-generation/src/robotStateSelectors.ts b/step-generation/src/robotStateSelectors.ts index b9dc676275d..6f0e17bfef1 100644 --- a/step-generation/src/robotStateSelectors.ts +++ b/step-generation/src/robotStateSelectors.ts @@ -1,4 +1,3 @@ -import assert from 'assert' // TODO: Ian 2019-04-18 move orderWells somewhere more general -- shared-data util? import min from 'lodash/min' import { @@ -77,7 +76,10 @@ export function _getNextTip(args: { return allWellsHaveTip ? orderedWells[0] : null } - assert(false, `Pipette ${pipetteId} has no channels/spec, cannot _getNextTip`) + console.assert( + false, + `Pipette ${pipetteId} has no channels/spec, cannot _getNextTip` + ) return null } interface NextTiprackInfo { @@ -110,7 +112,7 @@ export function getNextTiprack( // filter out unmounted or non-compatible tiprack models const sortedTipracksIds = sortLabwareBySlot(robotState.labware).filter( labwareId => { - assert( + console.assert( invariantContext.labwareEntities[labwareId]?.labwareDefURI, `cannot getNextTiprack, no labware entity for "${labwareId}"` ) @@ -202,7 +204,7 @@ export function getPipetteWithTipMaxVol( const tiprackTipVol = getTiprackVolume(chosenTipRack ?? tiprackDef[0]) if (!pipetteMaxVol || !tiprackTipVol) { - assert( + console.assert( false, `getPipetteEffectiveMaxVol expected tiprackMaxVol and pipette maxVolume to be > 0, got', ${pipetteMaxVol}, ${tiprackTipVol}` diff --git a/system-server/system_server/system/oem_mode/router.py b/system-server/system_server/system/oem_mode/router.py index 0f3b9aa52f4..1b7119b6127 100644 --- a/system-server/system_server/system/oem_mode/router.py +++ b/system-server/system_server/system/oem_mode/router.py @@ -1,5 +1,6 @@ """Router for /system/register endpoint.""" +import re import os import filetype # type: ignore[import-untyped] from fastapi import ( @@ -11,11 +12,16 @@ File, HTTPException, ) +from pathlib import Path from .models import EnableOEMMode from ...settings import SystemServerSettings, get_settings, save_settings +# regex to sanitize the filename +FILENAME_REGEX = re.compile(r"[^a-zA-Z0-9-.]") + + oem_mode_router = APIRouter() @@ -78,7 +84,7 @@ async def upload_splash_image( # Get the file info file_info = filetype.guess(file.file) - if file_info is None: + if file_info is None or not file.filename: raise HTTPException( status_code=status.HTTP_415_UNSUPPORTED_MEDIA_TYPE, detail="Unable to determine file type", @@ -115,8 +121,12 @@ async def upload_splash_image( if settings.oem_mode_splash_custom: os.unlink(settings.oem_mode_splash_custom) + # sanitize the filename + sanatized_filename = FILENAME_REGEX.sub("_", file.filename) + filename = f"{Path(sanatized_filename).stem}.{content_type}" + # file is valid, save to final location - filepath = f"{settings.persistence_directory}/{file.filename}" + filepath = f"{settings.persistence_directory}/{filename}" with open(filepath, "wb+") as f: f.write(file.file.read()) diff --git a/test-data-generation/Makefile b/test-data-generation/Makefile index 03c881dbf89..a4818b00ab1 100644 --- a/test-data-generation/Makefile +++ b/test-data-generation/Makefile @@ -29,4 +29,9 @@ wheel: .PHONY: test test: - $(pytest) tests -vvv \ No newline at end of file + $(pytest) tests \ + -s \ + --hypothesis-show-statistics \ + --hypothesis-verbosity=normal \ + --hypothesis-explain \ + -vvv \ No newline at end of file diff --git a/test-data-generation/src/test_data_generation/__init__.py b/test-data-generation/src/test_data_generation/__init__.py new file mode 100644 index 00000000000..45f2dcce037 --- /dev/null +++ b/test-data-generation/src/test_data_generation/__init__.py @@ -0,0 +1 @@ +"""Test data generation.""" diff --git a/test-data-generation/src/test_data_generation/deck_configuration/__init__.py b/test-data-generation/src/test_data_generation/deck_configuration/__init__.py new file mode 100644 index 00000000000..616f424694c --- /dev/null +++ b/test-data-generation/src/test_data_generation/deck_configuration/__init__.py @@ -0,0 +1 @@ +"""Test data generation for deck configuration tests.""" diff --git a/test-data-generation/src/test_data_generation/deck_configuration/datashapes.py b/test-data-generation/src/test_data_generation/deck_configuration/datashapes.py new file mode 100644 index 00000000000..94cf907e308 --- /dev/null +++ b/test-data-generation/src/test_data_generation/deck_configuration/datashapes.py @@ -0,0 +1,299 @@ +"""Data shapes for the deck configuration of a Flex.""" + +import enum +import dataclasses +import typing + +ColumnName = typing.Literal["1", "2", "3"] +RowName = typing.Literal["a", "b", "c", "d"] +SlotName = typing.Literal[ + "a1", "a2", "a3", "b1", "b2", "b3", "c1", "c2", "c3", "d1", "d2", "d3" +] + + +class PossibleSlotContents(enum.Enum): + """Possible contents of a slot on a Flex.""" + + # Implicitly defined fixtures + THERMOCYCLER_MODULE = enum.auto() + WASTE_CHUTE = enum.auto() + WASTE_CHUTE_NO_COVER = enum.auto() + STAGING_AREA = enum.auto() + STAGING_AREA_WITH_WASTE_CHUTE = enum.auto() + STAGING_AREA_WITH_WASTE_CHUTE_NO_COVER = enum.auto() + STAGING_AREA_WITH_MAGNETIC_BLOCK = enum.auto() + + # Explicitly defined fixtures + MAGNETIC_BLOCK_MODULE = enum.auto() + TEMPERATURE_MODULE = enum.auto() + HEATER_SHAKER_MODULE = enum.auto() + TRASH_BIN = enum.auto() + + # Other + LABWARE_SLOT = enum.auto() + + @classmethod + def longest_string(cls) -> int: + """Return the longest string representation of the slot content.""" + length = max([len(e.name) for e in PossibleSlotContents]) + return length if length % 2 == 0 else length + 1 + + def __str__(self) -> str: + """Return a string representation of the slot content.""" + return f"{self.name.replace('_', ' ')}" + + @classmethod + def all(cls) -> typing.List["PossibleSlotContents"]: + """Return all possible slot contents.""" + return list(cls) + + @property + def modules(self) -> typing.List["PossibleSlotContents"]: + """Return the modules.""" + return [ + PossibleSlotContents.THERMOCYCLER_MODULE, + PossibleSlotContents.MAGNETIC_BLOCK_MODULE, + PossibleSlotContents.TEMPERATURE_MODULE, + PossibleSlotContents.HEATER_SHAKER_MODULE, + ] + + @property + def staging_areas(self) -> typing.List["PossibleSlotContents"]: + """Return the staging areas.""" + return [ + PossibleSlotContents.STAGING_AREA, + PossibleSlotContents.STAGING_AREA_WITH_WASTE_CHUTE, + PossibleSlotContents.STAGING_AREA_WITH_WASTE_CHUTE_NO_COVER, + PossibleSlotContents.STAGING_AREA_WITH_MAGNETIC_BLOCK, + ] + + @property + def waste_chutes(self) -> typing.List["PossibleSlotContents"]: + """Return the waste chutes.""" + return [ + PossibleSlotContents.WASTE_CHUTE, + PossibleSlotContents.WASTE_CHUTE_NO_COVER, + PossibleSlotContents.STAGING_AREA_WITH_WASTE_CHUTE, + PossibleSlotContents.STAGING_AREA_WITH_WASTE_CHUTE_NO_COVER, + ] + + def is_one_of(self, contents: typing.List["PossibleSlotContents"]) -> bool: + """Return True if the slot contains one of the contents.""" + return any([self is content for content in contents]) + + def is_a_module(self) -> bool: + """Return True if the slot contains a module.""" + return self.is_one_of(self.modules) + + def is_module_or_trash_bin(self) -> bool: + """Return True if the slot contains a module or trash bin.""" + return self.is_one_of(self.modules + [PossibleSlotContents.TRASH_BIN]) + + def is_a_staging_area(self) -> bool: + """Return True if the slot contains a staging area.""" + return self.is_one_of(self.staging_areas) + + def is_a_waste_chute(self) -> bool: + """Return True if the slot contains a waste chute.""" + return self.is_one_of(self.waste_chutes) + + +@dataclasses.dataclass +class Slot: + """A slot on a Flex.""" + + row: RowName + col: ColumnName + contents: PossibleSlotContents + + def __str__(self) -> str: + """Return a string representation of the slot.""" + return f"{(self.row + self.col).center(self.contents.longest_string())}{self.contents}" + + @property + def __label(self) -> SlotName: + """Return the slot label.""" + return typing.cast(SlotName, f"{self.row}{self.col}") + + @property + def slot_label_string(self) -> str: + """Return the slot label.""" + return f"{self.__label.center(self.contents.longest_string())}" + + @property + def contents_string(self) -> str: + """Return the slot contents.""" + return f"{str(self.contents).center(self.contents.longest_string())}" + + +@dataclasses.dataclass +class Row: + """A row of slots on a Flex.""" + + row: RowName + + col1: Slot + col2: Slot + col3: Slot + + def __str__(self) -> str: + """Return a string representation of the row.""" + return f"{self.col1}{self.col2}{self.col3}" + + def slot_by_col_number(self, name: ColumnName) -> Slot: + """Return the slot by name.""" + return getattr(self, f"col{name}") # type: ignore + + @property + def slots(self) -> typing.List[Slot]: + """Iterate over the slots in the row.""" + return [self.col1, self.col2, self.col3] + + def __len__(self) -> int: + """Return the number of slots in the row.""" + return len(self.slots) + + def update_slot(self, slot: Slot) -> None: + """Update the slot in the row.""" + setattr(self, f"col{slot.col}", slot) + + +@dataclasses.dataclass +class Column: + """A column of slots on a Flex.""" + + col: ColumnName + + a: Slot + b: Slot + c: Slot + d: Slot + + def __str__(self) -> str: + """Return a string representation of the column.""" + return f"{self.a}{self.b}{self.c}{self.d}" + + @property + def slots(self) -> typing.List[Slot]: + """Return the slots in the column.""" + return [self.a, self.b, self.c, self.d] + + def slot_by_row(self, name: RowName) -> Slot: + """Return the slot by name.""" + return getattr(self, f"{name}") # type: ignore + + def number_of(self, contents: PossibleSlotContents) -> int: + """Return the number of slots with the contents.""" + return len([True for slot in self.slots if slot.contents is contents]) + + def slot_above(self, slot: Slot) -> typing.Optional[Slot]: + """Return the slot above the passed slot.""" + index = self.slots.index(slot) + if index == 0: + return None + return self.slots[index - 1] + + def slot_below(self, slot: Slot) -> typing.Optional[Slot]: + """Return the slot below the passed slot.""" + index = self.slots.index(slot) + if index == 3: + return None + return self.slots[index + 1] + + +@dataclasses.dataclass +class DeckConfiguration: + """The deck on a Flex.""" + + a: Row + b: Row + c: Row + d: Row + + def __str__(self) -> str: + """Return a string representation of the deck.""" + string_list = [] + dashed_line = "-" * (PossibleSlotContents.longest_string() * 3) + equal_line = "=" * (PossibleSlotContents.longest_string() * 3) + for row in self.rows: + string_list.append( + " | ".join([slot.slot_label_string for slot in row.slots]) + ) + string_list.append(" | ".join([slot.contents_string for slot in row.slots])) + if row != self.d: + string_list.append(dashed_line) + joined_string = "\n".join(string_list) + + return f"\n{joined_string}\n\n{equal_line}" + + def __hash__(self) -> int: + """Return the hash of the deck.""" + return hash(tuple(slot.contents.value for slot in self.slots)) + + def __eq__(self, other: typing.Any) -> bool: + """Return True if the deck is equal to the other deck.""" + if not isinstance(other, DeckConfiguration): + return False + return all( + slot.contents == other_slot.contents + for slot in self.slots + for other_slot in other.slots + ) + + @classmethod + def from_cols(cls, col1: Column, col2: Column, col3: Column) -> "DeckConfiguration": + """Create a deck configuration from columns.""" + return cls( + a=Row("a", col1.a, col2.a, col3.a), + b=Row("b", col1.b, col2.b, col3.b), + c=Row("c", col1.c, col2.c, col3.c), + d=Row("d", col1.d, col2.d, col3.d), + ) + + @property + def rows(self) -> typing.List[Row]: + """Return the rows of the deck.""" + return [self.a, self.b, self.c, self.d] + + def row_by_name(self, name: RowName) -> Row: + """Return the row by name.""" + return getattr(self, name) # type: ignore + + @property + def slots(self) -> typing.List[Slot]: + """Return the slots of the deck.""" + return [slot for row in self.rows for slot in row.slots] + + def slot_above(self, slot: Slot) -> typing.Optional[Slot]: + """Return the slot above the passed slot.""" + row_index = self.rows.index(self.row_by_name(slot.row)) + if row_index == 0: + return None + return self.rows[row_index - 1].slot_by_col_number(slot.col) + + def slot_below(self, slot: Slot) -> typing.Optional[Slot]: + """Return the slot below the passed slot.""" + row_index = self.rows.index(self.row_by_name(slot.row)) + if row_index == 3: + return None + return self.rows[row_index + 1].slot_by_col_number(slot.col) + + def number_of(self, contents: PossibleSlotContents) -> int: + """Return the number of slots with the contents.""" + return len([True for slot in self.slots if slot.contents is contents]) + + def override_with_column(self, column: Column) -> None: + """Override the deck configuration with the column.""" + for row in self.rows: + new_value = column.slot_by_row(row.row) + row.update_slot(new_value) + + def column_by_number(self, number: ColumnName) -> Column: + """Return the column by number.""" + return Column( + col=number, + a=self.a.slot_by_col_number(number), + b=self.b.slot_by_col_number(number), + c=self.c.slot_by_col_number(number), + d=self.d.slot_by_col_number(number), + ) diff --git a/test-data-generation/src/test_data_generation/deck_configuration/strategy/final_strategies.py b/test-data-generation/src/test_data_generation/deck_configuration/strategy/final_strategies.py new file mode 100644 index 00000000000..9bf70180f96 --- /dev/null +++ b/test-data-generation/src/test_data_generation/deck_configuration/strategy/final_strategies.py @@ -0,0 +1,81 @@ +"""Test data generation for deck configuration tests.""" +from hypothesis import assume, strategies as st +from test_data_generation.deck_configuration.datashapes import ( + Column, + DeckConfiguration, + Slot, + PossibleSlotContents as PSC, +) + +from test_data_generation.deck_configuration.strategy.helper_strategies import a_column + + +def _above_or_below_is_module_or_trash(col: Column, slot: Slot) -> bool: + """Return True if the deck has a module above or below the specified slot.""" + above = col.slot_above(slot) + below = col.slot_below(slot) + + return (above is not None and above.contents.is_module_or_trash_bin()) or ( + below is not None and below.contents.is_module_or_trash_bin() + ) + + +@st.composite +def a_deck_configuration_with_a_module_or_trash_slot_above_or_below_a_heater_shaker( + draw: st.DrawFn, +) -> DeckConfiguration: + """Generate a deck with a module or trash bin fixture above or below a heater shaker.""" + deck = draw( + st.builds( + DeckConfiguration.from_cols, + col1=a_column("1"), + col2=a_column( + "2", content_options=[PSC.LABWARE_SLOT, PSC.MAGNETIC_BLOCK_MODULE] + ), + col3=a_column("3"), + ) + ) + column = deck.column_by_number(draw(st.sampled_from(["1", "3"]))) + + assume(column.number_of(PSC.HEATER_SHAKER_MODULE) in [1, 2]) + for slot in column.slots: + if slot.contents is PSC.HEATER_SHAKER_MODULE: + assume(_above_or_below_is_module_or_trash(column, slot)) + deck.override_with_column(column) + + return deck + + +@st.composite +def a_deck_configuration_with_invalid_fixture_in_col_2( + draw: st.DrawFn, +) -> DeckConfiguration: + """Generate a deck with an invalid fixture in column 2.""" + POSSIBLE_FIXTURES = [ + PSC.LABWARE_SLOT, + PSC.TEMPERATURE_MODULE, + PSC.HEATER_SHAKER_MODULE, + PSC.TRASH_BIN, + PSC.MAGNETIC_BLOCK_MODULE, + ] + INVALID_FIXTURES = [ + PSC.HEATER_SHAKER_MODULE, + PSC.TRASH_BIN, + PSC.TEMPERATURE_MODULE, + ] + column2 = draw(a_column("2", content_options=POSSIBLE_FIXTURES)) + num_invalid_fixtures = len( + [True for slot in column2.slots if slot.contents.is_one_of(INVALID_FIXTURES)] + ) + assume(num_invalid_fixtures > 0) + + deck = draw( + st.builds( + DeckConfiguration.from_cols, + col1=a_column("1"), + col2=st.just(column2), + col3=a_column("3"), + ) + ) + + return deck diff --git a/test-data-generation/src/test_data_generation/deck_configuration/strategy/helper_strategies.py b/test-data-generation/src/test_data_generation/deck_configuration/strategy/helper_strategies.py new file mode 100644 index 00000000000..17950f63a39 --- /dev/null +++ b/test-data-generation/src/test_data_generation/deck_configuration/strategy/helper_strategies.py @@ -0,0 +1,117 @@ +"""Test data generation for deck configuration tests.""" +from typing import List +from hypothesis import strategies as st +from test_data_generation.deck_configuration.datashapes import ( + Column, + Row, + Slot, + PossibleSlotContents as PSC, +) + + +@st.composite +def a_slot( + draw: st.DrawFn, + row: str, + col: str, + content_options: List[PSC] = PSC.all(), +) -> Slot: + """Generate a slot with a random content. + + Any fixture that has it's location implicitly defined is captured here by the + filtering logic. + """ + no_thermocycler = [ + content for content in content_options if content is not PSC.THERMOCYCLER_MODULE + ] + no_waste_chute_or_staging_area = [ + content + for content in content_options + if not content.is_a_waste_chute() and not content.is_a_staging_area() + ] + + no_waste_chute_or_thermocycler = [ + content for content in no_thermocycler if not content.is_a_waste_chute() + ] + no_staging_area_or_waste_chute_or_thermocycler = [ + content + for content in no_waste_chute_or_thermocycler + if not content.is_a_staging_area() + ] + + if col == "1" and (row == "A" or row == "B"): + return draw( + st.builds( + Slot, + row=st.just(row), + col=st.just(col), + contents=st.sampled_from(no_waste_chute_or_staging_area), + ) + ) + elif col == "3": + if row == "D": + return draw( + st.builds( + Slot, + row=st.just(row), + col=st.just(col), + contents=st.sampled_from(no_thermocycler), + ) + ) + else: + return draw( + st.builds( + Slot, + row=st.just(row), + col=st.just(col), + contents=st.sampled_from(no_waste_chute_or_thermocycler), + ) + ) + else: + return draw( + st.builds( + Slot, + row=st.just(row), + col=st.just(col), + contents=st.sampled_from( + no_staging_area_or_waste_chute_or_thermocycler + ), + ) + ) + + +@st.composite +def a_row( + draw: st.DrawFn, + row: str, + content_options: List[PSC] = PSC.all(), +) -> Row: + """Generate a row with random slots.""" + return draw( + st.builds( + Row, + row=st.just(row), + col1=a_slot(row=row, col="1", content_options=content_options), + col2=a_slot(row=row, col="2", content_options=content_options), + col3=a_slot(row=row, col="3", content_options=content_options), + ) + ) + + +@st.composite +def a_column( + draw: st.DrawFn, + col: str, + content_options: List[PSC] = PSC.all(), +) -> Column: + """Generate a column with random slots.""" + return draw( + st.builds( + Column, + col=st.just(col), + a=a_slot(row="a", col=col, content_options=content_options), + b=a_slot(row="b", col=col, content_options=content_options), + c=a_slot(row="c", col=col, content_options=content_options), + d=a_slot(row="d", col=col, content_options=content_options), + ) + ) diff --git a/test-data-generation/tests/test_data_generation/deck_configuration/test_deck_configuration.py b/test-data-generation/tests/test_data_generation/deck_configuration/test_deck_configuration.py new file mode 100644 index 00000000000..02c4f125187 --- /dev/null +++ b/test-data-generation/tests/test_data_generation/deck_configuration/test_deck_configuration.py @@ -0,0 +1,41 @@ +"""Tests to ensure that the deck configuration is generated correctly.""" + +from hypothesis import given, settings, HealthCheck +from test_data_generation.deck_configuration.datashapes import DeckConfiguration +from test_data_generation.deck_configuration.strategy.final_strategies import ( + a_deck_configuration_with_a_module_or_trash_slot_above_or_below_a_heater_shaker, + a_deck_configuration_with_invalid_fixture_in_col_2, +) + +NUM_EXAMPLES = 100 + + +@given( + deck_config=a_deck_configuration_with_a_module_or_trash_slot_above_or_below_a_heater_shaker() +) +@settings( + max_examples=NUM_EXAMPLES, + suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow], +) +def test_above_below_heater_shaker(deck_config: DeckConfiguration) -> None: + """I hypothesize, that any deck configuration with a non-labware slot fixture above or below a heater-shaker is invalid.""" + print(deck_config) + + # TODO: create protocol and run analysis + + # protocol = create_protocol(deck) + # with pytest.assertRaises as e: + # analyze(protocol) + # assert e.exception == "Some statement about the deck configuration being invalid because of the labware above or below the Heater-Shaker" + + +@given(deck_config=a_deck_configuration_with_invalid_fixture_in_col_2()) +@settings( + max_examples=NUM_EXAMPLES, + suppress_health_check=[HealthCheck.filter_too_much, HealthCheck.too_slow], +) +def test_invalid_fixture_in_col_2(deck_config: DeckConfiguration) -> None: + """I hypothesize, that any deck configuration that contains at least one, Heater-Shaker, Trash Bin, or Temperature module, in column 2 is invalid.""" + print(deck_config) + + # TODO: Same as above diff --git a/yarn.lock b/yarn.lock index 920529d67f4..8427f656e8d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12897,6 +12897,11 @@ jmespath@0.16.0: resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== +jotai@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.8.0.tgz#5a6585cd5576c400c2c5f8e157b83ad2ba70b2ab" + integrity sha512-yZNMC36FdLOksOr8qga0yLf14miCJlEThlp5DeFJNnqzm2+ZG7wLcJzoOyij5K6U6Xlc5ljQqPDlJRgqW0Y18g== + js-sdsl@4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711"