From 252b3c8f0a6a0d7d0e214c4fb06ffee6510db3cf Mon Sep 17 00:00:00 2001 From: lei Date: Tue, 5 Sep 2023 21:19:41 +0800 Subject: [PATCH] fix: static code check issues --- srunner/autoagents/npc_agent.py | 2 +- srunner/metrics/tools/osc2_log.py | 28 +- srunner/metrics/tools/osc2_trace_parser.py | 157 +- srunner/osc2/ast_manager/ast_builder.py | 511 +- srunner/osc2/ast_manager/ast_listener.py | 25 +- srunner/osc2/ast_manager/ast_node.py | 106 +- srunner/osc2/ast_manager/ast_vistor.py | 14 +- srunner/osc2/ast_manager/ast_walker.py | 1 - srunner/osc2/error_manager/error_listener.py | 17 +- .../osc2/osc2_parser/OpenSCENARIO2Lexer.py | 8712 ++++++++- .../osc2/osc2_parser/OpenSCENARIO2Listener.py | 377 +- .../osc2/osc2_parser/OpenSCENARIO2Parser.py | 15144 ++++++++++++++-- .../osc2/osc2_parser/OpenSCENARIO2Visitor.py | 190 +- srunner/osc2/osc_preprocess/import_file.py | 21 +- srunner/osc2/osc_preprocess/import_msg.py | 2 +- srunner/osc2/osc_preprocess/pre_process.py | 7 +- srunner/osc2/symbol_manager/action_symbol.py | 5 +- srunner/osc2/symbol_manager/actor_symbol.py | 1 - .../osc2/symbol_manager/argument_symbol.py | 4 - srunner/osc2/symbol_manager/base_scope.py | 5 +- srunner/osc2/symbol_manager/base_symbol.py | 6 +- .../osc2/symbol_manager/behavior_symbol.py | 6 +- .../osc2/symbol_manager/composition_symbol.py | 8 +- .../osc2/symbol_manager/compound _symbol.py | 2 +- .../symbol_manager/constraint_decl_scope.py | 6 +- .../symbol_manager/default_value_scope.py | 3 +- .../osc2/symbol_manager/doMember_symbol.py | 1 - .../osc2/symbol_manager/do_directive_scope.py | 5 +- srunner/osc2/symbol_manager/enum_symbol.py | 24 +- srunner/osc2/symbol_manager/event_symbol.py | 4 +- srunner/osc2/symbol_manager/global_scope.py | 5 +- .../osc2/symbol_manager/identifier_scope.py | 1 - .../inherits_condition_symbol.py | 22 +- srunner/osc2/symbol_manager/local_scope.py | 3 +- srunner/osc2/symbol_manager/method_symbol.py | 3 +- .../osc2/symbol_manager/modifier_symbol.py | 4 +- .../osc2/symbol_manager/parameter_symbol.py | 1 - .../symbol_manager/physical_type_symbol.py | 3 +- .../qualifiedBehavior_symbol.py | 7 +- .../osc2/symbol_manager/scenario_symbol.py | 5 +- .../osc2/symbol_manager/si_exponent_symbol.py | 2 - srunner/osc2/symbol_manager/struct_symbol.py | 1 - srunner/osc2/symbol_manager/symbol.py | 1 + srunner/osc2/symbol_manager/type.py | 5 +- srunner/osc2/symbol_manager/typed_symbol.py | 27 +- srunner/osc2/symbol_manager/unit_symbol.py | 1 - .../osc2/symbol_manager/variable_symbol.py | 1 - srunner/osc2/symbol_manager/wait_symbol.py | 3 +- srunner/osc2/utils/log_manager.py | 136 +- srunner/osc2/utils/relational_operator.py | 14 +- srunner/osc2/utils/tools.py | 15 +- srunner/osc2_dm/map.py | 19 +- srunner/osc2_dm/physical_object.py | 11 +- srunner/osc2_dm/physical_types.py | 44 +- srunner/osc2_stdlib/event.py | 5 +- srunner/osc2_stdlib/misc_object.py | 1 - srunner/osc2_stdlib/modifier.py | 84 +- srunner/osc2_stdlib/observer.py | 1 + srunner/osc2_stdlib/path.py | 54 +- srunner/osc2_stdlib/path_check.py | 126 +- srunner/osc2_stdlib/pedestrian.py | 4 +- srunner/osc2_stdlib/vehicle.py | 27 +- .../osc2_scenario_configuration.py | 184 +- .../scenariomanager/carla_data_provider.py | 14 +- .../scenarioatomics/atomic_repeat.py | 1 + srunner/scenarios/osc2_scenario.py | 699 +- srunner/tools/openscenario_parser.py | 2 +- srunner/tools/osc2_helper.py | 74 +- 68 files changed, 23841 insertions(+), 3163 deletions(-) diff --git a/srunner/autoagents/npc_agent.py b/srunner/autoagents/npc_agent.py index 621a40dbf..cf9dff74e 100644 --- a/srunner/autoagents/npc_agent.py +++ b/srunner/autoagents/npc_agent.py @@ -57,7 +57,7 @@ def sensors(self): return sensors def run_step(self, input_data, timestamp): - #Execute one step of navigation. + # Execute one step of navigation. if not self._agent: # Search for the ego actor diff --git a/srunner/metrics/tools/osc2_log.py b/srunner/metrics/tools/osc2_log.py index 76d48116c..d89e292e2 100644 --- a/srunner/metrics/tools/osc2_log.py +++ b/srunner/metrics/tools/osc2_log.py @@ -15,8 +15,10 @@ """ import fnmatch + from srunner.metrics.tools.osc2_trace_parser import Osc2TraceParser + class Osc2Log(object): # pylint: disable=too-many-public-methods """ Utility class to query the log. @@ -29,13 +31,13 @@ def __init__(self, recorder): # Parse the information parser = Osc2TraceParser(recorder) self._simulation, self._actors, self._frames = parser.parse_recorder_info() - + def get_simulation(self): return self._simulation - + def get_actors(self): return self._actors - + def get_frames(self): return self._frames @@ -57,7 +59,7 @@ def get_actor_collisions(self, actor_id): actor_collisions.update({i: collisions[actor_id]}) return actor_collisions - + def get_collisions(self, frame): return self._frames[frame]["events"]["collisions"] @@ -180,7 +182,6 @@ def get_actor_alive_frames(self, actor_id): """ if actor_id in self._actors: - actor_info = self._actors[actor_id] first_frame = actor_info["created"] if "destroyed" in actor_info: @@ -207,7 +208,6 @@ def _get_actor_state(self, actor_id, state, frame): # Check if the actor exists if actor_id in frame_state: - # Check if the state exists if state not in frame_state[actor_id]: return None @@ -275,7 +275,9 @@ def get_all_actor_transforms(self, actor_id, first_frame=None, last_frame=None): """ Returns a list with all the transforms of the actor at the frame interval. """ - return self._get_all_actor_states(actor_id, "transform", first_frame, last_frame) + return self._get_all_actor_states( + actor_id, "transform", first_frame, last_frame + ) def get_actor_transforms_at_frame(self, frame, actor_list=None): """ @@ -311,11 +313,15 @@ def get_actor_angular_velocity(self, actor_id, frame): """ return self._get_actor_state(actor_id, "angular_velocity", frame) - def get_all_actor_angular_velocities(self, actor_id, first_frame=None, last_frame=None): + def get_all_actor_angular_velocities( + self, actor_id, first_frame=None, last_frame=None + ): """ Returns a list with all the angular velocities of the actor at the frame interval. """ - return self._get_all_actor_states(actor_id, "angular_velocity", first_frame, last_frame) + return self._get_all_actor_states( + actor_id, "angular_velocity", first_frame, last_frame + ) def get_actor_angular_velocities_at_frame(self, frame, actor_list=None): """ @@ -335,7 +341,9 @@ def get_all_actor_accelerations(self, actor_id, first_frame=None, last_frame=Non """ Returns a list with all the accelerations of the actor at the frame interval. """ - return self._get_all_actor_states(actor_id, "acceleration", first_frame, last_frame) + return self._get_all_actor_states( + actor_id, "acceleration", first_frame, last_frame + ) def get_actor_accelerations_at_frame(self, frame, actor_list=None): """ diff --git a/srunner/metrics/tools/osc2_trace_parser.py b/srunner/metrics/tools/osc2_trace_parser.py index 9746d2641..8e263c15f 100644 --- a/srunner/metrics/tools/osc2_trace_parser.py +++ b/srunner/metrics/tools/osc2_trace_parser.py @@ -21,11 +21,12 @@ def parse_actor(info): "location": carla.Location( x=float(info[5][1:-1]) / 100, y=float(info[6][:-1]) / 100, - z=float(info[7][:-1]) / 100 - ) + z=float(info[7][:-1]) / 100, + ), } return actor + def parse_transform(info): """Parses a list into a carla.Transform""" transform = carla.Transform( @@ -36,12 +37,13 @@ def parse_transform(info): ), carla.Rotation( roll=float(info[7][1:-1]), - pitch=float(info[8][:-1]), - yaw=float(info[9][:-1]) - ) + pitch=float(info[8][:-1]), + yaw=float(info[9][:-1]), + ), ) return transform + def parse_control(info): """Parses a list into a carla.VehicleControl""" control = carla.VehicleControl( @@ -55,6 +57,7 @@ def parse_control(info): ) return control + def parse_vehicle_lights(info): """Parses a list into a carla.VehicleLightState""" srt_to_vlight = { @@ -78,6 +81,7 @@ def parse_vehicle_lights(info): return lights + def parse_traffic_light(info): """Parses a list into a dictionary with all the traffic light's information""" number_to_state = { @@ -94,24 +98,23 @@ def parse_traffic_light(info): } return traffic_light + def parse_velocity(info): """Parses a list into a carla.Vector3D with the velocity""" velocity = carla.Vector3D( - x=float(info[3][1:-1]), - y=float(info[4][:-1]), - z=float(info[5][:-1]) + x=float(info[3][1:-1]), y=float(info[4][:-1]), z=float(info[5][:-1]) ) return velocity + def parse_angular_velocity(info): """Parses a list into a carla.Vector3D with the angular velocity""" velocity = carla.Vector3D( - x=float(info[7][1:-1]), - y=float(info[8][:-1]), - z=float(info[9][:-1]) + x=float(info[7][1:-1]), y=float(info[8][:-1]), z=float(info[9][:-1]) ) return velocity + def parse_scene_lights(info): """Parses a list into a carla.VehicleLightState""" @@ -123,37 +126,39 @@ def parse_scene_lights(info): intensity=int(float(info[5])), color=carla.Color(red, green, blue), group=carla.LightGroup.NONE, - active=bool(info[3]) + active=bool(info[3]), ) return scene_light + def parse_bounding_box(info): """ Parses a list into a carla.BoundingBox. Some actors like sensors might have 'nan' location and 'inf' extent, so filter those. """ - if 'nan' in info[3]: + if "nan" in info[3]: location = carla.Location() else: location = carla.Location( - float(info[3][1:-1])/100, - float(info[4][:-1])/100, - float(info[5][:-1])/100, + float(info[3][1:-1]) / 100, + float(info[4][:-1]) / 100, + float(info[5][:-1]) / 100, ) - if 'inf' in info[7]: + if "inf" in info[7]: extent = carla.Vector3D() else: extent = carla.Vector3D( - float(info[7][1:-1])/100, - float(info[8][:-1])/100, - float(info[9][:-1])/100, + float(info[7][1:-1]) / 100, + float(info[8][:-1]) / 100, + float(info[9][:-1]) / 100, ) bbox = carla.BoundingBox(location, extent) return bbox + def parse_state_times(info): """Parses a list into a dict containing the state times of the traffic lights""" state_times = { @@ -163,18 +168,20 @@ def parse_state_times(info): } return state_times + def parse_vector_list(info): """Parses a list of string into a list of Vector2D""" vector_list = [] for i in range(0, len(info), 2): vector = carla.Vector2D( x=float(info[i][1:-1]), - y=float(info[i+1][:-1]), + y=float(info[i + 1][:-1]), ) vector_list.append(vector) return vector_list + def parse_gears_control(info): """Parses a list into a GearPhysicsControl""" gears_control = carla.GearPhysicsControl( @@ -184,6 +191,7 @@ def parse_gears_control(info): ) return gears_control + def parse_wheels_control(info): """Parses a list into a WheelsPhysicsControl""" wheels_control = carla.WheelPhysicsControl( @@ -196,7 +204,8 @@ def parse_wheels_control(info): position=carla.Vector3D( x=float(info[17][1:-1]) / 100, y=float(info[17][:-1]) / 100, - z=float(info[17][:-1]) / 100) + z=float(info[17][:-1]) / 100, + ), ) return wheels_control @@ -207,7 +216,6 @@ class Osc2TraceParser(object): """ def __init__(self, recorder_info): - self.recorder_info = recorder_info self.frame_list = None self.frame_row = None @@ -252,14 +260,13 @@ def parse_recorder_info(self): "map": sim_map, "date:": sim_date, "total_frames": sim_frames, - "duration": sim_duration + "duration": sim_duration, } actors_info = {} frames_info = [] for frame in recorder_list: - # Divide the frame in lines self.frame_list = frame.split("\n") @@ -280,24 +287,25 @@ def parse_recorder_info(self): "frame": { "elapsed_time": frame_time, "delta_time": delta_time, - "platform_time": None + "platform_time": None, }, "actors": {}, - "events":{ + "events": { "scene_lights": {}, "physics_control": {}, "traffic_light_state_time": {}, - "collisions": {} - } + "collisions": {}, + }, } # Loop through all the other rows. self.i = 0 self.next_row() - while self.frame_row.startswith(' Create') or self.frame_row.startswith(' '): - - if self.frame_row.startswith(' Create'): + while self.frame_row.startswith(" Create") or self.frame_row.startswith( + " " + ): + if self.frame_row.startswith(" Create"): elements = self.get_row_elements(1, " ") actor_id = int(elements[1][:-1]) @@ -310,8 +318,7 @@ def parse_recorder_info(self): self.next_row() - while self.frame_row.startswith(' Destroy'): - + while self.frame_row.startswith(" Destroy"): elements = self.get_row_elements(1, " ") actor_id = int(elements[1]) @@ -319,8 +326,7 @@ def parse_recorder_info(self): self.next_row() - while self.frame_row.startswith(' Collision'): - + while self.frame_row.startswith(" Collision"): elements = self.get_row_elements(1, " ") actor_id = int(elements[4]) @@ -335,8 +341,7 @@ def parse_recorder_info(self): self.next_row() - while self.frame_row.startswith(' Parenting'): - + while self.frame_row.startswith(" Parenting"): elements = self.get_row_elements(1, " ") actor_id = int(elements[1]) @@ -345,11 +350,10 @@ def parse_recorder_info(self): self.next_row() - if self.frame_row.startswith(' Positions'): + if self.frame_row.startswith(" Positions"): self.next_row() - while self.frame_row.startswith(' '): - + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) @@ -358,11 +362,10 @@ def parse_recorder_info(self): self.next_row() - if self.frame_row.startswith(' State traffic lights'): + if self.frame_row.startswith(" State traffic lights"): self.next_row() - while self.frame_row.startswith(' '): - + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) @@ -370,11 +373,10 @@ def parse_recorder_info(self): frame_state["actors"].update({actor_id: traffic_light}) self.next_row() - if self.frame_row.startswith(' Vehicle animations'): + if self.frame_row.startswith(" Vehicle animations"): self.next_row() - while self.frame_row.startswith(' '): - + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) @@ -382,20 +384,20 @@ def parse_recorder_info(self): frame_state["actors"][actor_id].update({"control": control}) self.next_row() - if self.frame_row.startswith(' Walker animations'): + if self.frame_row.startswith(" Walker animations"): self.next_row() - while self.frame_row.startswith(' '): + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) frame_state["actors"][actor_id].update({"speed": elements[3]}) self.next_row() - if self.frame_row.startswith(' Vehicle light animations'): + if self.frame_row.startswith(" Vehicle light animations"): self.next_row() - while self.frame_row.startswith(' '): + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) @@ -403,21 +405,23 @@ def parse_recorder_info(self): frame_state["actors"][actor_id].update({"lights": lights}) self.next_row() - if self.frame_row.startswith(' Scene light changes'): + if self.frame_row.startswith(" Scene light changes"): self.next_row() - while self.frame_row.startswith(' '): + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) scene_light = parse_scene_lights(elements) - frame_state["events"]["scene_lights"].update({actor_id: scene_light}) + frame_state["events"]["scene_lights"].update( + {actor_id: scene_light} + ) self.next_row() - if self.frame_row.startswith(' Dynamic actors'): + if self.frame_row.startswith(" Dynamic actors"): self.next_row() - while self.frame_row.startswith(' '): + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) @@ -425,7 +429,9 @@ def parse_recorder_info(self): frame_state["actors"][actor_id].update({"velocity": velocity}) angular_v = parse_angular_velocity(elements) - frame_state["actors"][actor_id].update({"angular_velocity": angular_v}) + frame_state["actors"][actor_id].update( + {"angular_velocity": angular_v} + ) if delta_time == 0: acceleration = carla.Vector3D(0, 0, 0) @@ -433,13 +439,15 @@ def parse_recorder_info(self): prev_velocity = frame_state["actors"][actor_id]["velocity"] acceleration = (velocity - prev_velocity) / delta_time - frame_state["actors"][actor_id].update({"acceleration": acceleration}) + frame_state["actors"][actor_id].update( + {"acceleration": acceleration} + ) self.next_row() - if self.frame_row.startswith(' Actor bounding boxes'): + if self.frame_row.startswith(" Actor bounding boxes"): self.next_row() - while self.frame_row.startswith(' '): + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) @@ -447,10 +455,10 @@ def parse_recorder_info(self): actors_info[actor_id].update({"bounding_box": bbox}) self.next_row() - if self.frame_row.startswith(' Actor trigger volumes'): + if self.frame_row.startswith(" Actor trigger volumes"): self.next_row() - while self.frame_row.startswith(' '): + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) @@ -458,20 +466,18 @@ def parse_recorder_info(self): actors_info[actor_id].update({"trigger_volume": trigvol}) self.next_row() - if self.frame_row.startswith(' Current platform time'): - + if self.frame_row.startswith(" Current platform time"): elements = self.get_row_elements(1, " ") platform_time = float(elements[-1]) frame_state["frame"]["platform_time"] = platform_time self.next_row() - if self.frame_row.startswith(' Physics Control'): + if self.frame_row.startswith(" Physics Control"): self.next_row() actor_id = None - while self.frame_row.startswith(' '): - + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) physics_control = carla.VehiclePhysicsControl() @@ -479,9 +485,8 @@ def parse_recorder_info(self): forward_gears = [] wheels = [] - while self.frame_row.startswith(' '): - - if self.frame_row.startswith(' '): + while self.frame_row.startswith(" "): + if self.frame_row.startswith(" "): elements = self.get_row_elements(4, " ") if elements[0] == "gear": forward_gears.append(parse_gears_control(elements)) @@ -522,17 +527,21 @@ def parse_recorder_info(self): setattr(physics_control, "forward_gears", forward_gears) setattr(physics_control, "wheels", wheels) - frame_state["events"]["physics_control"].update({actor_id: physics_control}) + frame_state["events"]["physics_control"].update( + {actor_id: physics_control} + ) - if self.frame_row.startswith(' Traffic Light time events'): + if self.frame_row.startswith(" Traffic Light time events"): self.next_row() - while self.frame_row.startswith(' '): + while self.frame_row.startswith(" "): elements = self.get_row_elements(2, " ") actor_id = int(elements[1]) state_times = parse_state_times(elements) - frame_state["events"]["traffic_light_state_time"].update({actor_id: state_times}) + frame_state["events"]["traffic_light_state_time"].update( + {actor_id: state_times} + ) self.next_row() frames_info.append(frame_state) diff --git a/srunner/osc2/ast_manager/ast_builder.py b/srunner/osc2/ast_manager/ast_builder.py index 06384a185..f2a24bbfd 100644 --- a/srunner/osc2/ast_manager/ast_builder.py +++ b/srunner/osc2/ast_manager/ast_builder.py @@ -1,37 +1,39 @@ +import copy from pydoc import resolve -from srunner.osc2.symbol_manager.global_scope import GlobalScope -from srunner.osc2.utils.log_manager import * -from srunner.osc2.utils.tools import * -import copy import srunner.osc2.ast_manager.ast_node as ast_node -from srunner.osc2.osc2_parser.OpenSCENARIO2Parser import OpenSCENARIO2Parser from srunner.osc2.osc2_parser.OpenSCENARIO2Listener import OpenSCENARIO2Listener -from srunner.osc2.symbol_manager.enum_symbol import * +from srunner.osc2.osc2_parser.OpenSCENARIO2Parser import OpenSCENARIO2Parser +from srunner.osc2.symbol_manager.action_symbol import ActionSymbol from srunner.osc2.symbol_manager.actor_symbol import ActorSymbol -from srunner.osc2.symbol_manager.qualifiedBehavior_symbol import QualifiedBehaviorSymbol -from srunner.osc2.symbol_manager.scenario_symbol import ScenarioSymbol -from srunner.osc2.symbol_manager.doMember_symbol import DoMemberSymbol +from srunner.osc2.symbol_manager.argument_symbol import * +from srunner.osc2.symbol_manager.constraint_decl_scope import * from srunner.osc2.symbol_manager.do_directive_scope import * -from srunner.osc2.symbol_manager.si_exponent_symbol import SiBaseExponentListScope, SiExpSymbol +from srunner.osc2.symbol_manager.doMember_symbol import DoMemberSymbol +from srunner.osc2.symbol_manager.enum_symbol import * +from srunner.osc2.symbol_manager.event_symbol import * +from srunner.osc2.symbol_manager.global_scope import GlobalScope +from srunner.osc2.symbol_manager.inherits_condition_symbol import * +from srunner.osc2.symbol_manager.method_symbol import MethodSymbol +from srunner.osc2.symbol_manager.modifier_symbol import * +from srunner.osc2.symbol_manager.parameter_symbol import ParameterSymbol from srunner.osc2.symbol_manager.physical_type_symbol import PhysicalTypeSymbol -from srunner.osc2.symbol_manager.unit_symbol import UnitSymbol +from srunner.osc2.symbol_manager.qualifiedBehavior_symbol import QualifiedBehaviorSymbol +from srunner.osc2.symbol_manager.scenario_symbol import ScenarioSymbol +from srunner.osc2.symbol_manager.si_exponent_symbol import ( + SiBaseExponentListScope, + SiExpSymbol, +) from srunner.osc2.symbol_manager.struct_symbol import StructSymbol -from srunner.osc2.symbol_manager.parameter_symbol import ParameterSymbol -from srunner.osc2.symbol_manager.modifier_symbol import * -from srunner.osc2.symbol_manager.inherits_condition_symbol import * from srunner.osc2.symbol_manager.typed_symbol import * -from srunner.osc2.symbol_manager.action_symbol import ActionSymbol -from srunner.osc2.symbol_manager.constraint_decl_scope import * +from srunner.osc2.symbol_manager.unit_symbol import UnitSymbol from srunner.osc2.symbol_manager.variable_symbol import VariableSymbol -from srunner.osc2.symbol_manager.event_symbol import * -from srunner.osc2.symbol_manager.argument_symbol import * from srunner.osc2.symbol_manager.wait_symbol import * -from srunner.osc2.symbol_manager.method_symbol import MethodSymbol +from srunner.osc2.utils.log_manager import * +from srunner.osc2.utils.tools import * class ASTBuilder(OpenSCENARIO2Listener): - def __init__(self): self.__global_scope = None # Global scope self.__current_scope = None # Current scope @@ -86,11 +88,15 @@ def exitImportReference(self, ctx: OpenSCENARIO2Parser.ImportReferenceContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#structuredIdentifier. - def enterStructuredIdentifier(self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext): + def enterStructuredIdentifier( + self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#structuredIdentifier. - def exitStructuredIdentifier(self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext): + def exitStructuredIdentifier( + self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#oscDeclaration. @@ -102,7 +108,9 @@ def exitOscDeclaration(self, ctx: OpenSCENARIO2Parser.OscDeclarationContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#physicalTypeDeclaration. - def enterPhysicalTypeDeclaration(self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext): + def enterPhysicalTypeDeclaration( + self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext + ): self.__node_stack.append(self.__cur_node) type_name = ctx.physicalTypeName().getText() @@ -118,7 +126,9 @@ def enterPhysicalTypeDeclaration(self, ctx: OpenSCENARIO2Parser.PhysicalTypeDecl self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#physicalTypeDeclaration. - def exitPhysicalTypeDeclaration(self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext): + def exitPhysicalTypeDeclaration( + self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext + ): self.__cur_node = self.__node_stack.pop() self.__current_scope = self.__current_scope.get_enclosing_scope() @@ -139,13 +149,17 @@ def exitBaseUnitSpecifier(self, ctx: OpenSCENARIO2Parser.BaseUnitSpecifierContex pass # Enter a parse tree produced by OpenSCENARIO2Parser#sIBaseUnitSpecifier. - def enterSIBaseUnitSpecifier(self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext): + def enterSIBaseUnitSpecifier( + self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext + ): si_scope = SiBaseExponentListScope(self.__current_scope) self.__current_scope.define(si_scope, ctx.start) self.__current_scope = si_scope # Exit a parse tree produced by OpenSCENARIO2Parser#sIBaseUnitSpecifier. - def exitSIBaseUnitSpecifier(self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext): + def exitSIBaseUnitSpecifier( + self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext + ): self.__current_scope = self.__current_scope.get_enclosing_scope() # Enter a parse tree produced by OpenSCENARIO2Parser#unitDeclaration. @@ -196,11 +210,15 @@ def exitSIUnitSpecifier(self, ctx: OpenSCENARIO2Parser.SIUnitSpecifierContext): self.__current_scope = self.__current_scope.get_enclosing_scope() # Enter a parse tree produced by OpenSCENARIO2Parser#sIBaseExponentList. - def enterSIBaseExponentList(self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext): + def enterSIBaseExponentList( + self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#sIBaseExponentList. - def exitSIBaseExponentList(self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext): + def exitSIBaseExponentList( + self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#sIBaseExponent. @@ -372,7 +390,9 @@ def exitEnumMemberName(self, ctx: OpenSCENARIO2Parser.EnumMemberNameContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#enumValueReference. - def enterEnumValueReference(self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext): + def enterEnumValueReference( + self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext + ): self.__node_stack.append(self.__cur_node) enum_name = None if ctx.enumName(): @@ -384,8 +404,12 @@ def enterEnumValueReference(self, ctx: OpenSCENARIO2Parser.EnumValueReferenceCon if scope and isinstance(scope, EnumSymbol): if scope.symbols.get(enum_member_name): - enum_value_reference = EnumValueRefSymbol(enum_name, enum_member_name, - scope.symbols[enum_member_name].elems_index, scope) + enum_value_reference = EnumValueRefSymbol( + enum_name, + enum_member_name, + scope.symbols[enum_member_name].elems_index, + scope, + ) self.__current_scope.define(enum_value_reference, ctx.start) else: msg = "Enum member " + enum_member_name + " not found!" @@ -402,7 +426,9 @@ def enterEnumValueReference(self, ctx: OpenSCENARIO2Parser.EnumValueReferenceCon self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#enumValueReference. - def exitEnumValueReference(self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext): + def exitEnumValueReference( + self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#inheritsCondition. @@ -575,11 +601,15 @@ def exitActorName(self, ctx: OpenSCENARIO2Parser.ActorNameContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#scenarioDeclaration. - def enterScenarioDeclaration(self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext): + def enterScenarioDeclaration( + self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext + ): self.__node_stack.append(self.__cur_node) qualified_behavior_name = ctx.qualifiedBehaviorName().getText() - scenario_name = QualifiedBehaviorSymbol(qualified_behavior_name, self.__current_scope) + scenario_name = QualifiedBehaviorSymbol( + qualified_behavior_name, self.__current_scope + ) scenario_name.is_qualified_behavior_name_valid(ctx.start) scenario = ScenarioSymbol(scenario_name) self.__current_scope.define(scenario, ctx.start) @@ -595,7 +625,9 @@ def enterScenarioDeclaration(self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationC self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#scenarioDeclaration. - def exitScenarioDeclaration(self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext): + def exitScenarioDeclaration( + self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext + ): self.__cur_node = self.__node_stack.pop() self.__current_scope = self.__current_scope.get_enclosing_scope() @@ -608,7 +640,9 @@ def enterScenarioInherts(self, ctx: OpenSCENARIO2Parser.ScenarioInhertsContext): scope = self.__current_scope.resolve(qualified_behavior_name) if scope and isinstance(scope, ScenarioSymbol): - scenario_name = QualifiedBehaviorSymbol(qualified_behavior_name, self.__current_scope) + scenario_name = QualifiedBehaviorSymbol( + qualified_behavior_name, self.__current_scope + ) scenario_name.is_qualified_behavior_name_valid(ctx.start) scenario_inherts = ScenarioInhertsSymbol(scenario_name) @@ -631,19 +665,27 @@ def exitScenarioInherts(self, ctx: OpenSCENARIO2Parser.ScenarioInhertsContext): self.__current_scope = self.__current_scope.get_enclosing_scope() # Enter a parse tree produced by OpenSCENARIO2Parser#scenarioMemberDecl. - def enterScenarioMemberDecl(self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext): + def enterScenarioMemberDecl( + self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext + ): self.__node_stack.append(self.__cur_node) # Exit a parse tree produced by OpenSCENARIO2Parser#scenarioMemberDecl. - def exitScenarioMemberDecl(self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext): + def exitScenarioMemberDecl( + self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#qualifiedBehaviorName. - def enterQualifiedBehaviorName(self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext): + def enterQualifiedBehaviorName( + self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#qualifiedBehaviorName. - def exitQualifiedBehaviorName(self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext): + def exitQualifiedBehaviorName( + self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorName. @@ -659,7 +701,9 @@ def enterActionDeclaration(self, ctx: OpenSCENARIO2Parser.ActionDeclarationConte self.__node_stack.append(self.__cur_node) qualified_behavior_name = ctx.qualifiedBehaviorName().getText() - action_name = QualifiedBehaviorSymbol(qualified_behavior_name, self.__current_scope) + action_name = QualifiedBehaviorSymbol( + qualified_behavior_name, self.__current_scope + ) action_name.is_qualified_behavior_name_valid(ctx.start) action = ActionSymbol(action_name) self.__current_scope.define(action, ctx.start) @@ -691,7 +735,9 @@ def enterActionInherts(self, ctx: OpenSCENARIO2Parser.ActionInhertsContext): msg = "inherits " + qualified_behavior_name + " is not defined!" LOG_ERROR(msg, ctx.start) - action_name = QualifiedBehaviorSymbol(qualified_behavior_name, self.__current_scope) + action_name = QualifiedBehaviorSymbol( + qualified_behavior_name, self.__current_scope + ) action_name.is_qualified_behavior_name_valid(ctx.start) action_inherits = ActionInhertsSymbol(action_name, scope) self.__current_scope.define(action_inherits, ctx.start) @@ -708,7 +754,9 @@ def exitActionInherts(self, ctx: OpenSCENARIO2Parser.ActionInhertsContext): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#modifierDeclaration. - def enterModifierDeclaration(self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext): + def enterModifierDeclaration( + self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext + ): self.__node_stack.append(self.__cur_node) actor_name = None if ctx.actorName(): @@ -733,7 +781,9 @@ def enterModifierDeclaration(self, ctx: OpenSCENARIO2Parser.ModifierDeclarationC self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#modifierDeclaration. - def exitModifierDeclaration(self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext): + def exitModifierDeclaration( + self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext + ): self.__cur_node = self.__node_stack.pop() self.__current_scope = self.__current_scope.get_enclosing_scope() @@ -761,8 +811,9 @@ def enterEnumTypeExtension(self, ctx: OpenSCENARIO2Parser.EnumTypeExtensionConte self.__node_stack.append(self.__cur_node) enum_name = ctx.enumName().getText() - if enum_name in self.__current_scope.symbols and isinstance(self.__current_scope.symbols[enum_name], - EnumSymbol): + if enum_name in self.__current_scope.symbols and isinstance( + self.__current_scope.symbols[enum_name], EnumSymbol + ): self.__current_scope = self.__current_scope.symbols[enum_name] else: msg = enum_name + " is not defined!" @@ -781,7 +832,9 @@ def exitEnumTypeExtension(self, ctx: OpenSCENARIO2Parser.EnumTypeExtensionContex self.__current_scope = self.__current_scope.get_enclosing_scope() # Enter a parse tree produced by OpenSCENARIO2Parser#structuredTypeExtension. - def enterStructuredTypeExtension(self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext): + def enterStructuredTypeExtension( + self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext + ): self.__node_stack.append(self.__cur_node) type_name = None @@ -791,14 +844,17 @@ def enterStructuredTypeExtension(self, ctx: OpenSCENARIO2Parser.StructuredTypeEx # it is necessary to determine whether the extended symbol table matches the original type if type_name in self.__current_scope.symbols: for extend_member in ctx.extensionMemberDecl(): - if extend_member.structMemberDecl() and isinstance(self.__current_scope.symbols[type_name], - StructSymbol): + if extend_member.structMemberDecl() and isinstance( + self.__current_scope.symbols[type_name], StructSymbol + ): self.__current_scope = self.__current_scope.symbols[type_name] - elif extend_member.actorMemberDecl and isinstance(self.__current_scope.symbols[type_name], - ActorSymbol): + elif extend_member.actorMemberDecl and isinstance( + self.__current_scope.symbols[type_name], ActorSymbol + ): self.__current_scope = self.__current_scope.symbols[type_name] - elif extend_member.scenarioMemberDecl and isinstance(self.__current_scope.symbols[type_name], - ScenarioSymbol): + elif extend_member.scenarioMemberDecl and isinstance( + self.__current_scope.symbols[type_name], ScenarioSymbol + ): self.__current_scope = self.__current_scope.symbols[type_name] elif extend_member.behaviorSpecification: # TODO @@ -814,12 +870,18 @@ def enterStructuredTypeExtension(self, ctx: OpenSCENARIO2Parser.StructuredTypeEx # The two ifs here are syntactically mutually exclusive qualified_behavior_name = None if ctx.extendableTypeName().qualifiedBehaviorName(): - qualified_behavior_name = ctx.extendableTypeName().qualifiedBehaviorName().getText() + qualified_behavior_name = ( + ctx.extendableTypeName().qualifiedBehaviorName().getText() + ) if qualified_behavior_name in self.__current_scope.symbols: for extend_member in ctx.extensionMemberDecl(): if extend_member.scenarioMemberDecl and isinstance( - self.__current_scope.symbols[qualified_behavior_name], ScenarioSymbol): - self.__current_scope = self.__current_scope.symbols[qualified_behavior_name] + self.__current_scope.symbols[qualified_behavior_name], + ScenarioSymbol, + ): + self.__current_scope = self.__current_scope.symbols[ + qualified_behavior_name + ] elif extend_member.behaviorSpecification: # TODO msg = "not implemented" @@ -839,28 +901,40 @@ def enterStructuredTypeExtension(self, ctx: OpenSCENARIO2Parser.StructuredTypeEx self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#structuredTypeExtension. - def exitStructuredTypeExtension(self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext): + def exitStructuredTypeExtension( + self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext + ): self.__cur_node = self.__node_stack.pop() self.__current_scope = self.__current_scope.get_enclosing_scope() # Enter a parse tree produced by OpenSCENARIO2Parser#extendableTypeName. - def enterExtendableTypeName(self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext): + def enterExtendableTypeName( + self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#extendableTypeName. - def exitExtendableTypeName(self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext): + def exitExtendableTypeName( + self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#extensionMemberDecl. - def enterExtensionMemberDecl(self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext): + def enterExtensionMemberDecl( + self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#extensionMemberDecl. - def exitExtensionMemberDecl(self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext): + def exitExtensionMemberDecl( + self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#globalParameterDeclaration. - def enterGlobalParameterDeclaration(self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext): + def enterGlobalParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext + ): defaultValue = None if ctx.defaultValue(): defaultValue = ctx.defaultValue().getText() @@ -876,7 +950,9 @@ def enterGlobalParameterDeclaration(self, ctx: OpenSCENARIO2Parser.GlobalParamet field_name.append(name) multi_field_name = multi_field_name_append(multi_field_name, name) - parameter = ParameterSymbol(multi_field_name, self.__current_scope, field_type, defaultValue) + parameter = ParameterSymbol( + multi_field_name, self.__current_scope, field_type, defaultValue + ) self.__current_scope.define(parameter, ctx.start) self.__current_scope = parameter @@ -888,7 +964,9 @@ def enterGlobalParameterDeclaration(self, ctx: OpenSCENARIO2Parser.GlobalParamet self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#globalParameterDeclaration. - def exitGlobalParameterDeclaration(self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext): + def exitGlobalParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext + ): self.__cur_node = self.__node_stack.pop() self.__current_scope = self.__current_scope.get_enclosing_scope() @@ -913,27 +991,39 @@ def exitTypeDeclarator(self, ctx: OpenSCENARIO2Parser.TypeDeclaratorContext): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#nonAggregateTypeDeclarator. - def enterNonAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext): + def enterNonAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#nonAggregateTypeDeclarator. - def exitNonAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext): + def exitNonAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#aggregateTypeDeclarator. - def enterAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext): + def enterAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#aggregateTypeDeclarator. - def exitAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext): + def exitAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#listTypeDeclarator. - def enterListTypeDeclarator(self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext): + def enterListTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#listTypeDeclarator. - def exitListTypeDeclarator(self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext): + def exitListTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#primitiveType. @@ -985,11 +1075,15 @@ def exitEventDeclaration(self, ctx: OpenSCENARIO2Parser.EventDeclarationContext) self.__current_scope = self.__current_scope.get_enclosing_scope() # Enter a parse tree produced by OpenSCENARIO2Parser#eventSpecification. - def enterEventSpecification(self, ctx: OpenSCENARIO2Parser.EventSpecificationContext): + def enterEventSpecification( + self, ctx: OpenSCENARIO2Parser.EventSpecificationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#eventSpecification. - def exitEventSpecification(self, ctx: OpenSCENARIO2Parser.EventSpecificationContext): + def exitEventSpecification( + self, ctx: OpenSCENARIO2Parser.EventSpecificationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#eventReference. @@ -1125,11 +1219,15 @@ def exitBoolExpression(self, ctx: OpenSCENARIO2Parser.BoolExpressionContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#durationExpression. - def enterDurationExpression(self, ctx: OpenSCENARIO2Parser.DurationExpressionContext): + def enterDurationExpression( + self, ctx: OpenSCENARIO2Parser.DurationExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#durationExpression. - def exitDurationExpression(self, ctx: OpenSCENARIO2Parser.DurationExpressionContext): + def exitDurationExpression( + self, ctx: OpenSCENARIO2Parser.DurationExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#fieldDeclaration. @@ -1141,8 +1239,9 @@ def exitFieldDeclaration(self, ctx: OpenSCENARIO2Parser.FieldDeclarationContext) pass # Enter a parse tree produced by OpenSCENARIO2Parser#parameterDeclaration. - def enterParameterDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext): - + def enterParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext + ): defaultValue = None if ctx.defaultValue(): defaultValue = ctx.defaultValue().getText() @@ -1159,7 +1258,9 @@ def enterParameterDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterDeclaratio field_name.append(name) multi_field_name = multi_field_name_append(multi_field_name, name) - parameter = ParameterSymbol(multi_field_name, self.__current_scope, field_type, defaultValue) + parameter = ParameterSymbol( + multi_field_name, self.__current_scope, field_type, defaultValue + ) self.__current_scope.define(parameter, ctx.start) self.__current_scope = parameter @@ -1171,12 +1272,16 @@ def enterParameterDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterDeclaratio self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#parameterDeclaration. - def exitParameterDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext): + def exitParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext + ): self.__cur_node = self.__node_stack.pop() self.__current_scope = self.__current_scope.get_enclosing_scope() # Enter a parse tree produced by OpenSCENARIO2Parser#variableDeclaration. - def enterVariableDeclaration(self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext): + def enterVariableDeclaration( + self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext + ): self.__node_stack.append(self.__cur_node) field_name = [] defaultValue = None @@ -1196,7 +1301,9 @@ def enterVariableDeclaration(self, ctx: OpenSCENARIO2Parser.VariableDeclarationC field_type = ctx.typeDeclarator().getText() - variable = VariableSymbol(multi_field_name, self.__current_scope, field_type, defaultValue) + variable = VariableSymbol( + multi_field_name, self.__current_scope, field_type, defaultValue + ) self.__current_scope.define(variable, ctx.start) self.__current_scope = variable @@ -1208,7 +1315,9 @@ def enterVariableDeclaration(self, ctx: OpenSCENARIO2Parser.VariableDeclarationC self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#variableDeclaration. - def exitVariableDeclaration(self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext): + def exitVariableDeclaration( + self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext + ): self.__cur_node = self.__node_stack.pop() self.__current_scope = self.__current_scope.get_enclosing_scope() @@ -1235,31 +1344,45 @@ def exitDefaultValue(self, ctx: OpenSCENARIO2Parser.DefaultValueContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#parameterWithDeclaration. - def enterParameterWithDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext): + def enterParameterWithDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#parameterWithDeclaration. - def exitParameterWithDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext): + def exitParameterWithDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#parameterWithMember. - def enterParameterWithMember(self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext): + def enterParameterWithMember( + self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#parameterWithMember. - def exitParameterWithMember(self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext): + def exitParameterWithMember( + self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#constraintDeclaration. - def enterConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext): + def enterConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#constraintDeclaration. - def exitConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext): + def exitConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#keepConstraintDeclaration. - def enterKeepConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext): + def enterKeepConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext + ): self.__node_stack.append(self.__cur_node) constraint_qualifier = None if ctx.constraintQualifier(): @@ -1277,28 +1400,40 @@ def enterKeepConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.KeepConstraint self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#keepConstraintDeclaration. - def exitKeepConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext): + def exitKeepConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext + ): self.__cur_node = self.__node_stack.pop() self.__current_scope = self.__current_scope.get_enclosing_scope() # Enter a parse tree produced by OpenSCENARIO2Parser#constraintQualifier. - def enterConstraintQualifier(self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext): + def enterConstraintQualifier( + self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#constraintQualifier. - def exitConstraintQualifier(self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext): + def exitConstraintQualifier( + self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#constraintExpression. - def enterConstraintExpression(self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext): + def enterConstraintExpression( + self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#constraintExpression. - def exitConstraintExpression(self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext): + def exitConstraintExpression( + self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#removeDefaultDeclaration. - def enterRemoveDefaultDeclaration(self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext): + def enterRemoveDefaultDeclaration( + self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext + ): self.__node_stack.append(self.__cur_node) node = ast_node.RemoveDefaultDeclaration() node.set_loc(ctx.start.line, ctx.start.column) @@ -1308,11 +1443,15 @@ def enterRemoveDefaultDeclaration(self, ctx: OpenSCENARIO2Parser.RemoveDefaultDe self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#removeDefaultDeclaration. - def exitRemoveDefaultDeclaration(self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext): + def exitRemoveDefaultDeclaration( + self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#parameterReference. - def enterParameterReference(self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext): + def enterParameterReference( + self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext + ): self.__node_stack.append(self.__cur_node) field_name = None if ctx.fieldName(): @@ -1330,11 +1469,15 @@ def enterParameterReference(self, ctx: OpenSCENARIO2Parser.ParameterReferenceCon self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#parameterReference. - def exitParameterReference(self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext): + def exitParameterReference( + self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#modifierInvocation. - def enterModifierInvocation(self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext): + def enterModifierInvocation( + self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext + ): self.__node_stack.append(self.__cur_node) modifier_name = ctx.modifierName().getText() @@ -1365,23 +1508,33 @@ def enterModifierInvocation(self, ctx: OpenSCENARIO2Parser.ModifierInvocationCon self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#modifierInvocation. - def exitModifierInvocation(self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext): + def exitModifierInvocation( + self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorExpression. - def enterBehaviorExpression(self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext): + def enterBehaviorExpression( + self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorExpression. - def exitBehaviorExpression(self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext): + def exitBehaviorExpression( + self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorSpecification. - def enterBehaviorSpecification(self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext): + def enterBehaviorSpecification( + self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorSpecification. - def exitBehaviorSpecification(self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext): + def exitBehaviorSpecification( + self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#onDirective. @@ -1439,7 +1592,9 @@ def enterDoMember(self, ctx: OpenSCENARIO2Parser.DoMemberContext): composition_operator = ctx.composition().compositionOperator().getText() if composition_operator is not None: - domember = DoMemberSymbol(label_name, self.__current_scope, composition_operator) + domember = DoMemberSymbol( + label_name, self.__current_scope, composition_operator + ) self.__current_scope.define(domember, ctx.start) self.__current_scope = domember @@ -1465,15 +1620,21 @@ def exitComposition(self, ctx: OpenSCENARIO2Parser.CompositionContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#compositionOperator. - def enterCompositionOperator(self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext): + def enterCompositionOperator( + self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#compositionOperator. - def exitCompositionOperator(self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext): + def exitCompositionOperator( + self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorInvocation. - def enterBehaviorInvocation(self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext): + def enterBehaviorInvocation( + self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext + ): self.__node_stack.append(self.__cur_node) actor = None name = "" @@ -1501,24 +1662,34 @@ def enterBehaviorInvocation(self, ctx: OpenSCENARIO2Parser.BehaviorInvocationCon self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorInvocation. - def exitBehaviorInvocation(self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext): + def exitBehaviorInvocation( + self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorWithDeclaration. - def enterBehaviorWithDeclaration(self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext): + def enterBehaviorWithDeclaration( + self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorWithDeclaration. - def exitBehaviorWithDeclaration(self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext): + def exitBehaviorWithDeclaration( + self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext + ): # self.__current_scope = self.__current_scope.get_enclosing_scope() pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorWithMember. - def enterBehaviorWithMember(self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext): + def enterBehaviorWithMember( + self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext + ): self.__node_stack.append(self.__cur_node) # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorWithMember. - def exitBehaviorWithMember(self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext): + def exitBehaviorWithMember( + self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#labelName. @@ -1645,7 +1816,9 @@ def exitReturnType(self, ctx: OpenSCENARIO2Parser.ReturnTypeContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#methodImplementation. - def enterMethodImplementation(self, ctx: OpenSCENARIO2Parser.MethodImplementationContext): + def enterMethodImplementation( + self, ctx: OpenSCENARIO2Parser.MethodImplementationContext + ): self.__node_stack.append(self.__cur_node) qualifier = None if ctx.methodQualifier(): @@ -1670,7 +1843,9 @@ def enterMethodImplementation(self, ctx: OpenSCENARIO2Parser.MethodImplementatio self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#methodImplementation. - def exitMethodImplementation(self, ctx: OpenSCENARIO2Parser.MethodImplementationContext): + def exitMethodImplementation( + self, ctx: OpenSCENARIO2Parser.MethodImplementationContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#methodQualifier. @@ -1690,11 +1865,15 @@ def exitMethodName(self, ctx: OpenSCENARIO2Parser.MethodNameContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#coverageDeclaration. - def enterCoverageDeclaration(self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext): + def enterCoverageDeclaration( + self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#coverageDeclaration. - def exitCoverageDeclaration(self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext): + def exitCoverageDeclaration( + self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#coverDeclaration. @@ -1734,7 +1913,9 @@ def exitRecordDeclaration(self, ctx: OpenSCENARIO2Parser.RecordDeclarationContex self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#coverageExpression. - def enterCoverageExpression(self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext): + def enterCoverageExpression( + self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext + ): self.__node_stack.append(self.__cur_node) argument_name = "expression" node = ast_node.NamedArgument(argument_name) @@ -1745,7 +1926,9 @@ def enterCoverageExpression(self, ctx: OpenSCENARIO2Parser.CoverageExpressionCon self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#coverageExpression. - def exitCoverageExpression(self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext): + def exitCoverageExpression( + self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#coverageUnit. @@ -1814,11 +1997,15 @@ def exitCoverageEvent(self, ctx: OpenSCENARIO2Parser.CoverageEventContext): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#coverageNameArgument. - def enterCoverageNameArgument(self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext): + def enterCoverageNameArgument( + self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#coverageNameArgument. - def exitCoverageNameArgument(self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext): + def exitCoverageNameArgument( + self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#targetName. @@ -2035,7 +2222,9 @@ def exitCastExpression(self, ctx: OpenSCENARIO2Parser.CastExpressionContext): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#functionApplicationExpression. - def enterFunctionApplicationExpression(self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext): + def enterFunctionApplicationExpression( + self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext + ): self.__node_stack.append(self.__cur_node) func_name = ctx.postfixExp().getText() scope = self.__current_scope @@ -2050,15 +2239,19 @@ def enterFunctionApplicationExpression(self, ctx: OpenSCENARIO2Parser.FunctionAp self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#functionApplicationExpression. - def exitFunctionApplicationExpression(self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext): + def exitFunctionApplicationExpression( + self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#fieldAccessExpression. - def enterFieldAccessExpression(self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext): + def enterFieldAccessExpression( + self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext + ): self.__node_stack.append(self.__cur_node) field_name = ctx.postfixExp().getText() + "." + ctx.fieldName().getText() - if ctx.postfixExp().getText() == 'it': + if ctx.postfixExp().getText() == "it": field_name = self.__current_scope.get_enclosing_scope().type scope = None if self.__current_scope.resolve(field_name): @@ -2066,7 +2259,11 @@ def enterFieldAccessExpression(self, ctx: OpenSCENARIO2Parser.FieldAccessExpress if ctx.fieldName().getText() in scope.symbols: pass else: - msg = ctx.fieldName().getText() + " is not defined in scope: " + self.__current_scope.get_enclosing_scope().type + msg = ( + ctx.fieldName().getText() + + " is not defined in scope: " + + self.__current_scope.get_enclosing_scope().type + ) LOG_ERROR(msg, ctx.start) else: msg = "it -> " + field_name + " is not defined!" @@ -2080,11 +2277,15 @@ def enterFieldAccessExpression(self, ctx: OpenSCENARIO2Parser.FieldAccessExpress self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#fieldAccessExpression. - def exitFieldAccessExpression(self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext): + def exitFieldAccessExpression( + self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#elementAccessExpression. - def enterElementAccessExpression(self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext): + def enterElementAccessExpression( + self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext + ): self.__node_stack.append(self.__cur_node) list_name = ctx.postfixExp().getText() index = ctx.expression().getText() @@ -2096,11 +2297,15 @@ def enterElementAccessExpression(self, ctx: OpenSCENARIO2Parser.ElementAccessExp self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#elementAccessExpression. - def exitElementAccessExpression(self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext): + def exitElementAccessExpression( + self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#typeTestExpression. - def enterTypeTestExpression(self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext): + def enterTypeTestExpression( + self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext + ): self.__node_stack.append(self.__cur_node) object = ctx.postfixExp().getText() target_type = ctx.typeDeclarator().getText() @@ -2112,7 +2317,9 @@ def enterTypeTestExpression(self, ctx: OpenSCENARIO2Parser.TypeTestExpressionCon self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#typeTestExpression. - def exitTypeTestExpression(self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext): + def exitTypeTestExpression( + self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#fieldAccess. @@ -2194,7 +2401,9 @@ def exitRangeConstructor(self, ctx: OpenSCENARIO2Parser.RangeConstructorContext) self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#identifierReference. - def enterIdentifierReference(self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext): + def enterIdentifierReference( + self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext + ): self.__node_stack.append(self.__cur_node) field_name = [] @@ -2235,19 +2444,27 @@ def enterIdentifierReference(self, ctx: OpenSCENARIO2Parser.IdentifierReferenceC self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#identifierReference. - def exitIdentifierReference(self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext): + def exitIdentifierReference( + self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#argumentListSpecification. - def enterArgumentListSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext): + def enterArgumentListSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#argumentListSpecification. - def exitArgumentListSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext): + def exitArgumentListSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#argumentSpecification. - def enterArgumentSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext): + def enterArgumentSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext + ): self.__node_stack.append(self.__cur_node) argument_name = ctx.argumentName().getText() argument_type = ctx.typeDeclarator().getText() @@ -2258,13 +2475,21 @@ def enterArgumentSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentSpecificat scope = self.__current_scope.resolve(argument_type) if scope: pass - elif argument_type == 'int' or argument_type == 'uint' or argument_type == 'float' or argument_type == 'bool' or argument_type == 'string': + elif ( + argument_type == "int" + or argument_type == "uint" + or argument_type == "float" + or argument_type == "bool" + or argument_type == "string" + ): pass else: msg = "Argument Type " + argument_type + " is not defined!" LOG_ERROR(msg, ctx.start) - argument = ArgumentSpecificationSymbol(argument_name, self.__current_scope, argument_type, default_value) + argument = ArgumentSpecificationSymbol( + argument_name, self.__current_scope, argument_type, default_value + ) self.__current_scope.define(argument, ctx.start) self.__current_scope = argument @@ -2276,7 +2501,9 @@ def enterArgumentSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentSpecificat self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#argumentSpecification. - def exitArgumentSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext): + def exitArgumentSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext + ): self.__cur_node = self.__node_stack.pop() self.__current_scope = self.__current_scope.get_enclosing_scope() @@ -2297,7 +2524,9 @@ def exitArgumentList(self, ctx: OpenSCENARIO2Parser.ArgumentListContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#positionalArgument. - def enterPositionalArgument(self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext): + def enterPositionalArgument( + self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext + ): self.__node_stack.append(self.__cur_node) node = ast_node.PositionalArgument() @@ -2308,7 +2537,9 @@ def enterPositionalArgument(self, ctx: OpenSCENARIO2Parser.PositionalArgumentCon self.__cur_node = node # Exit a parse tree produced by OpenSCENARIO2Parser#positionalArgument. - def exitPositionalArgument(self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext): + def exitPositionalArgument( + self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext + ): self.__cur_node = self.__node_stack.pop() # Enter a parse tree produced by OpenSCENARIO2Parser#namedArgument. diff --git a/srunner/osc2/ast_manager/ast_listener.py b/srunner/osc2/ast_manager/ast_listener.py index 04a26ccfd..040798173 100644 --- a/srunner/osc2/ast_manager/ast_listener.py +++ b/srunner/osc2/ast_manager/ast_listener.py @@ -3,7 +3,6 @@ class ASTListener: - def enter_compilation_unit(self, node: ast_node.CompilationUnit): pass @@ -118,10 +117,14 @@ def enter_structured_type_extension(self, node: ast_node.StructuredTypeExtension def exit_structured_type_extension(self, node: ast_node.StructuredTypeExtension): pass - def enter_global_parameter_declaration(self, node: ast_node.GlobalParameterDeclaration): + def enter_global_parameter_declaration( + self, node: ast_node.GlobalParameterDeclaration + ): pass - def exit_global_parameter_declaration(self, node: ast_node.GlobalParameterDeclaration): + def exit_global_parameter_declaration( + self, node: ast_node.GlobalParameterDeclaration + ): pass def enter_parameter_declaration(self, node: ast_node.GlobalParameterDeclaration): @@ -214,10 +217,14 @@ def enter_variable_declaration(self, node: ast_node.VariableDeclaration): def exit_variable_declaration(self, node: ast_node.VariableDeclaration): pass - def enter_keep_constraint_declaration(self, node: ast_node.KeepConstraintDeclaration): + def enter_keep_constraint_declaration( + self, node: ast_node.KeepConstraintDeclaration + ): pass - def exit_keep_constraint_declaration(self, node: ast_node.KeepConstraintDeclaration): + def exit_keep_constraint_declaration( + self, node: ast_node.KeepConstraintDeclaration + ): pass def enter_remove_default_declaration(self, node: ast_node.RemoveDefaultDeclaration): @@ -328,10 +335,14 @@ def enter_element_access_expression(self, node: ast_node.ElementAccessExpression def exit_element_access_expression(self, node: ast_node.ElementAccessExpression): pass - def enter_function_application_expression(self, node: ast_node.FunctionApplicationExpression): + def enter_function_application_expression( + self, node: ast_node.FunctionApplicationExpression + ): pass - def exit_function_application_expression(self, node: ast_node.FunctionApplicationExpression): + def exit_function_application_expression( + self, node: ast_node.FunctionApplicationExpression + ): pass def enter_binary_expression(self, node: ast_node.BinaryExpression): diff --git a/srunner/osc2/ast_manager/ast_node.py b/srunner/osc2/ast_manager/ast_node.py index 124d2d5ed..75b97dd6f 100644 --- a/srunner/osc2/ast_manager/ast_node.py +++ b/srunner/osc2/ast_manager/ast_node.py @@ -93,7 +93,6 @@ class Expression(AST): class PhysicalTypeDeclaration(Declaration): - def __init__(self, type_name): super().__init__() self.type_name = type_name @@ -115,7 +114,6 @@ def accept(self, visitor): class UnitDeclaration(Declaration): - def __init__(self, unit_name, physical_name): super().__init__() self.unit_name = unit_name @@ -138,7 +136,6 @@ def accept(self, visitor): class SIBaseExponent(AST): - def __init__(self, unit_name): super().__init__() self.unit_name = unit_name @@ -160,7 +157,6 @@ def accept(self, visitor): class EnumDeclaration(Declaration): - def __init__(self, enum_name): super().__init__() self.enum_name = enum_name @@ -182,7 +178,6 @@ def accept(self, visitor): class EnumMemberDecl(Declaration): - def __init__(self, enum_member_name, num_member_value): super().__init__() self.enum_member_name = enum_member_name @@ -205,7 +200,6 @@ def accept(self, visitor): class EnumValueReference(AST): - def __init__(self, enum_name, enum_member_name): super().__init__() self.enum_name = enum_name @@ -228,7 +222,6 @@ def accept(self, visitor): class InheritsCondition(AST): - def __init__(self, field_name, bool_literal): super().__init__() self.field_name = field_name @@ -250,7 +243,6 @@ def accept(self, visitor): class StructDeclaration(Declaration): - def __init__(self, struct_name): super().__init__() self.struct_name = struct_name @@ -272,7 +264,6 @@ def accept(self, visitor): class StructInherts(AST): - def __init__(self, struct_name): super().__init__() self.struct_name = struct_name @@ -294,7 +285,6 @@ def accept(self, visitor): class ActorDeclaration(Declaration): - def __init__(self, actor_name): super().__init__() self.actor_name = actor_name @@ -316,7 +306,6 @@ def accept(self, visitor): class ActorInherts(AST): - def __init__(self, actor_name): super().__init__() self.actor_name = actor_name @@ -338,7 +327,6 @@ def accept(self, visitor): class ScenarioDeclaration(Declaration): - def __init__(self, qualified_behavior_name): super().__init__() self.qualified_behavior_name = qualified_behavior_name @@ -360,7 +348,6 @@ def accept(self, visitor): class ScenarioInherts(AST): - def __init__(self, qualified_behavior_name): super().__init__() self.qualified_behavior_name = qualified_behavior_name @@ -382,7 +369,6 @@ def accept(self, visitor): class ActionDeclaration(Declaration): - def __init__(self, qualified_behavior_name): super().__init__() self.qualified_behavior_name = qualified_behavior_name @@ -404,7 +390,6 @@ def accept(self, visitor): class ActionInherts(AST): - def __init__(self, qualified_behavior_name): super().__init__() self.qualified_behavior_name = qualified_behavior_name @@ -426,7 +411,6 @@ def accept(self, visitor): class ModifierDeclaration(Declaration): - def __init__(self, actor_name, modifier_name): super().__init__() self.actor_name = actor_name @@ -452,7 +436,6 @@ def accept(self, visitor): class EnumTypeExtension(Declaration): - def __init__(self, enum_name): super().__init__() self.enum_name = enum_name @@ -474,7 +457,6 @@ def accept(self, visitor): class StructuredTypeExtension(Declaration): - def __init__(self, type_name, qualified_behavior_name): super().__init__() self.type_name = type_name @@ -500,9 +482,9 @@ def accept(self, visitor): class GlobalParameterDeclaration(Declaration): - ''' + """ children stores name, type, and default values, where default values are not required - ''' + """ def __init__(self, field_name, field_type): super().__init__() @@ -526,7 +508,6 @@ def accept(self, visitor): class ParameterDeclaration(Declaration): - def __init__(self, field_name, field_type): super().__init__() self.field_name = field_name @@ -549,7 +530,6 @@ def accept(self, visitor): class ParameterReference(AST): - def __init__(self, field_name, field_access): super().__init__() self.field_name = field_name @@ -572,7 +552,6 @@ def accept(self, visitor): class VariableDeclaration(Declaration): - def __init__(self, field_name, field_type): super().__init__() self.field_name = field_name @@ -595,7 +574,6 @@ def accept(self, visitor): class EventDeclaration(Declaration): - def __init__(self, event_name): super().__init__() self.field_name = event_name @@ -617,7 +595,6 @@ def accept(self, visitor): class EventReference(AST): - def __init__(self, event_path): super().__init__() self.event_path = event_path @@ -639,7 +616,6 @@ def accept(self, visitor): class EventFieldDecl(AST): - def __init__(self, event_field_name): super().__init__() self.event_field_name = event_field_name @@ -661,7 +637,6 @@ def accept(self, visitor): class EventCondition(AST): - def __init__(self): super().__init__() @@ -681,7 +656,6 @@ def accept(self, visitor): class MethodDeclaration(Declaration): - def __init__(self, method_name, return_type): super().__init__() self.method_name = method_name @@ -704,10 +678,10 @@ def accept(self, visitor): class MethodBody(AST): - ''' + """ There are three types of method, expression, undefined, external In the children of this node, the type and the concrete method body are stored, in turn - ''' + """ def __init__(self, qualifier, type, external_name): super().__init__() @@ -732,10 +706,10 @@ def accept(self, visitor): class coverDeclaration(Declaration): - ''' - When override a 'cover', target name is none, + """ + When override a 'cover', target name is none, but must have an argument with name 'override'. - ''' + """ def __init__(self, target_name): super().__init__() @@ -758,10 +732,10 @@ def accept(self, visitor): class recordDeclaration(Declaration): - ''' - When override a 'record', target name is none, + """ + When override a 'record', target name is none, but must have an argument with name 'override'. - ''' + """ def __init__(self, target_name): super().__init__() @@ -784,7 +758,6 @@ def accept(self, visitor): class Argument(AST): - def __init__(self, argument_name, argument_type, default_value): super().__init__() self.argument_name = argument_name @@ -811,7 +784,6 @@ def accept(self, visitor): class NamedArgument(AST): - def __init__(self, argument_name): super().__init__() self.argument_name = argument_name @@ -833,7 +805,6 @@ def accept(self, visitor): class PositionalArgument(AST): - def __init__(self): super().__init__() @@ -853,9 +824,9 @@ def accept(self, visitor): class VariableDeclaration(Declaration): - ''' + """ 'var' fieldName (',' fieldName)* ':' typeDeclarator ('=' (sampleExpression | valueExp) )? NEWLINE; - ''' + """ def __init__(self, field_name, field_type): super().__init__() @@ -879,7 +850,6 @@ def accept(self, visitor): class KeepConstraintDeclaration(Declaration): - def __init__(self, constraint_qualifier): super().__init__() self.constraint_qualifier = constraint_qualifier @@ -901,7 +871,6 @@ def accept(self, visitor): class RemoveDefaultDeclaration(Declaration): - def __init__(self): super().__init__() @@ -921,7 +890,6 @@ def accept(self, visitor): class OnDirective(AST): - def __init__(self): super().__init__() @@ -941,7 +909,6 @@ def accept(self, visitor): class DoDirective(AST): - def __init__(self): super().__init__() @@ -961,7 +928,6 @@ def accept(self, visitor): class DoMember(AST): - def __init__(self, label_name, composition_operator): super().__init__() self.label_name = label_name @@ -984,7 +950,6 @@ def accept(self, visitor): class WaitDirective(AST): - def __init__(self): super().__init__() @@ -1004,7 +969,6 @@ def accept(self, visitor): class EmitDirective(AST): - def __init__(self, event_name): super().__init__() self.event_name = event_name @@ -1026,7 +990,6 @@ def accept(self, visitor): class CallDirective(AST): - def __init__(self, method_name): super().__init__() self.method_name = method_name @@ -1047,7 +1010,6 @@ def accept(self, visitor): class UntilDirective(AST): - def __init__(self): super().__init__() @@ -1067,7 +1029,6 @@ def accept(self, visitor): class BehaviorInvocation(AST): - def __init__(self, actor, behavior_name): super().__init__() self.actor = actor @@ -1090,7 +1051,6 @@ def accept(self, visitor): class ModifierInvocation(AST): - def __init__(self, actor, modifier_name): super().__init__() self.actor = actor @@ -1113,7 +1073,6 @@ def accept(self, visitor): class RiseExpression(Expression): - def __init__(self): super().__init__() @@ -1133,7 +1092,6 @@ def accept(self, visitor): class FallExpression(Expression): - def __init__(self): super().__init__() @@ -1153,7 +1111,6 @@ def accept(self, visitor): class ElapsedExpression(Expression): - def __init__(self): super().__init__() @@ -1198,10 +1155,10 @@ def accept(self, visitor): class SampleExpression(Expression): - ''' + """ In the sample expression, there are at most three children among its children, 'sample' OPEN_PAREN expression ',' eventSpecification (',' defaultValue)? CLOSE_PAREN; - ''' + """ def __init__(self): super().__init__() @@ -1222,8 +1179,7 @@ def accept(self, visitor): class CastExpression(Expression): - ''' - ''' + """ """ def __init__(self, object, target_type): super().__init__() @@ -1246,8 +1202,7 @@ def accept(self, visitor): class TypeTestExpression(Expression): - ''' - ''' + """ """ def __init__(self, object, target_type): super().__init__() @@ -1270,8 +1225,7 @@ def accept(self, visitor): class ElementAccessExpression(Expression): - ''' - ''' + """ """ def __init__(self, list_name, index): super().__init__() @@ -1294,10 +1248,10 @@ def accept(self, visitor): class FunctionApplicationExpression(Expression): - ''' + """ In a functionApplication expression, store the method name and its arguments in the children. Method names are represented by identifier nodes - ''' + """ def __init__(self, func_name): super().__init__() @@ -1319,7 +1273,6 @@ def accept(self, visitor): class FieldAccessExpression(Expression): - def __init__(self, field_name): super().__init__() self.field_name = field_name @@ -1341,9 +1294,9 @@ def accept(self, visitor): class BinaryExpression(Expression): - ''' + """ In the children of this node, the operator, left expression, and right expression are stored, in order - ''' + """ def __init__(self, operator): super().__init__() @@ -1366,9 +1319,9 @@ def accept(self, visitor): class UnaryExpression(Expression): - ''' + """ In the children of this node, operators are stored, followed by expressions - ''' + """ def __init__(self, operator): super().__init__() @@ -1391,10 +1344,10 @@ def accept(self, visitor): class TernaryExpression(Expression): - ''' + """ In the children of this node, the conditional expression is stored, followed by the left expression, and then the right expression - ''' + """ def __init__(self): super().__init__() @@ -1441,7 +1394,6 @@ def accept(self, visitor): class RelationExpression(Expression): - def __init__(self, operator): super().__init__() self.operator = operator @@ -1509,7 +1461,6 @@ def accept(self, visitor): class PhysicalLiteral(AST): - def __init__(self, unit_name, value): super().__init__() self.value = value @@ -1532,7 +1483,6 @@ def accept(self, visitor): class IntegerLiteral(AST): - def __init__(self, type, value): super().__init__() self.type = type # uint, hex, int @@ -1555,7 +1505,6 @@ def accept(self, visitor): class FloatLiteral(AST): - def __init__(self, value): super().__init__() self.value = value @@ -1577,7 +1526,6 @@ def accept(self, visitor): class BoolLiteral(AST): - def __init__(self, value): super().__init__() self.value = value @@ -1599,7 +1547,6 @@ def accept(self, visitor): class StringLiteral(AST): - def __init__(self, value): super().__init__() self.value = value @@ -1621,7 +1568,6 @@ def accept(self, visitor): class Type(AST): - def __init__(self, type_name): super().__init__() self.type_name = type_name @@ -1643,7 +1589,6 @@ def accept(self, visitor): class Identifier(AST): - def __init__(self, name): super().__init__() self.name = name @@ -1665,7 +1610,6 @@ def accept(self, visitor): class IdentifierReference(AST): - def __init__(self, name): super().__init__() self.name = name diff --git a/srunner/osc2/ast_manager/ast_vistor.py b/srunner/osc2/ast_manager/ast_vistor.py index 8e305717a..a0a46b2c5 100644 --- a/srunner/osc2/ast_manager/ast_vistor.py +++ b/srunner/osc2/ast_manager/ast_vistor.py @@ -1,4 +1,5 @@ import ast + import srunner.osc2.ast_manager.ast_node as ast_node from srunner.osc2.ast_manager.ast_node import AST from srunner.tools.osc2_helper import OSC2Helper @@ -36,7 +37,6 @@ def should_visit_next_child(self, node, current_result): class ASTVisitor(BaseVisitor): - def visit_compilation_unit(self, node: ast_node.CompilationUnit): return self.visit_children(node) @@ -94,7 +94,9 @@ def visit_enum_type_extension(self, node: ast_node.EnumTypeExtension): def visit_structured_type_extension(self, node: ast_node.StructuredTypeExtension): return self.visit_children(node) - def visit_global_parameter_declaration(self, node: ast_node.GlobalParameterDeclaration): + def visit_global_parameter_declaration( + self, node: ast_node.GlobalParameterDeclaration + ): return self.visit_children(node) def visit_parameter_declaration(self, node: ast_node.ParameterDeclaration): @@ -142,7 +144,9 @@ def visit_positional_argument(self, node: ast_node.PositionalArgument): def visit_variable_declaration(self, node: ast_node.VariableDeclaration): return self.visit_children(node) - def visit_keep_constraint_declaration(self, node: ast_node.KeepConstraintDeclaration): + def visit_keep_constraint_declaration( + self, node: ast_node.KeepConstraintDeclaration + ): return self.visit_children(node) def visit_remove_default_declaration(self, node: ast_node.RemoveDefaultDeclaration): @@ -199,7 +203,9 @@ def visit_type_test_expression(self, node: ast_node.TypeTestExpression): def visit_element_access_expression(self, node: ast_node.ElementAccessExpression): return self.visit_children(node) - def visit_function_application_expression(self, node: ast_node.FunctionApplicationExpression): + def visit_function_application_expression( + self, node: ast_node.FunctionApplicationExpression + ): return self.visit_children(node) def visit_binary_expression(self, node: ast_node.BinaryExpression): diff --git a/srunner/osc2/ast_manager/ast_walker.py b/srunner/osc2/ast_manager/ast_walker.py index 348327e0c..a9854ca47 100644 --- a/srunner/osc2/ast_manager/ast_walker.py +++ b/srunner/osc2/ast_manager/ast_walker.py @@ -3,7 +3,6 @@ class ASTWalker(object): - def walk(self, listener: ASTListener, t: AST): self.enter_node(listener, t) diff --git a/srunner/osc2/error_manager/error_listener.py b/srunner/osc2/error_manager/error_listener.py index 09ef86ea0..b15a479a0 100644 --- a/srunner/osc2/error_manager/error_listener.py +++ b/srunner/osc2/error_manager/error_listener.py @@ -1,11 +1,12 @@ import re + from antlr4.error.ErrorListener import * from antlr4.Token import Token + from srunner.osc2.utils.log_manager import LOG_ERROR class OscErrorListener(ErrorListener): - def __init__(self, src): super(ErrorListener, self).__init__() self.src = src @@ -50,7 +51,7 @@ def syntaxError(self, recognizer, offendingSymbol, line, column, msg, e): token_name = self.getWrongToken(token) if re.match("^extraneous", msg): - if token_name == "\'\\n\'": + if token_name == "'\\n'": self.reportIndentationError(line, column, None) else: self.reportSyntaxErrorWithTokenName(line, column, token_name) @@ -67,11 +68,17 @@ def syntaxError(self, recognizer, offendingSymbol, line, column, msg, e): self.reportCommonSyntaxError(line, column, msg) # Ambiguity error - def reportAmbiguity(self, recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs): + def reportAmbiguity( + self, recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs + ): pass - def reportAttemptingFullContext(self, recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs): + def reportAttemptingFullContext( + self, recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs + ): pass - def reportContextSensitivity(self, recognizer, dfa, startIndex, stopIndex, prediction, configs): + def reportContextSensitivity( + self, recognizer, dfa, startIndex, stopIndex, prediction, configs + ): pass diff --git a/srunner/osc2/osc2_parser/OpenSCENARIO2Lexer.py b/srunner/osc2/osc2_parser/OpenSCENARIO2Lexer.py index d31e76220..60ed2b60a 100644 --- a/srunner/osc2/osc2_parser/OpenSCENARIO2Lexer.py +++ b/srunner/osc2/osc2_parser/OpenSCENARIO2Lexer.py @@ -1,395 +1,8067 @@ # Generated from .\OpenSCENARIO2.g4 by ANTLR 4.10.1 -from antlr4 import * -from io import StringIO import sys +from io import StringIO + +from antlr4 import * if sys.version_info[1] > 5: from typing import TextIO else: from typing.io import TextIO -from antlr4.Token import CommonToken -import re import importlib +import re + +from antlr4.Token import CommonToken # Allow languages to extend the lexer and parser, by loading the parser dynamically module_path = __name__[:-5] -language_name = __name__.split('.')[-1] +language_name = __name__.split(".")[-1] language_name = language_name[:-5] # Remove Lexer from name -LanguageParser = getattr(importlib.import_module('{}Parser'.format(module_path)), '{}Parser'.format(language_name)) +LanguageParser = getattr( + importlib.import_module("{}Parser".format(module_path)), + "{}Parser".format(language_name), +) def serializedATN(): return [ - 4, 0, 93, 830, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, - 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, - 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, - 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, - 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, - 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, - 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, - 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, - 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, - 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, - 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, - 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, - 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, - 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, - 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, - 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, - 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 1, 0, 1, 0, 1, - 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, - 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, - 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, - 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, - 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, - 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, - 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, - 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, - 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, - 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, - 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, - 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, - 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, - 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, - 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, - 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, - 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, - 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, - 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, - 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, - 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, - 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, - 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, - 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, - 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, - 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, - 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, - 1, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, - 1, 74, 1, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, - 3, 78, 604, 8, 78, 1, 78, 1, 78, 3, 78, 608, 8, 78, 1, 78, 3, 78, 611, 8, 78, 3, 78, 613, - 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, - 1, 82, 1, 82, 1, 83, 1, 83, 3, 83, 631, 8, 83, 1, 83, 1, 83, 1, 84, 4, 84, 636, 8, 84, 11, - 84, 12, 84, 637, 1, 85, 1, 85, 3, 85, 642, 8, 85, 1, 85, 3, 85, 645, 8, 85, 1, 85, 1, 85, - 1, 86, 3, 86, 650, 8, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 5, 87, 658, 8, 87, 10, - 87, 12, 87, 661, 9, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 5, 88, 670, 8, - 88, 10, 88, 12, 88, 673, 9, 88, 1, 88, 1, 88, 1, 89, 1, 89, 3, 89, 679, 8, 89, 1, 90, 1, - 90, 5, 90, 683, 8, 90, 10, 90, 12, 90, 686, 9, 90, 1, 90, 1, 90, 1, 90, 5, 90, 691, 8, - 90, 10, 90, 12, 90, 694, 9, 90, 1, 90, 3, 90, 697, 8, 90, 1, 91, 1, 91, 3, 91, 701, 8, - 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 5, 93, 710, 8, 93, 10, 93, 12, 93, - 713, 9, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 5, 93, 723, 8, 93, 10, - 93, 12, 93, 726, 9, 93, 1, 93, 1, 93, 1, 93, 3, 93, 731, 8, 93, 1, 94, 1, 94, 3, 94, 735, - 8, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 743, 8, 96, 1, 97, 3, 97, 746, 8, - 97, 1, 97, 5, 97, 749, 8, 97, 10, 97, 12, 97, 752, 9, 97, 1, 97, 1, 97, 4, 97, 756, 8, - 97, 11, 97, 12, 97, 757, 1, 97, 1, 97, 3, 97, 762, 8, 97, 1, 97, 4, 97, 765, 8, 97, 11, - 97, 12, 97, 766, 3, 97, 769, 8, 97, 1, 98, 4, 98, 772, 8, 98, 11, 98, 12, 98, 773, 1, - 99, 1, 99, 1, 99, 1, 99, 4, 99, 780, 8, 99, 11, 99, 12, 99, 781, 1, 100, 1, 100, 4, 100, - 786, 8, 100, 11, 100, 12, 100, 787, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, - 1, 101, 1, 101, 1, 101, 3, 101, 799, 8, 101, 1, 102, 1, 102, 5, 102, 803, 8, 102, 10, - 102, 12, 102, 806, 9, 102, 1, 102, 1, 102, 4, 102, 810, 8, 102, 11, 102, 12, 102, 811, - 1, 102, 1, 102, 3, 102, 816, 8, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, - 1, 106, 3, 106, 825, 8, 106, 1, 107, 1, 107, 3, 107, 829, 8, 107, 1, 659, 0, 108, 1, - 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, - 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, - 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, - 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, - 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, - 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, - 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, - 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 0, - 171, 0, 173, 0, 175, 85, 177, 86, 179, 87, 181, 0, 183, 0, 185, 0, 187, 0, 189, 0, 191, - 0, 193, 0, 195, 88, 197, 89, 199, 90, 201, 91, 203, 92, 205, 93, 207, 0, 209, 0, 211, - 0, 213, 0, 215, 0, 1, 0, 11, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 12, 13, 5, 0, 10, 10, 13, - 13, 34, 34, 39, 39, 92, 92, 1, 0, 92, 92, 2, 0, 43, 43, 45, 45, 2, 0, 69, 69, 101, 101, - 1, 0, 124, 124, 1, 0, 48, 57, 3, 0, 48, 57, 65, 70, 97, 102, 295, 0, 65, 90, 95, 95, 97, - 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 577, 592, 705, 710, - 721, 736, 740, 750, 750, 890, 890, 902, 902, 904, 906, 908, 908, 910, 929, 931, - 974, 976, 1013, 1015, 1153, 1162, 1230, 1232, 1273, 1280, 1295, 1329, 1366, 1369, - 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1569, 1594, 1600, 1610, 1646, 1647, - 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, - 1808, 1810, 1839, 1869, 1901, 1920, 1957, 1969, 1969, 2308, 2361, 2365, 2365, - 2384, 2384, 2392, 2401, 2429, 2429, 2437, 2444, 2447, 2448, 2451, 2472, 2474, - 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, - 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, - 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, - 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, - 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, - 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, - 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, - 2990, 3001, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, 3129, 3168, - 3169, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, - 3294, 3294, 3296, 3297, 3333, 3340, 3342, 3344, 3346, 3368, 3370, 3385, 3424, - 3425, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, - 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, - 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, - 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805, 3840, - 3840, 3904, 3911, 3913, 3946, 3976, 3979, 4096, 4129, 4131, 4135, 4137, 4138, - 4176, 4181, 4256, 4293, 4304, 4346, 4348, 4348, 4352, 4441, 4447, 4514, 4520, - 4601, 4608, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, - 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, - 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740, - 5743, 5750, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, 5905, 5920, - 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, - 6176, 6263, 6272, 6312, 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6569, 6593, - 6599, 6656, 6678, 7424, 7615, 7680, 7835, 7840, 7929, 7936, 7957, 7960, 7965, - 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, - 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, - 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, - 8340, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, - 8486, 8486, 8488, 8488, 8490, 8497, 8499, 8505, 8508, 8511, 8517, 8521, 8544, - 8579, 11264, 11310, 11312, 11358, 11392, 11492, 11520, 11557, 11568, 11621, - 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, - 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, - 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, - 12538, 12540, 12543, 12549, 12588, 12593, 12686, 12704, 12727, 12784, 12799, - 13312, 19893, 19968, 40891, 40960, 42124, 43008, 43009, 43011, 43013, 43015, - 43018, 43020, 43042, 44032, 55203, 63744, 64045, 64048, 64106, 64112, 64217, - 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, - 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, - 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, - 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, - 65498, 65500, 148, 0, 48, 57, 768, 879, 1155, 1158, 1425, 1465, 1467, 1469, 1471, - 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1552, 1557, 1611, 1630, 1632, 1641, - 1648, 1648, 1750, 1756, 1759, 1764, 1767, 1768, 1770, 1773, 1776, 1785, 1809, - 1809, 1840, 1866, 1958, 1968, 2305, 2307, 2364, 2364, 2366, 2381, 2385, 2388, - 2402, 2403, 2406, 2415, 2433, 2435, 2492, 2492, 2494, 2500, 2503, 2504, 2507, - 2509, 2519, 2519, 2530, 2531, 2534, 2543, 2561, 2563, 2620, 2620, 2622, 2626, - 2631, 2632, 2635, 2637, 2662, 2673, 2689, 2691, 2748, 2748, 2750, 2757, 2759, - 2761, 2763, 2765, 2786, 2787, 2790, 2799, 2817, 2819, 2876, 2876, 2878, 2883, - 2887, 2888, 2891, 2893, 2902, 2903, 2918, 2927, 2946, 2946, 3006, 3010, 3014, - 3016, 3018, 3021, 3031, 3031, 3046, 3055, 3073, 3075, 3134, 3140, 3142, 3144, - 3146, 3149, 3157, 3158, 3174, 3183, 3202, 3203, 3260, 3260, 3262, 3268, 3270, - 3272, 3274, 3277, 3285, 3286, 3302, 3311, 3330, 3331, 3390, 3395, 3398, 3400, - 3402, 3405, 3415, 3415, 3430, 3439, 3458, 3459, 3530, 3530, 3535, 3540, 3542, - 3542, 3544, 3551, 3570, 3571, 3633, 3633, 3636, 3642, 3655, 3662, 3664, 3673, - 3761, 3761, 3764, 3769, 3771, 3772, 3784, 3789, 3792, 3801, 3864, 3865, 3872, - 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3903, 3953, 3972, 3974, 3975, - 3984, 3991, 3993, 4028, 4038, 4038, 4140, 4146, 4150, 4153, 4160, 4169, 4182, - 4185, 4959, 4959, 4969, 4977, 5906, 5908, 5938, 5940, 5970, 5971, 6002, 6003, - 6070, 6099, 6109, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6313, 6313, 6432, - 6443, 6448, 6459, 6470, 6479, 6576, 6592, 6600, 6601, 6608, 6617, 6679, 6683, - 7616, 7619, 8255, 8256, 8276, 8276, 8400, 8412, 8417, 8417, 8421, 8427, 12330, - 12335, 12441, 12442, 43010, 43010, 43014, 43014, 43019, 43019, 43043, 43047, - 64286, 64286, 65024, 65039, 65056, 65059, 65075, 65076, 65101, 65103, 65296, - 65305, 65343, 65343, 849, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, - 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, - 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, - 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, - 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, - 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, - 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, - 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, - 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, - 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, - 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, - 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, - 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, - 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, - 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, - 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, - 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, - 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, - 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, - 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 1, 217, 1, 0, 0, 0, 3, 224, 1, 0, - 0, 0, 5, 226, 1, 0, 0, 0, 7, 231, 1, 0, 0, 0, 9, 234, 1, 0, 0, 0, 11, 237, 1, 0, 0, 0, 13, - 242, 1, 0, 0, 0, 15, 245, 1, 0, 0, 0, 17, 247, 1, 0, 0, 0, 19, 249, 1, 0, 0, 0, 21, 254, - 1, 0, 0, 0, 23, 256, 1, 0, 0, 0, 25, 258, 1, 0, 0, 0, 27, 261, 1, 0, 0, 0, 29, 268, 1, 0, - 0, 0, 31, 277, 1, 0, 0, 0, 33, 283, 1, 0, 0, 0, 35, 292, 1, 0, 0, 0, 37, 299, 1, 0, 0, 0, - 39, 308, 1, 0, 0, 0, 41, 315, 1, 0, 0, 0, 43, 322, 1, 0, 0, 0, 45, 327, 1, 0, 0, 0, 47, 331, - 1, 0, 0, 0, 49, 336, 1, 0, 0, 0, 51, 342, 1, 0, 0, 0, 53, 347, 1, 0, 0, 0, 55, 354, 1, 0, - 0, 0, 57, 360, 1, 0, 0, 0, 59, 363, 1, 0, 0, 0, 61, 365, 1, 0, 0, 0, 63, 368, 1, 0, 0, 0, - 65, 373, 1, 0, 0, 0, 67, 378, 1, 0, 0, 0, 69, 386, 1, 0, 0, 0, 71, 392, 1, 0, 0, 0, 73, 396, - 1, 0, 0, 0, 75, 403, 1, 0, 0, 0, 77, 408, 1, 0, 0, 0, 79, 413, 1, 0, 0, 0, 81, 421, 1, 0, - 0, 0, 83, 426, 1, 0, 0, 0, 85, 441, 1, 0, 0, 0, 87, 444, 1, 0, 0, 0, 89, 447, 1, 0, 0, 0, - 91, 454, 1, 0, 0, 0, 93, 461, 1, 0, 0, 0, 95, 470, 1, 0, 0, 0, 97, 475, 1, 0, 0, 0, 99, 480, - 1, 0, 0, 0, 101, 485, 1, 0, 0, 0, 103, 491, 1, 0, 0, 0, 105, 495, 1, 0, 0, 0, 107, 498, - 1, 0, 0, 0, 109, 509, 1, 0, 0, 0, 111, 519, 1, 0, 0, 0, 113, 528, 1, 0, 0, 0, 115, 533, - 1, 0, 0, 0, 117, 539, 1, 0, 0, 0, 119, 546, 1, 0, 0, 0, 121, 552, 1, 0, 0, 0, 123, 554, - 1, 0, 0, 0, 125, 557, 1, 0, 0, 0, 127, 560, 1, 0, 0, 0, 129, 564, 1, 0, 0, 0, 131, 568, - 1, 0, 0, 0, 133, 571, 1, 0, 0, 0, 135, 573, 1, 0, 0, 0, 137, 576, 1, 0, 0, 0, 139, 578, - 1, 0, 0, 0, 141, 581, 1, 0, 0, 0, 143, 584, 1, 0, 0, 0, 145, 586, 1, 0, 0, 0, 147, 588, - 1, 0, 0, 0, 149, 590, 1, 0, 0, 0, 151, 592, 1, 0, 0, 0, 153, 594, 1, 0, 0, 0, 155, 597, - 1, 0, 0, 0, 157, 612, 1, 0, 0, 0, 159, 616, 1, 0, 0, 0, 161, 619, 1, 0, 0, 0, 163, 622, - 1, 0, 0, 0, 165, 625, 1, 0, 0, 0, 167, 630, 1, 0, 0, 0, 169, 635, 1, 0, 0, 0, 171, 639, - 1, 0, 0, 0, 173, 649, 1, 0, 0, 0, 175, 653, 1, 0, 0, 0, 177, 667, 1, 0, 0, 0, 179, 678, - 1, 0, 0, 0, 181, 696, 1, 0, 0, 0, 183, 700, 1, 0, 0, 0, 185, 702, 1, 0, 0, 0, 187, 730, - 1, 0, 0, 0, 189, 734, 1, 0, 0, 0, 191, 736, 1, 0, 0, 0, 193, 742, 1, 0, 0, 0, 195, 745, - 1, 0, 0, 0, 197, 771, 1, 0, 0, 0, 199, 775, 1, 0, 0, 0, 201, 783, 1, 0, 0, 0, 203, 798, - 1, 0, 0, 0, 205, 815, 1, 0, 0, 0, 207, 817, 1, 0, 0, 0, 209, 819, 1, 0, 0, 0, 211, 821, - 1, 0, 0, 0, 213, 824, 1, 0, 0, 0, 215, 828, 1, 0, 0, 0, 217, 218, 5, 105, 0, 0, 218, 219, - 5, 109, 0, 0, 219, 220, 5, 112, 0, 0, 220, 221, 5, 111, 0, 0, 221, 222, 5, 114, 0, 0, - 222, 223, 5, 116, 0, 0, 223, 2, 1, 0, 0, 0, 224, 225, 5, 46, 0, 0, 225, 4, 1, 0, 0, 0, 226, - 227, 5, 116, 0, 0, 227, 228, 5, 121, 0, 0, 228, 229, 5, 112, 0, 0, 229, 230, 5, 101, - 0, 0, 230, 6, 1, 0, 0, 0, 231, 232, 5, 105, 0, 0, 232, 233, 5, 115, 0, 0, 233, 8, 1, 0, - 0, 0, 234, 235, 5, 83, 0, 0, 235, 236, 5, 73, 0, 0, 236, 10, 1, 0, 0, 0, 237, 238, 5, 117, - 0, 0, 238, 239, 5, 110, 0, 0, 239, 240, 5, 105, 0, 0, 240, 241, 5, 116, 0, 0, 241, 12, - 1, 0, 0, 0, 242, 243, 5, 111, 0, 0, 243, 244, 5, 102, 0, 0, 244, 14, 1, 0, 0, 0, 245, 246, - 5, 44, 0, 0, 246, 16, 1, 0, 0, 0, 247, 248, 5, 58, 0, 0, 248, 18, 1, 0, 0, 0, 249, 250, - 5, 101, 0, 0, 250, 251, 5, 110, 0, 0, 251, 252, 5, 117, 0, 0, 252, 253, 5, 109, 0, 0, - 253, 20, 1, 0, 0, 0, 254, 255, 5, 61, 0, 0, 255, 22, 1, 0, 0, 0, 256, 257, 5, 33, 0, 0, - 257, 24, 1, 0, 0, 0, 258, 259, 5, 61, 0, 0, 259, 260, 5, 61, 0, 0, 260, 26, 1, 0, 0, 0, - 261, 262, 5, 115, 0, 0, 262, 263, 5, 116, 0, 0, 263, 264, 5, 114, 0, 0, 264, 265, 5, - 117, 0, 0, 265, 266, 5, 99, 0, 0, 266, 267, 5, 116, 0, 0, 267, 28, 1, 0, 0, 0, 268, 269, - 5, 105, 0, 0, 269, 270, 5, 110, 0, 0, 270, 271, 5, 104, 0, 0, 271, 272, 5, 101, 0, 0, - 272, 273, 5, 114, 0, 0, 273, 274, 5, 105, 0, 0, 274, 275, 5, 116, 0, 0, 275, 276, 5, - 115, 0, 0, 276, 30, 1, 0, 0, 0, 277, 278, 5, 97, 0, 0, 278, 279, 5, 99, 0, 0, 279, 280, - 5, 116, 0, 0, 280, 281, 5, 111, 0, 0, 281, 282, 5, 114, 0, 0, 282, 32, 1, 0, 0, 0, 283, - 284, 5, 115, 0, 0, 284, 285, 5, 99, 0, 0, 285, 286, 5, 101, 0, 0, 286, 287, 5, 110, 0, - 0, 287, 288, 5, 97, 0, 0, 288, 289, 5, 114, 0, 0, 289, 290, 5, 105, 0, 0, 290, 291, 5, - 111, 0, 0, 291, 34, 1, 0, 0, 0, 292, 293, 5, 97, 0, 0, 293, 294, 5, 99, 0, 0, 294, 295, - 5, 116, 0, 0, 295, 296, 5, 105, 0, 0, 296, 297, 5, 111, 0, 0, 297, 298, 5, 110, 0, 0, - 298, 36, 1, 0, 0, 0, 299, 300, 5, 109, 0, 0, 300, 301, 5, 111, 0, 0, 301, 302, 5, 100, - 0, 0, 302, 303, 5, 105, 0, 0, 303, 304, 5, 102, 0, 0, 304, 305, 5, 105, 0, 0, 305, 306, - 5, 101, 0, 0, 306, 307, 5, 114, 0, 0, 307, 38, 1, 0, 0, 0, 308, 309, 5, 101, 0, 0, 309, - 310, 5, 120, 0, 0, 310, 311, 5, 116, 0, 0, 311, 312, 5, 101, 0, 0, 312, 313, 5, 110, - 0, 0, 313, 314, 5, 100, 0, 0, 314, 40, 1, 0, 0, 0, 315, 316, 5, 103, 0, 0, 316, 317, 5, - 108, 0, 0, 317, 318, 5, 111, 0, 0, 318, 319, 5, 98, 0, 0, 319, 320, 5, 97, 0, 0, 320, - 321, 5, 108, 0, 0, 321, 42, 1, 0, 0, 0, 322, 323, 5, 108, 0, 0, 323, 324, 5, 105, 0, 0, - 324, 325, 5, 115, 0, 0, 325, 326, 5, 116, 0, 0, 326, 44, 1, 0, 0, 0, 327, 328, 5, 105, - 0, 0, 328, 329, 5, 110, 0, 0, 329, 330, 5, 116, 0, 0, 330, 46, 1, 0, 0, 0, 331, 332, 5, - 117, 0, 0, 332, 333, 5, 105, 0, 0, 333, 334, 5, 110, 0, 0, 334, 335, 5, 116, 0, 0, 335, - 48, 1, 0, 0, 0, 336, 337, 5, 102, 0, 0, 337, 338, 5, 108, 0, 0, 338, 339, 5, 111, 0, 0, - 339, 340, 5, 97, 0, 0, 340, 341, 5, 116, 0, 0, 341, 50, 1, 0, 0, 0, 342, 343, 5, 98, 0, - 0, 343, 344, 5, 111, 0, 0, 344, 345, 5, 111, 0, 0, 345, 346, 5, 108, 0, 0, 346, 52, 1, - 0, 0, 0, 347, 348, 5, 115, 0, 0, 348, 349, 5, 116, 0, 0, 349, 350, 5, 114, 0, 0, 350, - 351, 5, 105, 0, 0, 351, 352, 5, 110, 0, 0, 352, 353, 5, 103, 0, 0, 353, 54, 1, 0, 0, 0, - 354, 355, 5, 101, 0, 0, 355, 356, 5, 118, 0, 0, 356, 357, 5, 101, 0, 0, 357, 358, 5, - 110, 0, 0, 358, 359, 5, 116, 0, 0, 359, 56, 1, 0, 0, 0, 360, 361, 5, 105, 0, 0, 361, 362, - 5, 102, 0, 0, 362, 58, 1, 0, 0, 0, 363, 364, 5, 64, 0, 0, 364, 60, 1, 0, 0, 0, 365, 366, - 5, 97, 0, 0, 366, 367, 5, 115, 0, 0, 367, 62, 1, 0, 0, 0, 368, 369, 5, 114, 0, 0, 369, - 370, 5, 105, 0, 0, 370, 371, 5, 115, 0, 0, 371, 372, 5, 101, 0, 0, 372, 64, 1, 0, 0, 0, - 373, 374, 5, 102, 0, 0, 374, 375, 5, 97, 0, 0, 375, 376, 5, 108, 0, 0, 376, 377, 5, 108, - 0, 0, 377, 66, 1, 0, 0, 0, 378, 379, 5, 101, 0, 0, 379, 380, 5, 108, 0, 0, 380, 381, 5, - 97, 0, 0, 381, 382, 5, 112, 0, 0, 382, 383, 5, 115, 0, 0, 383, 384, 5, 101, 0, 0, 384, - 385, 5, 100, 0, 0, 385, 68, 1, 0, 0, 0, 386, 387, 5, 101, 0, 0, 387, 388, 5, 118, 0, 0, - 388, 389, 5, 101, 0, 0, 389, 390, 5, 114, 0, 0, 390, 391, 5, 121, 0, 0, 391, 70, 1, 0, - 0, 0, 392, 393, 5, 118, 0, 0, 393, 394, 5, 97, 0, 0, 394, 395, 5, 114, 0, 0, 395, 72, - 1, 0, 0, 0, 396, 397, 5, 115, 0, 0, 397, 398, 5, 97, 0, 0, 398, 399, 5, 109, 0, 0, 399, - 400, 5, 112, 0, 0, 400, 401, 5, 108, 0, 0, 401, 402, 5, 101, 0, 0, 402, 74, 1, 0, 0, 0, - 403, 404, 5, 119, 0, 0, 404, 405, 5, 105, 0, 0, 405, 406, 5, 116, 0, 0, 406, 407, 5, - 104, 0, 0, 407, 76, 1, 0, 0, 0, 408, 409, 5, 107, 0, 0, 409, 410, 5, 101, 0, 0, 410, 411, - 5, 101, 0, 0, 411, 412, 5, 112, 0, 0, 412, 78, 1, 0, 0, 0, 413, 414, 5, 100, 0, 0, 414, - 415, 5, 101, 0, 0, 415, 416, 5, 102, 0, 0, 416, 417, 5, 97, 0, 0, 417, 418, 5, 117, 0, - 0, 418, 419, 5, 108, 0, 0, 419, 420, 5, 116, 0, 0, 420, 80, 1, 0, 0, 0, 421, 422, 5, 104, - 0, 0, 422, 423, 5, 97, 0, 0, 423, 424, 5, 114, 0, 0, 424, 425, 5, 100, 0, 0, 425, 82, - 1, 0, 0, 0, 426, 427, 5, 114, 0, 0, 427, 428, 5, 101, 0, 0, 428, 429, 5, 109, 0, 0, 429, - 430, 5, 111, 0, 0, 430, 431, 5, 118, 0, 0, 431, 432, 5, 101, 0, 0, 432, 433, 5, 95, 0, - 0, 433, 434, 5, 100, 0, 0, 434, 435, 5, 101, 0, 0, 435, 436, 5, 102, 0, 0, 436, 437, - 5, 97, 0, 0, 437, 438, 5, 117, 0, 0, 438, 439, 5, 108, 0, 0, 439, 440, 5, 116, 0, 0, 440, - 84, 1, 0, 0, 0, 441, 442, 5, 111, 0, 0, 442, 443, 5, 110, 0, 0, 443, 86, 1, 0, 0, 0, 444, - 445, 5, 100, 0, 0, 445, 446, 5, 111, 0, 0, 446, 88, 1, 0, 0, 0, 447, 448, 5, 115, 0, 0, - 448, 449, 5, 101, 0, 0, 449, 450, 5, 114, 0, 0, 450, 451, 5, 105, 0, 0, 451, 452, 5, - 97, 0, 0, 452, 453, 5, 108, 0, 0, 453, 90, 1, 0, 0, 0, 454, 455, 5, 111, 0, 0, 455, 456, - 5, 110, 0, 0, 456, 457, 5, 101, 0, 0, 457, 458, 5, 95, 0, 0, 458, 459, 5, 111, 0, 0, 459, - 460, 5, 102, 0, 0, 460, 92, 1, 0, 0, 0, 461, 462, 5, 112, 0, 0, 462, 463, 5, 97, 0, 0, - 463, 464, 5, 114, 0, 0, 464, 465, 5, 97, 0, 0, 465, 466, 5, 108, 0, 0, 466, 467, 5, 108, - 0, 0, 467, 468, 5, 101, 0, 0, 468, 469, 5, 108, 0, 0, 469, 94, 1, 0, 0, 0, 470, 471, 5, - 119, 0, 0, 471, 472, 5, 97, 0, 0, 472, 473, 5, 105, 0, 0, 473, 474, 5, 116, 0, 0, 474, - 96, 1, 0, 0, 0, 475, 476, 5, 101, 0, 0, 476, 477, 5, 109, 0, 0, 477, 478, 5, 105, 0, 0, - 478, 479, 5, 116, 0, 0, 479, 98, 1, 0, 0, 0, 480, 481, 5, 99, 0, 0, 481, 482, 5, 97, 0, - 0, 482, 483, 5, 108, 0, 0, 483, 484, 5, 108, 0, 0, 484, 100, 1, 0, 0, 0, 485, 486, 5, - 117, 0, 0, 486, 487, 5, 110, 0, 0, 487, 488, 5, 116, 0, 0, 488, 489, 5, 105, 0, 0, 489, - 490, 5, 108, 0, 0, 490, 102, 1, 0, 0, 0, 491, 492, 5, 100, 0, 0, 492, 493, 5, 101, 0, - 0, 493, 494, 5, 102, 0, 0, 494, 104, 1, 0, 0, 0, 495, 496, 5, 45, 0, 0, 496, 497, 5, 62, - 0, 0, 497, 106, 1, 0, 0, 0, 498, 499, 5, 101, 0, 0, 499, 500, 5, 120, 0, 0, 500, 501, - 5, 112, 0, 0, 501, 502, 5, 114, 0, 0, 502, 503, 5, 101, 0, 0, 503, 504, 5, 115, 0, 0, - 504, 505, 5, 115, 0, 0, 505, 506, 5, 105, 0, 0, 506, 507, 5, 111, 0, 0, 507, 508, 5, - 110, 0, 0, 508, 108, 1, 0, 0, 0, 509, 510, 5, 117, 0, 0, 510, 511, 5, 110, 0, 0, 511, - 512, 5, 100, 0, 0, 512, 513, 5, 101, 0, 0, 513, 514, 5, 102, 0, 0, 514, 515, 5, 105, - 0, 0, 515, 516, 5, 110, 0, 0, 516, 517, 5, 101, 0, 0, 517, 518, 5, 100, 0, 0, 518, 110, - 1, 0, 0, 0, 519, 520, 5, 101, 0, 0, 520, 521, 5, 120, 0, 0, 521, 522, 5, 116, 0, 0, 522, - 523, 5, 101, 0, 0, 523, 524, 5, 114, 0, 0, 524, 525, 5, 110, 0, 0, 525, 526, 5, 97, 0, - 0, 526, 527, 5, 108, 0, 0, 527, 112, 1, 0, 0, 0, 528, 529, 5, 111, 0, 0, 529, 530, 5, - 110, 0, 0, 530, 531, 5, 108, 0, 0, 531, 532, 5, 121, 0, 0, 532, 114, 1, 0, 0, 0, 533, - 534, 5, 99, 0, 0, 534, 535, 5, 111, 0, 0, 535, 536, 5, 118, 0, 0, 536, 537, 5, 101, 0, - 0, 537, 538, 5, 114, 0, 0, 538, 116, 1, 0, 0, 0, 539, 540, 5, 114, 0, 0, 540, 541, 5, - 101, 0, 0, 541, 542, 5, 99, 0, 0, 542, 543, 5, 111, 0, 0, 543, 544, 5, 114, 0, 0, 544, - 545, 5, 100, 0, 0, 545, 118, 1, 0, 0, 0, 546, 547, 5, 114, 0, 0, 547, 548, 5, 97, 0, 0, - 548, 549, 5, 110, 0, 0, 549, 550, 5, 103, 0, 0, 550, 551, 5, 101, 0, 0, 551, 120, 1, - 0, 0, 0, 552, 553, 5, 63, 0, 0, 553, 122, 1, 0, 0, 0, 554, 555, 5, 61, 0, 0, 555, 556, - 5, 62, 0, 0, 556, 124, 1, 0, 0, 0, 557, 558, 5, 111, 0, 0, 558, 559, 5, 114, 0, 0, 559, - 126, 1, 0, 0, 0, 560, 561, 5, 97, 0, 0, 561, 562, 5, 110, 0, 0, 562, 563, 5, 100, 0, 0, - 563, 128, 1, 0, 0, 0, 564, 565, 5, 110, 0, 0, 565, 566, 5, 111, 0, 0, 566, 567, 5, 116, - 0, 0, 567, 130, 1, 0, 0, 0, 568, 569, 5, 33, 0, 0, 569, 570, 5, 61, 0, 0, 570, 132, 1, - 0, 0, 0, 571, 572, 5, 60, 0, 0, 572, 134, 1, 0, 0, 0, 573, 574, 5, 60, 0, 0, 574, 575, - 5, 61, 0, 0, 575, 136, 1, 0, 0, 0, 576, 577, 5, 62, 0, 0, 577, 138, 1, 0, 0, 0, 578, 579, - 5, 62, 0, 0, 579, 580, 5, 61, 0, 0, 580, 140, 1, 0, 0, 0, 581, 582, 5, 105, 0, 0, 582, - 583, 5, 110, 0, 0, 583, 142, 1, 0, 0, 0, 584, 585, 5, 43, 0, 0, 585, 144, 1, 0, 0, 0, 586, - 587, 5, 45, 0, 0, 587, 146, 1, 0, 0, 0, 588, 589, 5, 42, 0, 0, 589, 148, 1, 0, 0, 0, 590, - 591, 5, 47, 0, 0, 591, 150, 1, 0, 0, 0, 592, 593, 5, 37, 0, 0, 593, 152, 1, 0, 0, 0, 594, - 595, 5, 105, 0, 0, 595, 596, 5, 116, 0, 0, 596, 154, 1, 0, 0, 0, 597, 598, 5, 46, 0, 0, - 598, 599, 5, 46, 0, 0, 599, 156, 1, 0, 0, 0, 600, 601, 4, 78, 0, 0, 601, 613, 3, 169, - 84, 0, 602, 604, 5, 13, 0, 0, 603, 602, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 1, - 0, 0, 0, 605, 608, 5, 10, 0, 0, 606, 608, 2, 12, 13, 0, 607, 603, 1, 0, 0, 0, 607, 606, - 1, 0, 0, 0, 608, 610, 1, 0, 0, 0, 609, 611, 3, 169, 84, 0, 610, 609, 1, 0, 0, 0, 610, 611, - 1, 0, 0, 0, 611, 613, 1, 0, 0, 0, 612, 600, 1, 0, 0, 0, 612, 607, 1, 0, 0, 0, 613, 614, - 1, 0, 0, 0, 614, 615, 6, 78, 0, 0, 615, 158, 1, 0, 0, 0, 616, 617, 5, 91, 0, 0, 617, 618, - 6, 79, 1, 0, 618, 160, 1, 0, 0, 0, 619, 620, 5, 93, 0, 0, 620, 621, 6, 80, 2, 0, 621, 162, - 1, 0, 0, 0, 622, 623, 5, 40, 0, 0, 623, 624, 6, 81, 3, 0, 624, 164, 1, 0, 0, 0, 625, 626, - 5, 41, 0, 0, 626, 627, 6, 82, 4, 0, 627, 166, 1, 0, 0, 0, 628, 631, 3, 169, 84, 0, 629, - 631, 3, 171, 85, 0, 630, 628, 1, 0, 0, 0, 630, 629, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, - 633, 6, 83, 5, 0, 633, 168, 1, 0, 0, 0, 634, 636, 7, 0, 0, 0, 635, 634, 1, 0, 0, 0, 636, - 637, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 170, 1, 0, 0, 0, 639, - 641, 5, 92, 0, 0, 640, 642, 3, 169, 84, 0, 641, 640, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, - 642, 644, 1, 0, 0, 0, 643, 645, 5, 13, 0, 0, 644, 643, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, - 645, 646, 1, 0, 0, 0, 646, 647, 5, 10, 0, 0, 647, 172, 1, 0, 0, 0, 648, 650, 5, 13, 0, - 0, 649, 648, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 652, 5, 10, 0, - 0, 652, 174, 1, 0, 0, 0, 653, 654, 5, 47, 0, 0, 654, 655, 5, 42, 0, 0, 655, 659, 1, 0, - 0, 0, 656, 658, 9, 0, 0, 0, 657, 656, 1, 0, 0, 0, 658, 661, 1, 0, 0, 0, 659, 660, 1, 0, - 0, 0, 659, 657, 1, 0, 0, 0, 660, 662, 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 662, 663, 5, 42, - 0, 0, 663, 664, 5, 47, 0, 0, 664, 665, 1, 0, 0, 0, 665, 666, 6, 87, 5, 0, 666, 176, 1, - 0, 0, 0, 667, 671, 5, 35, 0, 0, 668, 670, 8, 1, 0, 0, 669, 668, 1, 0, 0, 0, 670, 673, 1, - 0, 0, 0, 671, 669, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 674, 1, 0, 0, 0, 673, 671, 1, - 0, 0, 0, 674, 675, 6, 88, 5, 0, 675, 178, 1, 0, 0, 0, 676, 679, 3, 181, 90, 0, 677, 679, - 3, 187, 93, 0, 678, 676, 1, 0, 0, 0, 678, 677, 1, 0, 0, 0, 679, 180, 1, 0, 0, 0, 680, 684, - 5, 34, 0, 0, 681, 683, 3, 183, 91, 0, 682, 681, 1, 0, 0, 0, 683, 686, 1, 0, 0, 0, 684, - 682, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 687, 1, 0, 0, 0, 686, 684, 1, 0, 0, 0, 687, - 697, 5, 34, 0, 0, 688, 692, 5, 39, 0, 0, 689, 691, 3, 183, 91, 0, 690, 689, 1, 0, 0, 0, - 691, 694, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 695, 1, 0, 0, 0, - 694, 692, 1, 0, 0, 0, 695, 697, 5, 39, 0, 0, 696, 680, 1, 0, 0, 0, 696, 688, 1, 0, 0, 0, - 697, 182, 1, 0, 0, 0, 698, 701, 3, 185, 92, 0, 699, 701, 3, 193, 96, 0, 700, 698, 1, - 0, 0, 0, 700, 699, 1, 0, 0, 0, 701, 184, 1, 0, 0, 0, 702, 703, 8, 2, 0, 0, 703, 186, 1, - 0, 0, 0, 704, 705, 5, 34, 0, 0, 705, 706, 5, 34, 0, 0, 706, 707, 5, 34, 0, 0, 707, 711, - 1, 0, 0, 0, 708, 710, 3, 189, 94, 0, 709, 708, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 709, - 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 714, 1, 0, 0, 0, 713, 711, 1, 0, 0, 0, 714, 715, - 5, 34, 0, 0, 715, 716, 5, 34, 0, 0, 716, 731, 5, 34, 0, 0, 717, 718, 5, 39, 0, 0, 718, - 719, 5, 39, 0, 0, 719, 720, 5, 39, 0, 0, 720, 724, 1, 0, 0, 0, 721, 723, 3, 189, 94, 0, - 722, 721, 1, 0, 0, 0, 723, 726, 1, 0, 0, 0, 724, 722, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, - 725, 727, 1, 0, 0, 0, 726, 724, 1, 0, 0, 0, 727, 728, 5, 39, 0, 0, 728, 729, 5, 39, 0, - 0, 729, 731, 5, 39, 0, 0, 730, 704, 1, 0, 0, 0, 730, 717, 1, 0, 0, 0, 731, 188, 1, 0, 0, - 0, 732, 735, 3, 191, 95, 0, 733, 735, 3, 193, 96, 0, 734, 732, 1, 0, 0, 0, 734, 733, - 1, 0, 0, 0, 735, 190, 1, 0, 0, 0, 736, 737, 8, 3, 0, 0, 737, 192, 1, 0, 0, 0, 738, 739, - 5, 92, 0, 0, 739, 743, 9, 0, 0, 0, 740, 741, 5, 92, 0, 0, 741, 743, 3, 173, 86, 0, 742, - 738, 1, 0, 0, 0, 742, 740, 1, 0, 0, 0, 743, 194, 1, 0, 0, 0, 744, 746, 7, 4, 0, 0, 745, - 744, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 750, 1, 0, 0, 0, 747, 749, 3, 209, 104, 0, - 748, 747, 1, 0, 0, 0, 749, 752, 1, 0, 0, 0, 750, 748, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, - 751, 753, 1, 0, 0, 0, 752, 750, 1, 0, 0, 0, 753, 755, 5, 46, 0, 0, 754, 756, 3, 209, 104, - 0, 755, 754, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 755, 1, 0, 0, 0, 757, 758, 1, 0, 0, - 0, 758, 768, 1, 0, 0, 0, 759, 761, 7, 5, 0, 0, 760, 762, 7, 4, 0, 0, 761, 760, 1, 0, 0, - 0, 761, 762, 1, 0, 0, 0, 762, 764, 1, 0, 0, 0, 763, 765, 3, 209, 104, 0, 764, 763, 1, - 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 769, 1, - 0, 0, 0, 768, 759, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 196, 1, 0, 0, 0, 770, 772, 3, - 209, 104, 0, 771, 770, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, - 1, 0, 0, 0, 774, 198, 1, 0, 0, 0, 775, 776, 5, 48, 0, 0, 776, 777, 5, 120, 0, 0, 777, 779, - 1, 0, 0, 0, 778, 780, 3, 211, 105, 0, 779, 778, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, - 779, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 200, 1, 0, 0, 0, 783, 785, 5, 45, 0, 0, 784, - 786, 3, 209, 104, 0, 785, 784, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, - 787, 788, 1, 0, 0, 0, 788, 202, 1, 0, 0, 0, 789, 790, 5, 116, 0, 0, 790, 791, 5, 114, - 0, 0, 791, 792, 5, 117, 0, 0, 792, 799, 5, 101, 0, 0, 793, 794, 5, 102, 0, 0, 794, 795, - 5, 97, 0, 0, 795, 796, 5, 108, 0, 0, 796, 797, 5, 115, 0, 0, 797, 799, 5, 101, 0, 0, 798, - 789, 1, 0, 0, 0, 798, 793, 1, 0, 0, 0, 799, 204, 1, 0, 0, 0, 800, 804, 3, 213, 106, 0, - 801, 803, 3, 215, 107, 0, 802, 801, 1, 0, 0, 0, 803, 806, 1, 0, 0, 0, 804, 802, 1, 0, - 0, 0, 804, 805, 1, 0, 0, 0, 805, 816, 1, 0, 0, 0, 806, 804, 1, 0, 0, 0, 807, 809, 5, 124, - 0, 0, 808, 810, 3, 207, 103, 0, 809, 808, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 809, - 1, 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 814, 5, 124, 0, 0, 814, 816, - 1, 0, 0, 0, 815, 800, 1, 0, 0, 0, 815, 807, 1, 0, 0, 0, 816, 206, 1, 0, 0, 0, 817, 818, - 8, 6, 0, 0, 818, 208, 1, 0, 0, 0, 819, 820, 7, 7, 0, 0, 820, 210, 1, 0, 0, 0, 821, 822, - 7, 8, 0, 0, 822, 212, 1, 0, 0, 0, 823, 825, 7, 9, 0, 0, 824, 823, 1, 0, 0, 0, 825, 214, - 1, 0, 0, 0, 826, 829, 3, 213, 106, 0, 827, 829, 7, 10, 0, 0, 828, 826, 1, 0, 0, 0, 828, - 827, 1, 0, 0, 0, 829, 216, 1, 0, 0, 0, 37, 0, 603, 607, 610, 612, 630, 637, 641, 644, - 649, 659, 671, 678, 684, 692, 696, 700, 711, 724, 730, 734, 742, 745, 750, 757, - 761, 766, 768, 773, 781, 787, 798, 804, 811, 815, 824, 828, 6, 1, 78, 0, 1, 79, 1, - 1, 80, 2, 1, 81, 3, 1, 82, 4, 6, 0, 0 + 4, + 0, + 93, + 830, + 6, + -1, + 2, + 0, + 7, + 0, + 2, + 1, + 7, + 1, + 2, + 2, + 7, + 2, + 2, + 3, + 7, + 3, + 2, + 4, + 7, + 4, + 2, + 5, + 7, + 5, + 2, + 6, + 7, + 6, + 2, + 7, + 7, + 7, + 2, + 8, + 7, + 8, + 2, + 9, + 7, + 9, + 2, + 10, + 7, + 10, + 2, + 11, + 7, + 11, + 2, + 12, + 7, + 12, + 2, + 13, + 7, + 13, + 2, + 14, + 7, + 14, + 2, + 15, + 7, + 15, + 2, + 16, + 7, + 16, + 2, + 17, + 7, + 17, + 2, + 18, + 7, + 18, + 2, + 19, + 7, + 19, + 2, + 20, + 7, + 20, + 2, + 21, + 7, + 21, + 2, + 22, + 7, + 22, + 2, + 23, + 7, + 23, + 2, + 24, + 7, + 24, + 2, + 25, + 7, + 25, + 2, + 26, + 7, + 26, + 2, + 27, + 7, + 27, + 2, + 28, + 7, + 28, + 2, + 29, + 7, + 29, + 2, + 30, + 7, + 30, + 2, + 31, + 7, + 31, + 2, + 32, + 7, + 32, + 2, + 33, + 7, + 33, + 2, + 34, + 7, + 34, + 2, + 35, + 7, + 35, + 2, + 36, + 7, + 36, + 2, + 37, + 7, + 37, + 2, + 38, + 7, + 38, + 2, + 39, + 7, + 39, + 2, + 40, + 7, + 40, + 2, + 41, + 7, + 41, + 2, + 42, + 7, + 42, + 2, + 43, + 7, + 43, + 2, + 44, + 7, + 44, + 2, + 45, + 7, + 45, + 2, + 46, + 7, + 46, + 2, + 47, + 7, + 47, + 2, + 48, + 7, + 48, + 2, + 49, + 7, + 49, + 2, + 50, + 7, + 50, + 2, + 51, + 7, + 51, + 2, + 52, + 7, + 52, + 2, + 53, + 7, + 53, + 2, + 54, + 7, + 54, + 2, + 55, + 7, + 55, + 2, + 56, + 7, + 56, + 2, + 57, + 7, + 57, + 2, + 58, + 7, + 58, + 2, + 59, + 7, + 59, + 2, + 60, + 7, + 60, + 2, + 61, + 7, + 61, + 2, + 62, + 7, + 62, + 2, + 63, + 7, + 63, + 2, + 64, + 7, + 64, + 2, + 65, + 7, + 65, + 2, + 66, + 7, + 66, + 2, + 67, + 7, + 67, + 2, + 68, + 7, + 68, + 2, + 69, + 7, + 69, + 2, + 70, + 7, + 70, + 2, + 71, + 7, + 71, + 2, + 72, + 7, + 72, + 2, + 73, + 7, + 73, + 2, + 74, + 7, + 74, + 2, + 75, + 7, + 75, + 2, + 76, + 7, + 76, + 2, + 77, + 7, + 77, + 2, + 78, + 7, + 78, + 2, + 79, + 7, + 79, + 2, + 80, + 7, + 80, + 2, + 81, + 7, + 81, + 2, + 82, + 7, + 82, + 2, + 83, + 7, + 83, + 2, + 84, + 7, + 84, + 2, + 85, + 7, + 85, + 2, + 86, + 7, + 86, + 2, + 87, + 7, + 87, + 2, + 88, + 7, + 88, + 2, + 89, + 7, + 89, + 2, + 90, + 7, + 90, + 2, + 91, + 7, + 91, + 2, + 92, + 7, + 92, + 2, + 93, + 7, + 93, + 2, + 94, + 7, + 94, + 2, + 95, + 7, + 95, + 2, + 96, + 7, + 96, + 2, + 97, + 7, + 97, + 2, + 98, + 7, + 98, + 2, + 99, + 7, + 99, + 2, + 100, + 7, + 100, + 2, + 101, + 7, + 101, + 2, + 102, + 7, + 102, + 2, + 103, + 7, + 103, + 2, + 104, + 7, + 104, + 2, + 105, + 7, + 105, + 2, + 106, + 7, + 106, + 2, + 107, + 7, + 107, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 3, + 1, + 3, + 1, + 3, + 1, + 4, + 1, + 4, + 1, + 4, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 6, + 1, + 6, + 1, + 6, + 1, + 7, + 1, + 7, + 1, + 8, + 1, + 8, + 1, + 9, + 1, + 9, + 1, + 9, + 1, + 9, + 1, + 9, + 1, + 10, + 1, + 10, + 1, + 11, + 1, + 11, + 1, + 12, + 1, + 12, + 1, + 12, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 29, + 1, + 29, + 1, + 30, + 1, + 30, + 1, + 30, + 1, + 31, + 1, + 31, + 1, + 31, + 1, + 31, + 1, + 31, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 32, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 34, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 36, + 1, + 36, + 1, + 36, + 1, + 36, + 1, + 36, + 1, + 36, + 1, + 36, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 37, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 39, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 41, + 1, + 42, + 1, + 42, + 1, + 42, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 45, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 47, + 1, + 47, + 1, + 47, + 1, + 47, + 1, + 47, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 48, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 49, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 50, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 52, + 1, + 52, + 1, + 52, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 53, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 55, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 58, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 59, + 1, + 60, + 1, + 60, + 1, + 61, + 1, + 61, + 1, + 61, + 1, + 62, + 1, + 62, + 1, + 62, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 64, + 1, + 64, + 1, + 64, + 1, + 64, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 66, + 1, + 66, + 1, + 67, + 1, + 67, + 1, + 67, + 1, + 68, + 1, + 68, + 1, + 69, + 1, + 69, + 1, + 69, + 1, + 70, + 1, + 70, + 1, + 70, + 1, + 71, + 1, + 71, + 1, + 72, + 1, + 72, + 1, + 73, + 1, + 73, + 1, + 74, + 1, + 74, + 1, + 75, + 1, + 75, + 1, + 76, + 1, + 76, + 1, + 76, + 1, + 77, + 1, + 77, + 1, + 77, + 1, + 78, + 1, + 78, + 1, + 78, + 3, + 78, + 604, + 8, + 78, + 1, + 78, + 1, + 78, + 3, + 78, + 608, + 8, + 78, + 1, + 78, + 3, + 78, + 611, + 8, + 78, + 3, + 78, + 613, + 8, + 78, + 1, + 78, + 1, + 78, + 1, + 79, + 1, + 79, + 1, + 79, + 1, + 80, + 1, + 80, + 1, + 80, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 83, + 1, + 83, + 3, + 83, + 631, + 8, + 83, + 1, + 83, + 1, + 83, + 1, + 84, + 4, + 84, + 636, + 8, + 84, + 11, + 84, + 12, + 84, + 637, + 1, + 85, + 1, + 85, + 3, + 85, + 642, + 8, + 85, + 1, + 85, + 3, + 85, + 645, + 8, + 85, + 1, + 85, + 1, + 85, + 1, + 86, + 3, + 86, + 650, + 8, + 86, + 1, + 86, + 1, + 86, + 1, + 87, + 1, + 87, + 1, + 87, + 1, + 87, + 5, + 87, + 658, + 8, + 87, + 10, + 87, + 12, + 87, + 661, + 9, + 87, + 1, + 87, + 1, + 87, + 1, + 87, + 1, + 87, + 1, + 87, + 1, + 88, + 1, + 88, + 5, + 88, + 670, + 8, + 88, + 10, + 88, + 12, + 88, + 673, + 9, + 88, + 1, + 88, + 1, + 88, + 1, + 89, + 1, + 89, + 3, + 89, + 679, + 8, + 89, + 1, + 90, + 1, + 90, + 5, + 90, + 683, + 8, + 90, + 10, + 90, + 12, + 90, + 686, + 9, + 90, + 1, + 90, + 1, + 90, + 1, + 90, + 5, + 90, + 691, + 8, + 90, + 10, + 90, + 12, + 90, + 694, + 9, + 90, + 1, + 90, + 3, + 90, + 697, + 8, + 90, + 1, + 91, + 1, + 91, + 3, + 91, + 701, + 8, + 91, + 1, + 92, + 1, + 92, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 5, + 93, + 710, + 8, + 93, + 10, + 93, + 12, + 93, + 713, + 9, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 5, + 93, + 723, + 8, + 93, + 10, + 93, + 12, + 93, + 726, + 9, + 93, + 1, + 93, + 1, + 93, + 1, + 93, + 3, + 93, + 731, + 8, + 93, + 1, + 94, + 1, + 94, + 3, + 94, + 735, + 8, + 94, + 1, + 95, + 1, + 95, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 3, + 96, + 743, + 8, + 96, + 1, + 97, + 3, + 97, + 746, + 8, + 97, + 1, + 97, + 5, + 97, + 749, + 8, + 97, + 10, + 97, + 12, + 97, + 752, + 9, + 97, + 1, + 97, + 1, + 97, + 4, + 97, + 756, + 8, + 97, + 11, + 97, + 12, + 97, + 757, + 1, + 97, + 1, + 97, + 3, + 97, + 762, + 8, + 97, + 1, + 97, + 4, + 97, + 765, + 8, + 97, + 11, + 97, + 12, + 97, + 766, + 3, + 97, + 769, + 8, + 97, + 1, + 98, + 4, + 98, + 772, + 8, + 98, + 11, + 98, + 12, + 98, + 773, + 1, + 99, + 1, + 99, + 1, + 99, + 1, + 99, + 4, + 99, + 780, + 8, + 99, + 11, + 99, + 12, + 99, + 781, + 1, + 100, + 1, + 100, + 4, + 100, + 786, + 8, + 100, + 11, + 100, + 12, + 100, + 787, + 1, + 101, + 1, + 101, + 1, + 101, + 1, + 101, + 1, + 101, + 1, + 101, + 1, + 101, + 1, + 101, + 1, + 101, + 3, + 101, + 799, + 8, + 101, + 1, + 102, + 1, + 102, + 5, + 102, + 803, + 8, + 102, + 10, + 102, + 12, + 102, + 806, + 9, + 102, + 1, + 102, + 1, + 102, + 4, + 102, + 810, + 8, + 102, + 11, + 102, + 12, + 102, + 811, + 1, + 102, + 1, + 102, + 3, + 102, + 816, + 8, + 102, + 1, + 103, + 1, + 103, + 1, + 104, + 1, + 104, + 1, + 105, + 1, + 105, + 1, + 106, + 3, + 106, + 825, + 8, + 106, + 1, + 107, + 1, + 107, + 3, + 107, + 829, + 8, + 107, + 1, + 659, + 0, + 108, + 1, + 1, + 3, + 2, + 5, + 3, + 7, + 4, + 9, + 5, + 11, + 6, + 13, + 7, + 15, + 8, + 17, + 9, + 19, + 10, + 21, + 11, + 23, + 12, + 25, + 13, + 27, + 14, + 29, + 15, + 31, + 16, + 33, + 17, + 35, + 18, + 37, + 19, + 39, + 20, + 41, + 21, + 43, + 22, + 45, + 23, + 47, + 24, + 49, + 25, + 51, + 26, + 53, + 27, + 55, + 28, + 57, + 29, + 59, + 30, + 61, + 31, + 63, + 32, + 65, + 33, + 67, + 34, + 69, + 35, + 71, + 36, + 73, + 37, + 75, + 38, + 77, + 39, + 79, + 40, + 81, + 41, + 83, + 42, + 85, + 43, + 87, + 44, + 89, + 45, + 91, + 46, + 93, + 47, + 95, + 48, + 97, + 49, + 99, + 50, + 101, + 51, + 103, + 52, + 105, + 53, + 107, + 54, + 109, + 55, + 111, + 56, + 113, + 57, + 115, + 58, + 117, + 59, + 119, + 60, + 121, + 61, + 123, + 62, + 125, + 63, + 127, + 64, + 129, + 65, + 131, + 66, + 133, + 67, + 135, + 68, + 137, + 69, + 139, + 70, + 141, + 71, + 143, + 72, + 145, + 73, + 147, + 74, + 149, + 75, + 151, + 76, + 153, + 77, + 155, + 78, + 157, + 79, + 159, + 80, + 161, + 81, + 163, + 82, + 165, + 83, + 167, + 84, + 169, + 0, + 171, + 0, + 173, + 0, + 175, + 85, + 177, + 86, + 179, + 87, + 181, + 0, + 183, + 0, + 185, + 0, + 187, + 0, + 189, + 0, + 191, + 0, + 193, + 0, + 195, + 88, + 197, + 89, + 199, + 90, + 201, + 91, + 203, + 92, + 205, + 93, + 207, + 0, + 209, + 0, + 211, + 0, + 213, + 0, + 215, + 0, + 1, + 0, + 11, + 2, + 0, + 9, + 9, + 32, + 32, + 2, + 0, + 10, + 10, + 12, + 13, + 5, + 0, + 10, + 10, + 13, + 13, + 34, + 34, + 39, + 39, + 92, + 92, + 1, + 0, + 92, + 92, + 2, + 0, + 43, + 43, + 45, + 45, + 2, + 0, + 69, + 69, + 101, + 101, + 1, + 0, + 124, + 124, + 1, + 0, + 48, + 57, + 3, + 0, + 48, + 57, + 65, + 70, + 97, + 102, + 295, + 0, + 65, + 90, + 95, + 95, + 97, + 122, + 170, + 170, + 181, + 181, + 186, + 186, + 192, + 214, + 216, + 246, + 248, + 577, + 592, + 705, + 710, + 721, + 736, + 740, + 750, + 750, + 890, + 890, + 902, + 902, + 904, + 906, + 908, + 908, + 910, + 929, + 931, + 974, + 976, + 1013, + 1015, + 1153, + 1162, + 1230, + 1232, + 1273, + 1280, + 1295, + 1329, + 1366, + 1369, + 1369, + 1377, + 1415, + 1488, + 1514, + 1520, + 1522, + 1569, + 1594, + 1600, + 1610, + 1646, + 1647, + 1649, + 1747, + 1749, + 1749, + 1765, + 1766, + 1774, + 1775, + 1786, + 1788, + 1791, + 1791, + 1808, + 1808, + 1810, + 1839, + 1869, + 1901, + 1920, + 1957, + 1969, + 1969, + 2308, + 2361, + 2365, + 2365, + 2384, + 2384, + 2392, + 2401, + 2429, + 2429, + 2437, + 2444, + 2447, + 2448, + 2451, + 2472, + 2474, + 2480, + 2482, + 2482, + 2486, + 2489, + 2493, + 2493, + 2510, + 2510, + 2524, + 2525, + 2527, + 2529, + 2544, + 2545, + 2565, + 2570, + 2575, + 2576, + 2579, + 2600, + 2602, + 2608, + 2610, + 2611, + 2613, + 2614, + 2616, + 2617, + 2649, + 2652, + 2654, + 2654, + 2674, + 2676, + 2693, + 2701, + 2703, + 2705, + 2707, + 2728, + 2730, + 2736, + 2738, + 2739, + 2741, + 2745, + 2749, + 2749, + 2768, + 2768, + 2784, + 2785, + 2821, + 2828, + 2831, + 2832, + 2835, + 2856, + 2858, + 2864, + 2866, + 2867, + 2869, + 2873, + 2877, + 2877, + 2908, + 2909, + 2911, + 2913, + 2929, + 2929, + 2947, + 2947, + 2949, + 2954, + 2958, + 2960, + 2962, + 2965, + 2969, + 2970, + 2972, + 2972, + 2974, + 2975, + 2979, + 2980, + 2984, + 2986, + 2990, + 3001, + 3077, + 3084, + 3086, + 3088, + 3090, + 3112, + 3114, + 3123, + 3125, + 3129, + 3168, + 3169, + 3205, + 3212, + 3214, + 3216, + 3218, + 3240, + 3242, + 3251, + 3253, + 3257, + 3261, + 3261, + 3294, + 3294, + 3296, + 3297, + 3333, + 3340, + 3342, + 3344, + 3346, + 3368, + 3370, + 3385, + 3424, + 3425, + 3461, + 3478, + 3482, + 3505, + 3507, + 3515, + 3517, + 3517, + 3520, + 3526, + 3585, + 3632, + 3634, + 3635, + 3648, + 3654, + 3713, + 3714, + 3716, + 3716, + 3719, + 3720, + 3722, + 3722, + 3725, + 3725, + 3732, + 3735, + 3737, + 3743, + 3745, + 3747, + 3749, + 3749, + 3751, + 3751, + 3754, + 3755, + 3757, + 3760, + 3762, + 3763, + 3773, + 3773, + 3776, + 3780, + 3782, + 3782, + 3804, + 3805, + 3840, + 3840, + 3904, + 3911, + 3913, + 3946, + 3976, + 3979, + 4096, + 4129, + 4131, + 4135, + 4137, + 4138, + 4176, + 4181, + 4256, + 4293, + 4304, + 4346, + 4348, + 4348, + 4352, + 4441, + 4447, + 4514, + 4520, + 4601, + 4608, + 4680, + 4682, + 4685, + 4688, + 4694, + 4696, + 4696, + 4698, + 4701, + 4704, + 4744, + 4746, + 4749, + 4752, + 4784, + 4786, + 4789, + 4792, + 4798, + 4800, + 4800, + 4802, + 4805, + 4808, + 4822, + 4824, + 4880, + 4882, + 4885, + 4888, + 4954, + 4992, + 5007, + 5024, + 5108, + 5121, + 5740, + 5743, + 5750, + 5761, + 5786, + 5792, + 5866, + 5870, + 5872, + 5888, + 5900, + 5902, + 5905, + 5920, + 5937, + 5952, + 5969, + 5984, + 5996, + 5998, + 6000, + 6016, + 6067, + 6103, + 6103, + 6108, + 6108, + 6176, + 6263, + 6272, + 6312, + 6400, + 6428, + 6480, + 6509, + 6512, + 6516, + 6528, + 6569, + 6593, + 6599, + 6656, + 6678, + 7424, + 7615, + 7680, + 7835, + 7840, + 7929, + 7936, + 7957, + 7960, + 7965, + 7968, + 8005, + 8008, + 8013, + 8016, + 8023, + 8025, + 8025, + 8027, + 8027, + 8029, + 8029, + 8031, + 8061, + 8064, + 8116, + 8118, + 8124, + 8126, + 8126, + 8130, + 8132, + 8134, + 8140, + 8144, + 8147, + 8150, + 8155, + 8160, + 8172, + 8178, + 8180, + 8182, + 8188, + 8305, + 8305, + 8319, + 8319, + 8336, + 8340, + 8450, + 8450, + 8455, + 8455, + 8458, + 8467, + 8469, + 8469, + 8472, + 8477, + 8484, + 8484, + 8486, + 8486, + 8488, + 8488, + 8490, + 8497, + 8499, + 8505, + 8508, + 8511, + 8517, + 8521, + 8544, + 8579, + 11264, + 11310, + 11312, + 11358, + 11392, + 11492, + 11520, + 11557, + 11568, + 11621, + 11631, + 11631, + 11648, + 11670, + 11680, + 11686, + 11688, + 11694, + 11696, + 11702, + 11704, + 11710, + 11712, + 11718, + 11720, + 11726, + 11728, + 11734, + 11736, + 11742, + 12293, + 12295, + 12321, + 12329, + 12337, + 12341, + 12344, + 12348, + 12353, + 12438, + 12443, + 12447, + 12449, + 12538, + 12540, + 12543, + 12549, + 12588, + 12593, + 12686, + 12704, + 12727, + 12784, + 12799, + 13312, + 19893, + 19968, + 40891, + 40960, + 42124, + 43008, + 43009, + 43011, + 43013, + 43015, + 43018, + 43020, + 43042, + 44032, + 55203, + 63744, + 64045, + 64048, + 64106, + 64112, + 64217, + 64256, + 64262, + 64275, + 64279, + 64285, + 64285, + 64287, + 64296, + 64298, + 64310, + 64312, + 64316, + 64318, + 64318, + 64320, + 64321, + 64323, + 64324, + 64326, + 64433, + 64467, + 64829, + 64848, + 64911, + 64914, + 64967, + 65008, + 65019, + 65136, + 65140, + 65142, + 65276, + 65313, + 65338, + 65345, + 65370, + 65382, + 65470, + 65474, + 65479, + 65482, + 65487, + 65490, + 65495, + 65498, + 65500, + 148, + 0, + 48, + 57, + 768, + 879, + 1155, + 1158, + 1425, + 1465, + 1467, + 1469, + 1471, + 1471, + 1473, + 1474, + 1476, + 1477, + 1479, + 1479, + 1552, + 1557, + 1611, + 1630, + 1632, + 1641, + 1648, + 1648, + 1750, + 1756, + 1759, + 1764, + 1767, + 1768, + 1770, + 1773, + 1776, + 1785, + 1809, + 1809, + 1840, + 1866, + 1958, + 1968, + 2305, + 2307, + 2364, + 2364, + 2366, + 2381, + 2385, + 2388, + 2402, + 2403, + 2406, + 2415, + 2433, + 2435, + 2492, + 2492, + 2494, + 2500, + 2503, + 2504, + 2507, + 2509, + 2519, + 2519, + 2530, + 2531, + 2534, + 2543, + 2561, + 2563, + 2620, + 2620, + 2622, + 2626, + 2631, + 2632, + 2635, + 2637, + 2662, + 2673, + 2689, + 2691, + 2748, + 2748, + 2750, + 2757, + 2759, + 2761, + 2763, + 2765, + 2786, + 2787, + 2790, + 2799, + 2817, + 2819, + 2876, + 2876, + 2878, + 2883, + 2887, + 2888, + 2891, + 2893, + 2902, + 2903, + 2918, + 2927, + 2946, + 2946, + 3006, + 3010, + 3014, + 3016, + 3018, + 3021, + 3031, + 3031, + 3046, + 3055, + 3073, + 3075, + 3134, + 3140, + 3142, + 3144, + 3146, + 3149, + 3157, + 3158, + 3174, + 3183, + 3202, + 3203, + 3260, + 3260, + 3262, + 3268, + 3270, + 3272, + 3274, + 3277, + 3285, + 3286, + 3302, + 3311, + 3330, + 3331, + 3390, + 3395, + 3398, + 3400, + 3402, + 3405, + 3415, + 3415, + 3430, + 3439, + 3458, + 3459, + 3530, + 3530, + 3535, + 3540, + 3542, + 3542, + 3544, + 3551, + 3570, + 3571, + 3633, + 3633, + 3636, + 3642, + 3655, + 3662, + 3664, + 3673, + 3761, + 3761, + 3764, + 3769, + 3771, + 3772, + 3784, + 3789, + 3792, + 3801, + 3864, + 3865, + 3872, + 3881, + 3893, + 3893, + 3895, + 3895, + 3897, + 3897, + 3902, + 3903, + 3953, + 3972, + 3974, + 3975, + 3984, + 3991, + 3993, + 4028, + 4038, + 4038, + 4140, + 4146, + 4150, + 4153, + 4160, + 4169, + 4182, + 4185, + 4959, + 4959, + 4969, + 4977, + 5906, + 5908, + 5938, + 5940, + 5970, + 5971, + 6002, + 6003, + 6070, + 6099, + 6109, + 6109, + 6112, + 6121, + 6155, + 6157, + 6160, + 6169, + 6313, + 6313, + 6432, + 6443, + 6448, + 6459, + 6470, + 6479, + 6576, + 6592, + 6600, + 6601, + 6608, + 6617, + 6679, + 6683, + 7616, + 7619, + 8255, + 8256, + 8276, + 8276, + 8400, + 8412, + 8417, + 8417, + 8421, + 8427, + 12330, + 12335, + 12441, + 12442, + 43010, + 43010, + 43014, + 43014, + 43019, + 43019, + 43043, + 43047, + 64286, + 64286, + 65024, + 65039, + 65056, + 65059, + 65075, + 65076, + 65101, + 65103, + 65296, + 65305, + 65343, + 65343, + 849, + 0, + 1, + 1, + 0, + 0, + 0, + 0, + 3, + 1, + 0, + 0, + 0, + 0, + 5, + 1, + 0, + 0, + 0, + 0, + 7, + 1, + 0, + 0, + 0, + 0, + 9, + 1, + 0, + 0, + 0, + 0, + 11, + 1, + 0, + 0, + 0, + 0, + 13, + 1, + 0, + 0, + 0, + 0, + 15, + 1, + 0, + 0, + 0, + 0, + 17, + 1, + 0, + 0, + 0, + 0, + 19, + 1, + 0, + 0, + 0, + 0, + 21, + 1, + 0, + 0, + 0, + 0, + 23, + 1, + 0, + 0, + 0, + 0, + 25, + 1, + 0, + 0, + 0, + 0, + 27, + 1, + 0, + 0, + 0, + 0, + 29, + 1, + 0, + 0, + 0, + 0, + 31, + 1, + 0, + 0, + 0, + 0, + 33, + 1, + 0, + 0, + 0, + 0, + 35, + 1, + 0, + 0, + 0, + 0, + 37, + 1, + 0, + 0, + 0, + 0, + 39, + 1, + 0, + 0, + 0, + 0, + 41, + 1, + 0, + 0, + 0, + 0, + 43, + 1, + 0, + 0, + 0, + 0, + 45, + 1, + 0, + 0, + 0, + 0, + 47, + 1, + 0, + 0, + 0, + 0, + 49, + 1, + 0, + 0, + 0, + 0, + 51, + 1, + 0, + 0, + 0, + 0, + 53, + 1, + 0, + 0, + 0, + 0, + 55, + 1, + 0, + 0, + 0, + 0, + 57, + 1, + 0, + 0, + 0, + 0, + 59, + 1, + 0, + 0, + 0, + 0, + 61, + 1, + 0, + 0, + 0, + 0, + 63, + 1, + 0, + 0, + 0, + 0, + 65, + 1, + 0, + 0, + 0, + 0, + 67, + 1, + 0, + 0, + 0, + 0, + 69, + 1, + 0, + 0, + 0, + 0, + 71, + 1, + 0, + 0, + 0, + 0, + 73, + 1, + 0, + 0, + 0, + 0, + 75, + 1, + 0, + 0, + 0, + 0, + 77, + 1, + 0, + 0, + 0, + 0, + 79, + 1, + 0, + 0, + 0, + 0, + 81, + 1, + 0, + 0, + 0, + 0, + 83, + 1, + 0, + 0, + 0, + 0, + 85, + 1, + 0, + 0, + 0, + 0, + 87, + 1, + 0, + 0, + 0, + 0, + 89, + 1, + 0, + 0, + 0, + 0, + 91, + 1, + 0, + 0, + 0, + 0, + 93, + 1, + 0, + 0, + 0, + 0, + 95, + 1, + 0, + 0, + 0, + 0, + 97, + 1, + 0, + 0, + 0, + 0, + 99, + 1, + 0, + 0, + 0, + 0, + 101, + 1, + 0, + 0, + 0, + 0, + 103, + 1, + 0, + 0, + 0, + 0, + 105, + 1, + 0, + 0, + 0, + 0, + 107, + 1, + 0, + 0, + 0, + 0, + 109, + 1, + 0, + 0, + 0, + 0, + 111, + 1, + 0, + 0, + 0, + 0, + 113, + 1, + 0, + 0, + 0, + 0, + 115, + 1, + 0, + 0, + 0, + 0, + 117, + 1, + 0, + 0, + 0, + 0, + 119, + 1, + 0, + 0, + 0, + 0, + 121, + 1, + 0, + 0, + 0, + 0, + 123, + 1, + 0, + 0, + 0, + 0, + 125, + 1, + 0, + 0, + 0, + 0, + 127, + 1, + 0, + 0, + 0, + 0, + 129, + 1, + 0, + 0, + 0, + 0, + 131, + 1, + 0, + 0, + 0, + 0, + 133, + 1, + 0, + 0, + 0, + 0, + 135, + 1, + 0, + 0, + 0, + 0, + 137, + 1, + 0, + 0, + 0, + 0, + 139, + 1, + 0, + 0, + 0, + 0, + 141, + 1, + 0, + 0, + 0, + 0, + 143, + 1, + 0, + 0, + 0, + 0, + 145, + 1, + 0, + 0, + 0, + 0, + 147, + 1, + 0, + 0, + 0, + 0, + 149, + 1, + 0, + 0, + 0, + 0, + 151, + 1, + 0, + 0, + 0, + 0, + 153, + 1, + 0, + 0, + 0, + 0, + 155, + 1, + 0, + 0, + 0, + 0, + 157, + 1, + 0, + 0, + 0, + 0, + 159, + 1, + 0, + 0, + 0, + 0, + 161, + 1, + 0, + 0, + 0, + 0, + 163, + 1, + 0, + 0, + 0, + 0, + 165, + 1, + 0, + 0, + 0, + 0, + 167, + 1, + 0, + 0, + 0, + 0, + 175, + 1, + 0, + 0, + 0, + 0, + 177, + 1, + 0, + 0, + 0, + 0, + 179, + 1, + 0, + 0, + 0, + 0, + 195, + 1, + 0, + 0, + 0, + 0, + 197, + 1, + 0, + 0, + 0, + 0, + 199, + 1, + 0, + 0, + 0, + 0, + 201, + 1, + 0, + 0, + 0, + 0, + 203, + 1, + 0, + 0, + 0, + 0, + 205, + 1, + 0, + 0, + 0, + 1, + 217, + 1, + 0, + 0, + 0, + 3, + 224, + 1, + 0, + 0, + 0, + 5, + 226, + 1, + 0, + 0, + 0, + 7, + 231, + 1, + 0, + 0, + 0, + 9, + 234, + 1, + 0, + 0, + 0, + 11, + 237, + 1, + 0, + 0, + 0, + 13, + 242, + 1, + 0, + 0, + 0, + 15, + 245, + 1, + 0, + 0, + 0, + 17, + 247, + 1, + 0, + 0, + 0, + 19, + 249, + 1, + 0, + 0, + 0, + 21, + 254, + 1, + 0, + 0, + 0, + 23, + 256, + 1, + 0, + 0, + 0, + 25, + 258, + 1, + 0, + 0, + 0, + 27, + 261, + 1, + 0, + 0, + 0, + 29, + 268, + 1, + 0, + 0, + 0, + 31, + 277, + 1, + 0, + 0, + 0, + 33, + 283, + 1, + 0, + 0, + 0, + 35, + 292, + 1, + 0, + 0, + 0, + 37, + 299, + 1, + 0, + 0, + 0, + 39, + 308, + 1, + 0, + 0, + 0, + 41, + 315, + 1, + 0, + 0, + 0, + 43, + 322, + 1, + 0, + 0, + 0, + 45, + 327, + 1, + 0, + 0, + 0, + 47, + 331, + 1, + 0, + 0, + 0, + 49, + 336, + 1, + 0, + 0, + 0, + 51, + 342, + 1, + 0, + 0, + 0, + 53, + 347, + 1, + 0, + 0, + 0, + 55, + 354, + 1, + 0, + 0, + 0, + 57, + 360, + 1, + 0, + 0, + 0, + 59, + 363, + 1, + 0, + 0, + 0, + 61, + 365, + 1, + 0, + 0, + 0, + 63, + 368, + 1, + 0, + 0, + 0, + 65, + 373, + 1, + 0, + 0, + 0, + 67, + 378, + 1, + 0, + 0, + 0, + 69, + 386, + 1, + 0, + 0, + 0, + 71, + 392, + 1, + 0, + 0, + 0, + 73, + 396, + 1, + 0, + 0, + 0, + 75, + 403, + 1, + 0, + 0, + 0, + 77, + 408, + 1, + 0, + 0, + 0, + 79, + 413, + 1, + 0, + 0, + 0, + 81, + 421, + 1, + 0, + 0, + 0, + 83, + 426, + 1, + 0, + 0, + 0, + 85, + 441, + 1, + 0, + 0, + 0, + 87, + 444, + 1, + 0, + 0, + 0, + 89, + 447, + 1, + 0, + 0, + 0, + 91, + 454, + 1, + 0, + 0, + 0, + 93, + 461, + 1, + 0, + 0, + 0, + 95, + 470, + 1, + 0, + 0, + 0, + 97, + 475, + 1, + 0, + 0, + 0, + 99, + 480, + 1, + 0, + 0, + 0, + 101, + 485, + 1, + 0, + 0, + 0, + 103, + 491, + 1, + 0, + 0, + 0, + 105, + 495, + 1, + 0, + 0, + 0, + 107, + 498, + 1, + 0, + 0, + 0, + 109, + 509, + 1, + 0, + 0, + 0, + 111, + 519, + 1, + 0, + 0, + 0, + 113, + 528, + 1, + 0, + 0, + 0, + 115, + 533, + 1, + 0, + 0, + 0, + 117, + 539, + 1, + 0, + 0, + 0, + 119, + 546, + 1, + 0, + 0, + 0, + 121, + 552, + 1, + 0, + 0, + 0, + 123, + 554, + 1, + 0, + 0, + 0, + 125, + 557, + 1, + 0, + 0, + 0, + 127, + 560, + 1, + 0, + 0, + 0, + 129, + 564, + 1, + 0, + 0, + 0, + 131, + 568, + 1, + 0, + 0, + 0, + 133, + 571, + 1, + 0, + 0, + 0, + 135, + 573, + 1, + 0, + 0, + 0, + 137, + 576, + 1, + 0, + 0, + 0, + 139, + 578, + 1, + 0, + 0, + 0, + 141, + 581, + 1, + 0, + 0, + 0, + 143, + 584, + 1, + 0, + 0, + 0, + 145, + 586, + 1, + 0, + 0, + 0, + 147, + 588, + 1, + 0, + 0, + 0, + 149, + 590, + 1, + 0, + 0, + 0, + 151, + 592, + 1, + 0, + 0, + 0, + 153, + 594, + 1, + 0, + 0, + 0, + 155, + 597, + 1, + 0, + 0, + 0, + 157, + 612, + 1, + 0, + 0, + 0, + 159, + 616, + 1, + 0, + 0, + 0, + 161, + 619, + 1, + 0, + 0, + 0, + 163, + 622, + 1, + 0, + 0, + 0, + 165, + 625, + 1, + 0, + 0, + 0, + 167, + 630, + 1, + 0, + 0, + 0, + 169, + 635, + 1, + 0, + 0, + 0, + 171, + 639, + 1, + 0, + 0, + 0, + 173, + 649, + 1, + 0, + 0, + 0, + 175, + 653, + 1, + 0, + 0, + 0, + 177, + 667, + 1, + 0, + 0, + 0, + 179, + 678, + 1, + 0, + 0, + 0, + 181, + 696, + 1, + 0, + 0, + 0, + 183, + 700, + 1, + 0, + 0, + 0, + 185, + 702, + 1, + 0, + 0, + 0, + 187, + 730, + 1, + 0, + 0, + 0, + 189, + 734, + 1, + 0, + 0, + 0, + 191, + 736, + 1, + 0, + 0, + 0, + 193, + 742, + 1, + 0, + 0, + 0, + 195, + 745, + 1, + 0, + 0, + 0, + 197, + 771, + 1, + 0, + 0, + 0, + 199, + 775, + 1, + 0, + 0, + 0, + 201, + 783, + 1, + 0, + 0, + 0, + 203, + 798, + 1, + 0, + 0, + 0, + 205, + 815, + 1, + 0, + 0, + 0, + 207, + 817, + 1, + 0, + 0, + 0, + 209, + 819, + 1, + 0, + 0, + 0, + 211, + 821, + 1, + 0, + 0, + 0, + 213, + 824, + 1, + 0, + 0, + 0, + 215, + 828, + 1, + 0, + 0, + 0, + 217, + 218, + 5, + 105, + 0, + 0, + 218, + 219, + 5, + 109, + 0, + 0, + 219, + 220, + 5, + 112, + 0, + 0, + 220, + 221, + 5, + 111, + 0, + 0, + 221, + 222, + 5, + 114, + 0, + 0, + 222, + 223, + 5, + 116, + 0, + 0, + 223, + 2, + 1, + 0, + 0, + 0, + 224, + 225, + 5, + 46, + 0, + 0, + 225, + 4, + 1, + 0, + 0, + 0, + 226, + 227, + 5, + 116, + 0, + 0, + 227, + 228, + 5, + 121, + 0, + 0, + 228, + 229, + 5, + 112, + 0, + 0, + 229, + 230, + 5, + 101, + 0, + 0, + 230, + 6, + 1, + 0, + 0, + 0, + 231, + 232, + 5, + 105, + 0, + 0, + 232, + 233, + 5, + 115, + 0, + 0, + 233, + 8, + 1, + 0, + 0, + 0, + 234, + 235, + 5, + 83, + 0, + 0, + 235, + 236, + 5, + 73, + 0, + 0, + 236, + 10, + 1, + 0, + 0, + 0, + 237, + 238, + 5, + 117, + 0, + 0, + 238, + 239, + 5, + 110, + 0, + 0, + 239, + 240, + 5, + 105, + 0, + 0, + 240, + 241, + 5, + 116, + 0, + 0, + 241, + 12, + 1, + 0, + 0, + 0, + 242, + 243, + 5, + 111, + 0, + 0, + 243, + 244, + 5, + 102, + 0, + 0, + 244, + 14, + 1, + 0, + 0, + 0, + 245, + 246, + 5, + 44, + 0, + 0, + 246, + 16, + 1, + 0, + 0, + 0, + 247, + 248, + 5, + 58, + 0, + 0, + 248, + 18, + 1, + 0, + 0, + 0, + 249, + 250, + 5, + 101, + 0, + 0, + 250, + 251, + 5, + 110, + 0, + 0, + 251, + 252, + 5, + 117, + 0, + 0, + 252, + 253, + 5, + 109, + 0, + 0, + 253, + 20, + 1, + 0, + 0, + 0, + 254, + 255, + 5, + 61, + 0, + 0, + 255, + 22, + 1, + 0, + 0, + 0, + 256, + 257, + 5, + 33, + 0, + 0, + 257, + 24, + 1, + 0, + 0, + 0, + 258, + 259, + 5, + 61, + 0, + 0, + 259, + 260, + 5, + 61, + 0, + 0, + 260, + 26, + 1, + 0, + 0, + 0, + 261, + 262, + 5, + 115, + 0, + 0, + 262, + 263, + 5, + 116, + 0, + 0, + 263, + 264, + 5, + 114, + 0, + 0, + 264, + 265, + 5, + 117, + 0, + 0, + 265, + 266, + 5, + 99, + 0, + 0, + 266, + 267, + 5, + 116, + 0, + 0, + 267, + 28, + 1, + 0, + 0, + 0, + 268, + 269, + 5, + 105, + 0, + 0, + 269, + 270, + 5, + 110, + 0, + 0, + 270, + 271, + 5, + 104, + 0, + 0, + 271, + 272, + 5, + 101, + 0, + 0, + 272, + 273, + 5, + 114, + 0, + 0, + 273, + 274, + 5, + 105, + 0, + 0, + 274, + 275, + 5, + 116, + 0, + 0, + 275, + 276, + 5, + 115, + 0, + 0, + 276, + 30, + 1, + 0, + 0, + 0, + 277, + 278, + 5, + 97, + 0, + 0, + 278, + 279, + 5, + 99, + 0, + 0, + 279, + 280, + 5, + 116, + 0, + 0, + 280, + 281, + 5, + 111, + 0, + 0, + 281, + 282, + 5, + 114, + 0, + 0, + 282, + 32, + 1, + 0, + 0, + 0, + 283, + 284, + 5, + 115, + 0, + 0, + 284, + 285, + 5, + 99, + 0, + 0, + 285, + 286, + 5, + 101, + 0, + 0, + 286, + 287, + 5, + 110, + 0, + 0, + 287, + 288, + 5, + 97, + 0, + 0, + 288, + 289, + 5, + 114, + 0, + 0, + 289, + 290, + 5, + 105, + 0, + 0, + 290, + 291, + 5, + 111, + 0, + 0, + 291, + 34, + 1, + 0, + 0, + 0, + 292, + 293, + 5, + 97, + 0, + 0, + 293, + 294, + 5, + 99, + 0, + 0, + 294, + 295, + 5, + 116, + 0, + 0, + 295, + 296, + 5, + 105, + 0, + 0, + 296, + 297, + 5, + 111, + 0, + 0, + 297, + 298, + 5, + 110, + 0, + 0, + 298, + 36, + 1, + 0, + 0, + 0, + 299, + 300, + 5, + 109, + 0, + 0, + 300, + 301, + 5, + 111, + 0, + 0, + 301, + 302, + 5, + 100, + 0, + 0, + 302, + 303, + 5, + 105, + 0, + 0, + 303, + 304, + 5, + 102, + 0, + 0, + 304, + 305, + 5, + 105, + 0, + 0, + 305, + 306, + 5, + 101, + 0, + 0, + 306, + 307, + 5, + 114, + 0, + 0, + 307, + 38, + 1, + 0, + 0, + 0, + 308, + 309, + 5, + 101, + 0, + 0, + 309, + 310, + 5, + 120, + 0, + 0, + 310, + 311, + 5, + 116, + 0, + 0, + 311, + 312, + 5, + 101, + 0, + 0, + 312, + 313, + 5, + 110, + 0, + 0, + 313, + 314, + 5, + 100, + 0, + 0, + 314, + 40, + 1, + 0, + 0, + 0, + 315, + 316, + 5, + 103, + 0, + 0, + 316, + 317, + 5, + 108, + 0, + 0, + 317, + 318, + 5, + 111, + 0, + 0, + 318, + 319, + 5, + 98, + 0, + 0, + 319, + 320, + 5, + 97, + 0, + 0, + 320, + 321, + 5, + 108, + 0, + 0, + 321, + 42, + 1, + 0, + 0, + 0, + 322, + 323, + 5, + 108, + 0, + 0, + 323, + 324, + 5, + 105, + 0, + 0, + 324, + 325, + 5, + 115, + 0, + 0, + 325, + 326, + 5, + 116, + 0, + 0, + 326, + 44, + 1, + 0, + 0, + 0, + 327, + 328, + 5, + 105, + 0, + 0, + 328, + 329, + 5, + 110, + 0, + 0, + 329, + 330, + 5, + 116, + 0, + 0, + 330, + 46, + 1, + 0, + 0, + 0, + 331, + 332, + 5, + 117, + 0, + 0, + 332, + 333, + 5, + 105, + 0, + 0, + 333, + 334, + 5, + 110, + 0, + 0, + 334, + 335, + 5, + 116, + 0, + 0, + 335, + 48, + 1, + 0, + 0, + 0, + 336, + 337, + 5, + 102, + 0, + 0, + 337, + 338, + 5, + 108, + 0, + 0, + 338, + 339, + 5, + 111, + 0, + 0, + 339, + 340, + 5, + 97, + 0, + 0, + 340, + 341, + 5, + 116, + 0, + 0, + 341, + 50, + 1, + 0, + 0, + 0, + 342, + 343, + 5, + 98, + 0, + 0, + 343, + 344, + 5, + 111, + 0, + 0, + 344, + 345, + 5, + 111, + 0, + 0, + 345, + 346, + 5, + 108, + 0, + 0, + 346, + 52, + 1, + 0, + 0, + 0, + 347, + 348, + 5, + 115, + 0, + 0, + 348, + 349, + 5, + 116, + 0, + 0, + 349, + 350, + 5, + 114, + 0, + 0, + 350, + 351, + 5, + 105, + 0, + 0, + 351, + 352, + 5, + 110, + 0, + 0, + 352, + 353, + 5, + 103, + 0, + 0, + 353, + 54, + 1, + 0, + 0, + 0, + 354, + 355, + 5, + 101, + 0, + 0, + 355, + 356, + 5, + 118, + 0, + 0, + 356, + 357, + 5, + 101, + 0, + 0, + 357, + 358, + 5, + 110, + 0, + 0, + 358, + 359, + 5, + 116, + 0, + 0, + 359, + 56, + 1, + 0, + 0, + 0, + 360, + 361, + 5, + 105, + 0, + 0, + 361, + 362, + 5, + 102, + 0, + 0, + 362, + 58, + 1, + 0, + 0, + 0, + 363, + 364, + 5, + 64, + 0, + 0, + 364, + 60, + 1, + 0, + 0, + 0, + 365, + 366, + 5, + 97, + 0, + 0, + 366, + 367, + 5, + 115, + 0, + 0, + 367, + 62, + 1, + 0, + 0, + 0, + 368, + 369, + 5, + 114, + 0, + 0, + 369, + 370, + 5, + 105, + 0, + 0, + 370, + 371, + 5, + 115, + 0, + 0, + 371, + 372, + 5, + 101, + 0, + 0, + 372, + 64, + 1, + 0, + 0, + 0, + 373, + 374, + 5, + 102, + 0, + 0, + 374, + 375, + 5, + 97, + 0, + 0, + 375, + 376, + 5, + 108, + 0, + 0, + 376, + 377, + 5, + 108, + 0, + 0, + 377, + 66, + 1, + 0, + 0, + 0, + 378, + 379, + 5, + 101, + 0, + 0, + 379, + 380, + 5, + 108, + 0, + 0, + 380, + 381, + 5, + 97, + 0, + 0, + 381, + 382, + 5, + 112, + 0, + 0, + 382, + 383, + 5, + 115, + 0, + 0, + 383, + 384, + 5, + 101, + 0, + 0, + 384, + 385, + 5, + 100, + 0, + 0, + 385, + 68, + 1, + 0, + 0, + 0, + 386, + 387, + 5, + 101, + 0, + 0, + 387, + 388, + 5, + 118, + 0, + 0, + 388, + 389, + 5, + 101, + 0, + 0, + 389, + 390, + 5, + 114, + 0, + 0, + 390, + 391, + 5, + 121, + 0, + 0, + 391, + 70, + 1, + 0, + 0, + 0, + 392, + 393, + 5, + 118, + 0, + 0, + 393, + 394, + 5, + 97, + 0, + 0, + 394, + 395, + 5, + 114, + 0, + 0, + 395, + 72, + 1, + 0, + 0, + 0, + 396, + 397, + 5, + 115, + 0, + 0, + 397, + 398, + 5, + 97, + 0, + 0, + 398, + 399, + 5, + 109, + 0, + 0, + 399, + 400, + 5, + 112, + 0, + 0, + 400, + 401, + 5, + 108, + 0, + 0, + 401, + 402, + 5, + 101, + 0, + 0, + 402, + 74, + 1, + 0, + 0, + 0, + 403, + 404, + 5, + 119, + 0, + 0, + 404, + 405, + 5, + 105, + 0, + 0, + 405, + 406, + 5, + 116, + 0, + 0, + 406, + 407, + 5, + 104, + 0, + 0, + 407, + 76, + 1, + 0, + 0, + 0, + 408, + 409, + 5, + 107, + 0, + 0, + 409, + 410, + 5, + 101, + 0, + 0, + 410, + 411, + 5, + 101, + 0, + 0, + 411, + 412, + 5, + 112, + 0, + 0, + 412, + 78, + 1, + 0, + 0, + 0, + 413, + 414, + 5, + 100, + 0, + 0, + 414, + 415, + 5, + 101, + 0, + 0, + 415, + 416, + 5, + 102, + 0, + 0, + 416, + 417, + 5, + 97, + 0, + 0, + 417, + 418, + 5, + 117, + 0, + 0, + 418, + 419, + 5, + 108, + 0, + 0, + 419, + 420, + 5, + 116, + 0, + 0, + 420, + 80, + 1, + 0, + 0, + 0, + 421, + 422, + 5, + 104, + 0, + 0, + 422, + 423, + 5, + 97, + 0, + 0, + 423, + 424, + 5, + 114, + 0, + 0, + 424, + 425, + 5, + 100, + 0, + 0, + 425, + 82, + 1, + 0, + 0, + 0, + 426, + 427, + 5, + 114, + 0, + 0, + 427, + 428, + 5, + 101, + 0, + 0, + 428, + 429, + 5, + 109, + 0, + 0, + 429, + 430, + 5, + 111, + 0, + 0, + 430, + 431, + 5, + 118, + 0, + 0, + 431, + 432, + 5, + 101, + 0, + 0, + 432, + 433, + 5, + 95, + 0, + 0, + 433, + 434, + 5, + 100, + 0, + 0, + 434, + 435, + 5, + 101, + 0, + 0, + 435, + 436, + 5, + 102, + 0, + 0, + 436, + 437, + 5, + 97, + 0, + 0, + 437, + 438, + 5, + 117, + 0, + 0, + 438, + 439, + 5, + 108, + 0, + 0, + 439, + 440, + 5, + 116, + 0, + 0, + 440, + 84, + 1, + 0, + 0, + 0, + 441, + 442, + 5, + 111, + 0, + 0, + 442, + 443, + 5, + 110, + 0, + 0, + 443, + 86, + 1, + 0, + 0, + 0, + 444, + 445, + 5, + 100, + 0, + 0, + 445, + 446, + 5, + 111, + 0, + 0, + 446, + 88, + 1, + 0, + 0, + 0, + 447, + 448, + 5, + 115, + 0, + 0, + 448, + 449, + 5, + 101, + 0, + 0, + 449, + 450, + 5, + 114, + 0, + 0, + 450, + 451, + 5, + 105, + 0, + 0, + 451, + 452, + 5, + 97, + 0, + 0, + 452, + 453, + 5, + 108, + 0, + 0, + 453, + 90, + 1, + 0, + 0, + 0, + 454, + 455, + 5, + 111, + 0, + 0, + 455, + 456, + 5, + 110, + 0, + 0, + 456, + 457, + 5, + 101, + 0, + 0, + 457, + 458, + 5, + 95, + 0, + 0, + 458, + 459, + 5, + 111, + 0, + 0, + 459, + 460, + 5, + 102, + 0, + 0, + 460, + 92, + 1, + 0, + 0, + 0, + 461, + 462, + 5, + 112, + 0, + 0, + 462, + 463, + 5, + 97, + 0, + 0, + 463, + 464, + 5, + 114, + 0, + 0, + 464, + 465, + 5, + 97, + 0, + 0, + 465, + 466, + 5, + 108, + 0, + 0, + 466, + 467, + 5, + 108, + 0, + 0, + 467, + 468, + 5, + 101, + 0, + 0, + 468, + 469, + 5, + 108, + 0, + 0, + 469, + 94, + 1, + 0, + 0, + 0, + 470, + 471, + 5, + 119, + 0, + 0, + 471, + 472, + 5, + 97, + 0, + 0, + 472, + 473, + 5, + 105, + 0, + 0, + 473, + 474, + 5, + 116, + 0, + 0, + 474, + 96, + 1, + 0, + 0, + 0, + 475, + 476, + 5, + 101, + 0, + 0, + 476, + 477, + 5, + 109, + 0, + 0, + 477, + 478, + 5, + 105, + 0, + 0, + 478, + 479, + 5, + 116, + 0, + 0, + 479, + 98, + 1, + 0, + 0, + 0, + 480, + 481, + 5, + 99, + 0, + 0, + 481, + 482, + 5, + 97, + 0, + 0, + 482, + 483, + 5, + 108, + 0, + 0, + 483, + 484, + 5, + 108, + 0, + 0, + 484, + 100, + 1, + 0, + 0, + 0, + 485, + 486, + 5, + 117, + 0, + 0, + 486, + 487, + 5, + 110, + 0, + 0, + 487, + 488, + 5, + 116, + 0, + 0, + 488, + 489, + 5, + 105, + 0, + 0, + 489, + 490, + 5, + 108, + 0, + 0, + 490, + 102, + 1, + 0, + 0, + 0, + 491, + 492, + 5, + 100, + 0, + 0, + 492, + 493, + 5, + 101, + 0, + 0, + 493, + 494, + 5, + 102, + 0, + 0, + 494, + 104, + 1, + 0, + 0, + 0, + 495, + 496, + 5, + 45, + 0, + 0, + 496, + 497, + 5, + 62, + 0, + 0, + 497, + 106, + 1, + 0, + 0, + 0, + 498, + 499, + 5, + 101, + 0, + 0, + 499, + 500, + 5, + 120, + 0, + 0, + 500, + 501, + 5, + 112, + 0, + 0, + 501, + 502, + 5, + 114, + 0, + 0, + 502, + 503, + 5, + 101, + 0, + 0, + 503, + 504, + 5, + 115, + 0, + 0, + 504, + 505, + 5, + 115, + 0, + 0, + 505, + 506, + 5, + 105, + 0, + 0, + 506, + 507, + 5, + 111, + 0, + 0, + 507, + 508, + 5, + 110, + 0, + 0, + 508, + 108, + 1, + 0, + 0, + 0, + 509, + 510, + 5, + 117, + 0, + 0, + 510, + 511, + 5, + 110, + 0, + 0, + 511, + 512, + 5, + 100, + 0, + 0, + 512, + 513, + 5, + 101, + 0, + 0, + 513, + 514, + 5, + 102, + 0, + 0, + 514, + 515, + 5, + 105, + 0, + 0, + 515, + 516, + 5, + 110, + 0, + 0, + 516, + 517, + 5, + 101, + 0, + 0, + 517, + 518, + 5, + 100, + 0, + 0, + 518, + 110, + 1, + 0, + 0, + 0, + 519, + 520, + 5, + 101, + 0, + 0, + 520, + 521, + 5, + 120, + 0, + 0, + 521, + 522, + 5, + 116, + 0, + 0, + 522, + 523, + 5, + 101, + 0, + 0, + 523, + 524, + 5, + 114, + 0, + 0, + 524, + 525, + 5, + 110, + 0, + 0, + 525, + 526, + 5, + 97, + 0, + 0, + 526, + 527, + 5, + 108, + 0, + 0, + 527, + 112, + 1, + 0, + 0, + 0, + 528, + 529, + 5, + 111, + 0, + 0, + 529, + 530, + 5, + 110, + 0, + 0, + 530, + 531, + 5, + 108, + 0, + 0, + 531, + 532, + 5, + 121, + 0, + 0, + 532, + 114, + 1, + 0, + 0, + 0, + 533, + 534, + 5, + 99, + 0, + 0, + 534, + 535, + 5, + 111, + 0, + 0, + 535, + 536, + 5, + 118, + 0, + 0, + 536, + 537, + 5, + 101, + 0, + 0, + 537, + 538, + 5, + 114, + 0, + 0, + 538, + 116, + 1, + 0, + 0, + 0, + 539, + 540, + 5, + 114, + 0, + 0, + 540, + 541, + 5, + 101, + 0, + 0, + 541, + 542, + 5, + 99, + 0, + 0, + 542, + 543, + 5, + 111, + 0, + 0, + 543, + 544, + 5, + 114, + 0, + 0, + 544, + 545, + 5, + 100, + 0, + 0, + 545, + 118, + 1, + 0, + 0, + 0, + 546, + 547, + 5, + 114, + 0, + 0, + 547, + 548, + 5, + 97, + 0, + 0, + 548, + 549, + 5, + 110, + 0, + 0, + 549, + 550, + 5, + 103, + 0, + 0, + 550, + 551, + 5, + 101, + 0, + 0, + 551, + 120, + 1, + 0, + 0, + 0, + 552, + 553, + 5, + 63, + 0, + 0, + 553, + 122, + 1, + 0, + 0, + 0, + 554, + 555, + 5, + 61, + 0, + 0, + 555, + 556, + 5, + 62, + 0, + 0, + 556, + 124, + 1, + 0, + 0, + 0, + 557, + 558, + 5, + 111, + 0, + 0, + 558, + 559, + 5, + 114, + 0, + 0, + 559, + 126, + 1, + 0, + 0, + 0, + 560, + 561, + 5, + 97, + 0, + 0, + 561, + 562, + 5, + 110, + 0, + 0, + 562, + 563, + 5, + 100, + 0, + 0, + 563, + 128, + 1, + 0, + 0, + 0, + 564, + 565, + 5, + 110, + 0, + 0, + 565, + 566, + 5, + 111, + 0, + 0, + 566, + 567, + 5, + 116, + 0, + 0, + 567, + 130, + 1, + 0, + 0, + 0, + 568, + 569, + 5, + 33, + 0, + 0, + 569, + 570, + 5, + 61, + 0, + 0, + 570, + 132, + 1, + 0, + 0, + 0, + 571, + 572, + 5, + 60, + 0, + 0, + 572, + 134, + 1, + 0, + 0, + 0, + 573, + 574, + 5, + 60, + 0, + 0, + 574, + 575, + 5, + 61, + 0, + 0, + 575, + 136, + 1, + 0, + 0, + 0, + 576, + 577, + 5, + 62, + 0, + 0, + 577, + 138, + 1, + 0, + 0, + 0, + 578, + 579, + 5, + 62, + 0, + 0, + 579, + 580, + 5, + 61, + 0, + 0, + 580, + 140, + 1, + 0, + 0, + 0, + 581, + 582, + 5, + 105, + 0, + 0, + 582, + 583, + 5, + 110, + 0, + 0, + 583, + 142, + 1, + 0, + 0, + 0, + 584, + 585, + 5, + 43, + 0, + 0, + 585, + 144, + 1, + 0, + 0, + 0, + 586, + 587, + 5, + 45, + 0, + 0, + 587, + 146, + 1, + 0, + 0, + 0, + 588, + 589, + 5, + 42, + 0, + 0, + 589, + 148, + 1, + 0, + 0, + 0, + 590, + 591, + 5, + 47, + 0, + 0, + 591, + 150, + 1, + 0, + 0, + 0, + 592, + 593, + 5, + 37, + 0, + 0, + 593, + 152, + 1, + 0, + 0, + 0, + 594, + 595, + 5, + 105, + 0, + 0, + 595, + 596, + 5, + 116, + 0, + 0, + 596, + 154, + 1, + 0, + 0, + 0, + 597, + 598, + 5, + 46, + 0, + 0, + 598, + 599, + 5, + 46, + 0, + 0, + 599, + 156, + 1, + 0, + 0, + 0, + 600, + 601, + 4, + 78, + 0, + 0, + 601, + 613, + 3, + 169, + 84, + 0, + 602, + 604, + 5, + 13, + 0, + 0, + 603, + 602, + 1, + 0, + 0, + 0, + 603, + 604, + 1, + 0, + 0, + 0, + 604, + 605, + 1, + 0, + 0, + 0, + 605, + 608, + 5, + 10, + 0, + 0, + 606, + 608, + 2, + 12, + 13, + 0, + 607, + 603, + 1, + 0, + 0, + 0, + 607, + 606, + 1, + 0, + 0, + 0, + 608, + 610, + 1, + 0, + 0, + 0, + 609, + 611, + 3, + 169, + 84, + 0, + 610, + 609, + 1, + 0, + 0, + 0, + 610, + 611, + 1, + 0, + 0, + 0, + 611, + 613, + 1, + 0, + 0, + 0, + 612, + 600, + 1, + 0, + 0, + 0, + 612, + 607, + 1, + 0, + 0, + 0, + 613, + 614, + 1, + 0, + 0, + 0, + 614, + 615, + 6, + 78, + 0, + 0, + 615, + 158, + 1, + 0, + 0, + 0, + 616, + 617, + 5, + 91, + 0, + 0, + 617, + 618, + 6, + 79, + 1, + 0, + 618, + 160, + 1, + 0, + 0, + 0, + 619, + 620, + 5, + 93, + 0, + 0, + 620, + 621, + 6, + 80, + 2, + 0, + 621, + 162, + 1, + 0, + 0, + 0, + 622, + 623, + 5, + 40, + 0, + 0, + 623, + 624, + 6, + 81, + 3, + 0, + 624, + 164, + 1, + 0, + 0, + 0, + 625, + 626, + 5, + 41, + 0, + 0, + 626, + 627, + 6, + 82, + 4, + 0, + 627, + 166, + 1, + 0, + 0, + 0, + 628, + 631, + 3, + 169, + 84, + 0, + 629, + 631, + 3, + 171, + 85, + 0, + 630, + 628, + 1, + 0, + 0, + 0, + 630, + 629, + 1, + 0, + 0, + 0, + 631, + 632, + 1, + 0, + 0, + 0, + 632, + 633, + 6, + 83, + 5, + 0, + 633, + 168, + 1, + 0, + 0, + 0, + 634, + 636, + 7, + 0, + 0, + 0, + 635, + 634, + 1, + 0, + 0, + 0, + 636, + 637, + 1, + 0, + 0, + 0, + 637, + 635, + 1, + 0, + 0, + 0, + 637, + 638, + 1, + 0, + 0, + 0, + 638, + 170, + 1, + 0, + 0, + 0, + 639, + 641, + 5, + 92, + 0, + 0, + 640, + 642, + 3, + 169, + 84, + 0, + 641, + 640, + 1, + 0, + 0, + 0, + 641, + 642, + 1, + 0, + 0, + 0, + 642, + 644, + 1, + 0, + 0, + 0, + 643, + 645, + 5, + 13, + 0, + 0, + 644, + 643, + 1, + 0, + 0, + 0, + 644, + 645, + 1, + 0, + 0, + 0, + 645, + 646, + 1, + 0, + 0, + 0, + 646, + 647, + 5, + 10, + 0, + 0, + 647, + 172, + 1, + 0, + 0, + 0, + 648, + 650, + 5, + 13, + 0, + 0, + 649, + 648, + 1, + 0, + 0, + 0, + 649, + 650, + 1, + 0, + 0, + 0, + 650, + 651, + 1, + 0, + 0, + 0, + 651, + 652, + 5, + 10, + 0, + 0, + 652, + 174, + 1, + 0, + 0, + 0, + 653, + 654, + 5, + 47, + 0, + 0, + 654, + 655, + 5, + 42, + 0, + 0, + 655, + 659, + 1, + 0, + 0, + 0, + 656, + 658, + 9, + 0, + 0, + 0, + 657, + 656, + 1, + 0, + 0, + 0, + 658, + 661, + 1, + 0, + 0, + 0, + 659, + 660, + 1, + 0, + 0, + 0, + 659, + 657, + 1, + 0, + 0, + 0, + 660, + 662, + 1, + 0, + 0, + 0, + 661, + 659, + 1, + 0, + 0, + 0, + 662, + 663, + 5, + 42, + 0, + 0, + 663, + 664, + 5, + 47, + 0, + 0, + 664, + 665, + 1, + 0, + 0, + 0, + 665, + 666, + 6, + 87, + 5, + 0, + 666, + 176, + 1, + 0, + 0, + 0, + 667, + 671, + 5, + 35, + 0, + 0, + 668, + 670, + 8, + 1, + 0, + 0, + 669, + 668, + 1, + 0, + 0, + 0, + 670, + 673, + 1, + 0, + 0, + 0, + 671, + 669, + 1, + 0, + 0, + 0, + 671, + 672, + 1, + 0, + 0, + 0, + 672, + 674, + 1, + 0, + 0, + 0, + 673, + 671, + 1, + 0, + 0, + 0, + 674, + 675, + 6, + 88, + 5, + 0, + 675, + 178, + 1, + 0, + 0, + 0, + 676, + 679, + 3, + 181, + 90, + 0, + 677, + 679, + 3, + 187, + 93, + 0, + 678, + 676, + 1, + 0, + 0, + 0, + 678, + 677, + 1, + 0, + 0, + 0, + 679, + 180, + 1, + 0, + 0, + 0, + 680, + 684, + 5, + 34, + 0, + 0, + 681, + 683, + 3, + 183, + 91, + 0, + 682, + 681, + 1, + 0, + 0, + 0, + 683, + 686, + 1, + 0, + 0, + 0, + 684, + 682, + 1, + 0, + 0, + 0, + 684, + 685, + 1, + 0, + 0, + 0, + 685, + 687, + 1, + 0, + 0, + 0, + 686, + 684, + 1, + 0, + 0, + 0, + 687, + 697, + 5, + 34, + 0, + 0, + 688, + 692, + 5, + 39, + 0, + 0, + 689, + 691, + 3, + 183, + 91, + 0, + 690, + 689, + 1, + 0, + 0, + 0, + 691, + 694, + 1, + 0, + 0, + 0, + 692, + 690, + 1, + 0, + 0, + 0, + 692, + 693, + 1, + 0, + 0, + 0, + 693, + 695, + 1, + 0, + 0, + 0, + 694, + 692, + 1, + 0, + 0, + 0, + 695, + 697, + 5, + 39, + 0, + 0, + 696, + 680, + 1, + 0, + 0, + 0, + 696, + 688, + 1, + 0, + 0, + 0, + 697, + 182, + 1, + 0, + 0, + 0, + 698, + 701, + 3, + 185, + 92, + 0, + 699, + 701, + 3, + 193, + 96, + 0, + 700, + 698, + 1, + 0, + 0, + 0, + 700, + 699, + 1, + 0, + 0, + 0, + 701, + 184, + 1, + 0, + 0, + 0, + 702, + 703, + 8, + 2, + 0, + 0, + 703, + 186, + 1, + 0, + 0, + 0, + 704, + 705, + 5, + 34, + 0, + 0, + 705, + 706, + 5, + 34, + 0, + 0, + 706, + 707, + 5, + 34, + 0, + 0, + 707, + 711, + 1, + 0, + 0, + 0, + 708, + 710, + 3, + 189, + 94, + 0, + 709, + 708, + 1, + 0, + 0, + 0, + 710, + 713, + 1, + 0, + 0, + 0, + 711, + 709, + 1, + 0, + 0, + 0, + 711, + 712, + 1, + 0, + 0, + 0, + 712, + 714, + 1, + 0, + 0, + 0, + 713, + 711, + 1, + 0, + 0, + 0, + 714, + 715, + 5, + 34, + 0, + 0, + 715, + 716, + 5, + 34, + 0, + 0, + 716, + 731, + 5, + 34, + 0, + 0, + 717, + 718, + 5, + 39, + 0, + 0, + 718, + 719, + 5, + 39, + 0, + 0, + 719, + 720, + 5, + 39, + 0, + 0, + 720, + 724, + 1, + 0, + 0, + 0, + 721, + 723, + 3, + 189, + 94, + 0, + 722, + 721, + 1, + 0, + 0, + 0, + 723, + 726, + 1, + 0, + 0, + 0, + 724, + 722, + 1, + 0, + 0, + 0, + 724, + 725, + 1, + 0, + 0, + 0, + 725, + 727, + 1, + 0, + 0, + 0, + 726, + 724, + 1, + 0, + 0, + 0, + 727, + 728, + 5, + 39, + 0, + 0, + 728, + 729, + 5, + 39, + 0, + 0, + 729, + 731, + 5, + 39, + 0, + 0, + 730, + 704, + 1, + 0, + 0, + 0, + 730, + 717, + 1, + 0, + 0, + 0, + 731, + 188, + 1, + 0, + 0, + 0, + 732, + 735, + 3, + 191, + 95, + 0, + 733, + 735, + 3, + 193, + 96, + 0, + 734, + 732, + 1, + 0, + 0, + 0, + 734, + 733, + 1, + 0, + 0, + 0, + 735, + 190, + 1, + 0, + 0, + 0, + 736, + 737, + 8, + 3, + 0, + 0, + 737, + 192, + 1, + 0, + 0, + 0, + 738, + 739, + 5, + 92, + 0, + 0, + 739, + 743, + 9, + 0, + 0, + 0, + 740, + 741, + 5, + 92, + 0, + 0, + 741, + 743, + 3, + 173, + 86, + 0, + 742, + 738, + 1, + 0, + 0, + 0, + 742, + 740, + 1, + 0, + 0, + 0, + 743, + 194, + 1, + 0, + 0, + 0, + 744, + 746, + 7, + 4, + 0, + 0, + 745, + 744, + 1, + 0, + 0, + 0, + 745, + 746, + 1, + 0, + 0, + 0, + 746, + 750, + 1, + 0, + 0, + 0, + 747, + 749, + 3, + 209, + 104, + 0, + 748, + 747, + 1, + 0, + 0, + 0, + 749, + 752, + 1, + 0, + 0, + 0, + 750, + 748, + 1, + 0, + 0, + 0, + 750, + 751, + 1, + 0, + 0, + 0, + 751, + 753, + 1, + 0, + 0, + 0, + 752, + 750, + 1, + 0, + 0, + 0, + 753, + 755, + 5, + 46, + 0, + 0, + 754, + 756, + 3, + 209, + 104, + 0, + 755, + 754, + 1, + 0, + 0, + 0, + 756, + 757, + 1, + 0, + 0, + 0, + 757, + 755, + 1, + 0, + 0, + 0, + 757, + 758, + 1, + 0, + 0, + 0, + 758, + 768, + 1, + 0, + 0, + 0, + 759, + 761, + 7, + 5, + 0, + 0, + 760, + 762, + 7, + 4, + 0, + 0, + 761, + 760, + 1, + 0, + 0, + 0, + 761, + 762, + 1, + 0, + 0, + 0, + 762, + 764, + 1, + 0, + 0, + 0, + 763, + 765, + 3, + 209, + 104, + 0, + 764, + 763, + 1, + 0, + 0, + 0, + 765, + 766, + 1, + 0, + 0, + 0, + 766, + 764, + 1, + 0, + 0, + 0, + 766, + 767, + 1, + 0, + 0, + 0, + 767, + 769, + 1, + 0, + 0, + 0, + 768, + 759, + 1, + 0, + 0, + 0, + 768, + 769, + 1, + 0, + 0, + 0, + 769, + 196, + 1, + 0, + 0, + 0, + 770, + 772, + 3, + 209, + 104, + 0, + 771, + 770, + 1, + 0, + 0, + 0, + 772, + 773, + 1, + 0, + 0, + 0, + 773, + 771, + 1, + 0, + 0, + 0, + 773, + 774, + 1, + 0, + 0, + 0, + 774, + 198, + 1, + 0, + 0, + 0, + 775, + 776, + 5, + 48, + 0, + 0, + 776, + 777, + 5, + 120, + 0, + 0, + 777, + 779, + 1, + 0, + 0, + 0, + 778, + 780, + 3, + 211, + 105, + 0, + 779, + 778, + 1, + 0, + 0, + 0, + 780, + 781, + 1, + 0, + 0, + 0, + 781, + 779, + 1, + 0, + 0, + 0, + 781, + 782, + 1, + 0, + 0, + 0, + 782, + 200, + 1, + 0, + 0, + 0, + 783, + 785, + 5, + 45, + 0, + 0, + 784, + 786, + 3, + 209, + 104, + 0, + 785, + 784, + 1, + 0, + 0, + 0, + 786, + 787, + 1, + 0, + 0, + 0, + 787, + 785, + 1, + 0, + 0, + 0, + 787, + 788, + 1, + 0, + 0, + 0, + 788, + 202, + 1, + 0, + 0, + 0, + 789, + 790, + 5, + 116, + 0, + 0, + 790, + 791, + 5, + 114, + 0, + 0, + 791, + 792, + 5, + 117, + 0, + 0, + 792, + 799, + 5, + 101, + 0, + 0, + 793, + 794, + 5, + 102, + 0, + 0, + 794, + 795, + 5, + 97, + 0, + 0, + 795, + 796, + 5, + 108, + 0, + 0, + 796, + 797, + 5, + 115, + 0, + 0, + 797, + 799, + 5, + 101, + 0, + 0, + 798, + 789, + 1, + 0, + 0, + 0, + 798, + 793, + 1, + 0, + 0, + 0, + 799, + 204, + 1, + 0, + 0, + 0, + 800, + 804, + 3, + 213, + 106, + 0, + 801, + 803, + 3, + 215, + 107, + 0, + 802, + 801, + 1, + 0, + 0, + 0, + 803, + 806, + 1, + 0, + 0, + 0, + 804, + 802, + 1, + 0, + 0, + 0, + 804, + 805, + 1, + 0, + 0, + 0, + 805, + 816, + 1, + 0, + 0, + 0, + 806, + 804, + 1, + 0, + 0, + 0, + 807, + 809, + 5, + 124, + 0, + 0, + 808, + 810, + 3, + 207, + 103, + 0, + 809, + 808, + 1, + 0, + 0, + 0, + 810, + 811, + 1, + 0, + 0, + 0, + 811, + 809, + 1, + 0, + 0, + 0, + 811, + 812, + 1, + 0, + 0, + 0, + 812, + 813, + 1, + 0, + 0, + 0, + 813, + 814, + 5, + 124, + 0, + 0, + 814, + 816, + 1, + 0, + 0, + 0, + 815, + 800, + 1, + 0, + 0, + 0, + 815, + 807, + 1, + 0, + 0, + 0, + 816, + 206, + 1, + 0, + 0, + 0, + 817, + 818, + 8, + 6, + 0, + 0, + 818, + 208, + 1, + 0, + 0, + 0, + 819, + 820, + 7, + 7, + 0, + 0, + 820, + 210, + 1, + 0, + 0, + 0, + 821, + 822, + 7, + 8, + 0, + 0, + 822, + 212, + 1, + 0, + 0, + 0, + 823, + 825, + 7, + 9, + 0, + 0, + 824, + 823, + 1, + 0, + 0, + 0, + 825, + 214, + 1, + 0, + 0, + 0, + 826, + 829, + 3, + 213, + 106, + 0, + 827, + 829, + 7, + 10, + 0, + 0, + 828, + 826, + 1, + 0, + 0, + 0, + 828, + 827, + 1, + 0, + 0, + 0, + 829, + 216, + 1, + 0, + 0, + 0, + 37, + 0, + 603, + 607, + 610, + 612, + 630, + 637, + 641, + 644, + 649, + 659, + 671, + 678, + 684, + 692, + 696, + 700, + 711, + 724, + 730, + 734, + 742, + 745, + 750, + 757, + 761, + 766, + 768, + 773, + 781, + 787, + 798, + 804, + 811, + 815, + 824, + 828, + 6, + 1, + 78, + 0, + 1, + 79, + 1, + 1, + 80, + 2, + 1, + 81, + 3, + 1, + 82, + 4, + 6, + 0, + 0, ] @@ -492,58 +8164,234 @@ class OpenSCENARIO2Lexer(Lexer): BoolLiteral = 92 Identifier = 93 - channelNames = [u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN"] + channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"] modeNames = ["DEFAULT_MODE"] - literalNames = ["", - "'import'", "'.'", "'type'", "'is'", "'SI'", "'unit'", "'of'", - "','", "':'", "'enum'", "'='", "'!'", "'=='", "'struct'", "'inherits'", - "'actor'", "'scenario'", "'action'", "'modifier'", "'extend'", - "'global'", "'list'", "'int'", "'uint'", "'float'", "'bool'", - "'string'", "'event'", "'if'", "'@'", "'as'", "'rise'", "'fall'", - "'elapsed'", "'every'", "'var'", "'sample'", "'with'", "'keep'", - "'default'", "'hard'", "'remove_default'", "'on'", "'do'", "'serial'", - "'one_of'", "'parallel'", "'wait'", "'emit'", "'call'", "'until'", - "'def'", "'->'", "'expression'", "'undefined'", "'external'", - "'only'", "'cover'", "'record'", "'range'", "'?'", "'=>'", "'or'", - "'and'", "'not'", "'!='", "'<'", "'<='", "'>'", "'>='", "'in'", - "'+'", "'-'", "'*'", "'/'", "'%'", "'it'", "'..'", "'['", "']'", - "'('", "')'"] - - symbolicNames = ["", - "NEWLINE", "OPEN_BRACK", "CLOSE_BRACK", "OPEN_PAREN", "CLOSE_PAREN", - "SKIP_", "BLOCK_COMMENT", "LINE_COMMENT", "StringLiteral", "FloatLiteral", - "UintLiteral", "HexUintLiteral", "IntLiteral", "BoolLiteral", - "Identifier"] - - ruleNames = ["T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", - "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", - "T__14", "T__15", "T__16", "T__17", "T__18", "T__19", - "T__20", "T__21", "T__22", "T__23", "T__24", "T__25", - "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", - "T__32", "T__33", "T__34", "T__35", "T__36", "T__37", - "T__38", "T__39", "T__40", "T__41", "T__42", "T__43", - "T__44", "T__45", "T__46", "T__47", "T__48", "T__49", - "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", - "T__56", "T__57", "T__58", "T__59", "T__60", "T__61", - "T__62", "T__63", "T__64", "T__65", "T__66", "T__67", - "T__68", "T__69", "T__70", "T__71", "T__72", "T__73", - "T__74", "T__75", "T__76", "T__77", "NEWLINE", "OPEN_BRACK", - "CLOSE_BRACK", "OPEN_PAREN", "CLOSE_PAREN", "SKIP_", "SPACES", - "LINE_JOINING", "RN", "BLOCK_COMMENT", "LINE_COMMENT", - "StringLiteral", "Shortstring", "ShortstringElem", "ShortstringChar", - "Longstring", "LongstringElem", "LongstringChar", "StringEscapeSeq", - "FloatLiteral", "UintLiteral", "HexUintLiteral", "IntLiteral", - "BoolLiteral", "Identifier", "NonVerticalLineChar", "Digit", - "HexDigit", "IdStartChar", "IdChar"] + literalNames = [ + "", + "'import'", + "'.'", + "'type'", + "'is'", + "'SI'", + "'unit'", + "'of'", + "','", + "':'", + "'enum'", + "'='", + "'!'", + "'=='", + "'struct'", + "'inherits'", + "'actor'", + "'scenario'", + "'action'", + "'modifier'", + "'extend'", + "'global'", + "'list'", + "'int'", + "'uint'", + "'float'", + "'bool'", + "'string'", + "'event'", + "'if'", + "'@'", + "'as'", + "'rise'", + "'fall'", + "'elapsed'", + "'every'", + "'var'", + "'sample'", + "'with'", + "'keep'", + "'default'", + "'hard'", + "'remove_default'", + "'on'", + "'do'", + "'serial'", + "'one_of'", + "'parallel'", + "'wait'", + "'emit'", + "'call'", + "'until'", + "'def'", + "'->'", + "'expression'", + "'undefined'", + "'external'", + "'only'", + "'cover'", + "'record'", + "'range'", + "'?'", + "'=>'", + "'or'", + "'and'", + "'not'", + "'!='", + "'<'", + "'<='", + "'>'", + "'>='", + "'in'", + "'+'", + "'-'", + "'*'", + "'/'", + "'%'", + "'it'", + "'..'", + "'['", + "']'", + "'('", + "')'", + ] + + symbolicNames = [ + "", + "NEWLINE", + "OPEN_BRACK", + "CLOSE_BRACK", + "OPEN_PAREN", + "CLOSE_PAREN", + "SKIP_", + "BLOCK_COMMENT", + "LINE_COMMENT", + "StringLiteral", + "FloatLiteral", + "UintLiteral", + "HexUintLiteral", + "IntLiteral", + "BoolLiteral", + "Identifier", + ] + + ruleNames = [ + "T__0", + "T__1", + "T__2", + "T__3", + "T__4", + "T__5", + "T__6", + "T__7", + "T__8", + "T__9", + "T__10", + "T__11", + "T__12", + "T__13", + "T__14", + "T__15", + "T__16", + "T__17", + "T__18", + "T__19", + "T__20", + "T__21", + "T__22", + "T__23", + "T__24", + "T__25", + "T__26", + "T__27", + "T__28", + "T__29", + "T__30", + "T__31", + "T__32", + "T__33", + "T__34", + "T__35", + "T__36", + "T__37", + "T__38", + "T__39", + "T__40", + "T__41", + "T__42", + "T__43", + "T__44", + "T__45", + "T__46", + "T__47", + "T__48", + "T__49", + "T__50", + "T__51", + "T__52", + "T__53", + "T__54", + "T__55", + "T__56", + "T__57", + "T__58", + "T__59", + "T__60", + "T__61", + "T__62", + "T__63", + "T__64", + "T__65", + "T__66", + "T__67", + "T__68", + "T__69", + "T__70", + "T__71", + "T__72", + "T__73", + "T__74", + "T__75", + "T__76", + "T__77", + "NEWLINE", + "OPEN_BRACK", + "CLOSE_BRACK", + "OPEN_PAREN", + "CLOSE_PAREN", + "SKIP_", + "SPACES", + "LINE_JOINING", + "RN", + "BLOCK_COMMENT", + "LINE_COMMENT", + "StringLiteral", + "Shortstring", + "ShortstringElem", + "ShortstringChar", + "Longstring", + "LongstringElem", + "LongstringChar", + "StringEscapeSeq", + "FloatLiteral", + "UintLiteral", + "HexUintLiteral", + "IntLiteral", + "BoolLiteral", + "Identifier", + "NonVerticalLineChar", + "Digit", + "HexDigit", + "IdStartChar", + "IdChar", + ] grammarFileName = "OpenSCENARIO2.g4" def __init__(self, input=None, output: TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.10.1") - self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._interp = LexerATNSimulator( + self, self.atn, self.decisionsToDFA, PredictionContextCache() + ) self._actions = None self._predicates = None @@ -603,7 +8451,7 @@ def nextToken(self): for i in range(len(self.tokens) - 1, -1, -1): if self.tokens[i].type == Token.EOF: self.tokens.pop(i) - self.emitToken(self.commonToken(LanguageParser.NEWLINE, '\n')) + self.emitToken(self.commonToken(LanguageParser.NEWLINE, "\n")) while self.indents: self.emitToken(self.createDedent()) self.indents.pop() @@ -621,13 +8469,19 @@ def createDedent(self): def commonToken(self, type, text, indent=0): stop = self.getCharIndex() - 1 - indent start = (stop - len(text) + 1) if text else stop - return CommonToken(self._tokenFactorySourcePair, type, super().DEFAULT_TOKEN_CHANNEL, start, stop) + return CommonToken( + self._tokenFactorySourcePair, + type, + super().DEFAULT_TOKEN_CHANNEL, + start, + stop, + ) @staticmethod def getIndentationCount(spaces): count = 0 for ch in spaces: - if ch == '\t': + if ch == "\t": count += 8 - (count % 8) else: count += 1 @@ -653,7 +8507,6 @@ def action(self, localctx: RuleContext, ruleIndex: int, actionIndex: int): def NEWLINE_action(self, localctx: RuleContext, actionIndex: int): if actionIndex == 0: - tempt = Lexer.text.fget(self) newLine = re.sub("[^\r\n\f]+", "", tempt) spaces = re.sub("[\r\n\f]+", "", tempt) @@ -672,14 +8525,23 @@ def NEWLINE_action(self, localctx: RuleContext, actionIndex: int): nextnext_eof = True else: nextnext_eof = False - if self.opened > 0 or nextnext_eof is False and ( - la_char == '\r' or la_char == '\n' or la_char == '\f' or la_char == '#'): + if ( + self.opened > 0 + or nextnext_eof is False + and ( + la_char == "\r" + or la_char == "\n" + or la_char == "\f" + or la_char == "#" + ) + ): self.skip() else: indent = self.getIndentationCount(spaces) previous = self.indents[-1] if self.indents else 0 self.emitToken( - self.commonToken(self.NEWLINE, newLine, indent=indent)) # NEWLINE is actually the '\n' char + self.commonToken(self.NEWLINE, newLine, indent=indent) + ) # NEWLINE is actually the '\n' char if indent == previous: self.skip() elif indent > previous: diff --git a/srunner/osc2/osc2_parser/OpenSCENARIO2Listener.py b/srunner/osc2/osc2_parser/OpenSCENARIO2Listener.py index 18c7f93b8..ebfe90ed2 100644 --- a/srunner/osc2/osc2_parser/OpenSCENARIO2Listener.py +++ b/srunner/osc2/osc2_parser/OpenSCENARIO2Listener.py @@ -9,7 +9,6 @@ # This class defines a complete listener for a parse tree produced by OpenSCENARIO2Parser. class OpenSCENARIO2Listener(ParseTreeListener): - # Enter a parse tree produced by OpenSCENARIO2Parser#osc_file. def enterOsc_file(self, ctx: OpenSCENARIO2Parser.Osc_fileContext): pass @@ -43,11 +42,15 @@ def exitImportReference(self, ctx: OpenSCENARIO2Parser.ImportReferenceContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#structuredIdentifier. - def enterStructuredIdentifier(self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext): + def enterStructuredIdentifier( + self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#structuredIdentifier. - def exitStructuredIdentifier(self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext): + def exitStructuredIdentifier( + self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#oscDeclaration. @@ -59,11 +62,15 @@ def exitOscDeclaration(self, ctx: OpenSCENARIO2Parser.OscDeclarationContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#physicalTypeDeclaration. - def enterPhysicalTypeDeclaration(self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext): + def enterPhysicalTypeDeclaration( + self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#physicalTypeDeclaration. - def exitPhysicalTypeDeclaration(self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext): + def exitPhysicalTypeDeclaration( + self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#physicalTypeName. @@ -83,11 +90,15 @@ def exitBaseUnitSpecifier(self, ctx: OpenSCENARIO2Parser.BaseUnitSpecifierContex pass # Enter a parse tree produced by OpenSCENARIO2Parser#sIBaseUnitSpecifier. - def enterSIBaseUnitSpecifier(self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext): + def enterSIBaseUnitSpecifier( + self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#sIBaseUnitSpecifier. - def exitSIBaseUnitSpecifier(self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext): + def exitSIBaseUnitSpecifier( + self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#unitDeclaration. @@ -115,11 +126,15 @@ def exitSIUnitSpecifier(self, ctx: OpenSCENARIO2Parser.SIUnitSpecifierContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#sIBaseExponentList. - def enterSIBaseExponentList(self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext): + def enterSIBaseExponentList( + self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#sIBaseExponentList. - def exitSIBaseExponentList(self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext): + def exitSIBaseExponentList( + self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#sIBaseExponent. @@ -187,11 +202,15 @@ def exitEnumMemberName(self, ctx: OpenSCENARIO2Parser.EnumMemberNameContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#enumValueReference. - def enterEnumValueReference(self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext): + def enterEnumValueReference( + self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#enumValueReference. - def exitEnumValueReference(self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext): + def exitEnumValueReference( + self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#inheritsCondition. @@ -275,11 +294,15 @@ def exitActorName(self, ctx: OpenSCENARIO2Parser.ActorNameContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#scenarioDeclaration. - def enterScenarioDeclaration(self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext): + def enterScenarioDeclaration( + self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#scenarioDeclaration. - def exitScenarioDeclaration(self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext): + def exitScenarioDeclaration( + self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#scenarioInherts. @@ -291,19 +314,27 @@ def exitScenarioInherts(self, ctx: OpenSCENARIO2Parser.ScenarioInhertsContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#scenarioMemberDecl. - def enterScenarioMemberDecl(self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext): + def enterScenarioMemberDecl( + self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#scenarioMemberDecl. - def exitScenarioMemberDecl(self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext): + def exitScenarioMemberDecl( + self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#qualifiedBehaviorName. - def enterQualifiedBehaviorName(self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext): + def enterQualifiedBehaviorName( + self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#qualifiedBehaviorName. - def exitQualifiedBehaviorName(self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext): + def exitQualifiedBehaviorName( + self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorName. @@ -331,11 +362,15 @@ def exitActionInherts(self, ctx: OpenSCENARIO2Parser.ActionInhertsContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#modifierDeclaration. - def enterModifierDeclaration(self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext): + def enterModifierDeclaration( + self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#modifierDeclaration. - def exitModifierDeclaration(self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext): + def exitModifierDeclaration( + self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#modifierName. @@ -363,35 +398,51 @@ def exitEnumTypeExtension(self, ctx: OpenSCENARIO2Parser.EnumTypeExtensionContex pass # Enter a parse tree produced by OpenSCENARIO2Parser#structuredTypeExtension. - def enterStructuredTypeExtension(self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext): + def enterStructuredTypeExtension( + self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#structuredTypeExtension. - def exitStructuredTypeExtension(self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext): + def exitStructuredTypeExtension( + self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#extendableTypeName. - def enterExtendableTypeName(self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext): + def enterExtendableTypeName( + self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#extendableTypeName. - def exitExtendableTypeName(self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext): + def exitExtendableTypeName( + self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#extensionMemberDecl. - def enterExtensionMemberDecl(self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext): + def enterExtensionMemberDecl( + self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#extensionMemberDecl. - def exitExtensionMemberDecl(self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext): + def exitExtensionMemberDecl( + self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#globalParameterDeclaration. - def enterGlobalParameterDeclaration(self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext): + def enterGlobalParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#globalParameterDeclaration. - def exitGlobalParameterDeclaration(self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext): + def exitGlobalParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#typeDeclarator. @@ -403,27 +454,39 @@ def exitTypeDeclarator(self, ctx: OpenSCENARIO2Parser.TypeDeclaratorContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#nonAggregateTypeDeclarator. - def enterNonAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext): + def enterNonAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#nonAggregateTypeDeclarator. - def exitNonAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext): + def exitNonAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#aggregateTypeDeclarator. - def enterAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext): + def enterAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#aggregateTypeDeclarator. - def exitAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext): + def exitAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#listTypeDeclarator. - def enterListTypeDeclarator(self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext): + def enterListTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#listTypeDeclarator. - def exitListTypeDeclarator(self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext): + def exitListTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#primitiveType. @@ -451,11 +514,15 @@ def exitEventDeclaration(self, ctx: OpenSCENARIO2Parser.EventDeclarationContext) pass # Enter a parse tree produced by OpenSCENARIO2Parser#eventSpecification. - def enterEventSpecification(self, ctx: OpenSCENARIO2Parser.EventSpecificationContext): + def enterEventSpecification( + self, ctx: OpenSCENARIO2Parser.EventSpecificationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#eventSpecification. - def exitEventSpecification(self, ctx: OpenSCENARIO2Parser.EventSpecificationContext): + def exitEventSpecification( + self, ctx: OpenSCENARIO2Parser.EventSpecificationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#eventReference. @@ -547,11 +614,15 @@ def exitBoolExpression(self, ctx: OpenSCENARIO2Parser.BoolExpressionContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#durationExpression. - def enterDurationExpression(self, ctx: OpenSCENARIO2Parser.DurationExpressionContext): + def enterDurationExpression( + self, ctx: OpenSCENARIO2Parser.DurationExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#durationExpression. - def exitDurationExpression(self, ctx: OpenSCENARIO2Parser.DurationExpressionContext): + def exitDurationExpression( + self, ctx: OpenSCENARIO2Parser.DurationExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#fieldDeclaration. @@ -563,19 +634,27 @@ def exitFieldDeclaration(self, ctx: OpenSCENARIO2Parser.FieldDeclarationContext) pass # Enter a parse tree produced by OpenSCENARIO2Parser#parameterDeclaration. - def enterParameterDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext): + def enterParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#parameterDeclaration. - def exitParameterDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext): + def exitParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#variableDeclaration. - def enterVariableDeclaration(self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext): + def enterVariableDeclaration( + self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#variableDeclaration. - def exitVariableDeclaration(self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext): + def exitVariableDeclaration( + self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#sampleExpression. @@ -595,91 +674,135 @@ def exitDefaultValue(self, ctx: OpenSCENARIO2Parser.DefaultValueContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#parameterWithDeclaration. - def enterParameterWithDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext): + def enterParameterWithDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#parameterWithDeclaration. - def exitParameterWithDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext): + def exitParameterWithDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#parameterWithMember. - def enterParameterWithMember(self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext): + def enterParameterWithMember( + self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#parameterWithMember. - def exitParameterWithMember(self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext): + def exitParameterWithMember( + self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#constraintDeclaration. - def enterConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext): + def enterConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#constraintDeclaration. - def exitConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext): + def exitConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#keepConstraintDeclaration. - def enterKeepConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext): + def enterKeepConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#keepConstraintDeclaration. - def exitKeepConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext): + def exitKeepConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#constraintQualifier. - def enterConstraintQualifier(self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext): + def enterConstraintQualifier( + self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#constraintQualifier. - def exitConstraintQualifier(self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext): + def exitConstraintQualifier( + self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#constraintExpression. - def enterConstraintExpression(self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext): + def enterConstraintExpression( + self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#constraintExpression. - def exitConstraintExpression(self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext): + def exitConstraintExpression( + self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#removeDefaultDeclaration. - def enterRemoveDefaultDeclaration(self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext): + def enterRemoveDefaultDeclaration( + self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#removeDefaultDeclaration. - def exitRemoveDefaultDeclaration(self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext): + def exitRemoveDefaultDeclaration( + self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#parameterReference. - def enterParameterReference(self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext): + def enterParameterReference( + self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#parameterReference. - def exitParameterReference(self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext): + def exitParameterReference( + self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#modifierInvocation. - def enterModifierInvocation(self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext): + def enterModifierInvocation( + self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#modifierInvocation. - def exitModifierInvocation(self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext): + def exitModifierInvocation( + self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorExpression. - def enterBehaviorExpression(self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext): + def enterBehaviorExpression( + self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorExpression. - def exitBehaviorExpression(self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext): + def exitBehaviorExpression( + self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorSpecification. - def enterBehaviorSpecification(self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext): + def enterBehaviorSpecification( + self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorSpecification. - def exitBehaviorSpecification(self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext): + def exitBehaviorSpecification( + self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#onDirective. @@ -723,35 +846,51 @@ def exitComposition(self, ctx: OpenSCENARIO2Parser.CompositionContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#compositionOperator. - def enterCompositionOperator(self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext): + def enterCompositionOperator( + self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#compositionOperator. - def exitCompositionOperator(self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext): + def exitCompositionOperator( + self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorInvocation. - def enterBehaviorInvocation(self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext): + def enterBehaviorInvocation( + self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorInvocation. - def exitBehaviorInvocation(self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext): + def exitBehaviorInvocation( + self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorWithDeclaration. - def enterBehaviorWithDeclaration(self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext): + def enterBehaviorWithDeclaration( + self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorWithDeclaration. - def exitBehaviorWithDeclaration(self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext): + def exitBehaviorWithDeclaration( + self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#behaviorWithMember. - def enterBehaviorWithMember(self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext): + def enterBehaviorWithMember( + self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#behaviorWithMember. - def exitBehaviorWithMember(self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext): + def exitBehaviorWithMember( + self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#labelName. @@ -827,11 +966,15 @@ def exitReturnType(self, ctx: OpenSCENARIO2Parser.ReturnTypeContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#methodImplementation. - def enterMethodImplementation(self, ctx: OpenSCENARIO2Parser.MethodImplementationContext): + def enterMethodImplementation( + self, ctx: OpenSCENARIO2Parser.MethodImplementationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#methodImplementation. - def exitMethodImplementation(self, ctx: OpenSCENARIO2Parser.MethodImplementationContext): + def exitMethodImplementation( + self, ctx: OpenSCENARIO2Parser.MethodImplementationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#methodQualifier. @@ -851,11 +994,15 @@ def exitMethodName(self, ctx: OpenSCENARIO2Parser.MethodNameContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#coverageDeclaration. - def enterCoverageDeclaration(self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext): + def enterCoverageDeclaration( + self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#coverageDeclaration. - def exitCoverageDeclaration(self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext): + def exitCoverageDeclaration( + self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#coverDeclaration. @@ -875,11 +1022,15 @@ def exitRecordDeclaration(self, ctx: OpenSCENARIO2Parser.RecordDeclarationContex pass # Enter a parse tree produced by OpenSCENARIO2Parser#coverageExpression. - def enterCoverageExpression(self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext): + def enterCoverageExpression( + self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#coverageExpression. - def exitCoverageExpression(self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext): + def exitCoverageExpression( + self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#coverageUnit. @@ -915,11 +1066,15 @@ def exitCoverageEvent(self, ctx: OpenSCENARIO2Parser.CoverageEventContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#coverageNameArgument. - def enterCoverageNameArgument(self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext): + def enterCoverageNameArgument( + self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#coverageNameArgument. - def exitCoverageNameArgument(self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext): + def exitCoverageNameArgument( + self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#targetName. @@ -1075,35 +1230,51 @@ def exitCastExpression(self, ctx: OpenSCENARIO2Parser.CastExpressionContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#functionApplicationExpression. - def enterFunctionApplicationExpression(self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext): + def enterFunctionApplicationExpression( + self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#functionApplicationExpression. - def exitFunctionApplicationExpression(self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext): + def exitFunctionApplicationExpression( + self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#fieldAccessExpression. - def enterFieldAccessExpression(self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext): + def enterFieldAccessExpression( + self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#fieldAccessExpression. - def exitFieldAccessExpression(self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext): + def exitFieldAccessExpression( + self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#elementAccessExpression. - def enterElementAccessExpression(self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext): + def enterElementAccessExpression( + self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#elementAccessExpression. - def exitElementAccessExpression(self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext): + def exitElementAccessExpression( + self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#typeTestExpression. - def enterTypeTestExpression(self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext): + def enterTypeTestExpression( + self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#typeTestExpression. - def exitTypeTestExpression(self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext): + def exitTypeTestExpression( + self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#fieldAccess. @@ -1147,27 +1318,39 @@ def exitRangeConstructor(self, ctx: OpenSCENARIO2Parser.RangeConstructorContext) pass # Enter a parse tree produced by OpenSCENARIO2Parser#identifierReference. - def enterIdentifierReference(self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext): + def enterIdentifierReference( + self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#identifierReference. - def exitIdentifierReference(self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext): + def exitIdentifierReference( + self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#argumentListSpecification. - def enterArgumentListSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext): + def enterArgumentListSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#argumentListSpecification. - def exitArgumentListSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext): + def exitArgumentListSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#argumentSpecification. - def enterArgumentSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext): + def enterArgumentSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#argumentSpecification. - def exitArgumentSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext): + def exitArgumentSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#argumentName. @@ -1187,11 +1370,15 @@ def exitArgumentList(self, ctx: OpenSCENARIO2Parser.ArgumentListContext): pass # Enter a parse tree produced by OpenSCENARIO2Parser#positionalArgument. - def enterPositionalArgument(self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext): + def enterPositionalArgument( + self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext + ): pass # Exit a parse tree produced by OpenSCENARIO2Parser#positionalArgument. - def exitPositionalArgument(self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext): + def exitPositionalArgument( + self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext + ): pass # Enter a parse tree produced by OpenSCENARIO2Parser#namedArgument. diff --git a/srunner/osc2/osc2_parser/OpenSCENARIO2Parser.py b/srunner/osc2/osc2_parser/OpenSCENARIO2Parser.py index b3e7097a7..4391103e6 100644 --- a/srunner/osc2/osc2_parser/OpenSCENARIO2Parser.py +++ b/srunner/osc2/osc2_parser/OpenSCENARIO2Parser.py @@ -1,8 +1,9 @@ # Generated from .\OpenSCENARIO2.g4 by ANTLR 4.10.1 # encoding: utf-8 -from antlr4 import * -from io import StringIO import sys +from io import StringIO + +from antlr4 import * if sys.version_info[1] > 5: from typing import TextIO @@ -12,499 +13,11211 @@ def serializedATN(): return [ - 4, 1, 95, 1318, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, - 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, - 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, - 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, - 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, - 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, - 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, - 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, - 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, - 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, - 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, - 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, - 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, - 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, - 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, - 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, - 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, - 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, - 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, - 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, - 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, - 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, - 2, 137, 7, 137, 1, 0, 5, 0, 278, 8, 0, 10, 0, 12, 0, 281, 9, 0, 1, 0, 5, 0, 284, 8, 0, 10, - 0, 12, 0, 287, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 298, 8, 2, 1, - 3, 1, 3, 3, 3, 302, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 310, 8, 4, 10, 4, 12, 4, - 313, 9, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 326, 8, 5, - 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, - 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, - 1, 12, 3, 12, 358, 8, 12, 1, 12, 1, 12, 3, 12, 362, 8, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, - 13, 5, 13, 369, 8, 13, 10, 13, 12, 13, 372, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, - 15, 1, 15, 1, 15, 1, 15, 3, 15, 383, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 389, 8, 16, - 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 398, 8, 17, 10, 17, 12, 17, 401, - 9, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 3, 18, 409, 8, 18, 1, 19, 1, 19, 1, 20, - 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, - 426, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 3, 24, 433, 8, 24, 1, 24, 1, 24, 1, 24, 1, - 24, 4, 24, 439, 8, 24, 11, 24, 12, 24, 440, 1, 24, 1, 24, 1, 24, 3, 24, 446, 8, 24, 1, - 25, 1, 25, 1, 25, 3, 25, 451, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 458, 8, 26, - 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 467, 8, 29, 1, 29, 1, 29, 1, 29, - 1, 29, 4, 29, 473, 8, 29, 11, 29, 12, 29, 474, 1, 29, 1, 29, 1, 29, 3, 29, 480, 8, 29, - 1, 30, 1, 30, 1, 30, 3, 30, 485, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 492, 8, - 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 3, 33, 499, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, - 33, 4, 33, 506, 8, 33, 11, 33, 12, 33, 507, 1, 33, 1, 33, 1, 33, 3, 33, 513, 8, 33, 1, - 34, 1, 34, 1, 34, 3, 34, 518, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 526, - 8, 35, 1, 36, 1, 36, 1, 36, 3, 36, 531, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, - 1, 38, 3, 38, 540, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 4, 38, 547, 8, 38, 11, 38, - 12, 38, 548, 1, 38, 1, 38, 1, 38, 3, 38, 554, 8, 38, 1, 39, 1, 39, 1, 39, 3, 39, 559, 8, - 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 565, 8, 40, 1, 40, 1, 40, 1, 40, 3, 40, 570, 8, 40, - 1, 40, 1, 40, 1, 40, 1, 40, 4, 40, 576, 8, 40, 11, 40, 12, 40, 577, 1, 40, 1, 40, 1, 40, - 3, 40, 583, 8, 40, 1, 41, 1, 41, 1, 42, 1, 42, 3, 42, 589, 8, 42, 1, 43, 1, 43, 1, 43, 1, - 43, 1, 43, 1, 43, 1, 43, 5, 43, 598, 8, 43, 10, 43, 12, 43, 601, 9, 43, 1, 43, 1, 43, 1, - 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 4, 44, 612, 8, 44, 11, 44, 12, 44, 613, 1, - 44, 1, 44, 1, 45, 1, 45, 3, 45, 620, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 626, 8, 46, - 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 632, 8, 47, 10, 47, 12, 47, 635, 9, 47, 1, 47, 1, 47, - 1, 47, 1, 47, 3, 47, 641, 8, 47, 1, 47, 1, 47, 3, 47, 645, 8, 47, 1, 48, 1, 48, 3, 48, 649, - 8, 48, 1, 49, 1, 49, 1, 49, 3, 49, 654, 8, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, - 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 672, 8, 54, - 1, 54, 1, 54, 3, 54, 676, 8, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 682, 8, 55, 1, 55, 1, - 55, 3, 55, 686, 8, 55, 1, 55, 3, 55, 689, 8, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, - 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 3, 60, 704, 8, 60, 1, 60, 1, 60, 1, 61, - 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 713, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, - 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, - 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 738, 8, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, - 1, 68, 1, 68, 3, 68, 748, 8, 68, 1, 69, 1, 69, 1, 69, 5, 69, 753, 8, 69, 10, 69, 12, 69, - 756, 9, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 762, 8, 69, 1, 69, 1, 69, 3, 69, 766, 8, - 69, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 772, 8, 70, 10, 70, 12, 70, 775, 9, 70, 1, 70, 1, - 70, 1, 70, 1, 70, 1, 70, 3, 70, 782, 8, 70, 3, 70, 784, 8, 70, 1, 70, 1, 70, 1, 71, 1, 71, - 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 795, 8, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, - 1, 73, 1, 73, 1, 73, 1, 73, 4, 73, 806, 8, 73, 11, 73, 12, 73, 807, 1, 73, 1, 73, 1, 74, - 1, 74, 3, 74, 814, 8, 74, 1, 75, 1, 75, 3, 75, 818, 8, 75, 1, 76, 1, 76, 1, 76, 3, 76, 823, - 8, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, - 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 841, 8, 80, 1, 81, 1, 81, 3, 81, 845, 8, 81, 1, 81, 1, - 81, 3, 81, 849, 8, 81, 1, 81, 1, 81, 1, 81, 3, 81, 854, 8, 81, 1, 81, 1, 81, 1, 81, 1, 82, - 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 3, 83, 866, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, - 1, 84, 1, 84, 4, 84, 874, 8, 84, 11, 84, 12, 84, 875, 1, 84, 1, 84, 1, 85, 1, 85, 3, 85, - 882, 8, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 3, 87, 890, 8, 87, 1, 87, 1, 87, 1, - 87, 1, 87, 1, 87, 3, 87, 897, 8, 87, 1, 88, 1, 88, 1, 88, 3, 88, 902, 8, 88, 1, 88, 3, 88, - 905, 8, 88, 1, 88, 1, 88, 1, 88, 1, 88, 4, 88, 911, 8, 88, 11, 88, 12, 88, 912, 1, 88, - 1, 88, 3, 88, 917, 8, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 3, 90, 924, 8, 90, 1, 90, 1, - 90, 1, 90, 3, 90, 929, 8, 90, 1, 90, 1, 90, 1, 90, 3, 90, 934, 8, 90, 1, 91, 1, 91, 1, 91, - 1, 91, 1, 91, 4, 91, 941, 8, 91, 11, 91, 12, 91, 942, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, - 3, 92, 950, 8, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, - 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 966, 8, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, - 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 3, 99, 981, 8, 99, 1, 99, 1, 99, 1, 100, - 1, 100, 1, 100, 1, 100, 3, 100, 989, 8, 100, 1, 100, 1, 100, 1, 100, 3, 100, 994, 8, - 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 3, 102, 1003, 8, 102, 1, - 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 1012, 8, 102, 1, 102, 1, - 102, 3, 102, 1016, 8, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 3, 105, 1024, - 8, 105, 1, 106, 1, 106, 1, 106, 3, 106, 1029, 8, 106, 1, 106, 5, 106, 1032, 8, 106, - 10, 106, 12, 106, 1035, 9, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 3, 107, - 1043, 8, 107, 1, 107, 5, 107, 1046, 8, 107, 10, 107, 12, 107, 1049, 9, 107, 1, 107, - 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, - 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, - 1, 108, 1, 108, 3, 108, 1076, 8, 108, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 1082, - 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 5, 112, - 1093, 8, 112, 10, 112, 12, 112, 1096, 9, 112, 1, 113, 1, 113, 1, 113, 5, 113, 1101, - 8, 113, 10, 113, 12, 113, 1104, 9, 113, 1, 114, 1, 114, 1, 114, 5, 114, 1109, 8, 114, - 10, 114, 12, 114, 1112, 9, 114, 1, 115, 1, 115, 1, 115, 3, 115, 1117, 8, 115, 1, 116, - 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 1126, 8, 116, 10, 116, 12, 116, - 1129, 9, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, - 5, 118, 1140, 8, 118, 10, 118, 12, 118, 1143, 9, 118, 1, 119, 1, 119, 1, 120, 1, 120, - 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 5, 120, 1154, 8, 120, 10, 120, 12, 120, 1157, - 9, 120, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 3, 122, 1164, 8, 122, 1, 123, 1, 123, - 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, - 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, - 1, 123, 3, 123, 1191, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 1197, 8, 123, - 10, 123, 12, 123, 1200, 9, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, - 1, 125, 1, 125, 1, 125, 1, 125, 3, 125, 1213, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, - 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 3, 126, 1224, 8, 126, 1, 127, 1, 127, 1, 127, - 1, 127, 5, 127, 1230, 8, 127, 10, 127, 12, 127, 1233, 9, 127, 1, 127, 1, 127, 1, 128, - 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, - 1, 128, 3, 128, 1250, 8, 128, 1, 129, 1, 129, 1, 129, 5, 129, 1255, 8, 129, 10, 129, - 12, 129, 1258, 9, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 5, 130, 1265, 8, 130, - 10, 130, 12, 130, 1268, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1275, - 8, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 5, 133, 1282, 8, 133, 10, 133, 12, 133, - 1285, 9, 133, 1, 133, 1, 133, 5, 133, 1289, 8, 133, 10, 133, 12, 133, 1292, 9, 133, - 1, 133, 1, 133, 1, 133, 5, 133, 1297, 8, 133, 10, 133, 12, 133, 1300, 9, 133, 3, 133, - 1302, 8, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 3, 136, - 1312, 8, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 0, 5, 8, 232, 236, 240, 246, 138, - 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, - 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, - 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, - 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, - 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, - 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, - 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, - 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 0, 8, 1, 0, 89, 90, 1, 0, 23, - 27, 1, 0, 40, 41, 1, 0, 45, 47, 2, 0, 13, 13, 66, 71, 1, 0, 72, 73, 1, 0, 74, 76, 1, 0, 89, - 91, 1350, 0, 279, 1, 0, 0, 0, 2, 290, 1, 0, 0, 0, 4, 297, 1, 0, 0, 0, 6, 301, 1, 0, 0, 0, - 8, 303, 1, 0, 0, 0, 10, 325, 1, 0, 0, 0, 12, 327, 1, 0, 0, 0, 14, 333, 1, 0, 0, 0, 16, 335, - 1, 0, 0, 0, 18, 337, 1, 0, 0, 0, 20, 342, 1, 0, 0, 0, 22, 350, 1, 0, 0, 0, 24, 352, 1, 0, - 0, 0, 26, 365, 1, 0, 0, 0, 28, 373, 1, 0, 0, 0, 30, 378, 1, 0, 0, 0, 32, 384, 1, 0, 0, 0, - 34, 390, 1, 0, 0, 0, 36, 405, 1, 0, 0, 0, 38, 410, 1, 0, 0, 0, 40, 412, 1, 0, 0, 0, 42, 414, - 1, 0, 0, 0, 44, 416, 1, 0, 0, 0, 46, 420, 1, 0, 0, 0, 48, 429, 1, 0, 0, 0, 50, 447, 1, 0, - 0, 0, 52, 457, 1, 0, 0, 0, 54, 459, 1, 0, 0, 0, 56, 461, 1, 0, 0, 0, 58, 463, 1, 0, 0, 0, - 60, 481, 1, 0, 0, 0, 62, 491, 1, 0, 0, 0, 64, 493, 1, 0, 0, 0, 66, 495, 1, 0, 0, 0, 68, 514, - 1, 0, 0, 0, 70, 525, 1, 0, 0, 0, 72, 530, 1, 0, 0, 0, 74, 534, 1, 0, 0, 0, 76, 536, 1, 0, - 0, 0, 78, 555, 1, 0, 0, 0, 80, 560, 1, 0, 0, 0, 82, 584, 1, 0, 0, 0, 84, 588, 1, 0, 0, 0, - 86, 590, 1, 0, 0, 0, 88, 605, 1, 0, 0, 0, 90, 619, 1, 0, 0, 0, 92, 625, 1, 0, 0, 0, 94, 627, - 1, 0, 0, 0, 96, 648, 1, 0, 0, 0, 98, 653, 1, 0, 0, 0, 100, 655, 1, 0, 0, 0, 102, 657, 1, - 0, 0, 0, 104, 661, 1, 0, 0, 0, 106, 663, 1, 0, 0, 0, 108, 665, 1, 0, 0, 0, 110, 688, 1, - 0, 0, 0, 112, 690, 1, 0, 0, 0, 114, 693, 1, 0, 0, 0, 116, 696, 1, 0, 0, 0, 118, 698, 1, - 0, 0, 0, 120, 703, 1, 0, 0, 0, 122, 712, 1, 0, 0, 0, 124, 714, 1, 0, 0, 0, 126, 719, 1, - 0, 0, 0, 128, 724, 1, 0, 0, 0, 130, 729, 1, 0, 0, 0, 132, 741, 1, 0, 0, 0, 134, 743, 1, - 0, 0, 0, 136, 747, 1, 0, 0, 0, 138, 749, 1, 0, 0, 0, 140, 767, 1, 0, 0, 0, 142, 787, 1, - 0, 0, 0, 144, 798, 1, 0, 0, 0, 146, 800, 1, 0, 0, 0, 148, 813, 1, 0, 0, 0, 150, 817, 1, - 0, 0, 0, 152, 819, 1, 0, 0, 0, 154, 828, 1, 0, 0, 0, 156, 830, 1, 0, 0, 0, 158, 832, 1, - 0, 0, 0, 160, 840, 1, 0, 0, 0, 162, 848, 1, 0, 0, 0, 164, 858, 1, 0, 0, 0, 166, 865, 1, - 0, 0, 0, 168, 867, 1, 0, 0, 0, 170, 881, 1, 0, 0, 0, 172, 883, 1, 0, 0, 0, 174, 889, 1, - 0, 0, 0, 176, 898, 1, 0, 0, 0, 178, 918, 1, 0, 0, 0, 180, 923, 1, 0, 0, 0, 182, 935, 1, - 0, 0, 0, 184, 949, 1, 0, 0, 0, 186, 951, 1, 0, 0, 0, 188, 953, 1, 0, 0, 0, 190, 955, 1, - 0, 0, 0, 192, 959, 1, 0, 0, 0, 194, 969, 1, 0, 0, 0, 196, 973, 1, 0, 0, 0, 198, 977, 1, - 0, 0, 0, 200, 984, 1, 0, 0, 0, 202, 998, 1, 0, 0, 0, 204, 1000, 1, 0, 0, 0, 206, 1017, - 1, 0, 0, 0, 208, 1019, 1, 0, 0, 0, 210, 1023, 1, 0, 0, 0, 212, 1025, 1, 0, 0, 0, 214, 1039, - 1, 0, 0, 0, 216, 1075, 1, 0, 0, 0, 218, 1077, 1, 0, 0, 0, 220, 1081, 1, 0, 0, 0, 222, 1083, - 1, 0, 0, 0, 224, 1089, 1, 0, 0, 0, 226, 1097, 1, 0, 0, 0, 228, 1105, 1, 0, 0, 0, 230, 1116, - 1, 0, 0, 0, 232, 1118, 1, 0, 0, 0, 234, 1130, 1, 0, 0, 0, 236, 1132, 1, 0, 0, 0, 238, 1144, - 1, 0, 0, 0, 240, 1146, 1, 0, 0, 0, 242, 1158, 1, 0, 0, 0, 244, 1163, 1, 0, 0, 0, 246, 1165, - 1, 0, 0, 0, 248, 1201, 1, 0, 0, 0, 250, 1212, 1, 0, 0, 0, 252, 1223, 1, 0, 0, 0, 254, 1225, - 1, 0, 0, 0, 256, 1249, 1, 0, 0, 0, 258, 1256, 1, 0, 0, 0, 260, 1261, 1, 0, 0, 0, 262, 1269, - 1, 0, 0, 0, 264, 1276, 1, 0, 0, 0, 266, 1301, 1, 0, 0, 0, 268, 1303, 1, 0, 0, 0, 270, 1305, - 1, 0, 0, 0, 272, 1311, 1, 0, 0, 0, 274, 1315, 1, 0, 0, 0, 276, 278, 3, 2, 1, 0, 277, 276, - 1, 0, 0, 0, 278, 281, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 285, - 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 282, 284, 3, 10, 5, 0, 283, 282, 1, 0, 0, 0, 284, 287, - 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 288, 1, 0, 0, 0, 287, 285, - 1, 0, 0, 0, 288, 289, 5, 0, 0, 1, 289, 1, 1, 0, 0, 0, 290, 291, 3, 4, 2, 0, 291, 3, 1, 0, - 0, 0, 292, 293, 5, 1, 0, 0, 293, 294, 3, 6, 3, 0, 294, 295, 5, 79, 0, 0, 295, 298, 1, 0, - 0, 0, 296, 298, 5, 79, 0, 0, 297, 292, 1, 0, 0, 0, 297, 296, 1, 0, 0, 0, 298, 5, 1, 0, 0, - 0, 299, 302, 5, 87, 0, 0, 300, 302, 3, 8, 4, 0, 301, 299, 1, 0, 0, 0, 301, 300, 1, 0, 0, - 0, 302, 7, 1, 0, 0, 0, 303, 304, 6, 4, -1, 0, 304, 305, 5, 93, 0, 0, 305, 311, 1, 0, 0, - 0, 306, 307, 10, 1, 0, 0, 307, 308, 5, 2, 0, 0, 308, 310, 5, 93, 0, 0, 309, 306, 1, 0, - 0, 0, 310, 313, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 9, 1, 0, 0, - 0, 313, 311, 1, 0, 0, 0, 314, 326, 3, 12, 6, 0, 315, 326, 3, 20, 10, 0, 316, 326, 3, 34, - 17, 0, 317, 326, 3, 48, 24, 0, 318, 326, 3, 58, 29, 0, 319, 326, 3, 76, 38, 0, 320, 326, - 3, 66, 33, 0, 321, 326, 3, 80, 40, 0, 322, 326, 3, 84, 42, 0, 323, 326, 3, 94, 47, 0, - 324, 326, 5, 79, 0, 0, 325, 314, 1, 0, 0, 0, 325, 315, 1, 0, 0, 0, 325, 316, 1, 0, 0, 0, - 325, 317, 1, 0, 0, 0, 325, 318, 1, 0, 0, 0, 325, 319, 1, 0, 0, 0, 325, 320, 1, 0, 0, 0, - 325, 321, 1, 0, 0, 0, 325, 322, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 324, 1, 0, 0, 0, - 326, 11, 1, 0, 0, 0, 327, 328, 5, 3, 0, 0, 328, 329, 3, 14, 7, 0, 329, 330, 5, 4, 0, 0, - 330, 331, 3, 16, 8, 0, 331, 332, 5, 79, 0, 0, 332, 13, 1, 0, 0, 0, 333, 334, 5, 93, 0, - 0, 334, 15, 1, 0, 0, 0, 335, 336, 3, 18, 9, 0, 336, 17, 1, 0, 0, 0, 337, 338, 5, 5, 0, 0, - 338, 339, 5, 82, 0, 0, 339, 340, 3, 26, 13, 0, 340, 341, 5, 83, 0, 0, 341, 19, 1, 0, 0, - 0, 342, 343, 5, 6, 0, 0, 343, 344, 5, 93, 0, 0, 344, 345, 5, 7, 0, 0, 345, 346, 3, 14, - 7, 0, 346, 347, 5, 4, 0, 0, 347, 348, 3, 22, 11, 0, 348, 349, 5, 79, 0, 0, 349, 21, 1, - 0, 0, 0, 350, 351, 3, 24, 12, 0, 351, 23, 1, 0, 0, 0, 352, 353, 5, 5, 0, 0, 353, 354, 5, - 82, 0, 0, 354, 357, 3, 26, 13, 0, 355, 356, 5, 8, 0, 0, 356, 358, 3, 30, 15, 0, 357, 355, - 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 360, 5, 8, 0, 0, 360, 362, - 3, 32, 16, 0, 361, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 364, - 5, 83, 0, 0, 364, 25, 1, 0, 0, 0, 365, 370, 3, 28, 14, 0, 366, 367, 5, 8, 0, 0, 367, 369, - 3, 28, 14, 0, 368, 366, 1, 0, 0, 0, 369, 372, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 370, 371, - 1, 0, 0, 0, 371, 27, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 373, 374, 5, 93, 0, 0, 374, 375, - 6, 14, -1, 0, 375, 376, 5, 9, 0, 0, 376, 377, 3, 274, 137, 0, 377, 29, 1, 0, 0, 0, 378, - 379, 5, 93, 0, 0, 379, 382, 5, 9, 0, 0, 380, 383, 5, 88, 0, 0, 381, 383, 3, 274, 137, - 0, 382, 380, 1, 0, 0, 0, 382, 381, 1, 0, 0, 0, 383, 31, 1, 0, 0, 0, 384, 385, 5, 93, 0, - 0, 385, 388, 5, 9, 0, 0, 386, 389, 5, 88, 0, 0, 387, 389, 3, 274, 137, 0, 388, 386, 1, - 0, 0, 0, 388, 387, 1, 0, 0, 0, 389, 33, 1, 0, 0, 0, 390, 391, 5, 10, 0, 0, 391, 392, 3, - 40, 20, 0, 392, 393, 5, 9, 0, 0, 393, 394, 5, 80, 0, 0, 394, 399, 3, 36, 18, 0, 395, 396, - 5, 8, 0, 0, 396, 398, 3, 36, 18, 0, 397, 395, 1, 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, - 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 402, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 402, 403, - 5, 81, 0, 0, 403, 404, 5, 79, 0, 0, 404, 35, 1, 0, 0, 0, 405, 408, 3, 42, 21, 0, 406, 407, - 5, 11, 0, 0, 407, 409, 3, 38, 19, 0, 408, 406, 1, 0, 0, 0, 408, 409, 1, 0, 0, 0, 409, 37, - 1, 0, 0, 0, 410, 411, 7, 0, 0, 0, 411, 39, 1, 0, 0, 0, 412, 413, 5, 93, 0, 0, 413, 41, 1, - 0, 0, 0, 414, 415, 5, 93, 0, 0, 415, 43, 1, 0, 0, 0, 416, 417, 3, 40, 20, 0, 417, 418, - 5, 12, 0, 0, 418, 419, 3, 42, 21, 0, 419, 45, 1, 0, 0, 0, 420, 421, 5, 82, 0, 0, 421, 422, - 3, 54, 27, 0, 422, 425, 5, 13, 0, 0, 423, 426, 3, 44, 22, 0, 424, 426, 5, 92, 0, 0, 425, - 423, 1, 0, 0, 0, 425, 424, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 428, 5, 83, 0, 0, 428, - 47, 1, 0, 0, 0, 429, 430, 5, 14, 0, 0, 430, 432, 3, 56, 28, 0, 431, 433, 3, 50, 25, 0, - 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 445, 1, 0, 0, 0, 434, 435, 5, 9, 0, 0, - 435, 436, 5, 79, 0, 0, 436, 438, 5, 94, 0, 0, 437, 439, 3, 52, 26, 0, 438, 437, 1, 0, - 0, 0, 439, 440, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 442, 1, 0, - 0, 0, 442, 443, 5, 95, 0, 0, 443, 446, 1, 0, 0, 0, 444, 446, 5, 79, 0, 0, 445, 434, 1, - 0, 0, 0, 445, 444, 1, 0, 0, 0, 446, 49, 1, 0, 0, 0, 447, 448, 5, 15, 0, 0, 448, 450, 3, - 56, 28, 0, 449, 451, 3, 46, 23, 0, 450, 449, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 51, - 1, 0, 0, 0, 452, 458, 3, 108, 54, 0, 453, 458, 3, 136, 68, 0, 454, 458, 3, 150, 75, 0, - 455, 458, 3, 200, 100, 0, 456, 458, 3, 210, 105, 0, 457, 452, 1, 0, 0, 0, 457, 453, - 1, 0, 0, 0, 457, 454, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 457, 456, 1, 0, 0, 0, 458, 53, 1, - 0, 0, 0, 459, 460, 5, 93, 0, 0, 460, 55, 1, 0, 0, 0, 461, 462, 5, 93, 0, 0, 462, 57, 1, - 0, 0, 0, 463, 464, 5, 16, 0, 0, 464, 466, 3, 64, 32, 0, 465, 467, 3, 60, 30, 0, 466, 465, - 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 479, 1, 0, 0, 0, 468, 469, 5, 9, 0, 0, 469, 470, - 5, 79, 0, 0, 470, 472, 5, 94, 0, 0, 471, 473, 3, 62, 31, 0, 472, 471, 1, 0, 0, 0, 473, - 474, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, - 477, 5, 95, 0, 0, 477, 480, 1, 0, 0, 0, 478, 480, 5, 79, 0, 0, 479, 468, 1, 0, 0, 0, 479, - 478, 1, 0, 0, 0, 480, 59, 1, 0, 0, 0, 481, 482, 5, 15, 0, 0, 482, 484, 3, 64, 32, 0, 483, - 485, 3, 46, 23, 0, 484, 483, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 61, 1, 0, 0, 0, 486, - 492, 3, 108, 54, 0, 487, 492, 3, 136, 68, 0, 488, 492, 3, 150, 75, 0, 489, 492, 3, 200, - 100, 0, 490, 492, 3, 210, 105, 0, 491, 486, 1, 0, 0, 0, 491, 487, 1, 0, 0, 0, 491, 488, - 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 491, 490, 1, 0, 0, 0, 492, 63, 1, 0, 0, 0, 493, 494, 5, - 93, 0, 0, 494, 65, 1, 0, 0, 0, 495, 496, 5, 17, 0, 0, 496, 498, 3, 72, 36, 0, 497, 499, - 3, 68, 34, 0, 498, 497, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 512, 1, 0, 0, 0, 500, 501, - 5, 9, 0, 0, 501, 502, 5, 79, 0, 0, 502, 505, 5, 94, 0, 0, 503, 506, 3, 70, 35, 0, 504, - 506, 3, 166, 83, 0, 505, 503, 1, 0, 0, 0, 505, 504, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, - 505, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 510, 5, 95, 0, 0, 510, - 513, 1, 0, 0, 0, 511, 513, 5, 79, 0, 0, 512, 500, 1, 0, 0, 0, 512, 511, 1, 0, 0, 0, 513, - 67, 1, 0, 0, 0, 514, 515, 5, 15, 0, 0, 515, 517, 3, 72, 36, 0, 516, 518, 3, 46, 23, 0, - 517, 516, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 69, 1, 0, 0, 0, 519, 526, 3, 108, 54, - 0, 520, 526, 3, 136, 68, 0, 521, 526, 3, 150, 75, 0, 522, 526, 3, 200, 100, 0, 523, - 526, 3, 210, 105, 0, 524, 526, 3, 162, 81, 0, 525, 519, 1, 0, 0, 0, 525, 520, 1, 0, 0, - 0, 525, 521, 1, 0, 0, 0, 525, 522, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 525, 524, 1, 0, 0, - 0, 526, 71, 1, 0, 0, 0, 527, 528, 3, 64, 32, 0, 528, 529, 5, 2, 0, 0, 529, 531, 1, 0, 0, - 0, 530, 527, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 533, 3, 74, 37, - 0, 533, 73, 1, 0, 0, 0, 534, 535, 5, 93, 0, 0, 535, 75, 1, 0, 0, 0, 536, 537, 5, 18, 0, - 0, 537, 539, 3, 72, 36, 0, 538, 540, 3, 78, 39, 0, 539, 538, 1, 0, 0, 0, 539, 540, 1, - 0, 0, 0, 540, 553, 1, 0, 0, 0, 541, 542, 5, 9, 0, 0, 542, 543, 5, 79, 0, 0, 543, 546, 5, - 94, 0, 0, 544, 547, 3, 70, 35, 0, 545, 547, 3, 166, 83, 0, 546, 544, 1, 0, 0, 0, 546, - 545, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, - 550, 1, 0, 0, 0, 550, 551, 5, 95, 0, 0, 551, 554, 1, 0, 0, 0, 552, 554, 5, 79, 0, 0, 553, - 541, 1, 0, 0, 0, 553, 552, 1, 0, 0, 0, 554, 77, 1, 0, 0, 0, 555, 556, 5, 15, 0, 0, 556, - 558, 3, 72, 36, 0, 557, 559, 3, 46, 23, 0, 558, 557, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, - 559, 79, 1, 0, 0, 0, 560, 564, 5, 19, 0, 0, 561, 562, 3, 64, 32, 0, 562, 563, 5, 2, 0, - 0, 563, 565, 1, 0, 0, 0, 564, 561, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 1, 0, 0, - 0, 566, 569, 3, 82, 41, 0, 567, 568, 5, 7, 0, 0, 568, 570, 3, 72, 36, 0, 569, 567, 1, - 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 582, 1, 0, 0, 0, 571, 572, 5, 9, 0, 0, 572, 573, 5, - 79, 0, 0, 573, 575, 5, 94, 0, 0, 574, 576, 3, 70, 35, 0, 575, 574, 1, 0, 0, 0, 576, 577, - 1, 0, 0, 0, 577, 575, 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 580, - 5, 95, 0, 0, 580, 583, 1, 0, 0, 0, 581, 583, 5, 79, 0, 0, 582, 571, 1, 0, 0, 0, 582, 581, - 1, 0, 0, 0, 583, 81, 1, 0, 0, 0, 584, 585, 5, 93, 0, 0, 585, 83, 1, 0, 0, 0, 586, 589, 3, - 86, 43, 0, 587, 589, 3, 88, 44, 0, 588, 586, 1, 0, 0, 0, 588, 587, 1, 0, 0, 0, 589, 85, - 1, 0, 0, 0, 590, 591, 5, 20, 0, 0, 591, 592, 3, 40, 20, 0, 592, 593, 5, 9, 0, 0, 593, 594, - 5, 80, 0, 0, 594, 599, 3, 36, 18, 0, 595, 596, 5, 8, 0, 0, 596, 598, 3, 36, 18, 0, 597, - 595, 1, 0, 0, 0, 598, 601, 1, 0, 0, 0, 599, 597, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, - 602, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 602, 603, 5, 81, 0, 0, 603, 604, 5, 79, 0, 0, 604, - 87, 1, 0, 0, 0, 605, 606, 5, 20, 0, 0, 606, 607, 3, 90, 45, 0, 607, 608, 5, 9, 0, 0, 608, - 609, 5, 79, 0, 0, 609, 611, 5, 94, 0, 0, 610, 612, 3, 92, 46, 0, 611, 610, 1, 0, 0, 0, - 612, 613, 1, 0, 0, 0, 613, 611, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, - 615, 616, 5, 95, 0, 0, 616, 89, 1, 0, 0, 0, 617, 620, 3, 106, 53, 0, 618, 620, 3, 72, - 36, 0, 619, 617, 1, 0, 0, 0, 619, 618, 1, 0, 0, 0, 620, 91, 1, 0, 0, 0, 621, 626, 3, 52, - 26, 0, 622, 626, 3, 62, 31, 0, 623, 626, 3, 70, 35, 0, 624, 626, 3, 166, 83, 0, 625, - 621, 1, 0, 0, 0, 625, 622, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 625, 624, 1, 0, 0, 0, 626, - 93, 1, 0, 0, 0, 627, 628, 5, 21, 0, 0, 628, 633, 3, 54, 27, 0, 629, 630, 5, 8, 0, 0, 630, - 632, 3, 54, 27, 0, 631, 629, 1, 0, 0, 0, 632, 635, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 633, - 634, 1, 0, 0, 0, 634, 636, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 636, 637, 5, 9, 0, 0, 637, - 640, 3, 96, 48, 0, 638, 639, 5, 11, 0, 0, 639, 641, 3, 144, 72, 0, 640, 638, 1, 0, 0, - 0, 640, 641, 1, 0, 0, 0, 641, 644, 1, 0, 0, 0, 642, 645, 3, 146, 73, 0, 643, 645, 5, 79, - 0, 0, 644, 642, 1, 0, 0, 0, 644, 643, 1, 0, 0, 0, 645, 95, 1, 0, 0, 0, 646, 649, 3, 98, - 49, 0, 647, 649, 3, 100, 50, 0, 648, 646, 1, 0, 0, 0, 648, 647, 1, 0, 0, 0, 649, 97, 1, - 0, 0, 0, 650, 654, 3, 104, 52, 0, 651, 654, 3, 106, 53, 0, 652, 654, 3, 72, 36, 0, 653, - 650, 1, 0, 0, 0, 653, 651, 1, 0, 0, 0, 653, 652, 1, 0, 0, 0, 654, 99, 1, 0, 0, 0, 655, 656, - 3, 102, 51, 0, 656, 101, 1, 0, 0, 0, 657, 658, 5, 22, 0, 0, 658, 659, 5, 7, 0, 0, 659, - 660, 3, 98, 49, 0, 660, 103, 1, 0, 0, 0, 661, 662, 7, 1, 0, 0, 662, 105, 1, 0, 0, 0, 663, - 664, 5, 93, 0, 0, 664, 107, 1, 0, 0, 0, 665, 666, 5, 28, 0, 0, 666, 671, 3, 118, 59, 0, - 667, 668, 5, 82, 0, 0, 668, 669, 3, 260, 130, 0, 669, 670, 5, 83, 0, 0, 670, 672, 1, - 0, 0, 0, 671, 667, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 675, 1, 0, 0, 0, 673, 674, 5, - 4, 0, 0, 674, 676, 3, 110, 55, 0, 675, 673, 1, 0, 0, 0, 675, 676, 1, 0, 0, 0, 676, 677, - 1, 0, 0, 0, 677, 678, 5, 79, 0, 0, 678, 109, 1, 0, 0, 0, 679, 685, 3, 112, 56, 0, 680, - 682, 3, 114, 57, 0, 681, 680, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, - 684, 5, 29, 0, 0, 684, 686, 3, 122, 61, 0, 685, 681, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, - 686, 689, 1, 0, 0, 0, 687, 689, 3, 122, 61, 0, 688, 679, 1, 0, 0, 0, 688, 687, 1, 0, 0, - 0, 689, 111, 1, 0, 0, 0, 690, 691, 5, 30, 0, 0, 691, 692, 3, 120, 60, 0, 692, 113, 1, - 0, 0, 0, 693, 694, 5, 31, 0, 0, 694, 695, 3, 116, 58, 0, 695, 115, 1, 0, 0, 0, 696, 697, - 5, 93, 0, 0, 697, 117, 1, 0, 0, 0, 698, 699, 5, 93, 0, 0, 699, 119, 1, 0, 0, 0, 700, 701, - 3, 220, 110, 0, 701, 702, 5, 2, 0, 0, 702, 704, 1, 0, 0, 0, 703, 700, 1, 0, 0, 0, 703, - 704, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 706, 3, 118, 59, 0, 706, 121, 1, 0, 0, 0, 707, - 713, 3, 132, 66, 0, 708, 713, 3, 124, 62, 0, 709, 713, 3, 126, 63, 0, 710, 713, 3, 128, - 64, 0, 711, 713, 3, 130, 65, 0, 712, 707, 1, 0, 0, 0, 712, 708, 1, 0, 0, 0, 712, 709, - 1, 0, 0, 0, 712, 710, 1, 0, 0, 0, 712, 711, 1, 0, 0, 0, 713, 123, 1, 0, 0, 0, 714, 715, - 5, 32, 0, 0, 715, 716, 5, 82, 0, 0, 716, 717, 3, 132, 66, 0, 717, 718, 5, 83, 0, 0, 718, - 125, 1, 0, 0, 0, 719, 720, 5, 33, 0, 0, 720, 721, 5, 82, 0, 0, 721, 722, 3, 132, 66, 0, - 722, 723, 5, 83, 0, 0, 723, 127, 1, 0, 0, 0, 724, 725, 5, 34, 0, 0, 725, 726, 5, 82, 0, - 0, 726, 727, 3, 134, 67, 0, 727, 728, 5, 83, 0, 0, 728, 129, 1, 0, 0, 0, 729, 730, 5, - 35, 0, 0, 730, 731, 5, 82, 0, 0, 731, 737, 3, 134, 67, 0, 732, 733, 5, 8, 0, 0, 733, 734, - 5, 93, 0, 0, 734, 735, 6, 65, -1, 0, 735, 736, 5, 9, 0, 0, 736, 738, 3, 134, 67, 0, 737, - 732, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 740, 5, 83, 0, 0, 740, - 131, 1, 0, 0, 0, 741, 742, 3, 220, 110, 0, 742, 133, 1, 0, 0, 0, 743, 744, 3, 220, 110, - 0, 744, 135, 1, 0, 0, 0, 745, 748, 3, 138, 69, 0, 746, 748, 3, 140, 70, 0, 747, 745, - 1, 0, 0, 0, 747, 746, 1, 0, 0, 0, 748, 137, 1, 0, 0, 0, 749, 754, 3, 54, 27, 0, 750, 751, - 5, 8, 0, 0, 751, 753, 3, 54, 27, 0, 752, 750, 1, 0, 0, 0, 753, 756, 1, 0, 0, 0, 754, 752, - 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 757, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 757, 758, - 5, 9, 0, 0, 758, 761, 3, 96, 48, 0, 759, 760, 5, 11, 0, 0, 760, 762, 3, 144, 72, 0, 761, - 759, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 766, 3, 146, 73, 0, 764, - 766, 5, 79, 0, 0, 765, 763, 1, 0, 0, 0, 765, 764, 1, 0, 0, 0, 766, 139, 1, 0, 0, 0, 767, - 768, 5, 36, 0, 0, 768, 773, 3, 54, 27, 0, 769, 770, 5, 8, 0, 0, 770, 772, 3, 54, 27, 0, - 771, 769, 1, 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, - 774, 776, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 776, 777, 5, 9, 0, 0, 777, 783, 3, 96, 48, - 0, 778, 781, 5, 11, 0, 0, 779, 782, 3, 142, 71, 0, 780, 782, 3, 252, 126, 0, 781, 779, - 1, 0, 0, 0, 781, 780, 1, 0, 0, 0, 782, 784, 1, 0, 0, 0, 783, 778, 1, 0, 0, 0, 783, 784, - 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 786, 5, 79, 0, 0, 786, 141, 1, 0, 0, 0, 787, 788, - 5, 37, 0, 0, 788, 789, 5, 82, 0, 0, 789, 790, 3, 220, 110, 0, 790, 791, 5, 8, 0, 0, 791, - 794, 3, 110, 55, 0, 792, 793, 5, 8, 0, 0, 793, 795, 3, 144, 72, 0, 794, 792, 1, 0, 0, - 0, 794, 795, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 797, 5, 83, 0, 0, 797, 143, 1, 0, 0, - 0, 798, 799, 3, 220, 110, 0, 799, 145, 1, 0, 0, 0, 800, 801, 5, 38, 0, 0, 801, 802, 5, - 9, 0, 0, 802, 803, 5, 79, 0, 0, 803, 805, 5, 94, 0, 0, 804, 806, 3, 148, 74, 0, 805, 804, - 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 805, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 809, - 1, 0, 0, 0, 809, 810, 5, 95, 0, 0, 810, 147, 1, 0, 0, 0, 811, 814, 3, 150, 75, 0, 812, - 814, 3, 210, 105, 0, 813, 811, 1, 0, 0, 0, 813, 812, 1, 0, 0, 0, 814, 149, 1, 0, 0, 0, - 815, 818, 3, 152, 76, 0, 816, 818, 3, 158, 79, 0, 817, 815, 1, 0, 0, 0, 817, 816, 1, - 0, 0, 0, 818, 151, 1, 0, 0, 0, 819, 820, 5, 39, 0, 0, 820, 822, 5, 82, 0, 0, 821, 823, - 3, 154, 77, 0, 822, 821, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 824, 1, 0, 0, 0, 824, 825, - 3, 156, 78, 0, 825, 826, 5, 83, 0, 0, 826, 827, 5, 79, 0, 0, 827, 153, 1, 0, 0, 0, 828, - 829, 7, 2, 0, 0, 829, 155, 1, 0, 0, 0, 830, 831, 3, 220, 110, 0, 831, 157, 1, 0, 0, 0, - 832, 833, 5, 42, 0, 0, 833, 834, 5, 82, 0, 0, 834, 835, 3, 160, 80, 0, 835, 836, 5, 83, - 0, 0, 836, 837, 5, 79, 0, 0, 837, 159, 1, 0, 0, 0, 838, 841, 3, 54, 27, 0, 839, 841, 3, - 248, 124, 0, 840, 838, 1, 0, 0, 0, 840, 839, 1, 0, 0, 0, 841, 161, 1, 0, 0, 0, 842, 845, - 3, 164, 82, 0, 843, 845, 3, 188, 94, 0, 844, 842, 1, 0, 0, 0, 844, 843, 1, 0, 0, 0, 845, - 846, 1, 0, 0, 0, 846, 847, 5, 2, 0, 0, 847, 849, 1, 0, 0, 0, 848, 844, 1, 0, 0, 0, 848, - 849, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 851, 3, 82, 41, 0, 851, 853, 5, 82, 0, 0, 852, - 854, 3, 266, 133, 0, 853, 852, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, - 855, 856, 5, 83, 0, 0, 856, 857, 5, 79, 0, 0, 857, 163, 1, 0, 0, 0, 858, 859, 3, 188, - 94, 0, 859, 860, 5, 2, 0, 0, 860, 861, 1, 0, 0, 0, 861, 862, 3, 74, 37, 0, 862, 165, 1, - 0, 0, 0, 863, 866, 3, 168, 84, 0, 864, 866, 3, 172, 86, 0, 865, 863, 1, 0, 0, 0, 865, - 864, 1, 0, 0, 0, 866, 167, 1, 0, 0, 0, 867, 868, 5, 43, 0, 0, 868, 869, 3, 110, 55, 0, - 869, 870, 5, 9, 0, 0, 870, 871, 5, 79, 0, 0, 871, 873, 5, 94, 0, 0, 872, 874, 3, 170, - 85, 0, 873, 872, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 873, 1, 0, 0, 0, 875, 876, 1, 0, - 0, 0, 876, 877, 1, 0, 0, 0, 877, 878, 5, 95, 0, 0, 878, 169, 1, 0, 0, 0, 879, 882, 3, 194, - 97, 0, 880, 882, 3, 192, 96, 0, 881, 879, 1, 0, 0, 0, 881, 880, 1, 0, 0, 0, 882, 171, - 1, 0, 0, 0, 883, 884, 5, 44, 0, 0, 884, 885, 3, 174, 87, 0, 885, 173, 1, 0, 0, 0, 886, - 887, 3, 186, 93, 0, 887, 888, 5, 9, 0, 0, 888, 890, 1, 0, 0, 0, 889, 886, 1, 0, 0, 0, 889, - 890, 1, 0, 0, 0, 890, 896, 1, 0, 0, 0, 891, 897, 3, 176, 88, 0, 892, 897, 3, 180, 90, - 0, 893, 897, 3, 190, 95, 0, 894, 897, 3, 192, 96, 0, 895, 897, 3, 194, 97, 0, 896, 891, - 1, 0, 0, 0, 896, 892, 1, 0, 0, 0, 896, 893, 1, 0, 0, 0, 896, 894, 1, 0, 0, 0, 896, 895, - 1, 0, 0, 0, 897, 175, 1, 0, 0, 0, 898, 904, 3, 178, 89, 0, 899, 901, 5, 82, 0, 0, 900, - 902, 3, 266, 133, 0, 901, 900, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, - 903, 905, 5, 83, 0, 0, 904, 899, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, 905, 906, 1, 0, 0, 0, - 906, 907, 5, 9, 0, 0, 907, 908, 5, 79, 0, 0, 908, 910, 5, 94, 0, 0, 909, 911, 3, 174, - 87, 0, 910, 909, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 912, 913, 1, 0, - 0, 0, 913, 914, 1, 0, 0, 0, 914, 916, 5, 95, 0, 0, 915, 917, 3, 182, 91, 0, 916, 915, - 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 177, 1, 0, 0, 0, 918, 919, 7, 3, 0, 0, 919, 179, - 1, 0, 0, 0, 920, 921, 3, 188, 94, 0, 921, 922, 5, 2, 0, 0, 922, 924, 1, 0, 0, 0, 923, 920, - 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 926, 3, 74, 37, 0, 926, 928, - 5, 82, 0, 0, 927, 929, 3, 266, 133, 0, 928, 927, 1, 0, 0, 0, 928, 929, 1, 0, 0, 0, 929, - 930, 1, 0, 0, 0, 930, 933, 5, 83, 0, 0, 931, 934, 3, 182, 91, 0, 932, 934, 5, 79, 0, 0, - 933, 931, 1, 0, 0, 0, 933, 932, 1, 0, 0, 0, 934, 181, 1, 0, 0, 0, 935, 936, 5, 38, 0, 0, - 936, 937, 5, 9, 0, 0, 937, 938, 5, 79, 0, 0, 938, 940, 5, 94, 0, 0, 939, 941, 3, 184, - 92, 0, 940, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 940, 1, 0, 0, 0, 942, 943, 1, 0, - 0, 0, 943, 944, 1, 0, 0, 0, 944, 945, 5, 95, 0, 0, 945, 183, 1, 0, 0, 0, 946, 950, 3, 150, - 75, 0, 947, 950, 3, 162, 81, 0, 948, 950, 3, 196, 98, 0, 949, 946, 1, 0, 0, 0, 949, 947, - 1, 0, 0, 0, 949, 948, 1, 0, 0, 0, 950, 185, 1, 0, 0, 0, 951, 952, 5, 93, 0, 0, 952, 187, - 1, 0, 0, 0, 953, 954, 3, 64, 32, 0, 954, 189, 1, 0, 0, 0, 955, 956, 5, 48, 0, 0, 956, 957, - 3, 110, 55, 0, 957, 958, 5, 79, 0, 0, 958, 191, 1, 0, 0, 0, 959, 960, 5, 49, 0, 0, 960, - 965, 3, 118, 59, 0, 961, 962, 5, 82, 0, 0, 962, 963, 3, 266, 133, 0, 963, 964, 5, 83, - 0, 0, 964, 966, 1, 0, 0, 0, 965, 961, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 967, 1, 0, - 0, 0, 967, 968, 5, 79, 0, 0, 968, 193, 1, 0, 0, 0, 969, 970, 5, 50, 0, 0, 970, 971, 3, - 198, 99, 0, 971, 972, 5, 79, 0, 0, 972, 195, 1, 0, 0, 0, 973, 974, 5, 51, 0, 0, 974, 975, - 3, 110, 55, 0, 975, 976, 5, 79, 0, 0, 976, 197, 1, 0, 0, 0, 977, 978, 3, 246, 123, 0, - 978, 980, 5, 82, 0, 0, 979, 981, 3, 266, 133, 0, 980, 979, 1, 0, 0, 0, 980, 981, 1, 0, - 0, 0, 981, 982, 1, 0, 0, 0, 982, 983, 5, 83, 0, 0, 983, 199, 1, 0, 0, 0, 984, 985, 5, 52, - 0, 0, 985, 986, 3, 208, 104, 0, 986, 988, 5, 82, 0, 0, 987, 989, 3, 260, 130, 0, 988, - 987, 1, 0, 0, 0, 988, 989, 1, 0, 0, 0, 989, 990, 1, 0, 0, 0, 990, 993, 5, 83, 0, 0, 991, - 992, 5, 53, 0, 0, 992, 994, 3, 202, 101, 0, 993, 991, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, - 994, 995, 1, 0, 0, 0, 995, 996, 3, 204, 102, 0, 996, 997, 5, 79, 0, 0, 997, 201, 1, 0, - 0, 0, 998, 999, 3, 96, 48, 0, 999, 203, 1, 0, 0, 0, 1000, 1002, 5, 4, 0, 0, 1001, 1003, - 3, 206, 103, 0, 1002, 1001, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1015, 1, 0, 0, - 0, 1004, 1005, 5, 54, 0, 0, 1005, 1016, 3, 220, 110, 0, 1006, 1016, 5, 55, 0, 0, 1007, - 1008, 5, 56, 0, 0, 1008, 1009, 3, 8, 4, 0, 1009, 1011, 5, 82, 0, 0, 1010, 1012, 3, 266, - 133, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, - 1014, 5, 83, 0, 0, 1014, 1016, 1, 0, 0, 0, 1015, 1004, 1, 0, 0, 0, 1015, 1006, 1, 0, - 0, 0, 1015, 1007, 1, 0, 0, 0, 1016, 205, 1, 0, 0, 0, 1017, 1018, 5, 57, 0, 0, 1018, 207, - 1, 0, 0, 0, 1019, 1020, 5, 93, 0, 0, 1020, 209, 1, 0, 0, 0, 1021, 1024, 3, 212, 106, - 0, 1022, 1024, 3, 214, 107, 0, 1023, 1021, 1, 0, 0, 0, 1023, 1022, 1, 0, 0, 0, 1024, - 211, 1, 0, 0, 0, 1025, 1026, 5, 58, 0, 0, 1026, 1028, 5, 82, 0, 0, 1027, 1029, 3, 218, - 109, 0, 1028, 1027, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1033, 1, 0, 0, 0, 1030, - 1032, 3, 216, 108, 0, 1031, 1030, 1, 0, 0, 0, 1032, 1035, 1, 0, 0, 0, 1033, 1031, 1, - 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1036, 1, 0, 0, 0, 1035, 1033, 1, 0, 0, 0, 1036, - 1037, 5, 83, 0, 0, 1037, 1038, 5, 79, 0, 0, 1038, 213, 1, 0, 0, 0, 1039, 1040, 5, 59, - 0, 0, 1040, 1042, 5, 82, 0, 0, 1041, 1043, 3, 218, 109, 0, 1042, 1041, 1, 0, 0, 0, 1042, - 1043, 1, 0, 0, 0, 1043, 1047, 1, 0, 0, 0, 1044, 1046, 3, 216, 108, 0, 1045, 1044, 1, - 0, 0, 0, 1046, 1049, 1, 0, 0, 0, 1047, 1045, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, - 1050, 1, 0, 0, 0, 1049, 1047, 1, 0, 0, 0, 1050, 1051, 5, 83, 0, 0, 1051, 1052, 5, 79, - 0, 0, 1052, 215, 1, 0, 0, 0, 1053, 1054, 5, 8, 0, 0, 1054, 1055, 5, 54, 0, 0, 1055, 1056, - 5, 9, 0, 0, 1056, 1076, 3, 220, 110, 0, 1057, 1058, 5, 8, 0, 0, 1058, 1059, 5, 6, 0, - 0, 1059, 1060, 5, 9, 0, 0, 1060, 1076, 5, 93, 0, 0, 1061, 1062, 5, 8, 0, 0, 1062, 1063, - 5, 60, 0, 0, 1063, 1064, 5, 9, 0, 0, 1064, 1076, 3, 256, 128, 0, 1065, 1066, 5, 8, 0, - 0, 1066, 1067, 5, 35, 0, 0, 1067, 1068, 5, 9, 0, 0, 1068, 1076, 3, 252, 126, 0, 1069, - 1070, 5, 8, 0, 0, 1070, 1071, 5, 28, 0, 0, 1071, 1072, 5, 9, 0, 0, 1072, 1076, 3, 118, - 59, 0, 1073, 1074, 5, 8, 0, 0, 1074, 1076, 3, 270, 135, 0, 1075, 1053, 1, 0, 0, 0, 1075, - 1057, 1, 0, 0, 0, 1075, 1061, 1, 0, 0, 0, 1075, 1065, 1, 0, 0, 0, 1075, 1069, 1, 0, 0, - 0, 1075, 1073, 1, 0, 0, 0, 1076, 217, 1, 0, 0, 0, 1077, 1078, 5, 93, 0, 0, 1078, 219, - 1, 0, 0, 0, 1079, 1082, 3, 224, 112, 0, 1080, 1082, 3, 222, 111, 0, 1081, 1079, 1, - 0, 0, 0, 1081, 1080, 1, 0, 0, 0, 1082, 221, 1, 0, 0, 0, 1083, 1084, 3, 224, 112, 0, 1084, - 1085, 5, 61, 0, 0, 1085, 1086, 3, 220, 110, 0, 1086, 1087, 5, 9, 0, 0, 1087, 1088, - 3, 220, 110, 0, 1088, 223, 1, 0, 0, 0, 1089, 1094, 3, 226, 113, 0, 1090, 1091, 5, 62, - 0, 0, 1091, 1093, 3, 226, 113, 0, 1092, 1090, 1, 0, 0, 0, 1093, 1096, 1, 0, 0, 0, 1094, - 1092, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095, 225, 1, 0, 0, 0, 1096, 1094, 1, 0, 0, - 0, 1097, 1102, 3, 228, 114, 0, 1098, 1099, 5, 63, 0, 0, 1099, 1101, 3, 228, 114, 0, - 1100, 1098, 1, 0, 0, 0, 1101, 1104, 1, 0, 0, 0, 1102, 1100, 1, 0, 0, 0, 1102, 1103, - 1, 0, 0, 0, 1103, 227, 1, 0, 0, 0, 1104, 1102, 1, 0, 0, 0, 1105, 1110, 3, 230, 115, 0, - 1106, 1107, 5, 64, 0, 0, 1107, 1109, 3, 230, 115, 0, 1108, 1106, 1, 0, 0, 0, 1109, - 1112, 1, 0, 0, 0, 1110, 1108, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 229, 1, 0, 0, - 0, 1112, 1110, 1, 0, 0, 0, 1113, 1114, 5, 65, 0, 0, 1114, 1117, 3, 230, 115, 0, 1115, - 1117, 3, 232, 116, 0, 1116, 1113, 1, 0, 0, 0, 1116, 1115, 1, 0, 0, 0, 1117, 231, 1, - 0, 0, 0, 1118, 1119, 6, 116, -1, 0, 1119, 1120, 3, 236, 118, 0, 1120, 1127, 1, 0, 0, - 0, 1121, 1122, 10, 1, 0, 0, 1122, 1123, 3, 234, 117, 0, 1123, 1124, 3, 236, 118, 0, - 1124, 1126, 1, 0, 0, 0, 1125, 1121, 1, 0, 0, 0, 1126, 1129, 1, 0, 0, 0, 1127, 1125, - 1, 0, 0, 0, 1127, 1128, 1, 0, 0, 0, 1128, 233, 1, 0, 0, 0, 1129, 1127, 1, 0, 0, 0, 1130, - 1131, 7, 4, 0, 0, 1131, 235, 1, 0, 0, 0, 1132, 1133, 6, 118, -1, 0, 1133, 1134, 3, 240, - 120, 0, 1134, 1141, 1, 0, 0, 0, 1135, 1136, 10, 1, 0, 0, 1136, 1137, 3, 238, 119, 0, - 1137, 1138, 3, 240, 120, 0, 1138, 1140, 1, 0, 0, 0, 1139, 1135, 1, 0, 0, 0, 1140, 1143, - 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 237, 1, 0, 0, 0, 1143, - 1141, 1, 0, 0, 0, 1144, 1145, 7, 5, 0, 0, 1145, 239, 1, 0, 0, 0, 1146, 1147, 6, 120, - -1, 0, 1147, 1148, 3, 244, 122, 0, 1148, 1155, 1, 0, 0, 0, 1149, 1150, 10, 1, 0, 0, - 1150, 1151, 3, 242, 121, 0, 1151, 1152, 3, 244, 122, 0, 1152, 1154, 1, 0, 0, 0, 1153, - 1149, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, - 0, 1156, 241, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1159, 7, 6, 0, 0, 1159, 243, - 1, 0, 0, 0, 1160, 1164, 3, 246, 123, 0, 1161, 1162, 5, 73, 0, 0, 1162, 1164, 3, 244, - 122, 0, 1163, 1160, 1, 0, 0, 0, 1163, 1161, 1, 0, 0, 0, 1164, 245, 1, 0, 0, 0, 1165, - 1166, 6, 123, -1, 0, 1166, 1167, 3, 250, 125, 0, 1167, 1198, 1, 0, 0, 0, 1168, 1169, - 10, 5, 0, 0, 1169, 1170, 5, 2, 0, 0, 1170, 1171, 5, 31, 0, 0, 1171, 1172, 5, 82, 0, 0, - 1172, 1173, 3, 96, 48, 0, 1173, 1174, 5, 83, 0, 0, 1174, 1197, 1, 0, 0, 0, 1175, 1176, - 10, 4, 0, 0, 1176, 1177, 5, 2, 0, 0, 1177, 1178, 5, 4, 0, 0, 1178, 1179, 5, 82, 0, 0, - 1179, 1180, 3, 96, 48, 0, 1180, 1181, 5, 83, 0, 0, 1181, 1197, 1, 0, 0, 0, 1182, 1183, - 10, 3, 0, 0, 1183, 1184, 5, 80, 0, 0, 1184, 1185, 3, 220, 110, 0, 1185, 1186, 5, 81, - 0, 0, 1186, 1197, 1, 0, 0, 0, 1187, 1188, 10, 2, 0, 0, 1188, 1190, 5, 82, 0, 0, 1189, - 1191, 3, 266, 133, 0, 1190, 1189, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1192, 1, - 0, 0, 0, 1192, 1197, 5, 83, 0, 0, 1193, 1194, 10, 1, 0, 0, 1194, 1195, 5, 2, 0, 0, 1195, - 1197, 3, 54, 27, 0, 1196, 1168, 1, 0, 0, 0, 1196, 1175, 1, 0, 0, 0, 1196, 1182, 1, 0, - 0, 0, 1196, 1187, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1197, 1200, 1, 0, 0, 0, 1198, 1196, - 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 247, 1, 0, 0, 0, 1200, 1198, 1, 0, 0, 0, 1201, - 1202, 3, 246, 123, 0, 1202, 1203, 5, 2, 0, 0, 1203, 1204, 3, 54, 27, 0, 1204, 249, - 1, 0, 0, 0, 1205, 1213, 3, 252, 126, 0, 1206, 1213, 5, 77, 0, 0, 1207, 1213, 5, 93, - 0, 0, 1208, 1209, 5, 82, 0, 0, 1209, 1210, 3, 220, 110, 0, 1210, 1211, 5, 83, 0, 0, - 1211, 1213, 1, 0, 0, 0, 1212, 1205, 1, 0, 0, 0, 1212, 1206, 1, 0, 0, 0, 1212, 1207, - 1, 0, 0, 0, 1212, 1208, 1, 0, 0, 0, 1213, 251, 1, 0, 0, 0, 1214, 1224, 3, 272, 136, 0, - 1215, 1224, 5, 88, 0, 0, 1216, 1224, 3, 274, 137, 0, 1217, 1224, 5, 92, 0, 0, 1218, - 1224, 5, 87, 0, 0, 1219, 1224, 3, 258, 129, 0, 1220, 1224, 3, 44, 22, 0, 1221, 1224, - 3, 254, 127, 0, 1222, 1224, 3, 256, 128, 0, 1223, 1214, 1, 0, 0, 0, 1223, 1215, 1, - 0, 0, 0, 1223, 1216, 1, 0, 0, 0, 1223, 1217, 1, 0, 0, 0, 1223, 1218, 1, 0, 0, 0, 1223, - 1219, 1, 0, 0, 0, 1223, 1220, 1, 0, 0, 0, 1223, 1221, 1, 0, 0, 0, 1223, 1222, 1, 0, 0, - 0, 1224, 253, 1, 0, 0, 0, 1225, 1226, 5, 80, 0, 0, 1226, 1231, 3, 220, 110, 0, 1227, - 1228, 5, 8, 0, 0, 1228, 1230, 3, 220, 110, 0, 1229, 1227, 1, 0, 0, 0, 1230, 1233, 1, - 0, 0, 0, 1231, 1229, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1234, 1, 0, 0, 0, 1233, - 1231, 1, 0, 0, 0, 1234, 1235, 5, 81, 0, 0, 1235, 255, 1, 0, 0, 0, 1236, 1237, 5, 60, - 0, 0, 1237, 1238, 5, 82, 0, 0, 1238, 1239, 3, 220, 110, 0, 1239, 1240, 5, 8, 0, 0, 1240, - 1241, 3, 220, 110, 0, 1241, 1242, 5, 83, 0, 0, 1242, 1250, 1, 0, 0, 0, 1243, 1244, - 5, 80, 0, 0, 1244, 1245, 3, 220, 110, 0, 1245, 1246, 5, 78, 0, 0, 1246, 1247, 3, 220, - 110, 0, 1247, 1248, 5, 81, 0, 0, 1248, 1250, 1, 0, 0, 0, 1249, 1236, 1, 0, 0, 0, 1249, - 1243, 1, 0, 0, 0, 1250, 257, 1, 0, 0, 0, 1251, 1252, 3, 54, 27, 0, 1252, 1253, 5, 2, - 0, 0, 1253, 1255, 1, 0, 0, 0, 1254, 1251, 1, 0, 0, 0, 1255, 1258, 1, 0, 0, 0, 1256, 1254, - 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1259, 1, 0, 0, 0, 1258, 1256, 1, 0, 0, 0, 1259, - 1260, 3, 54, 27, 0, 1260, 259, 1, 0, 0, 0, 1261, 1266, 3, 262, 131, 0, 1262, 1263, - 5, 8, 0, 0, 1263, 1265, 3, 262, 131, 0, 1264, 1262, 1, 0, 0, 0, 1265, 1268, 1, 0, 0, - 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 261, 1, 0, 0, 0, 1268, 1266, - 1, 0, 0, 0, 1269, 1270, 3, 264, 132, 0, 1270, 1271, 5, 9, 0, 0, 1271, 1274, 3, 96, 48, - 0, 1272, 1273, 5, 11, 0, 0, 1273, 1275, 3, 144, 72, 0, 1274, 1272, 1, 0, 0, 0, 1274, - 1275, 1, 0, 0, 0, 1275, 263, 1, 0, 0, 0, 1276, 1277, 5, 93, 0, 0, 1277, 265, 1, 0, 0, - 0, 1278, 1283, 3, 268, 134, 0, 1279, 1280, 5, 8, 0, 0, 1280, 1282, 3, 268, 134, 0, - 1281, 1279, 1, 0, 0, 0, 1282, 1285, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, - 1, 0, 0, 0, 1284, 1290, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1286, 1287, 5, 8, 0, 0, 1287, - 1289, 3, 270, 135, 0, 1288, 1286, 1, 0, 0, 0, 1289, 1292, 1, 0, 0, 0, 1290, 1288, 1, - 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1302, 1, 0, 0, 0, 1292, 1290, 1, 0, 0, 0, 1293, - 1298, 3, 270, 135, 0, 1294, 1295, 5, 8, 0, 0, 1295, 1297, 3, 270, 135, 0, 1296, 1294, - 1, 0, 0, 0, 1297, 1300, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, - 1302, 1, 0, 0, 0, 1300, 1298, 1, 0, 0, 0, 1301, 1278, 1, 0, 0, 0, 1301, 1293, 1, 0, 0, - 0, 1302, 267, 1, 0, 0, 0, 1303, 1304, 3, 220, 110, 0, 1304, 269, 1, 0, 0, 0, 1305, 1306, - 3, 264, 132, 0, 1306, 1307, 5, 9, 0, 0, 1307, 1308, 3, 220, 110, 0, 1308, 271, 1, 0, - 0, 0, 1309, 1312, 5, 88, 0, 0, 1310, 1312, 3, 274, 137, 0, 1311, 1309, 1, 0, 0, 0, 1311, - 1310, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1314, 5, 93, 0, 0, 1314, 273, 1, 0, 0, - 0, 1315, 1316, 7, 7, 0, 0, 1316, 275, 1, 0, 0, 0, 125, 279, 285, 297, 301, 311, 325, - 357, 361, 370, 382, 388, 399, 408, 425, 432, 440, 445, 450, 457, 466, 474, 479, - 484, 491, 498, 505, 507, 512, 517, 525, 530, 539, 546, 548, 553, 558, 564, 569, - 577, 582, 588, 599, 613, 619, 625, 633, 640, 644, 648, 653, 671, 675, 681, 685, - 688, 703, 712, 737, 747, 754, 761, 765, 773, 781, 783, 794, 807, 813, 817, 822, - 840, 844, 848, 853, 865, 875, 881, 889, 896, 901, 904, 912, 916, 923, 928, 933, - 942, 949, 965, 980, 988, 993, 1002, 1011, 1015, 1023, 1028, 1033, 1042, 1047, - 1075, 1081, 1094, 1102, 1110, 1116, 1127, 1141, 1155, 1163, 1190, 1196, 1198, - 1212, 1223, 1231, 1249, 1256, 1266, 1274, 1283, 1290, 1298, 1301, 1311 + 4, + 1, + 95, + 1318, + 2, + 0, + 7, + 0, + 2, + 1, + 7, + 1, + 2, + 2, + 7, + 2, + 2, + 3, + 7, + 3, + 2, + 4, + 7, + 4, + 2, + 5, + 7, + 5, + 2, + 6, + 7, + 6, + 2, + 7, + 7, + 7, + 2, + 8, + 7, + 8, + 2, + 9, + 7, + 9, + 2, + 10, + 7, + 10, + 2, + 11, + 7, + 11, + 2, + 12, + 7, + 12, + 2, + 13, + 7, + 13, + 2, + 14, + 7, + 14, + 2, + 15, + 7, + 15, + 2, + 16, + 7, + 16, + 2, + 17, + 7, + 17, + 2, + 18, + 7, + 18, + 2, + 19, + 7, + 19, + 2, + 20, + 7, + 20, + 2, + 21, + 7, + 21, + 2, + 22, + 7, + 22, + 2, + 23, + 7, + 23, + 2, + 24, + 7, + 24, + 2, + 25, + 7, + 25, + 2, + 26, + 7, + 26, + 2, + 27, + 7, + 27, + 2, + 28, + 7, + 28, + 2, + 29, + 7, + 29, + 2, + 30, + 7, + 30, + 2, + 31, + 7, + 31, + 2, + 32, + 7, + 32, + 2, + 33, + 7, + 33, + 2, + 34, + 7, + 34, + 2, + 35, + 7, + 35, + 2, + 36, + 7, + 36, + 2, + 37, + 7, + 37, + 2, + 38, + 7, + 38, + 2, + 39, + 7, + 39, + 2, + 40, + 7, + 40, + 2, + 41, + 7, + 41, + 2, + 42, + 7, + 42, + 2, + 43, + 7, + 43, + 2, + 44, + 7, + 44, + 2, + 45, + 7, + 45, + 2, + 46, + 7, + 46, + 2, + 47, + 7, + 47, + 2, + 48, + 7, + 48, + 2, + 49, + 7, + 49, + 2, + 50, + 7, + 50, + 2, + 51, + 7, + 51, + 2, + 52, + 7, + 52, + 2, + 53, + 7, + 53, + 2, + 54, + 7, + 54, + 2, + 55, + 7, + 55, + 2, + 56, + 7, + 56, + 2, + 57, + 7, + 57, + 2, + 58, + 7, + 58, + 2, + 59, + 7, + 59, + 2, + 60, + 7, + 60, + 2, + 61, + 7, + 61, + 2, + 62, + 7, + 62, + 2, + 63, + 7, + 63, + 2, + 64, + 7, + 64, + 2, + 65, + 7, + 65, + 2, + 66, + 7, + 66, + 2, + 67, + 7, + 67, + 2, + 68, + 7, + 68, + 2, + 69, + 7, + 69, + 2, + 70, + 7, + 70, + 2, + 71, + 7, + 71, + 2, + 72, + 7, + 72, + 2, + 73, + 7, + 73, + 2, + 74, + 7, + 74, + 2, + 75, + 7, + 75, + 2, + 76, + 7, + 76, + 2, + 77, + 7, + 77, + 2, + 78, + 7, + 78, + 2, + 79, + 7, + 79, + 2, + 80, + 7, + 80, + 2, + 81, + 7, + 81, + 2, + 82, + 7, + 82, + 2, + 83, + 7, + 83, + 2, + 84, + 7, + 84, + 2, + 85, + 7, + 85, + 2, + 86, + 7, + 86, + 2, + 87, + 7, + 87, + 2, + 88, + 7, + 88, + 2, + 89, + 7, + 89, + 2, + 90, + 7, + 90, + 2, + 91, + 7, + 91, + 2, + 92, + 7, + 92, + 2, + 93, + 7, + 93, + 2, + 94, + 7, + 94, + 2, + 95, + 7, + 95, + 2, + 96, + 7, + 96, + 2, + 97, + 7, + 97, + 2, + 98, + 7, + 98, + 2, + 99, + 7, + 99, + 2, + 100, + 7, + 100, + 2, + 101, + 7, + 101, + 2, + 102, + 7, + 102, + 2, + 103, + 7, + 103, + 2, + 104, + 7, + 104, + 2, + 105, + 7, + 105, + 2, + 106, + 7, + 106, + 2, + 107, + 7, + 107, + 2, + 108, + 7, + 108, + 2, + 109, + 7, + 109, + 2, + 110, + 7, + 110, + 2, + 111, + 7, + 111, + 2, + 112, + 7, + 112, + 2, + 113, + 7, + 113, + 2, + 114, + 7, + 114, + 2, + 115, + 7, + 115, + 2, + 116, + 7, + 116, + 2, + 117, + 7, + 117, + 2, + 118, + 7, + 118, + 2, + 119, + 7, + 119, + 2, + 120, + 7, + 120, + 2, + 121, + 7, + 121, + 2, + 122, + 7, + 122, + 2, + 123, + 7, + 123, + 2, + 124, + 7, + 124, + 2, + 125, + 7, + 125, + 2, + 126, + 7, + 126, + 2, + 127, + 7, + 127, + 2, + 128, + 7, + 128, + 2, + 129, + 7, + 129, + 2, + 130, + 7, + 130, + 2, + 131, + 7, + 131, + 2, + 132, + 7, + 132, + 2, + 133, + 7, + 133, + 2, + 134, + 7, + 134, + 2, + 135, + 7, + 135, + 2, + 136, + 7, + 136, + 2, + 137, + 7, + 137, + 1, + 0, + 5, + 0, + 278, + 8, + 0, + 10, + 0, + 12, + 0, + 281, + 9, + 0, + 1, + 0, + 5, + 0, + 284, + 8, + 0, + 10, + 0, + 12, + 0, + 287, + 9, + 0, + 1, + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 3, + 2, + 298, + 8, + 2, + 1, + 3, + 1, + 3, + 3, + 3, + 302, + 8, + 3, + 1, + 4, + 1, + 4, + 1, + 4, + 1, + 4, + 1, + 4, + 1, + 4, + 5, + 4, + 310, + 8, + 4, + 10, + 4, + 12, + 4, + 313, + 9, + 4, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 1, + 5, + 3, + 5, + 326, + 8, + 5, + 1, + 6, + 1, + 6, + 1, + 6, + 1, + 6, + 1, + 6, + 1, + 6, + 1, + 7, + 1, + 7, + 1, + 8, + 1, + 8, + 1, + 9, + 1, + 9, + 1, + 9, + 1, + 9, + 1, + 9, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 10, + 1, + 11, + 1, + 11, + 1, + 12, + 1, + 12, + 1, + 12, + 1, + 12, + 1, + 12, + 3, + 12, + 358, + 8, + 12, + 1, + 12, + 1, + 12, + 3, + 12, + 362, + 8, + 12, + 1, + 12, + 1, + 12, + 1, + 13, + 1, + 13, + 1, + 13, + 5, + 13, + 369, + 8, + 13, + 10, + 13, + 12, + 13, + 372, + 9, + 13, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 3, + 15, + 383, + 8, + 15, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 3, + 16, + 389, + 8, + 16, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 5, + 17, + 398, + 8, + 17, + 10, + 17, + 12, + 17, + 401, + 9, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 18, + 1, + 18, + 1, + 18, + 3, + 18, + 409, + 8, + 18, + 1, + 19, + 1, + 19, + 1, + 20, + 1, + 20, + 1, + 21, + 1, + 21, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 3, + 23, + 426, + 8, + 23, + 1, + 23, + 1, + 23, + 1, + 24, + 1, + 24, + 1, + 24, + 3, + 24, + 433, + 8, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 4, + 24, + 439, + 8, + 24, + 11, + 24, + 12, + 24, + 440, + 1, + 24, + 1, + 24, + 1, + 24, + 3, + 24, + 446, + 8, + 24, + 1, + 25, + 1, + 25, + 1, + 25, + 3, + 25, + 451, + 8, + 25, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 3, + 26, + 458, + 8, + 26, + 1, + 27, + 1, + 27, + 1, + 28, + 1, + 28, + 1, + 29, + 1, + 29, + 1, + 29, + 3, + 29, + 467, + 8, + 29, + 1, + 29, + 1, + 29, + 1, + 29, + 1, + 29, + 4, + 29, + 473, + 8, + 29, + 11, + 29, + 12, + 29, + 474, + 1, + 29, + 1, + 29, + 1, + 29, + 3, + 29, + 480, + 8, + 29, + 1, + 30, + 1, + 30, + 1, + 30, + 3, + 30, + 485, + 8, + 30, + 1, + 31, + 1, + 31, + 1, + 31, + 1, + 31, + 1, + 31, + 3, + 31, + 492, + 8, + 31, + 1, + 32, + 1, + 32, + 1, + 33, + 1, + 33, + 1, + 33, + 3, + 33, + 499, + 8, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 1, + 33, + 4, + 33, + 506, + 8, + 33, + 11, + 33, + 12, + 33, + 507, + 1, + 33, + 1, + 33, + 1, + 33, + 3, + 33, + 513, + 8, + 33, + 1, + 34, + 1, + 34, + 1, + 34, + 3, + 34, + 518, + 8, + 34, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 1, + 35, + 3, + 35, + 526, + 8, + 35, + 1, + 36, + 1, + 36, + 1, + 36, + 3, + 36, + 531, + 8, + 36, + 1, + 36, + 1, + 36, + 1, + 37, + 1, + 37, + 1, + 38, + 1, + 38, + 1, + 38, + 3, + 38, + 540, + 8, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 1, + 38, + 4, + 38, + 547, + 8, + 38, + 11, + 38, + 12, + 38, + 548, + 1, + 38, + 1, + 38, + 1, + 38, + 3, + 38, + 554, + 8, + 38, + 1, + 39, + 1, + 39, + 1, + 39, + 3, + 39, + 559, + 8, + 39, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 3, + 40, + 565, + 8, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 3, + 40, + 570, + 8, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 1, + 40, + 4, + 40, + 576, + 8, + 40, + 11, + 40, + 12, + 40, + 577, + 1, + 40, + 1, + 40, + 1, + 40, + 3, + 40, + 583, + 8, + 40, + 1, + 41, + 1, + 41, + 1, + 42, + 1, + 42, + 3, + 42, + 589, + 8, + 42, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 5, + 43, + 598, + 8, + 43, + 10, + 43, + 12, + 43, + 601, + 9, + 43, + 1, + 43, + 1, + 43, + 1, + 43, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 1, + 44, + 4, + 44, + 612, + 8, + 44, + 11, + 44, + 12, + 44, + 613, + 1, + 44, + 1, + 44, + 1, + 45, + 1, + 45, + 3, + 45, + 620, + 8, + 45, + 1, + 46, + 1, + 46, + 1, + 46, + 1, + 46, + 3, + 46, + 626, + 8, + 46, + 1, + 47, + 1, + 47, + 1, + 47, + 1, + 47, + 5, + 47, + 632, + 8, + 47, + 10, + 47, + 12, + 47, + 635, + 9, + 47, + 1, + 47, + 1, + 47, + 1, + 47, + 1, + 47, + 3, + 47, + 641, + 8, + 47, + 1, + 47, + 1, + 47, + 3, + 47, + 645, + 8, + 47, + 1, + 48, + 1, + 48, + 3, + 48, + 649, + 8, + 48, + 1, + 49, + 1, + 49, + 1, + 49, + 3, + 49, + 654, + 8, + 49, + 1, + 50, + 1, + 50, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 51, + 1, + 52, + 1, + 52, + 1, + 53, + 1, + 53, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 1, + 54, + 3, + 54, + 672, + 8, + 54, + 1, + 54, + 1, + 54, + 3, + 54, + 676, + 8, + 54, + 1, + 54, + 1, + 54, + 1, + 55, + 1, + 55, + 3, + 55, + 682, + 8, + 55, + 1, + 55, + 1, + 55, + 3, + 55, + 686, + 8, + 55, + 1, + 55, + 3, + 55, + 689, + 8, + 55, + 1, + 56, + 1, + 56, + 1, + 56, + 1, + 57, + 1, + 57, + 1, + 57, + 1, + 58, + 1, + 58, + 1, + 59, + 1, + 59, + 1, + 60, + 1, + 60, + 1, + 60, + 3, + 60, + 704, + 8, + 60, + 1, + 60, + 1, + 60, + 1, + 61, + 1, + 61, + 1, + 61, + 1, + 61, + 1, + 61, + 3, + 61, + 713, + 8, + 61, + 1, + 62, + 1, + 62, + 1, + 62, + 1, + 62, + 1, + 62, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 63, + 1, + 64, + 1, + 64, + 1, + 64, + 1, + 64, + 1, + 64, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 65, + 1, + 65, + 3, + 65, + 738, + 8, + 65, + 1, + 65, + 1, + 65, + 1, + 66, + 1, + 66, + 1, + 67, + 1, + 67, + 1, + 68, + 1, + 68, + 3, + 68, + 748, + 8, + 68, + 1, + 69, + 1, + 69, + 1, + 69, + 5, + 69, + 753, + 8, + 69, + 10, + 69, + 12, + 69, + 756, + 9, + 69, + 1, + 69, + 1, + 69, + 1, + 69, + 1, + 69, + 3, + 69, + 762, + 8, + 69, + 1, + 69, + 1, + 69, + 3, + 69, + 766, + 8, + 69, + 1, + 70, + 1, + 70, + 1, + 70, + 1, + 70, + 5, + 70, + 772, + 8, + 70, + 10, + 70, + 12, + 70, + 775, + 9, + 70, + 1, + 70, + 1, + 70, + 1, + 70, + 1, + 70, + 1, + 70, + 3, + 70, + 782, + 8, + 70, + 3, + 70, + 784, + 8, + 70, + 1, + 70, + 1, + 70, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 1, + 71, + 3, + 71, + 795, + 8, + 71, + 1, + 71, + 1, + 71, + 1, + 72, + 1, + 72, + 1, + 73, + 1, + 73, + 1, + 73, + 1, + 73, + 1, + 73, + 4, + 73, + 806, + 8, + 73, + 11, + 73, + 12, + 73, + 807, + 1, + 73, + 1, + 73, + 1, + 74, + 1, + 74, + 3, + 74, + 814, + 8, + 74, + 1, + 75, + 1, + 75, + 3, + 75, + 818, + 8, + 75, + 1, + 76, + 1, + 76, + 1, + 76, + 3, + 76, + 823, + 8, + 76, + 1, + 76, + 1, + 76, + 1, + 76, + 1, + 76, + 1, + 77, + 1, + 77, + 1, + 78, + 1, + 78, + 1, + 79, + 1, + 79, + 1, + 79, + 1, + 79, + 1, + 79, + 1, + 79, + 1, + 80, + 1, + 80, + 3, + 80, + 841, + 8, + 80, + 1, + 81, + 1, + 81, + 3, + 81, + 845, + 8, + 81, + 1, + 81, + 1, + 81, + 3, + 81, + 849, + 8, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 3, + 81, + 854, + 8, + 81, + 1, + 81, + 1, + 81, + 1, + 81, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 82, + 1, + 83, + 1, + 83, + 3, + 83, + 866, + 8, + 83, + 1, + 84, + 1, + 84, + 1, + 84, + 1, + 84, + 1, + 84, + 1, + 84, + 4, + 84, + 874, + 8, + 84, + 11, + 84, + 12, + 84, + 875, + 1, + 84, + 1, + 84, + 1, + 85, + 1, + 85, + 3, + 85, + 882, + 8, + 85, + 1, + 86, + 1, + 86, + 1, + 86, + 1, + 87, + 1, + 87, + 1, + 87, + 3, + 87, + 890, + 8, + 87, + 1, + 87, + 1, + 87, + 1, + 87, + 1, + 87, + 1, + 87, + 3, + 87, + 897, + 8, + 87, + 1, + 88, + 1, + 88, + 1, + 88, + 3, + 88, + 902, + 8, + 88, + 1, + 88, + 3, + 88, + 905, + 8, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 1, + 88, + 4, + 88, + 911, + 8, + 88, + 11, + 88, + 12, + 88, + 912, + 1, + 88, + 1, + 88, + 3, + 88, + 917, + 8, + 88, + 1, + 89, + 1, + 89, + 1, + 90, + 1, + 90, + 1, + 90, + 3, + 90, + 924, + 8, + 90, + 1, + 90, + 1, + 90, + 1, + 90, + 3, + 90, + 929, + 8, + 90, + 1, + 90, + 1, + 90, + 1, + 90, + 3, + 90, + 934, + 8, + 90, + 1, + 91, + 1, + 91, + 1, + 91, + 1, + 91, + 1, + 91, + 4, + 91, + 941, + 8, + 91, + 11, + 91, + 12, + 91, + 942, + 1, + 91, + 1, + 91, + 1, + 92, + 1, + 92, + 1, + 92, + 3, + 92, + 950, + 8, + 92, + 1, + 93, + 1, + 93, + 1, + 94, + 1, + 94, + 1, + 95, + 1, + 95, + 1, + 95, + 1, + 95, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 1, + 96, + 3, + 96, + 966, + 8, + 96, + 1, + 96, + 1, + 96, + 1, + 97, + 1, + 97, + 1, + 97, + 1, + 97, + 1, + 98, + 1, + 98, + 1, + 98, + 1, + 98, + 1, + 99, + 1, + 99, + 1, + 99, + 3, + 99, + 981, + 8, + 99, + 1, + 99, + 1, + 99, + 1, + 100, + 1, + 100, + 1, + 100, + 1, + 100, + 3, + 100, + 989, + 8, + 100, + 1, + 100, + 1, + 100, + 1, + 100, + 3, + 100, + 994, + 8, + 100, + 1, + 100, + 1, + 100, + 1, + 100, + 1, + 101, + 1, + 101, + 1, + 102, + 1, + 102, + 3, + 102, + 1003, + 8, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 1, + 102, + 3, + 102, + 1012, + 8, + 102, + 1, + 102, + 1, + 102, + 3, + 102, + 1016, + 8, + 102, + 1, + 103, + 1, + 103, + 1, + 104, + 1, + 104, + 1, + 105, + 1, + 105, + 3, + 105, + 1024, + 8, + 105, + 1, + 106, + 1, + 106, + 1, + 106, + 3, + 106, + 1029, + 8, + 106, + 1, + 106, + 5, + 106, + 1032, + 8, + 106, + 10, + 106, + 12, + 106, + 1035, + 9, + 106, + 1, + 106, + 1, + 106, + 1, + 106, + 1, + 107, + 1, + 107, + 1, + 107, + 3, + 107, + 1043, + 8, + 107, + 1, + 107, + 5, + 107, + 1046, + 8, + 107, + 10, + 107, + 12, + 107, + 1049, + 9, + 107, + 1, + 107, + 1, + 107, + 1, + 107, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 1, + 108, + 3, + 108, + 1076, + 8, + 108, + 1, + 109, + 1, + 109, + 1, + 110, + 1, + 110, + 3, + 110, + 1082, + 8, + 110, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 111, + 1, + 112, + 1, + 112, + 1, + 112, + 5, + 112, + 1093, + 8, + 112, + 10, + 112, + 12, + 112, + 1096, + 9, + 112, + 1, + 113, + 1, + 113, + 1, + 113, + 5, + 113, + 1101, + 8, + 113, + 10, + 113, + 12, + 113, + 1104, + 9, + 113, + 1, + 114, + 1, + 114, + 1, + 114, + 5, + 114, + 1109, + 8, + 114, + 10, + 114, + 12, + 114, + 1112, + 9, + 114, + 1, + 115, + 1, + 115, + 1, + 115, + 3, + 115, + 1117, + 8, + 115, + 1, + 116, + 1, + 116, + 1, + 116, + 1, + 116, + 1, + 116, + 1, + 116, + 1, + 116, + 5, + 116, + 1126, + 8, + 116, + 10, + 116, + 12, + 116, + 1129, + 9, + 116, + 1, + 117, + 1, + 117, + 1, + 118, + 1, + 118, + 1, + 118, + 1, + 118, + 1, + 118, + 1, + 118, + 1, + 118, + 5, + 118, + 1140, + 8, + 118, + 10, + 118, + 12, + 118, + 1143, + 9, + 118, + 1, + 119, + 1, + 119, + 1, + 120, + 1, + 120, + 1, + 120, + 1, + 120, + 1, + 120, + 1, + 120, + 1, + 120, + 5, + 120, + 1154, + 8, + 120, + 10, + 120, + 12, + 120, + 1157, + 9, + 120, + 1, + 121, + 1, + 121, + 1, + 122, + 1, + 122, + 1, + 122, + 3, + 122, + 1164, + 8, + 122, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 3, + 123, + 1191, + 8, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 1, + 123, + 5, + 123, + 1197, + 8, + 123, + 10, + 123, + 12, + 123, + 1200, + 9, + 123, + 1, + 124, + 1, + 124, + 1, + 124, + 1, + 124, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 1, + 125, + 3, + 125, + 1213, + 8, + 125, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 1, + 126, + 3, + 126, + 1224, + 8, + 126, + 1, + 127, + 1, + 127, + 1, + 127, + 1, + 127, + 5, + 127, + 1230, + 8, + 127, + 10, + 127, + 12, + 127, + 1233, + 9, + 127, + 1, + 127, + 1, + 127, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 1, + 128, + 3, + 128, + 1250, + 8, + 128, + 1, + 129, + 1, + 129, + 1, + 129, + 5, + 129, + 1255, + 8, + 129, + 10, + 129, + 12, + 129, + 1258, + 9, + 129, + 1, + 129, + 1, + 129, + 1, + 130, + 1, + 130, + 1, + 130, + 5, + 130, + 1265, + 8, + 130, + 10, + 130, + 12, + 130, + 1268, + 9, + 130, + 1, + 131, + 1, + 131, + 1, + 131, + 1, + 131, + 1, + 131, + 3, + 131, + 1275, + 8, + 131, + 1, + 132, + 1, + 132, + 1, + 133, + 1, + 133, + 1, + 133, + 5, + 133, + 1282, + 8, + 133, + 10, + 133, + 12, + 133, + 1285, + 9, + 133, + 1, + 133, + 1, + 133, + 5, + 133, + 1289, + 8, + 133, + 10, + 133, + 12, + 133, + 1292, + 9, + 133, + 1, + 133, + 1, + 133, + 1, + 133, + 5, + 133, + 1297, + 8, + 133, + 10, + 133, + 12, + 133, + 1300, + 9, + 133, + 3, + 133, + 1302, + 8, + 133, + 1, + 134, + 1, + 134, + 1, + 135, + 1, + 135, + 1, + 135, + 1, + 135, + 1, + 136, + 1, + 136, + 3, + 136, + 1312, + 8, + 136, + 1, + 136, + 1, + 136, + 1, + 137, + 1, + 137, + 1, + 137, + 0, + 5, + 8, + 232, + 236, + 240, + 246, + 138, + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 18, + 20, + 22, + 24, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 74, + 76, + 78, + 80, + 82, + 84, + 86, + 88, + 90, + 92, + 94, + 96, + 98, + 100, + 102, + 104, + 106, + 108, + 110, + 112, + 114, + 116, + 118, + 120, + 122, + 124, + 126, + 128, + 130, + 132, + 134, + 136, + 138, + 140, + 142, + 144, + 146, + 148, + 150, + 152, + 154, + 156, + 158, + 160, + 162, + 164, + 166, + 168, + 170, + 172, + 174, + 176, + 178, + 180, + 182, + 184, + 186, + 188, + 190, + 192, + 194, + 196, + 198, + 200, + 202, + 204, + 206, + 208, + 210, + 212, + 214, + 216, + 218, + 220, + 222, + 224, + 226, + 228, + 230, + 232, + 234, + 236, + 238, + 240, + 242, + 244, + 246, + 248, + 250, + 252, + 254, + 256, + 258, + 260, + 262, + 264, + 266, + 268, + 270, + 272, + 274, + 0, + 8, + 1, + 0, + 89, + 90, + 1, + 0, + 23, + 27, + 1, + 0, + 40, + 41, + 1, + 0, + 45, + 47, + 2, + 0, + 13, + 13, + 66, + 71, + 1, + 0, + 72, + 73, + 1, + 0, + 74, + 76, + 1, + 0, + 89, + 91, + 1350, + 0, + 279, + 1, + 0, + 0, + 0, + 2, + 290, + 1, + 0, + 0, + 0, + 4, + 297, + 1, + 0, + 0, + 0, + 6, + 301, + 1, + 0, + 0, + 0, + 8, + 303, + 1, + 0, + 0, + 0, + 10, + 325, + 1, + 0, + 0, + 0, + 12, + 327, + 1, + 0, + 0, + 0, + 14, + 333, + 1, + 0, + 0, + 0, + 16, + 335, + 1, + 0, + 0, + 0, + 18, + 337, + 1, + 0, + 0, + 0, + 20, + 342, + 1, + 0, + 0, + 0, + 22, + 350, + 1, + 0, + 0, + 0, + 24, + 352, + 1, + 0, + 0, + 0, + 26, + 365, + 1, + 0, + 0, + 0, + 28, + 373, + 1, + 0, + 0, + 0, + 30, + 378, + 1, + 0, + 0, + 0, + 32, + 384, + 1, + 0, + 0, + 0, + 34, + 390, + 1, + 0, + 0, + 0, + 36, + 405, + 1, + 0, + 0, + 0, + 38, + 410, + 1, + 0, + 0, + 0, + 40, + 412, + 1, + 0, + 0, + 0, + 42, + 414, + 1, + 0, + 0, + 0, + 44, + 416, + 1, + 0, + 0, + 0, + 46, + 420, + 1, + 0, + 0, + 0, + 48, + 429, + 1, + 0, + 0, + 0, + 50, + 447, + 1, + 0, + 0, + 0, + 52, + 457, + 1, + 0, + 0, + 0, + 54, + 459, + 1, + 0, + 0, + 0, + 56, + 461, + 1, + 0, + 0, + 0, + 58, + 463, + 1, + 0, + 0, + 0, + 60, + 481, + 1, + 0, + 0, + 0, + 62, + 491, + 1, + 0, + 0, + 0, + 64, + 493, + 1, + 0, + 0, + 0, + 66, + 495, + 1, + 0, + 0, + 0, + 68, + 514, + 1, + 0, + 0, + 0, + 70, + 525, + 1, + 0, + 0, + 0, + 72, + 530, + 1, + 0, + 0, + 0, + 74, + 534, + 1, + 0, + 0, + 0, + 76, + 536, + 1, + 0, + 0, + 0, + 78, + 555, + 1, + 0, + 0, + 0, + 80, + 560, + 1, + 0, + 0, + 0, + 82, + 584, + 1, + 0, + 0, + 0, + 84, + 588, + 1, + 0, + 0, + 0, + 86, + 590, + 1, + 0, + 0, + 0, + 88, + 605, + 1, + 0, + 0, + 0, + 90, + 619, + 1, + 0, + 0, + 0, + 92, + 625, + 1, + 0, + 0, + 0, + 94, + 627, + 1, + 0, + 0, + 0, + 96, + 648, + 1, + 0, + 0, + 0, + 98, + 653, + 1, + 0, + 0, + 0, + 100, + 655, + 1, + 0, + 0, + 0, + 102, + 657, + 1, + 0, + 0, + 0, + 104, + 661, + 1, + 0, + 0, + 0, + 106, + 663, + 1, + 0, + 0, + 0, + 108, + 665, + 1, + 0, + 0, + 0, + 110, + 688, + 1, + 0, + 0, + 0, + 112, + 690, + 1, + 0, + 0, + 0, + 114, + 693, + 1, + 0, + 0, + 0, + 116, + 696, + 1, + 0, + 0, + 0, + 118, + 698, + 1, + 0, + 0, + 0, + 120, + 703, + 1, + 0, + 0, + 0, + 122, + 712, + 1, + 0, + 0, + 0, + 124, + 714, + 1, + 0, + 0, + 0, + 126, + 719, + 1, + 0, + 0, + 0, + 128, + 724, + 1, + 0, + 0, + 0, + 130, + 729, + 1, + 0, + 0, + 0, + 132, + 741, + 1, + 0, + 0, + 0, + 134, + 743, + 1, + 0, + 0, + 0, + 136, + 747, + 1, + 0, + 0, + 0, + 138, + 749, + 1, + 0, + 0, + 0, + 140, + 767, + 1, + 0, + 0, + 0, + 142, + 787, + 1, + 0, + 0, + 0, + 144, + 798, + 1, + 0, + 0, + 0, + 146, + 800, + 1, + 0, + 0, + 0, + 148, + 813, + 1, + 0, + 0, + 0, + 150, + 817, + 1, + 0, + 0, + 0, + 152, + 819, + 1, + 0, + 0, + 0, + 154, + 828, + 1, + 0, + 0, + 0, + 156, + 830, + 1, + 0, + 0, + 0, + 158, + 832, + 1, + 0, + 0, + 0, + 160, + 840, + 1, + 0, + 0, + 0, + 162, + 848, + 1, + 0, + 0, + 0, + 164, + 858, + 1, + 0, + 0, + 0, + 166, + 865, + 1, + 0, + 0, + 0, + 168, + 867, + 1, + 0, + 0, + 0, + 170, + 881, + 1, + 0, + 0, + 0, + 172, + 883, + 1, + 0, + 0, + 0, + 174, + 889, + 1, + 0, + 0, + 0, + 176, + 898, + 1, + 0, + 0, + 0, + 178, + 918, + 1, + 0, + 0, + 0, + 180, + 923, + 1, + 0, + 0, + 0, + 182, + 935, + 1, + 0, + 0, + 0, + 184, + 949, + 1, + 0, + 0, + 0, + 186, + 951, + 1, + 0, + 0, + 0, + 188, + 953, + 1, + 0, + 0, + 0, + 190, + 955, + 1, + 0, + 0, + 0, + 192, + 959, + 1, + 0, + 0, + 0, + 194, + 969, + 1, + 0, + 0, + 0, + 196, + 973, + 1, + 0, + 0, + 0, + 198, + 977, + 1, + 0, + 0, + 0, + 200, + 984, + 1, + 0, + 0, + 0, + 202, + 998, + 1, + 0, + 0, + 0, + 204, + 1000, + 1, + 0, + 0, + 0, + 206, + 1017, + 1, + 0, + 0, + 0, + 208, + 1019, + 1, + 0, + 0, + 0, + 210, + 1023, + 1, + 0, + 0, + 0, + 212, + 1025, + 1, + 0, + 0, + 0, + 214, + 1039, + 1, + 0, + 0, + 0, + 216, + 1075, + 1, + 0, + 0, + 0, + 218, + 1077, + 1, + 0, + 0, + 0, + 220, + 1081, + 1, + 0, + 0, + 0, + 222, + 1083, + 1, + 0, + 0, + 0, + 224, + 1089, + 1, + 0, + 0, + 0, + 226, + 1097, + 1, + 0, + 0, + 0, + 228, + 1105, + 1, + 0, + 0, + 0, + 230, + 1116, + 1, + 0, + 0, + 0, + 232, + 1118, + 1, + 0, + 0, + 0, + 234, + 1130, + 1, + 0, + 0, + 0, + 236, + 1132, + 1, + 0, + 0, + 0, + 238, + 1144, + 1, + 0, + 0, + 0, + 240, + 1146, + 1, + 0, + 0, + 0, + 242, + 1158, + 1, + 0, + 0, + 0, + 244, + 1163, + 1, + 0, + 0, + 0, + 246, + 1165, + 1, + 0, + 0, + 0, + 248, + 1201, + 1, + 0, + 0, + 0, + 250, + 1212, + 1, + 0, + 0, + 0, + 252, + 1223, + 1, + 0, + 0, + 0, + 254, + 1225, + 1, + 0, + 0, + 0, + 256, + 1249, + 1, + 0, + 0, + 0, + 258, + 1256, + 1, + 0, + 0, + 0, + 260, + 1261, + 1, + 0, + 0, + 0, + 262, + 1269, + 1, + 0, + 0, + 0, + 264, + 1276, + 1, + 0, + 0, + 0, + 266, + 1301, + 1, + 0, + 0, + 0, + 268, + 1303, + 1, + 0, + 0, + 0, + 270, + 1305, + 1, + 0, + 0, + 0, + 272, + 1311, + 1, + 0, + 0, + 0, + 274, + 1315, + 1, + 0, + 0, + 0, + 276, + 278, + 3, + 2, + 1, + 0, + 277, + 276, + 1, + 0, + 0, + 0, + 278, + 281, + 1, + 0, + 0, + 0, + 279, + 277, + 1, + 0, + 0, + 0, + 279, + 280, + 1, + 0, + 0, + 0, + 280, + 285, + 1, + 0, + 0, + 0, + 281, + 279, + 1, + 0, + 0, + 0, + 282, + 284, + 3, + 10, + 5, + 0, + 283, + 282, + 1, + 0, + 0, + 0, + 284, + 287, + 1, + 0, + 0, + 0, + 285, + 283, + 1, + 0, + 0, + 0, + 285, + 286, + 1, + 0, + 0, + 0, + 286, + 288, + 1, + 0, + 0, + 0, + 287, + 285, + 1, + 0, + 0, + 0, + 288, + 289, + 5, + 0, + 0, + 1, + 289, + 1, + 1, + 0, + 0, + 0, + 290, + 291, + 3, + 4, + 2, + 0, + 291, + 3, + 1, + 0, + 0, + 0, + 292, + 293, + 5, + 1, + 0, + 0, + 293, + 294, + 3, + 6, + 3, + 0, + 294, + 295, + 5, + 79, + 0, + 0, + 295, + 298, + 1, + 0, + 0, + 0, + 296, + 298, + 5, + 79, + 0, + 0, + 297, + 292, + 1, + 0, + 0, + 0, + 297, + 296, + 1, + 0, + 0, + 0, + 298, + 5, + 1, + 0, + 0, + 0, + 299, + 302, + 5, + 87, + 0, + 0, + 300, + 302, + 3, + 8, + 4, + 0, + 301, + 299, + 1, + 0, + 0, + 0, + 301, + 300, + 1, + 0, + 0, + 0, + 302, + 7, + 1, + 0, + 0, + 0, + 303, + 304, + 6, + 4, + -1, + 0, + 304, + 305, + 5, + 93, + 0, + 0, + 305, + 311, + 1, + 0, + 0, + 0, + 306, + 307, + 10, + 1, + 0, + 0, + 307, + 308, + 5, + 2, + 0, + 0, + 308, + 310, + 5, + 93, + 0, + 0, + 309, + 306, + 1, + 0, + 0, + 0, + 310, + 313, + 1, + 0, + 0, + 0, + 311, + 309, + 1, + 0, + 0, + 0, + 311, + 312, + 1, + 0, + 0, + 0, + 312, + 9, + 1, + 0, + 0, + 0, + 313, + 311, + 1, + 0, + 0, + 0, + 314, + 326, + 3, + 12, + 6, + 0, + 315, + 326, + 3, + 20, + 10, + 0, + 316, + 326, + 3, + 34, + 17, + 0, + 317, + 326, + 3, + 48, + 24, + 0, + 318, + 326, + 3, + 58, + 29, + 0, + 319, + 326, + 3, + 76, + 38, + 0, + 320, + 326, + 3, + 66, + 33, + 0, + 321, + 326, + 3, + 80, + 40, + 0, + 322, + 326, + 3, + 84, + 42, + 0, + 323, + 326, + 3, + 94, + 47, + 0, + 324, + 326, + 5, + 79, + 0, + 0, + 325, + 314, + 1, + 0, + 0, + 0, + 325, + 315, + 1, + 0, + 0, + 0, + 325, + 316, + 1, + 0, + 0, + 0, + 325, + 317, + 1, + 0, + 0, + 0, + 325, + 318, + 1, + 0, + 0, + 0, + 325, + 319, + 1, + 0, + 0, + 0, + 325, + 320, + 1, + 0, + 0, + 0, + 325, + 321, + 1, + 0, + 0, + 0, + 325, + 322, + 1, + 0, + 0, + 0, + 325, + 323, + 1, + 0, + 0, + 0, + 325, + 324, + 1, + 0, + 0, + 0, + 326, + 11, + 1, + 0, + 0, + 0, + 327, + 328, + 5, + 3, + 0, + 0, + 328, + 329, + 3, + 14, + 7, + 0, + 329, + 330, + 5, + 4, + 0, + 0, + 330, + 331, + 3, + 16, + 8, + 0, + 331, + 332, + 5, + 79, + 0, + 0, + 332, + 13, + 1, + 0, + 0, + 0, + 333, + 334, + 5, + 93, + 0, + 0, + 334, + 15, + 1, + 0, + 0, + 0, + 335, + 336, + 3, + 18, + 9, + 0, + 336, + 17, + 1, + 0, + 0, + 0, + 337, + 338, + 5, + 5, + 0, + 0, + 338, + 339, + 5, + 82, + 0, + 0, + 339, + 340, + 3, + 26, + 13, + 0, + 340, + 341, + 5, + 83, + 0, + 0, + 341, + 19, + 1, + 0, + 0, + 0, + 342, + 343, + 5, + 6, + 0, + 0, + 343, + 344, + 5, + 93, + 0, + 0, + 344, + 345, + 5, + 7, + 0, + 0, + 345, + 346, + 3, + 14, + 7, + 0, + 346, + 347, + 5, + 4, + 0, + 0, + 347, + 348, + 3, + 22, + 11, + 0, + 348, + 349, + 5, + 79, + 0, + 0, + 349, + 21, + 1, + 0, + 0, + 0, + 350, + 351, + 3, + 24, + 12, + 0, + 351, + 23, + 1, + 0, + 0, + 0, + 352, + 353, + 5, + 5, + 0, + 0, + 353, + 354, + 5, + 82, + 0, + 0, + 354, + 357, + 3, + 26, + 13, + 0, + 355, + 356, + 5, + 8, + 0, + 0, + 356, + 358, + 3, + 30, + 15, + 0, + 357, + 355, + 1, + 0, + 0, + 0, + 357, + 358, + 1, + 0, + 0, + 0, + 358, + 361, + 1, + 0, + 0, + 0, + 359, + 360, + 5, + 8, + 0, + 0, + 360, + 362, + 3, + 32, + 16, + 0, + 361, + 359, + 1, + 0, + 0, + 0, + 361, + 362, + 1, + 0, + 0, + 0, + 362, + 363, + 1, + 0, + 0, + 0, + 363, + 364, + 5, + 83, + 0, + 0, + 364, + 25, + 1, + 0, + 0, + 0, + 365, + 370, + 3, + 28, + 14, + 0, + 366, + 367, + 5, + 8, + 0, + 0, + 367, + 369, + 3, + 28, + 14, + 0, + 368, + 366, + 1, + 0, + 0, + 0, + 369, + 372, + 1, + 0, + 0, + 0, + 370, + 368, + 1, + 0, + 0, + 0, + 370, + 371, + 1, + 0, + 0, + 0, + 371, + 27, + 1, + 0, + 0, + 0, + 372, + 370, + 1, + 0, + 0, + 0, + 373, + 374, + 5, + 93, + 0, + 0, + 374, + 375, + 6, + 14, + -1, + 0, + 375, + 376, + 5, + 9, + 0, + 0, + 376, + 377, + 3, + 274, + 137, + 0, + 377, + 29, + 1, + 0, + 0, + 0, + 378, + 379, + 5, + 93, + 0, + 0, + 379, + 382, + 5, + 9, + 0, + 0, + 380, + 383, + 5, + 88, + 0, + 0, + 381, + 383, + 3, + 274, + 137, + 0, + 382, + 380, + 1, + 0, + 0, + 0, + 382, + 381, + 1, + 0, + 0, + 0, + 383, + 31, + 1, + 0, + 0, + 0, + 384, + 385, + 5, + 93, + 0, + 0, + 385, + 388, + 5, + 9, + 0, + 0, + 386, + 389, + 5, + 88, + 0, + 0, + 387, + 389, + 3, + 274, + 137, + 0, + 388, + 386, + 1, + 0, + 0, + 0, + 388, + 387, + 1, + 0, + 0, + 0, + 389, + 33, + 1, + 0, + 0, + 0, + 390, + 391, + 5, + 10, + 0, + 0, + 391, + 392, + 3, + 40, + 20, + 0, + 392, + 393, + 5, + 9, + 0, + 0, + 393, + 394, + 5, + 80, + 0, + 0, + 394, + 399, + 3, + 36, + 18, + 0, + 395, + 396, + 5, + 8, + 0, + 0, + 396, + 398, + 3, + 36, + 18, + 0, + 397, + 395, + 1, + 0, + 0, + 0, + 398, + 401, + 1, + 0, + 0, + 0, + 399, + 397, + 1, + 0, + 0, + 0, + 399, + 400, + 1, + 0, + 0, + 0, + 400, + 402, + 1, + 0, + 0, + 0, + 401, + 399, + 1, + 0, + 0, + 0, + 402, + 403, + 5, + 81, + 0, + 0, + 403, + 404, + 5, + 79, + 0, + 0, + 404, + 35, + 1, + 0, + 0, + 0, + 405, + 408, + 3, + 42, + 21, + 0, + 406, + 407, + 5, + 11, + 0, + 0, + 407, + 409, + 3, + 38, + 19, + 0, + 408, + 406, + 1, + 0, + 0, + 0, + 408, + 409, + 1, + 0, + 0, + 0, + 409, + 37, + 1, + 0, + 0, + 0, + 410, + 411, + 7, + 0, + 0, + 0, + 411, + 39, + 1, + 0, + 0, + 0, + 412, + 413, + 5, + 93, + 0, + 0, + 413, + 41, + 1, + 0, + 0, + 0, + 414, + 415, + 5, + 93, + 0, + 0, + 415, + 43, + 1, + 0, + 0, + 0, + 416, + 417, + 3, + 40, + 20, + 0, + 417, + 418, + 5, + 12, + 0, + 0, + 418, + 419, + 3, + 42, + 21, + 0, + 419, + 45, + 1, + 0, + 0, + 0, + 420, + 421, + 5, + 82, + 0, + 0, + 421, + 422, + 3, + 54, + 27, + 0, + 422, + 425, + 5, + 13, + 0, + 0, + 423, + 426, + 3, + 44, + 22, + 0, + 424, + 426, + 5, + 92, + 0, + 0, + 425, + 423, + 1, + 0, + 0, + 0, + 425, + 424, + 1, + 0, + 0, + 0, + 426, + 427, + 1, + 0, + 0, + 0, + 427, + 428, + 5, + 83, + 0, + 0, + 428, + 47, + 1, + 0, + 0, + 0, + 429, + 430, + 5, + 14, + 0, + 0, + 430, + 432, + 3, + 56, + 28, + 0, + 431, + 433, + 3, + 50, + 25, + 0, + 432, + 431, + 1, + 0, + 0, + 0, + 432, + 433, + 1, + 0, + 0, + 0, + 433, + 445, + 1, + 0, + 0, + 0, + 434, + 435, + 5, + 9, + 0, + 0, + 435, + 436, + 5, + 79, + 0, + 0, + 436, + 438, + 5, + 94, + 0, + 0, + 437, + 439, + 3, + 52, + 26, + 0, + 438, + 437, + 1, + 0, + 0, + 0, + 439, + 440, + 1, + 0, + 0, + 0, + 440, + 438, + 1, + 0, + 0, + 0, + 440, + 441, + 1, + 0, + 0, + 0, + 441, + 442, + 1, + 0, + 0, + 0, + 442, + 443, + 5, + 95, + 0, + 0, + 443, + 446, + 1, + 0, + 0, + 0, + 444, + 446, + 5, + 79, + 0, + 0, + 445, + 434, + 1, + 0, + 0, + 0, + 445, + 444, + 1, + 0, + 0, + 0, + 446, + 49, + 1, + 0, + 0, + 0, + 447, + 448, + 5, + 15, + 0, + 0, + 448, + 450, + 3, + 56, + 28, + 0, + 449, + 451, + 3, + 46, + 23, + 0, + 450, + 449, + 1, + 0, + 0, + 0, + 450, + 451, + 1, + 0, + 0, + 0, + 451, + 51, + 1, + 0, + 0, + 0, + 452, + 458, + 3, + 108, + 54, + 0, + 453, + 458, + 3, + 136, + 68, + 0, + 454, + 458, + 3, + 150, + 75, + 0, + 455, + 458, + 3, + 200, + 100, + 0, + 456, + 458, + 3, + 210, + 105, + 0, + 457, + 452, + 1, + 0, + 0, + 0, + 457, + 453, + 1, + 0, + 0, + 0, + 457, + 454, + 1, + 0, + 0, + 0, + 457, + 455, + 1, + 0, + 0, + 0, + 457, + 456, + 1, + 0, + 0, + 0, + 458, + 53, + 1, + 0, + 0, + 0, + 459, + 460, + 5, + 93, + 0, + 0, + 460, + 55, + 1, + 0, + 0, + 0, + 461, + 462, + 5, + 93, + 0, + 0, + 462, + 57, + 1, + 0, + 0, + 0, + 463, + 464, + 5, + 16, + 0, + 0, + 464, + 466, + 3, + 64, + 32, + 0, + 465, + 467, + 3, + 60, + 30, + 0, + 466, + 465, + 1, + 0, + 0, + 0, + 466, + 467, + 1, + 0, + 0, + 0, + 467, + 479, + 1, + 0, + 0, + 0, + 468, + 469, + 5, + 9, + 0, + 0, + 469, + 470, + 5, + 79, + 0, + 0, + 470, + 472, + 5, + 94, + 0, + 0, + 471, + 473, + 3, + 62, + 31, + 0, + 472, + 471, + 1, + 0, + 0, + 0, + 473, + 474, + 1, + 0, + 0, + 0, + 474, + 472, + 1, + 0, + 0, + 0, + 474, + 475, + 1, + 0, + 0, + 0, + 475, + 476, + 1, + 0, + 0, + 0, + 476, + 477, + 5, + 95, + 0, + 0, + 477, + 480, + 1, + 0, + 0, + 0, + 478, + 480, + 5, + 79, + 0, + 0, + 479, + 468, + 1, + 0, + 0, + 0, + 479, + 478, + 1, + 0, + 0, + 0, + 480, + 59, + 1, + 0, + 0, + 0, + 481, + 482, + 5, + 15, + 0, + 0, + 482, + 484, + 3, + 64, + 32, + 0, + 483, + 485, + 3, + 46, + 23, + 0, + 484, + 483, + 1, + 0, + 0, + 0, + 484, + 485, + 1, + 0, + 0, + 0, + 485, + 61, + 1, + 0, + 0, + 0, + 486, + 492, + 3, + 108, + 54, + 0, + 487, + 492, + 3, + 136, + 68, + 0, + 488, + 492, + 3, + 150, + 75, + 0, + 489, + 492, + 3, + 200, + 100, + 0, + 490, + 492, + 3, + 210, + 105, + 0, + 491, + 486, + 1, + 0, + 0, + 0, + 491, + 487, + 1, + 0, + 0, + 0, + 491, + 488, + 1, + 0, + 0, + 0, + 491, + 489, + 1, + 0, + 0, + 0, + 491, + 490, + 1, + 0, + 0, + 0, + 492, + 63, + 1, + 0, + 0, + 0, + 493, + 494, + 5, + 93, + 0, + 0, + 494, + 65, + 1, + 0, + 0, + 0, + 495, + 496, + 5, + 17, + 0, + 0, + 496, + 498, + 3, + 72, + 36, + 0, + 497, + 499, + 3, + 68, + 34, + 0, + 498, + 497, + 1, + 0, + 0, + 0, + 498, + 499, + 1, + 0, + 0, + 0, + 499, + 512, + 1, + 0, + 0, + 0, + 500, + 501, + 5, + 9, + 0, + 0, + 501, + 502, + 5, + 79, + 0, + 0, + 502, + 505, + 5, + 94, + 0, + 0, + 503, + 506, + 3, + 70, + 35, + 0, + 504, + 506, + 3, + 166, + 83, + 0, + 505, + 503, + 1, + 0, + 0, + 0, + 505, + 504, + 1, + 0, + 0, + 0, + 506, + 507, + 1, + 0, + 0, + 0, + 507, + 505, + 1, + 0, + 0, + 0, + 507, + 508, + 1, + 0, + 0, + 0, + 508, + 509, + 1, + 0, + 0, + 0, + 509, + 510, + 5, + 95, + 0, + 0, + 510, + 513, + 1, + 0, + 0, + 0, + 511, + 513, + 5, + 79, + 0, + 0, + 512, + 500, + 1, + 0, + 0, + 0, + 512, + 511, + 1, + 0, + 0, + 0, + 513, + 67, + 1, + 0, + 0, + 0, + 514, + 515, + 5, + 15, + 0, + 0, + 515, + 517, + 3, + 72, + 36, + 0, + 516, + 518, + 3, + 46, + 23, + 0, + 517, + 516, + 1, + 0, + 0, + 0, + 517, + 518, + 1, + 0, + 0, + 0, + 518, + 69, + 1, + 0, + 0, + 0, + 519, + 526, + 3, + 108, + 54, + 0, + 520, + 526, + 3, + 136, + 68, + 0, + 521, + 526, + 3, + 150, + 75, + 0, + 522, + 526, + 3, + 200, + 100, + 0, + 523, + 526, + 3, + 210, + 105, + 0, + 524, + 526, + 3, + 162, + 81, + 0, + 525, + 519, + 1, + 0, + 0, + 0, + 525, + 520, + 1, + 0, + 0, + 0, + 525, + 521, + 1, + 0, + 0, + 0, + 525, + 522, + 1, + 0, + 0, + 0, + 525, + 523, + 1, + 0, + 0, + 0, + 525, + 524, + 1, + 0, + 0, + 0, + 526, + 71, + 1, + 0, + 0, + 0, + 527, + 528, + 3, + 64, + 32, + 0, + 528, + 529, + 5, + 2, + 0, + 0, + 529, + 531, + 1, + 0, + 0, + 0, + 530, + 527, + 1, + 0, + 0, + 0, + 530, + 531, + 1, + 0, + 0, + 0, + 531, + 532, + 1, + 0, + 0, + 0, + 532, + 533, + 3, + 74, + 37, + 0, + 533, + 73, + 1, + 0, + 0, + 0, + 534, + 535, + 5, + 93, + 0, + 0, + 535, + 75, + 1, + 0, + 0, + 0, + 536, + 537, + 5, + 18, + 0, + 0, + 537, + 539, + 3, + 72, + 36, + 0, + 538, + 540, + 3, + 78, + 39, + 0, + 539, + 538, + 1, + 0, + 0, + 0, + 539, + 540, + 1, + 0, + 0, + 0, + 540, + 553, + 1, + 0, + 0, + 0, + 541, + 542, + 5, + 9, + 0, + 0, + 542, + 543, + 5, + 79, + 0, + 0, + 543, + 546, + 5, + 94, + 0, + 0, + 544, + 547, + 3, + 70, + 35, + 0, + 545, + 547, + 3, + 166, + 83, + 0, + 546, + 544, + 1, + 0, + 0, + 0, + 546, + 545, + 1, + 0, + 0, + 0, + 547, + 548, + 1, + 0, + 0, + 0, + 548, + 546, + 1, + 0, + 0, + 0, + 548, + 549, + 1, + 0, + 0, + 0, + 549, + 550, + 1, + 0, + 0, + 0, + 550, + 551, + 5, + 95, + 0, + 0, + 551, + 554, + 1, + 0, + 0, + 0, + 552, + 554, + 5, + 79, + 0, + 0, + 553, + 541, + 1, + 0, + 0, + 0, + 553, + 552, + 1, + 0, + 0, + 0, + 554, + 77, + 1, + 0, + 0, + 0, + 555, + 556, + 5, + 15, + 0, + 0, + 556, + 558, + 3, + 72, + 36, + 0, + 557, + 559, + 3, + 46, + 23, + 0, + 558, + 557, + 1, + 0, + 0, + 0, + 558, + 559, + 1, + 0, + 0, + 0, + 559, + 79, + 1, + 0, + 0, + 0, + 560, + 564, + 5, + 19, + 0, + 0, + 561, + 562, + 3, + 64, + 32, + 0, + 562, + 563, + 5, + 2, + 0, + 0, + 563, + 565, + 1, + 0, + 0, + 0, + 564, + 561, + 1, + 0, + 0, + 0, + 564, + 565, + 1, + 0, + 0, + 0, + 565, + 566, + 1, + 0, + 0, + 0, + 566, + 569, + 3, + 82, + 41, + 0, + 567, + 568, + 5, + 7, + 0, + 0, + 568, + 570, + 3, + 72, + 36, + 0, + 569, + 567, + 1, + 0, + 0, + 0, + 569, + 570, + 1, + 0, + 0, + 0, + 570, + 582, + 1, + 0, + 0, + 0, + 571, + 572, + 5, + 9, + 0, + 0, + 572, + 573, + 5, + 79, + 0, + 0, + 573, + 575, + 5, + 94, + 0, + 0, + 574, + 576, + 3, + 70, + 35, + 0, + 575, + 574, + 1, + 0, + 0, + 0, + 576, + 577, + 1, + 0, + 0, + 0, + 577, + 575, + 1, + 0, + 0, + 0, + 577, + 578, + 1, + 0, + 0, + 0, + 578, + 579, + 1, + 0, + 0, + 0, + 579, + 580, + 5, + 95, + 0, + 0, + 580, + 583, + 1, + 0, + 0, + 0, + 581, + 583, + 5, + 79, + 0, + 0, + 582, + 571, + 1, + 0, + 0, + 0, + 582, + 581, + 1, + 0, + 0, + 0, + 583, + 81, + 1, + 0, + 0, + 0, + 584, + 585, + 5, + 93, + 0, + 0, + 585, + 83, + 1, + 0, + 0, + 0, + 586, + 589, + 3, + 86, + 43, + 0, + 587, + 589, + 3, + 88, + 44, + 0, + 588, + 586, + 1, + 0, + 0, + 0, + 588, + 587, + 1, + 0, + 0, + 0, + 589, + 85, + 1, + 0, + 0, + 0, + 590, + 591, + 5, + 20, + 0, + 0, + 591, + 592, + 3, + 40, + 20, + 0, + 592, + 593, + 5, + 9, + 0, + 0, + 593, + 594, + 5, + 80, + 0, + 0, + 594, + 599, + 3, + 36, + 18, + 0, + 595, + 596, + 5, + 8, + 0, + 0, + 596, + 598, + 3, + 36, + 18, + 0, + 597, + 595, + 1, + 0, + 0, + 0, + 598, + 601, + 1, + 0, + 0, + 0, + 599, + 597, + 1, + 0, + 0, + 0, + 599, + 600, + 1, + 0, + 0, + 0, + 600, + 602, + 1, + 0, + 0, + 0, + 601, + 599, + 1, + 0, + 0, + 0, + 602, + 603, + 5, + 81, + 0, + 0, + 603, + 604, + 5, + 79, + 0, + 0, + 604, + 87, + 1, + 0, + 0, + 0, + 605, + 606, + 5, + 20, + 0, + 0, + 606, + 607, + 3, + 90, + 45, + 0, + 607, + 608, + 5, + 9, + 0, + 0, + 608, + 609, + 5, + 79, + 0, + 0, + 609, + 611, + 5, + 94, + 0, + 0, + 610, + 612, + 3, + 92, + 46, + 0, + 611, + 610, + 1, + 0, + 0, + 0, + 612, + 613, + 1, + 0, + 0, + 0, + 613, + 611, + 1, + 0, + 0, + 0, + 613, + 614, + 1, + 0, + 0, + 0, + 614, + 615, + 1, + 0, + 0, + 0, + 615, + 616, + 5, + 95, + 0, + 0, + 616, + 89, + 1, + 0, + 0, + 0, + 617, + 620, + 3, + 106, + 53, + 0, + 618, + 620, + 3, + 72, + 36, + 0, + 619, + 617, + 1, + 0, + 0, + 0, + 619, + 618, + 1, + 0, + 0, + 0, + 620, + 91, + 1, + 0, + 0, + 0, + 621, + 626, + 3, + 52, + 26, + 0, + 622, + 626, + 3, + 62, + 31, + 0, + 623, + 626, + 3, + 70, + 35, + 0, + 624, + 626, + 3, + 166, + 83, + 0, + 625, + 621, + 1, + 0, + 0, + 0, + 625, + 622, + 1, + 0, + 0, + 0, + 625, + 623, + 1, + 0, + 0, + 0, + 625, + 624, + 1, + 0, + 0, + 0, + 626, + 93, + 1, + 0, + 0, + 0, + 627, + 628, + 5, + 21, + 0, + 0, + 628, + 633, + 3, + 54, + 27, + 0, + 629, + 630, + 5, + 8, + 0, + 0, + 630, + 632, + 3, + 54, + 27, + 0, + 631, + 629, + 1, + 0, + 0, + 0, + 632, + 635, + 1, + 0, + 0, + 0, + 633, + 631, + 1, + 0, + 0, + 0, + 633, + 634, + 1, + 0, + 0, + 0, + 634, + 636, + 1, + 0, + 0, + 0, + 635, + 633, + 1, + 0, + 0, + 0, + 636, + 637, + 5, + 9, + 0, + 0, + 637, + 640, + 3, + 96, + 48, + 0, + 638, + 639, + 5, + 11, + 0, + 0, + 639, + 641, + 3, + 144, + 72, + 0, + 640, + 638, + 1, + 0, + 0, + 0, + 640, + 641, + 1, + 0, + 0, + 0, + 641, + 644, + 1, + 0, + 0, + 0, + 642, + 645, + 3, + 146, + 73, + 0, + 643, + 645, + 5, + 79, + 0, + 0, + 644, + 642, + 1, + 0, + 0, + 0, + 644, + 643, + 1, + 0, + 0, + 0, + 645, + 95, + 1, + 0, + 0, + 0, + 646, + 649, + 3, + 98, + 49, + 0, + 647, + 649, + 3, + 100, + 50, + 0, + 648, + 646, + 1, + 0, + 0, + 0, + 648, + 647, + 1, + 0, + 0, + 0, + 649, + 97, + 1, + 0, + 0, + 0, + 650, + 654, + 3, + 104, + 52, + 0, + 651, + 654, + 3, + 106, + 53, + 0, + 652, + 654, + 3, + 72, + 36, + 0, + 653, + 650, + 1, + 0, + 0, + 0, + 653, + 651, + 1, + 0, + 0, + 0, + 653, + 652, + 1, + 0, + 0, + 0, + 654, + 99, + 1, + 0, + 0, + 0, + 655, + 656, + 3, + 102, + 51, + 0, + 656, + 101, + 1, + 0, + 0, + 0, + 657, + 658, + 5, + 22, + 0, + 0, + 658, + 659, + 5, + 7, + 0, + 0, + 659, + 660, + 3, + 98, + 49, + 0, + 660, + 103, + 1, + 0, + 0, + 0, + 661, + 662, + 7, + 1, + 0, + 0, + 662, + 105, + 1, + 0, + 0, + 0, + 663, + 664, + 5, + 93, + 0, + 0, + 664, + 107, + 1, + 0, + 0, + 0, + 665, + 666, + 5, + 28, + 0, + 0, + 666, + 671, + 3, + 118, + 59, + 0, + 667, + 668, + 5, + 82, + 0, + 0, + 668, + 669, + 3, + 260, + 130, + 0, + 669, + 670, + 5, + 83, + 0, + 0, + 670, + 672, + 1, + 0, + 0, + 0, + 671, + 667, + 1, + 0, + 0, + 0, + 671, + 672, + 1, + 0, + 0, + 0, + 672, + 675, + 1, + 0, + 0, + 0, + 673, + 674, + 5, + 4, + 0, + 0, + 674, + 676, + 3, + 110, + 55, + 0, + 675, + 673, + 1, + 0, + 0, + 0, + 675, + 676, + 1, + 0, + 0, + 0, + 676, + 677, + 1, + 0, + 0, + 0, + 677, + 678, + 5, + 79, + 0, + 0, + 678, + 109, + 1, + 0, + 0, + 0, + 679, + 685, + 3, + 112, + 56, + 0, + 680, + 682, + 3, + 114, + 57, + 0, + 681, + 680, + 1, + 0, + 0, + 0, + 681, + 682, + 1, + 0, + 0, + 0, + 682, + 683, + 1, + 0, + 0, + 0, + 683, + 684, + 5, + 29, + 0, + 0, + 684, + 686, + 3, + 122, + 61, + 0, + 685, + 681, + 1, + 0, + 0, + 0, + 685, + 686, + 1, + 0, + 0, + 0, + 686, + 689, + 1, + 0, + 0, + 0, + 687, + 689, + 3, + 122, + 61, + 0, + 688, + 679, + 1, + 0, + 0, + 0, + 688, + 687, + 1, + 0, + 0, + 0, + 689, + 111, + 1, + 0, + 0, + 0, + 690, + 691, + 5, + 30, + 0, + 0, + 691, + 692, + 3, + 120, + 60, + 0, + 692, + 113, + 1, + 0, + 0, + 0, + 693, + 694, + 5, + 31, + 0, + 0, + 694, + 695, + 3, + 116, + 58, + 0, + 695, + 115, + 1, + 0, + 0, + 0, + 696, + 697, + 5, + 93, + 0, + 0, + 697, + 117, + 1, + 0, + 0, + 0, + 698, + 699, + 5, + 93, + 0, + 0, + 699, + 119, + 1, + 0, + 0, + 0, + 700, + 701, + 3, + 220, + 110, + 0, + 701, + 702, + 5, + 2, + 0, + 0, + 702, + 704, + 1, + 0, + 0, + 0, + 703, + 700, + 1, + 0, + 0, + 0, + 703, + 704, + 1, + 0, + 0, + 0, + 704, + 705, + 1, + 0, + 0, + 0, + 705, + 706, + 3, + 118, + 59, + 0, + 706, + 121, + 1, + 0, + 0, + 0, + 707, + 713, + 3, + 132, + 66, + 0, + 708, + 713, + 3, + 124, + 62, + 0, + 709, + 713, + 3, + 126, + 63, + 0, + 710, + 713, + 3, + 128, + 64, + 0, + 711, + 713, + 3, + 130, + 65, + 0, + 712, + 707, + 1, + 0, + 0, + 0, + 712, + 708, + 1, + 0, + 0, + 0, + 712, + 709, + 1, + 0, + 0, + 0, + 712, + 710, + 1, + 0, + 0, + 0, + 712, + 711, + 1, + 0, + 0, + 0, + 713, + 123, + 1, + 0, + 0, + 0, + 714, + 715, + 5, + 32, + 0, + 0, + 715, + 716, + 5, + 82, + 0, + 0, + 716, + 717, + 3, + 132, + 66, + 0, + 717, + 718, + 5, + 83, + 0, + 0, + 718, + 125, + 1, + 0, + 0, + 0, + 719, + 720, + 5, + 33, + 0, + 0, + 720, + 721, + 5, + 82, + 0, + 0, + 721, + 722, + 3, + 132, + 66, + 0, + 722, + 723, + 5, + 83, + 0, + 0, + 723, + 127, + 1, + 0, + 0, + 0, + 724, + 725, + 5, + 34, + 0, + 0, + 725, + 726, + 5, + 82, + 0, + 0, + 726, + 727, + 3, + 134, + 67, + 0, + 727, + 728, + 5, + 83, + 0, + 0, + 728, + 129, + 1, + 0, + 0, + 0, + 729, + 730, + 5, + 35, + 0, + 0, + 730, + 731, + 5, + 82, + 0, + 0, + 731, + 737, + 3, + 134, + 67, + 0, + 732, + 733, + 5, + 8, + 0, + 0, + 733, + 734, + 5, + 93, + 0, + 0, + 734, + 735, + 6, + 65, + -1, + 0, + 735, + 736, + 5, + 9, + 0, + 0, + 736, + 738, + 3, + 134, + 67, + 0, + 737, + 732, + 1, + 0, + 0, + 0, + 737, + 738, + 1, + 0, + 0, + 0, + 738, + 739, + 1, + 0, + 0, + 0, + 739, + 740, + 5, + 83, + 0, + 0, + 740, + 131, + 1, + 0, + 0, + 0, + 741, + 742, + 3, + 220, + 110, + 0, + 742, + 133, + 1, + 0, + 0, + 0, + 743, + 744, + 3, + 220, + 110, + 0, + 744, + 135, + 1, + 0, + 0, + 0, + 745, + 748, + 3, + 138, + 69, + 0, + 746, + 748, + 3, + 140, + 70, + 0, + 747, + 745, + 1, + 0, + 0, + 0, + 747, + 746, + 1, + 0, + 0, + 0, + 748, + 137, + 1, + 0, + 0, + 0, + 749, + 754, + 3, + 54, + 27, + 0, + 750, + 751, + 5, + 8, + 0, + 0, + 751, + 753, + 3, + 54, + 27, + 0, + 752, + 750, + 1, + 0, + 0, + 0, + 753, + 756, + 1, + 0, + 0, + 0, + 754, + 752, + 1, + 0, + 0, + 0, + 754, + 755, + 1, + 0, + 0, + 0, + 755, + 757, + 1, + 0, + 0, + 0, + 756, + 754, + 1, + 0, + 0, + 0, + 757, + 758, + 5, + 9, + 0, + 0, + 758, + 761, + 3, + 96, + 48, + 0, + 759, + 760, + 5, + 11, + 0, + 0, + 760, + 762, + 3, + 144, + 72, + 0, + 761, + 759, + 1, + 0, + 0, + 0, + 761, + 762, + 1, + 0, + 0, + 0, + 762, + 765, + 1, + 0, + 0, + 0, + 763, + 766, + 3, + 146, + 73, + 0, + 764, + 766, + 5, + 79, + 0, + 0, + 765, + 763, + 1, + 0, + 0, + 0, + 765, + 764, + 1, + 0, + 0, + 0, + 766, + 139, + 1, + 0, + 0, + 0, + 767, + 768, + 5, + 36, + 0, + 0, + 768, + 773, + 3, + 54, + 27, + 0, + 769, + 770, + 5, + 8, + 0, + 0, + 770, + 772, + 3, + 54, + 27, + 0, + 771, + 769, + 1, + 0, + 0, + 0, + 772, + 775, + 1, + 0, + 0, + 0, + 773, + 771, + 1, + 0, + 0, + 0, + 773, + 774, + 1, + 0, + 0, + 0, + 774, + 776, + 1, + 0, + 0, + 0, + 775, + 773, + 1, + 0, + 0, + 0, + 776, + 777, + 5, + 9, + 0, + 0, + 777, + 783, + 3, + 96, + 48, + 0, + 778, + 781, + 5, + 11, + 0, + 0, + 779, + 782, + 3, + 142, + 71, + 0, + 780, + 782, + 3, + 252, + 126, + 0, + 781, + 779, + 1, + 0, + 0, + 0, + 781, + 780, + 1, + 0, + 0, + 0, + 782, + 784, + 1, + 0, + 0, + 0, + 783, + 778, + 1, + 0, + 0, + 0, + 783, + 784, + 1, + 0, + 0, + 0, + 784, + 785, + 1, + 0, + 0, + 0, + 785, + 786, + 5, + 79, + 0, + 0, + 786, + 141, + 1, + 0, + 0, + 0, + 787, + 788, + 5, + 37, + 0, + 0, + 788, + 789, + 5, + 82, + 0, + 0, + 789, + 790, + 3, + 220, + 110, + 0, + 790, + 791, + 5, + 8, + 0, + 0, + 791, + 794, + 3, + 110, + 55, + 0, + 792, + 793, + 5, + 8, + 0, + 0, + 793, + 795, + 3, + 144, + 72, + 0, + 794, + 792, + 1, + 0, + 0, + 0, + 794, + 795, + 1, + 0, + 0, + 0, + 795, + 796, + 1, + 0, + 0, + 0, + 796, + 797, + 5, + 83, + 0, + 0, + 797, + 143, + 1, + 0, + 0, + 0, + 798, + 799, + 3, + 220, + 110, + 0, + 799, + 145, + 1, + 0, + 0, + 0, + 800, + 801, + 5, + 38, + 0, + 0, + 801, + 802, + 5, + 9, + 0, + 0, + 802, + 803, + 5, + 79, + 0, + 0, + 803, + 805, + 5, + 94, + 0, + 0, + 804, + 806, + 3, + 148, + 74, + 0, + 805, + 804, + 1, + 0, + 0, + 0, + 806, + 807, + 1, + 0, + 0, + 0, + 807, + 805, + 1, + 0, + 0, + 0, + 807, + 808, + 1, + 0, + 0, + 0, + 808, + 809, + 1, + 0, + 0, + 0, + 809, + 810, + 5, + 95, + 0, + 0, + 810, + 147, + 1, + 0, + 0, + 0, + 811, + 814, + 3, + 150, + 75, + 0, + 812, + 814, + 3, + 210, + 105, + 0, + 813, + 811, + 1, + 0, + 0, + 0, + 813, + 812, + 1, + 0, + 0, + 0, + 814, + 149, + 1, + 0, + 0, + 0, + 815, + 818, + 3, + 152, + 76, + 0, + 816, + 818, + 3, + 158, + 79, + 0, + 817, + 815, + 1, + 0, + 0, + 0, + 817, + 816, + 1, + 0, + 0, + 0, + 818, + 151, + 1, + 0, + 0, + 0, + 819, + 820, + 5, + 39, + 0, + 0, + 820, + 822, + 5, + 82, + 0, + 0, + 821, + 823, + 3, + 154, + 77, + 0, + 822, + 821, + 1, + 0, + 0, + 0, + 822, + 823, + 1, + 0, + 0, + 0, + 823, + 824, + 1, + 0, + 0, + 0, + 824, + 825, + 3, + 156, + 78, + 0, + 825, + 826, + 5, + 83, + 0, + 0, + 826, + 827, + 5, + 79, + 0, + 0, + 827, + 153, + 1, + 0, + 0, + 0, + 828, + 829, + 7, + 2, + 0, + 0, + 829, + 155, + 1, + 0, + 0, + 0, + 830, + 831, + 3, + 220, + 110, + 0, + 831, + 157, + 1, + 0, + 0, + 0, + 832, + 833, + 5, + 42, + 0, + 0, + 833, + 834, + 5, + 82, + 0, + 0, + 834, + 835, + 3, + 160, + 80, + 0, + 835, + 836, + 5, + 83, + 0, + 0, + 836, + 837, + 5, + 79, + 0, + 0, + 837, + 159, + 1, + 0, + 0, + 0, + 838, + 841, + 3, + 54, + 27, + 0, + 839, + 841, + 3, + 248, + 124, + 0, + 840, + 838, + 1, + 0, + 0, + 0, + 840, + 839, + 1, + 0, + 0, + 0, + 841, + 161, + 1, + 0, + 0, + 0, + 842, + 845, + 3, + 164, + 82, + 0, + 843, + 845, + 3, + 188, + 94, + 0, + 844, + 842, + 1, + 0, + 0, + 0, + 844, + 843, + 1, + 0, + 0, + 0, + 845, + 846, + 1, + 0, + 0, + 0, + 846, + 847, + 5, + 2, + 0, + 0, + 847, + 849, + 1, + 0, + 0, + 0, + 848, + 844, + 1, + 0, + 0, + 0, + 848, + 849, + 1, + 0, + 0, + 0, + 849, + 850, + 1, + 0, + 0, + 0, + 850, + 851, + 3, + 82, + 41, + 0, + 851, + 853, + 5, + 82, + 0, + 0, + 852, + 854, + 3, + 266, + 133, + 0, + 853, + 852, + 1, + 0, + 0, + 0, + 853, + 854, + 1, + 0, + 0, + 0, + 854, + 855, + 1, + 0, + 0, + 0, + 855, + 856, + 5, + 83, + 0, + 0, + 856, + 857, + 5, + 79, + 0, + 0, + 857, + 163, + 1, + 0, + 0, + 0, + 858, + 859, + 3, + 188, + 94, + 0, + 859, + 860, + 5, + 2, + 0, + 0, + 860, + 861, + 1, + 0, + 0, + 0, + 861, + 862, + 3, + 74, + 37, + 0, + 862, + 165, + 1, + 0, + 0, + 0, + 863, + 866, + 3, + 168, + 84, + 0, + 864, + 866, + 3, + 172, + 86, + 0, + 865, + 863, + 1, + 0, + 0, + 0, + 865, + 864, + 1, + 0, + 0, + 0, + 866, + 167, + 1, + 0, + 0, + 0, + 867, + 868, + 5, + 43, + 0, + 0, + 868, + 869, + 3, + 110, + 55, + 0, + 869, + 870, + 5, + 9, + 0, + 0, + 870, + 871, + 5, + 79, + 0, + 0, + 871, + 873, + 5, + 94, + 0, + 0, + 872, + 874, + 3, + 170, + 85, + 0, + 873, + 872, + 1, + 0, + 0, + 0, + 874, + 875, + 1, + 0, + 0, + 0, + 875, + 873, + 1, + 0, + 0, + 0, + 875, + 876, + 1, + 0, + 0, + 0, + 876, + 877, + 1, + 0, + 0, + 0, + 877, + 878, + 5, + 95, + 0, + 0, + 878, + 169, + 1, + 0, + 0, + 0, + 879, + 882, + 3, + 194, + 97, + 0, + 880, + 882, + 3, + 192, + 96, + 0, + 881, + 879, + 1, + 0, + 0, + 0, + 881, + 880, + 1, + 0, + 0, + 0, + 882, + 171, + 1, + 0, + 0, + 0, + 883, + 884, + 5, + 44, + 0, + 0, + 884, + 885, + 3, + 174, + 87, + 0, + 885, + 173, + 1, + 0, + 0, + 0, + 886, + 887, + 3, + 186, + 93, + 0, + 887, + 888, + 5, + 9, + 0, + 0, + 888, + 890, + 1, + 0, + 0, + 0, + 889, + 886, + 1, + 0, + 0, + 0, + 889, + 890, + 1, + 0, + 0, + 0, + 890, + 896, + 1, + 0, + 0, + 0, + 891, + 897, + 3, + 176, + 88, + 0, + 892, + 897, + 3, + 180, + 90, + 0, + 893, + 897, + 3, + 190, + 95, + 0, + 894, + 897, + 3, + 192, + 96, + 0, + 895, + 897, + 3, + 194, + 97, + 0, + 896, + 891, + 1, + 0, + 0, + 0, + 896, + 892, + 1, + 0, + 0, + 0, + 896, + 893, + 1, + 0, + 0, + 0, + 896, + 894, + 1, + 0, + 0, + 0, + 896, + 895, + 1, + 0, + 0, + 0, + 897, + 175, + 1, + 0, + 0, + 0, + 898, + 904, + 3, + 178, + 89, + 0, + 899, + 901, + 5, + 82, + 0, + 0, + 900, + 902, + 3, + 266, + 133, + 0, + 901, + 900, + 1, + 0, + 0, + 0, + 901, + 902, + 1, + 0, + 0, + 0, + 902, + 903, + 1, + 0, + 0, + 0, + 903, + 905, + 5, + 83, + 0, + 0, + 904, + 899, + 1, + 0, + 0, + 0, + 904, + 905, + 1, + 0, + 0, + 0, + 905, + 906, + 1, + 0, + 0, + 0, + 906, + 907, + 5, + 9, + 0, + 0, + 907, + 908, + 5, + 79, + 0, + 0, + 908, + 910, + 5, + 94, + 0, + 0, + 909, + 911, + 3, + 174, + 87, + 0, + 910, + 909, + 1, + 0, + 0, + 0, + 911, + 912, + 1, + 0, + 0, + 0, + 912, + 910, + 1, + 0, + 0, + 0, + 912, + 913, + 1, + 0, + 0, + 0, + 913, + 914, + 1, + 0, + 0, + 0, + 914, + 916, + 5, + 95, + 0, + 0, + 915, + 917, + 3, + 182, + 91, + 0, + 916, + 915, + 1, + 0, + 0, + 0, + 916, + 917, + 1, + 0, + 0, + 0, + 917, + 177, + 1, + 0, + 0, + 0, + 918, + 919, + 7, + 3, + 0, + 0, + 919, + 179, + 1, + 0, + 0, + 0, + 920, + 921, + 3, + 188, + 94, + 0, + 921, + 922, + 5, + 2, + 0, + 0, + 922, + 924, + 1, + 0, + 0, + 0, + 923, + 920, + 1, + 0, + 0, + 0, + 923, + 924, + 1, + 0, + 0, + 0, + 924, + 925, + 1, + 0, + 0, + 0, + 925, + 926, + 3, + 74, + 37, + 0, + 926, + 928, + 5, + 82, + 0, + 0, + 927, + 929, + 3, + 266, + 133, + 0, + 928, + 927, + 1, + 0, + 0, + 0, + 928, + 929, + 1, + 0, + 0, + 0, + 929, + 930, + 1, + 0, + 0, + 0, + 930, + 933, + 5, + 83, + 0, + 0, + 931, + 934, + 3, + 182, + 91, + 0, + 932, + 934, + 5, + 79, + 0, + 0, + 933, + 931, + 1, + 0, + 0, + 0, + 933, + 932, + 1, + 0, + 0, + 0, + 934, + 181, + 1, + 0, + 0, + 0, + 935, + 936, + 5, + 38, + 0, + 0, + 936, + 937, + 5, + 9, + 0, + 0, + 937, + 938, + 5, + 79, + 0, + 0, + 938, + 940, + 5, + 94, + 0, + 0, + 939, + 941, + 3, + 184, + 92, + 0, + 940, + 939, + 1, + 0, + 0, + 0, + 941, + 942, + 1, + 0, + 0, + 0, + 942, + 940, + 1, + 0, + 0, + 0, + 942, + 943, + 1, + 0, + 0, + 0, + 943, + 944, + 1, + 0, + 0, + 0, + 944, + 945, + 5, + 95, + 0, + 0, + 945, + 183, + 1, + 0, + 0, + 0, + 946, + 950, + 3, + 150, + 75, + 0, + 947, + 950, + 3, + 162, + 81, + 0, + 948, + 950, + 3, + 196, + 98, + 0, + 949, + 946, + 1, + 0, + 0, + 0, + 949, + 947, + 1, + 0, + 0, + 0, + 949, + 948, + 1, + 0, + 0, + 0, + 950, + 185, + 1, + 0, + 0, + 0, + 951, + 952, + 5, + 93, + 0, + 0, + 952, + 187, + 1, + 0, + 0, + 0, + 953, + 954, + 3, + 64, + 32, + 0, + 954, + 189, + 1, + 0, + 0, + 0, + 955, + 956, + 5, + 48, + 0, + 0, + 956, + 957, + 3, + 110, + 55, + 0, + 957, + 958, + 5, + 79, + 0, + 0, + 958, + 191, + 1, + 0, + 0, + 0, + 959, + 960, + 5, + 49, + 0, + 0, + 960, + 965, + 3, + 118, + 59, + 0, + 961, + 962, + 5, + 82, + 0, + 0, + 962, + 963, + 3, + 266, + 133, + 0, + 963, + 964, + 5, + 83, + 0, + 0, + 964, + 966, + 1, + 0, + 0, + 0, + 965, + 961, + 1, + 0, + 0, + 0, + 965, + 966, + 1, + 0, + 0, + 0, + 966, + 967, + 1, + 0, + 0, + 0, + 967, + 968, + 5, + 79, + 0, + 0, + 968, + 193, + 1, + 0, + 0, + 0, + 969, + 970, + 5, + 50, + 0, + 0, + 970, + 971, + 3, + 198, + 99, + 0, + 971, + 972, + 5, + 79, + 0, + 0, + 972, + 195, + 1, + 0, + 0, + 0, + 973, + 974, + 5, + 51, + 0, + 0, + 974, + 975, + 3, + 110, + 55, + 0, + 975, + 976, + 5, + 79, + 0, + 0, + 976, + 197, + 1, + 0, + 0, + 0, + 977, + 978, + 3, + 246, + 123, + 0, + 978, + 980, + 5, + 82, + 0, + 0, + 979, + 981, + 3, + 266, + 133, + 0, + 980, + 979, + 1, + 0, + 0, + 0, + 980, + 981, + 1, + 0, + 0, + 0, + 981, + 982, + 1, + 0, + 0, + 0, + 982, + 983, + 5, + 83, + 0, + 0, + 983, + 199, + 1, + 0, + 0, + 0, + 984, + 985, + 5, + 52, + 0, + 0, + 985, + 986, + 3, + 208, + 104, + 0, + 986, + 988, + 5, + 82, + 0, + 0, + 987, + 989, + 3, + 260, + 130, + 0, + 988, + 987, + 1, + 0, + 0, + 0, + 988, + 989, + 1, + 0, + 0, + 0, + 989, + 990, + 1, + 0, + 0, + 0, + 990, + 993, + 5, + 83, + 0, + 0, + 991, + 992, + 5, + 53, + 0, + 0, + 992, + 994, + 3, + 202, + 101, + 0, + 993, + 991, + 1, + 0, + 0, + 0, + 993, + 994, + 1, + 0, + 0, + 0, + 994, + 995, + 1, + 0, + 0, + 0, + 995, + 996, + 3, + 204, + 102, + 0, + 996, + 997, + 5, + 79, + 0, + 0, + 997, + 201, + 1, + 0, + 0, + 0, + 998, + 999, + 3, + 96, + 48, + 0, + 999, + 203, + 1, + 0, + 0, + 0, + 1000, + 1002, + 5, + 4, + 0, + 0, + 1001, + 1003, + 3, + 206, + 103, + 0, + 1002, + 1001, + 1, + 0, + 0, + 0, + 1002, + 1003, + 1, + 0, + 0, + 0, + 1003, + 1015, + 1, + 0, + 0, + 0, + 1004, + 1005, + 5, + 54, + 0, + 0, + 1005, + 1016, + 3, + 220, + 110, + 0, + 1006, + 1016, + 5, + 55, + 0, + 0, + 1007, + 1008, + 5, + 56, + 0, + 0, + 1008, + 1009, + 3, + 8, + 4, + 0, + 1009, + 1011, + 5, + 82, + 0, + 0, + 1010, + 1012, + 3, + 266, + 133, + 0, + 1011, + 1010, + 1, + 0, + 0, + 0, + 1011, + 1012, + 1, + 0, + 0, + 0, + 1012, + 1013, + 1, + 0, + 0, + 0, + 1013, + 1014, + 5, + 83, + 0, + 0, + 1014, + 1016, + 1, + 0, + 0, + 0, + 1015, + 1004, + 1, + 0, + 0, + 0, + 1015, + 1006, + 1, + 0, + 0, + 0, + 1015, + 1007, + 1, + 0, + 0, + 0, + 1016, + 205, + 1, + 0, + 0, + 0, + 1017, + 1018, + 5, + 57, + 0, + 0, + 1018, + 207, + 1, + 0, + 0, + 0, + 1019, + 1020, + 5, + 93, + 0, + 0, + 1020, + 209, + 1, + 0, + 0, + 0, + 1021, + 1024, + 3, + 212, + 106, + 0, + 1022, + 1024, + 3, + 214, + 107, + 0, + 1023, + 1021, + 1, + 0, + 0, + 0, + 1023, + 1022, + 1, + 0, + 0, + 0, + 1024, + 211, + 1, + 0, + 0, + 0, + 1025, + 1026, + 5, + 58, + 0, + 0, + 1026, + 1028, + 5, + 82, + 0, + 0, + 1027, + 1029, + 3, + 218, + 109, + 0, + 1028, + 1027, + 1, + 0, + 0, + 0, + 1028, + 1029, + 1, + 0, + 0, + 0, + 1029, + 1033, + 1, + 0, + 0, + 0, + 1030, + 1032, + 3, + 216, + 108, + 0, + 1031, + 1030, + 1, + 0, + 0, + 0, + 1032, + 1035, + 1, + 0, + 0, + 0, + 1033, + 1031, + 1, + 0, + 0, + 0, + 1033, + 1034, + 1, + 0, + 0, + 0, + 1034, + 1036, + 1, + 0, + 0, + 0, + 1035, + 1033, + 1, + 0, + 0, + 0, + 1036, + 1037, + 5, + 83, + 0, + 0, + 1037, + 1038, + 5, + 79, + 0, + 0, + 1038, + 213, + 1, + 0, + 0, + 0, + 1039, + 1040, + 5, + 59, + 0, + 0, + 1040, + 1042, + 5, + 82, + 0, + 0, + 1041, + 1043, + 3, + 218, + 109, + 0, + 1042, + 1041, + 1, + 0, + 0, + 0, + 1042, + 1043, + 1, + 0, + 0, + 0, + 1043, + 1047, + 1, + 0, + 0, + 0, + 1044, + 1046, + 3, + 216, + 108, + 0, + 1045, + 1044, + 1, + 0, + 0, + 0, + 1046, + 1049, + 1, + 0, + 0, + 0, + 1047, + 1045, + 1, + 0, + 0, + 0, + 1047, + 1048, + 1, + 0, + 0, + 0, + 1048, + 1050, + 1, + 0, + 0, + 0, + 1049, + 1047, + 1, + 0, + 0, + 0, + 1050, + 1051, + 5, + 83, + 0, + 0, + 1051, + 1052, + 5, + 79, + 0, + 0, + 1052, + 215, + 1, + 0, + 0, + 0, + 1053, + 1054, + 5, + 8, + 0, + 0, + 1054, + 1055, + 5, + 54, + 0, + 0, + 1055, + 1056, + 5, + 9, + 0, + 0, + 1056, + 1076, + 3, + 220, + 110, + 0, + 1057, + 1058, + 5, + 8, + 0, + 0, + 1058, + 1059, + 5, + 6, + 0, + 0, + 1059, + 1060, + 5, + 9, + 0, + 0, + 1060, + 1076, + 5, + 93, + 0, + 0, + 1061, + 1062, + 5, + 8, + 0, + 0, + 1062, + 1063, + 5, + 60, + 0, + 0, + 1063, + 1064, + 5, + 9, + 0, + 0, + 1064, + 1076, + 3, + 256, + 128, + 0, + 1065, + 1066, + 5, + 8, + 0, + 0, + 1066, + 1067, + 5, + 35, + 0, + 0, + 1067, + 1068, + 5, + 9, + 0, + 0, + 1068, + 1076, + 3, + 252, + 126, + 0, + 1069, + 1070, + 5, + 8, + 0, + 0, + 1070, + 1071, + 5, + 28, + 0, + 0, + 1071, + 1072, + 5, + 9, + 0, + 0, + 1072, + 1076, + 3, + 118, + 59, + 0, + 1073, + 1074, + 5, + 8, + 0, + 0, + 1074, + 1076, + 3, + 270, + 135, + 0, + 1075, + 1053, + 1, + 0, + 0, + 0, + 1075, + 1057, + 1, + 0, + 0, + 0, + 1075, + 1061, + 1, + 0, + 0, + 0, + 1075, + 1065, + 1, + 0, + 0, + 0, + 1075, + 1069, + 1, + 0, + 0, + 0, + 1075, + 1073, + 1, + 0, + 0, + 0, + 1076, + 217, + 1, + 0, + 0, + 0, + 1077, + 1078, + 5, + 93, + 0, + 0, + 1078, + 219, + 1, + 0, + 0, + 0, + 1079, + 1082, + 3, + 224, + 112, + 0, + 1080, + 1082, + 3, + 222, + 111, + 0, + 1081, + 1079, + 1, + 0, + 0, + 0, + 1081, + 1080, + 1, + 0, + 0, + 0, + 1082, + 221, + 1, + 0, + 0, + 0, + 1083, + 1084, + 3, + 224, + 112, + 0, + 1084, + 1085, + 5, + 61, + 0, + 0, + 1085, + 1086, + 3, + 220, + 110, + 0, + 1086, + 1087, + 5, + 9, + 0, + 0, + 1087, + 1088, + 3, + 220, + 110, + 0, + 1088, + 223, + 1, + 0, + 0, + 0, + 1089, + 1094, + 3, + 226, + 113, + 0, + 1090, + 1091, + 5, + 62, + 0, + 0, + 1091, + 1093, + 3, + 226, + 113, + 0, + 1092, + 1090, + 1, + 0, + 0, + 0, + 1093, + 1096, + 1, + 0, + 0, + 0, + 1094, + 1092, + 1, + 0, + 0, + 0, + 1094, + 1095, + 1, + 0, + 0, + 0, + 1095, + 225, + 1, + 0, + 0, + 0, + 1096, + 1094, + 1, + 0, + 0, + 0, + 1097, + 1102, + 3, + 228, + 114, + 0, + 1098, + 1099, + 5, + 63, + 0, + 0, + 1099, + 1101, + 3, + 228, + 114, + 0, + 1100, + 1098, + 1, + 0, + 0, + 0, + 1101, + 1104, + 1, + 0, + 0, + 0, + 1102, + 1100, + 1, + 0, + 0, + 0, + 1102, + 1103, + 1, + 0, + 0, + 0, + 1103, + 227, + 1, + 0, + 0, + 0, + 1104, + 1102, + 1, + 0, + 0, + 0, + 1105, + 1110, + 3, + 230, + 115, + 0, + 1106, + 1107, + 5, + 64, + 0, + 0, + 1107, + 1109, + 3, + 230, + 115, + 0, + 1108, + 1106, + 1, + 0, + 0, + 0, + 1109, + 1112, + 1, + 0, + 0, + 0, + 1110, + 1108, + 1, + 0, + 0, + 0, + 1110, + 1111, + 1, + 0, + 0, + 0, + 1111, + 229, + 1, + 0, + 0, + 0, + 1112, + 1110, + 1, + 0, + 0, + 0, + 1113, + 1114, + 5, + 65, + 0, + 0, + 1114, + 1117, + 3, + 230, + 115, + 0, + 1115, + 1117, + 3, + 232, + 116, + 0, + 1116, + 1113, + 1, + 0, + 0, + 0, + 1116, + 1115, + 1, + 0, + 0, + 0, + 1117, + 231, + 1, + 0, + 0, + 0, + 1118, + 1119, + 6, + 116, + -1, + 0, + 1119, + 1120, + 3, + 236, + 118, + 0, + 1120, + 1127, + 1, + 0, + 0, + 0, + 1121, + 1122, + 10, + 1, + 0, + 0, + 1122, + 1123, + 3, + 234, + 117, + 0, + 1123, + 1124, + 3, + 236, + 118, + 0, + 1124, + 1126, + 1, + 0, + 0, + 0, + 1125, + 1121, + 1, + 0, + 0, + 0, + 1126, + 1129, + 1, + 0, + 0, + 0, + 1127, + 1125, + 1, + 0, + 0, + 0, + 1127, + 1128, + 1, + 0, + 0, + 0, + 1128, + 233, + 1, + 0, + 0, + 0, + 1129, + 1127, + 1, + 0, + 0, + 0, + 1130, + 1131, + 7, + 4, + 0, + 0, + 1131, + 235, + 1, + 0, + 0, + 0, + 1132, + 1133, + 6, + 118, + -1, + 0, + 1133, + 1134, + 3, + 240, + 120, + 0, + 1134, + 1141, + 1, + 0, + 0, + 0, + 1135, + 1136, + 10, + 1, + 0, + 0, + 1136, + 1137, + 3, + 238, + 119, + 0, + 1137, + 1138, + 3, + 240, + 120, + 0, + 1138, + 1140, + 1, + 0, + 0, + 0, + 1139, + 1135, + 1, + 0, + 0, + 0, + 1140, + 1143, + 1, + 0, + 0, + 0, + 1141, + 1139, + 1, + 0, + 0, + 0, + 1141, + 1142, + 1, + 0, + 0, + 0, + 1142, + 237, + 1, + 0, + 0, + 0, + 1143, + 1141, + 1, + 0, + 0, + 0, + 1144, + 1145, + 7, + 5, + 0, + 0, + 1145, + 239, + 1, + 0, + 0, + 0, + 1146, + 1147, + 6, + 120, + -1, + 0, + 1147, + 1148, + 3, + 244, + 122, + 0, + 1148, + 1155, + 1, + 0, + 0, + 0, + 1149, + 1150, + 10, + 1, + 0, + 0, + 1150, + 1151, + 3, + 242, + 121, + 0, + 1151, + 1152, + 3, + 244, + 122, + 0, + 1152, + 1154, + 1, + 0, + 0, + 0, + 1153, + 1149, + 1, + 0, + 0, + 0, + 1154, + 1157, + 1, + 0, + 0, + 0, + 1155, + 1153, + 1, + 0, + 0, + 0, + 1155, + 1156, + 1, + 0, + 0, + 0, + 1156, + 241, + 1, + 0, + 0, + 0, + 1157, + 1155, + 1, + 0, + 0, + 0, + 1158, + 1159, + 7, + 6, + 0, + 0, + 1159, + 243, + 1, + 0, + 0, + 0, + 1160, + 1164, + 3, + 246, + 123, + 0, + 1161, + 1162, + 5, + 73, + 0, + 0, + 1162, + 1164, + 3, + 244, + 122, + 0, + 1163, + 1160, + 1, + 0, + 0, + 0, + 1163, + 1161, + 1, + 0, + 0, + 0, + 1164, + 245, + 1, + 0, + 0, + 0, + 1165, + 1166, + 6, + 123, + -1, + 0, + 1166, + 1167, + 3, + 250, + 125, + 0, + 1167, + 1198, + 1, + 0, + 0, + 0, + 1168, + 1169, + 10, + 5, + 0, + 0, + 1169, + 1170, + 5, + 2, + 0, + 0, + 1170, + 1171, + 5, + 31, + 0, + 0, + 1171, + 1172, + 5, + 82, + 0, + 0, + 1172, + 1173, + 3, + 96, + 48, + 0, + 1173, + 1174, + 5, + 83, + 0, + 0, + 1174, + 1197, + 1, + 0, + 0, + 0, + 1175, + 1176, + 10, + 4, + 0, + 0, + 1176, + 1177, + 5, + 2, + 0, + 0, + 1177, + 1178, + 5, + 4, + 0, + 0, + 1178, + 1179, + 5, + 82, + 0, + 0, + 1179, + 1180, + 3, + 96, + 48, + 0, + 1180, + 1181, + 5, + 83, + 0, + 0, + 1181, + 1197, + 1, + 0, + 0, + 0, + 1182, + 1183, + 10, + 3, + 0, + 0, + 1183, + 1184, + 5, + 80, + 0, + 0, + 1184, + 1185, + 3, + 220, + 110, + 0, + 1185, + 1186, + 5, + 81, + 0, + 0, + 1186, + 1197, + 1, + 0, + 0, + 0, + 1187, + 1188, + 10, + 2, + 0, + 0, + 1188, + 1190, + 5, + 82, + 0, + 0, + 1189, + 1191, + 3, + 266, + 133, + 0, + 1190, + 1189, + 1, + 0, + 0, + 0, + 1190, + 1191, + 1, + 0, + 0, + 0, + 1191, + 1192, + 1, + 0, + 0, + 0, + 1192, + 1197, + 5, + 83, + 0, + 0, + 1193, + 1194, + 10, + 1, + 0, + 0, + 1194, + 1195, + 5, + 2, + 0, + 0, + 1195, + 1197, + 3, + 54, + 27, + 0, + 1196, + 1168, + 1, + 0, + 0, + 0, + 1196, + 1175, + 1, + 0, + 0, + 0, + 1196, + 1182, + 1, + 0, + 0, + 0, + 1196, + 1187, + 1, + 0, + 0, + 0, + 1196, + 1193, + 1, + 0, + 0, + 0, + 1197, + 1200, + 1, + 0, + 0, + 0, + 1198, + 1196, + 1, + 0, + 0, + 0, + 1198, + 1199, + 1, + 0, + 0, + 0, + 1199, + 247, + 1, + 0, + 0, + 0, + 1200, + 1198, + 1, + 0, + 0, + 0, + 1201, + 1202, + 3, + 246, + 123, + 0, + 1202, + 1203, + 5, + 2, + 0, + 0, + 1203, + 1204, + 3, + 54, + 27, + 0, + 1204, + 249, + 1, + 0, + 0, + 0, + 1205, + 1213, + 3, + 252, + 126, + 0, + 1206, + 1213, + 5, + 77, + 0, + 0, + 1207, + 1213, + 5, + 93, + 0, + 0, + 1208, + 1209, + 5, + 82, + 0, + 0, + 1209, + 1210, + 3, + 220, + 110, + 0, + 1210, + 1211, + 5, + 83, + 0, + 0, + 1211, + 1213, + 1, + 0, + 0, + 0, + 1212, + 1205, + 1, + 0, + 0, + 0, + 1212, + 1206, + 1, + 0, + 0, + 0, + 1212, + 1207, + 1, + 0, + 0, + 0, + 1212, + 1208, + 1, + 0, + 0, + 0, + 1213, + 251, + 1, + 0, + 0, + 0, + 1214, + 1224, + 3, + 272, + 136, + 0, + 1215, + 1224, + 5, + 88, + 0, + 0, + 1216, + 1224, + 3, + 274, + 137, + 0, + 1217, + 1224, + 5, + 92, + 0, + 0, + 1218, + 1224, + 5, + 87, + 0, + 0, + 1219, + 1224, + 3, + 258, + 129, + 0, + 1220, + 1224, + 3, + 44, + 22, + 0, + 1221, + 1224, + 3, + 254, + 127, + 0, + 1222, + 1224, + 3, + 256, + 128, + 0, + 1223, + 1214, + 1, + 0, + 0, + 0, + 1223, + 1215, + 1, + 0, + 0, + 0, + 1223, + 1216, + 1, + 0, + 0, + 0, + 1223, + 1217, + 1, + 0, + 0, + 0, + 1223, + 1218, + 1, + 0, + 0, + 0, + 1223, + 1219, + 1, + 0, + 0, + 0, + 1223, + 1220, + 1, + 0, + 0, + 0, + 1223, + 1221, + 1, + 0, + 0, + 0, + 1223, + 1222, + 1, + 0, + 0, + 0, + 1224, + 253, + 1, + 0, + 0, + 0, + 1225, + 1226, + 5, + 80, + 0, + 0, + 1226, + 1231, + 3, + 220, + 110, + 0, + 1227, + 1228, + 5, + 8, + 0, + 0, + 1228, + 1230, + 3, + 220, + 110, + 0, + 1229, + 1227, + 1, + 0, + 0, + 0, + 1230, + 1233, + 1, + 0, + 0, + 0, + 1231, + 1229, + 1, + 0, + 0, + 0, + 1231, + 1232, + 1, + 0, + 0, + 0, + 1232, + 1234, + 1, + 0, + 0, + 0, + 1233, + 1231, + 1, + 0, + 0, + 0, + 1234, + 1235, + 5, + 81, + 0, + 0, + 1235, + 255, + 1, + 0, + 0, + 0, + 1236, + 1237, + 5, + 60, + 0, + 0, + 1237, + 1238, + 5, + 82, + 0, + 0, + 1238, + 1239, + 3, + 220, + 110, + 0, + 1239, + 1240, + 5, + 8, + 0, + 0, + 1240, + 1241, + 3, + 220, + 110, + 0, + 1241, + 1242, + 5, + 83, + 0, + 0, + 1242, + 1250, + 1, + 0, + 0, + 0, + 1243, + 1244, + 5, + 80, + 0, + 0, + 1244, + 1245, + 3, + 220, + 110, + 0, + 1245, + 1246, + 5, + 78, + 0, + 0, + 1246, + 1247, + 3, + 220, + 110, + 0, + 1247, + 1248, + 5, + 81, + 0, + 0, + 1248, + 1250, + 1, + 0, + 0, + 0, + 1249, + 1236, + 1, + 0, + 0, + 0, + 1249, + 1243, + 1, + 0, + 0, + 0, + 1250, + 257, + 1, + 0, + 0, + 0, + 1251, + 1252, + 3, + 54, + 27, + 0, + 1252, + 1253, + 5, + 2, + 0, + 0, + 1253, + 1255, + 1, + 0, + 0, + 0, + 1254, + 1251, + 1, + 0, + 0, + 0, + 1255, + 1258, + 1, + 0, + 0, + 0, + 1256, + 1254, + 1, + 0, + 0, + 0, + 1256, + 1257, + 1, + 0, + 0, + 0, + 1257, + 1259, + 1, + 0, + 0, + 0, + 1258, + 1256, + 1, + 0, + 0, + 0, + 1259, + 1260, + 3, + 54, + 27, + 0, + 1260, + 259, + 1, + 0, + 0, + 0, + 1261, + 1266, + 3, + 262, + 131, + 0, + 1262, + 1263, + 5, + 8, + 0, + 0, + 1263, + 1265, + 3, + 262, + 131, + 0, + 1264, + 1262, + 1, + 0, + 0, + 0, + 1265, + 1268, + 1, + 0, + 0, + 0, + 1266, + 1264, + 1, + 0, + 0, + 0, + 1266, + 1267, + 1, + 0, + 0, + 0, + 1267, + 261, + 1, + 0, + 0, + 0, + 1268, + 1266, + 1, + 0, + 0, + 0, + 1269, + 1270, + 3, + 264, + 132, + 0, + 1270, + 1271, + 5, + 9, + 0, + 0, + 1271, + 1274, + 3, + 96, + 48, + 0, + 1272, + 1273, + 5, + 11, + 0, + 0, + 1273, + 1275, + 3, + 144, + 72, + 0, + 1274, + 1272, + 1, + 0, + 0, + 0, + 1274, + 1275, + 1, + 0, + 0, + 0, + 1275, + 263, + 1, + 0, + 0, + 0, + 1276, + 1277, + 5, + 93, + 0, + 0, + 1277, + 265, + 1, + 0, + 0, + 0, + 1278, + 1283, + 3, + 268, + 134, + 0, + 1279, + 1280, + 5, + 8, + 0, + 0, + 1280, + 1282, + 3, + 268, + 134, + 0, + 1281, + 1279, + 1, + 0, + 0, + 0, + 1282, + 1285, + 1, + 0, + 0, + 0, + 1283, + 1281, + 1, + 0, + 0, + 0, + 1283, + 1284, + 1, + 0, + 0, + 0, + 1284, + 1290, + 1, + 0, + 0, + 0, + 1285, + 1283, + 1, + 0, + 0, + 0, + 1286, + 1287, + 5, + 8, + 0, + 0, + 1287, + 1289, + 3, + 270, + 135, + 0, + 1288, + 1286, + 1, + 0, + 0, + 0, + 1289, + 1292, + 1, + 0, + 0, + 0, + 1290, + 1288, + 1, + 0, + 0, + 0, + 1290, + 1291, + 1, + 0, + 0, + 0, + 1291, + 1302, + 1, + 0, + 0, + 0, + 1292, + 1290, + 1, + 0, + 0, + 0, + 1293, + 1298, + 3, + 270, + 135, + 0, + 1294, + 1295, + 5, + 8, + 0, + 0, + 1295, + 1297, + 3, + 270, + 135, + 0, + 1296, + 1294, + 1, + 0, + 0, + 0, + 1297, + 1300, + 1, + 0, + 0, + 0, + 1298, + 1296, + 1, + 0, + 0, + 0, + 1298, + 1299, + 1, + 0, + 0, + 0, + 1299, + 1302, + 1, + 0, + 0, + 0, + 1300, + 1298, + 1, + 0, + 0, + 0, + 1301, + 1278, + 1, + 0, + 0, + 0, + 1301, + 1293, + 1, + 0, + 0, + 0, + 1302, + 267, + 1, + 0, + 0, + 0, + 1303, + 1304, + 3, + 220, + 110, + 0, + 1304, + 269, + 1, + 0, + 0, + 0, + 1305, + 1306, + 3, + 264, + 132, + 0, + 1306, + 1307, + 5, + 9, + 0, + 0, + 1307, + 1308, + 3, + 220, + 110, + 0, + 1308, + 271, + 1, + 0, + 0, + 0, + 1309, + 1312, + 5, + 88, + 0, + 0, + 1310, + 1312, + 3, + 274, + 137, + 0, + 1311, + 1309, + 1, + 0, + 0, + 0, + 1311, + 1310, + 1, + 0, + 0, + 0, + 1312, + 1313, + 1, + 0, + 0, + 0, + 1313, + 1314, + 5, + 93, + 0, + 0, + 1314, + 273, + 1, + 0, + 0, + 0, + 1315, + 1316, + 7, + 7, + 0, + 0, + 1316, + 275, + 1, + 0, + 0, + 0, + 125, + 279, + 285, + 297, + 301, + 311, + 325, + 357, + 361, + 370, + 382, + 388, + 399, + 408, + 425, + 432, + 440, + 445, + 450, + 457, + 466, + 474, + 479, + 484, + 491, + 498, + 505, + 507, + 512, + 517, + 525, + 530, + 539, + 546, + 548, + 553, + 558, + 564, + 569, + 577, + 582, + 588, + 599, + 613, + 619, + 625, + 633, + 640, + 644, + 648, + 653, + 671, + 675, + 681, + 685, + 688, + 703, + 712, + 737, + 747, + 754, + 761, + 765, + 773, + 781, + 783, + 794, + 807, + 813, + 817, + 822, + 840, + 844, + 848, + 853, + 865, + 875, + 881, + 889, + 896, + 901, + 904, + 912, + 916, + 923, + 928, + 933, + 942, + 949, + 965, + 980, + 988, + 993, + 1002, + 1011, + 1015, + 1023, + 1028, + 1033, + 1042, + 1047, + 1075, + 1081, + 1094, + 1102, + 1110, + 1116, + 1127, + 1141, + 1155, + 1163, + 1190, + 1196, + 1198, + 1212, + 1223, + 1231, + 1249, + 1256, + 1266, + 1274, + 1283, + 1290, + 1298, + 1301, + 1311, ] @@ -517,46 +11230,191 @@ class OpenSCENARIO2Parser(Parser): sharedContextCache = PredictionContextCache() - literalNames = ["", "'import'", "'.'", "'type'", "'is'", "'SI'", - "'unit'", "'of'", "','", "':'", "'enum'", "'='", "'!'", - "'=='", "'struct'", "'inherits'", "'actor'", "'scenario'", - "'action'", "'modifier'", "'extend'", "'global'", "'list'", - "'int'", "'uint'", "'float'", "'bool'", "'string'", - "'event'", "'if'", "'@'", "'as'", "'rise'", "'fall'", - "'elapsed'", "'every'", "'var'", "'sample'", "'with'", - "'keep'", "'default'", "'hard'", "'remove_default'", - "'on'", "'do'", "'serial'", "'one_of'", "'parallel'", - "'wait'", "'emit'", "'call'", "'until'", "'def'", "'->'", - "'expression'", "'undefined'", "'external'", "'only'", - "'cover'", "'record'", "'range'", "'?'", "'=>'", "'or'", - "'and'", "'not'", "'!='", "'<'", "'<='", "'>'", "'>='", - "'in'", "'+'", "'-'", "'*'", "'/'", "'%'", "'it'", - "'..'", "", "'['", "']'", "'('", "')'"] - - symbolicNames = ["", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "NEWLINE", - "OPEN_BRACK", "CLOSE_BRACK", "OPEN_PAREN", "CLOSE_PAREN", - "SKIP_", "BLOCK_COMMENT", "LINE_COMMENT", "StringLiteral", - "FloatLiteral", "UintLiteral", "HexUintLiteral", "IntLiteral", - "BoolLiteral", "Identifier", "INDENT", "DEDENT"] + literalNames = [ + "", + "'import'", + "'.'", + "'type'", + "'is'", + "'SI'", + "'unit'", + "'of'", + "','", + "':'", + "'enum'", + "'='", + "'!'", + "'=='", + "'struct'", + "'inherits'", + "'actor'", + "'scenario'", + "'action'", + "'modifier'", + "'extend'", + "'global'", + "'list'", + "'int'", + "'uint'", + "'float'", + "'bool'", + "'string'", + "'event'", + "'if'", + "'@'", + "'as'", + "'rise'", + "'fall'", + "'elapsed'", + "'every'", + "'var'", + "'sample'", + "'with'", + "'keep'", + "'default'", + "'hard'", + "'remove_default'", + "'on'", + "'do'", + "'serial'", + "'one_of'", + "'parallel'", + "'wait'", + "'emit'", + "'call'", + "'until'", + "'def'", + "'->'", + "'expression'", + "'undefined'", + "'external'", + "'only'", + "'cover'", + "'record'", + "'range'", + "'?'", + "'=>'", + "'or'", + "'and'", + "'not'", + "'!='", + "'<'", + "'<='", + "'>'", + "'>='", + "'in'", + "'+'", + "'-'", + "'*'", + "'/'", + "'%'", + "'it'", + "'..'", + "", + "'['", + "']'", + "'('", + "')'", + ] + + symbolicNames = [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "NEWLINE", + "OPEN_BRACK", + "CLOSE_BRACK", + "OPEN_PAREN", + "CLOSE_PAREN", + "SKIP_", + "BLOCK_COMMENT", + "LINE_COMMENT", + "StringLiteral", + "FloatLiteral", + "UintLiteral", + "HexUintLiteral", + "IntLiteral", + "BoolLiteral", + "Identifier", + "INDENT", + "DEDENT", + ] RULE_osc_file = 0 RULE_preludeStatement = 1 @@ -697,48 +11555,146 @@ class OpenSCENARIO2Parser(Parser): RULE_physicalLiteral = 136 RULE_integerLiteral = 137 - ruleNames = ["osc_file", "preludeStatement", "importStatement", "importReference", - "structuredIdentifier", "oscDeclaration", "physicalTypeDeclaration", - "physicalTypeName", "baseUnitSpecifier", "sIBaseUnitSpecifier", - "unitDeclaration", "unitSpecifier", "sIUnitSpecifier", - "sIBaseExponentList", "sIBaseExponent", "sIFactor", "sIOffset", - "enumDeclaration", "enumMemberDecl", "enumMemberValue", - "enumName", "enumMemberName", "enumValueReference", "inheritsCondition", - "structDeclaration", "structInherts", "structMemberDecl", - "fieldName", "structName", "actorDeclaration", "actorInherts", - "actorMemberDecl", "actorName", "scenarioDeclaration", - "scenarioInherts", "scenarioMemberDecl", "qualifiedBehaviorName", - "behaviorName", "actionDeclaration", "actionInherts", - "modifierDeclaration", "modifierName", "typeExtension", - "enumTypeExtension", "structuredTypeExtension", "extendableTypeName", - "extensionMemberDecl", "globalParameterDeclaration", - "typeDeclarator", "nonAggregateTypeDeclarator", "aggregateTypeDeclarator", - "listTypeDeclarator", "primitiveType", "typeName", "eventDeclaration", - "eventSpecification", "eventReference", "eventFieldDecl", - "eventFieldName", "eventName", "eventPath", "eventCondition", - "riseExpression", "fallExpression", "elapsedExpression", - "everyExpression", "boolExpression", "durationExpression", - "fieldDeclaration", "parameterDeclaration", "variableDeclaration", - "sampleExpression", "defaultValue", "parameterWithDeclaration", - "parameterWithMember", "constraintDeclaration", "keepConstraintDeclaration", - "constraintQualifier", "constraintExpression", "removeDefaultDeclaration", - "parameterReference", "modifierInvocation", "behaviorExpression", - "behaviorSpecification", "onDirective", "onMember", "doDirective", - "doMember", "composition", "compositionOperator", "behaviorInvocation", - "behaviorWithDeclaration", "behaviorWithMember", "labelName", - "actorExpression", "waitDirective", "emitDirective", - "callDirective", "untilDirective", "methodInvocation", - "methodDeclaration", "returnType", "methodImplementation", - "methodQualifier", "methodName", "coverageDeclaration", - "coverDeclaration", "recordDeclaration", "coverageArgumentList", - "targetName", "expression", "ternaryOpExp", "implication", - "disjunction", "conjunction", "inversion", "relation", - "relationalOp", "sum", "additiveOp", "term", "multiplicativeOp", - "factor", "postfixExp", "fieldAccess", "primaryExp", - "valueExp", "listConstructor", "rangeConstructor", "identifierReference", - "argumentListSpecification", "argumentSpecification", - "argumentName", "argumentList", "positionalArgument", - "namedArgument", "physicalLiteral", "integerLiteral"] + ruleNames = [ + "osc_file", + "preludeStatement", + "importStatement", + "importReference", + "structuredIdentifier", + "oscDeclaration", + "physicalTypeDeclaration", + "physicalTypeName", + "baseUnitSpecifier", + "sIBaseUnitSpecifier", + "unitDeclaration", + "unitSpecifier", + "sIUnitSpecifier", + "sIBaseExponentList", + "sIBaseExponent", + "sIFactor", + "sIOffset", + "enumDeclaration", + "enumMemberDecl", + "enumMemberValue", + "enumName", + "enumMemberName", + "enumValueReference", + "inheritsCondition", + "structDeclaration", + "structInherts", + "structMemberDecl", + "fieldName", + "structName", + "actorDeclaration", + "actorInherts", + "actorMemberDecl", + "actorName", + "scenarioDeclaration", + "scenarioInherts", + "scenarioMemberDecl", + "qualifiedBehaviorName", + "behaviorName", + "actionDeclaration", + "actionInherts", + "modifierDeclaration", + "modifierName", + "typeExtension", + "enumTypeExtension", + "structuredTypeExtension", + "extendableTypeName", + "extensionMemberDecl", + "globalParameterDeclaration", + "typeDeclarator", + "nonAggregateTypeDeclarator", + "aggregateTypeDeclarator", + "listTypeDeclarator", + "primitiveType", + "typeName", + "eventDeclaration", + "eventSpecification", + "eventReference", + "eventFieldDecl", + "eventFieldName", + "eventName", + "eventPath", + "eventCondition", + "riseExpression", + "fallExpression", + "elapsedExpression", + "everyExpression", + "boolExpression", + "durationExpression", + "fieldDeclaration", + "parameterDeclaration", + "variableDeclaration", + "sampleExpression", + "defaultValue", + "parameterWithDeclaration", + "parameterWithMember", + "constraintDeclaration", + "keepConstraintDeclaration", + "constraintQualifier", + "constraintExpression", + "removeDefaultDeclaration", + "parameterReference", + "modifierInvocation", + "behaviorExpression", + "behaviorSpecification", + "onDirective", + "onMember", + "doDirective", + "doMember", + "composition", + "compositionOperator", + "behaviorInvocation", + "behaviorWithDeclaration", + "behaviorWithMember", + "labelName", + "actorExpression", + "waitDirective", + "emitDirective", + "callDirective", + "untilDirective", + "methodInvocation", + "methodDeclaration", + "returnType", + "methodImplementation", + "methodQualifier", + "methodName", + "coverageDeclaration", + "coverDeclaration", + "recordDeclaration", + "coverageArgumentList", + "targetName", + "expression", + "ternaryOpExp", + "implication", + "disjunction", + "conjunction", + "inversion", + "relation", + "relationalOp", + "sum", + "additiveOp", + "term", + "multiplicativeOp", + "factor", + "postfixExp", + "fieldAccess", + "primaryExp", + "valueExp", + "listConstructor", + "rangeConstructor", + "identifierReference", + "argumentListSpecification", + "argumentSpecification", + "argumentName", + "argumentList", + "positionalArgument", + "namedArgument", + "physicalLiteral", + "integerLiteral", + ] EOF = Token.EOF T__0 = 1 @@ -840,13 +11796,17 @@ class OpenSCENARIO2Parser(Parser): def __init__(self, input: TokenStream, output: TextIO = sys.stdout): super().__init__(input, output) self.checkVersion("4.10.1") - self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._interp = ParserATNSimulator( + self, self.atn, self.decisionsToDFA, self.sharedContextCache + ) self._predicates = None class Osc_fileContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -855,15 +11815,23 @@ def EOF(self): def preludeStatement(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.PreludeStatementContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.PreludeStatementContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.PreludeStatementContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.PreludeStatementContext, i + ) def oscDeclaration(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.OscDeclarationContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.OscDeclarationContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.OscDeclarationContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.OscDeclarationContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_osc_file @@ -883,7 +11851,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def osc_file(self): - localctx = OpenSCENARIO2Parser.Osc_fileContext(self, self._ctx, self.state) self.enterRule(localctx, 0, self.RULE_osc_file) self._la = 0 # Token type @@ -903,13 +11870,25 @@ def osc_file(self): self.state = 285 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__2) | (1 << OpenSCENARIO2Parser.T__5) | ( - 1 << OpenSCENARIO2Parser.T__9) | (1 << OpenSCENARIO2Parser.T__13) | ( - 1 << OpenSCENARIO2Parser.T__15) | (1 << OpenSCENARIO2Parser.T__16) | ( - 1 << OpenSCENARIO2Parser.T__17) | (1 << OpenSCENARIO2Parser.T__18) | ( - 1 << OpenSCENARIO2Parser.T__19) | ( - 1 << OpenSCENARIO2Parser.T__20))) != 0) or _la == OpenSCENARIO2Parser.NEWLINE: + while ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__2) + | (1 << OpenSCENARIO2Parser.T__5) + | (1 << OpenSCENARIO2Parser.T__9) + | (1 << OpenSCENARIO2Parser.T__13) + | (1 << OpenSCENARIO2Parser.T__15) + | (1 << OpenSCENARIO2Parser.T__16) + | (1 << OpenSCENARIO2Parser.T__17) + | (1 << OpenSCENARIO2Parser.T__18) + | (1 << OpenSCENARIO2Parser.T__19) + | (1 << OpenSCENARIO2Parser.T__20) + ) + ) + != 0 + ) or _la == OpenSCENARIO2Parser.NEWLINE: self.state = 282 self.oscDeclaration() self.state = 287 @@ -927,14 +11906,18 @@ def osc_file(self): return localctx class PreludeStatementContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def importStatement(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ImportStatementContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ImportStatementContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_preludeStatement @@ -954,8 +11937,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def preludeStatement(self): - - localctx = OpenSCENARIO2Parser.PreludeStatementContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.PreludeStatementContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 2, self.RULE_preludeStatement) try: self.enterOuterAlt(localctx, 1) @@ -970,14 +11954,18 @@ def preludeStatement(self): return localctx class ImportStatementContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def importReference(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ImportReferenceContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ImportReferenceContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -1000,8 +11988,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def importStatement(self): - - localctx = OpenSCENARIO2Parser.ImportStatementContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ImportStatementContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 4, self.RULE_importStatement) try: self.state = 297 @@ -1033,9 +12022,11 @@ def importStatement(self): return localctx class ImportReferenceContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -1043,7 +12034,9 @@ def StringLiteral(self): return self.getToken(OpenSCENARIO2Parser.StringLiteral, 0) def structuredIdentifier(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.StructuredIdentifierContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.StructuredIdentifierContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_importReference @@ -1063,8 +12056,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def importReference(self): - - localctx = OpenSCENARIO2Parser.ImportReferenceContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ImportReferenceContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 6, self.RULE_importReference) try: self.state = 301 @@ -1092,9 +12086,11 @@ def importReference(self): return localctx class StructuredIdentifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -1102,7 +12098,9 @@ def Identifier(self): return self.getToken(OpenSCENARIO2Parser.Identifier, 0) def structuredIdentifier(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.StructuredIdentifierContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.StructuredIdentifierContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_structuredIdentifier @@ -1124,7 +12122,9 @@ def accept(self, visitor: ParseTreeVisitor): def structuredIdentifier(self, _p: int = 0): _parentctx = self._ctx _parentState = self.state - localctx = OpenSCENARIO2Parser.StructuredIdentifierContext(self, self._ctx, _parentState) + localctx = OpenSCENARIO2Parser.StructuredIdentifierContext( + self, self._ctx, _parentState + ) _prevctx = localctx _startState = 8 self.enterRecursionRule(localctx, 8, self.RULE_structuredIdentifier, _p) @@ -1141,12 +12141,19 @@ def structuredIdentifier(self, _p: int = 0): if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx - localctx = OpenSCENARIO2Parser.StructuredIdentifierContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_structuredIdentifier) + localctx = OpenSCENARIO2Parser.StructuredIdentifierContext( + self, _parentctx, _parentState + ) + self.pushNewRecursionContext( + localctx, _startState, self.RULE_structuredIdentifier + ) self.state = 306 if not self.precpred(self._ctx, 1): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + + raise FailedPredicateException( + self, "self.precpred(self._ctx, 1)" + ) self.state = 307 self.match(OpenSCENARIO2Parser.T__1) self.state = 308 @@ -1164,41 +12171,61 @@ def structuredIdentifier(self, _p: int = 0): return localctx class OscDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def physicalTypeDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.PhysicalTypeDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.PhysicalTypeDeclarationContext, 0 + ) def unitDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.UnitDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.UnitDeclarationContext, 0 + ) def enumDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EnumDeclarationContext, 0 + ) def structDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.StructDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.StructDeclarationContext, 0 + ) def actorDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ActorDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ActorDeclarationContext, 0 + ) def actionDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ActionDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ActionDeclarationContext, 0 + ) def scenarioDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ScenarioDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ScenarioDeclarationContext, 0 + ) def modifierDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ModifierDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ModifierDeclarationContext, 0 + ) def typeExtension(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeExtensionContext, 0) def globalParameterDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.GlobalParameterDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.GlobalParameterDeclarationContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -1221,8 +12248,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def oscDeclaration(self): - - localctx = OpenSCENARIO2Parser.OscDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.OscDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 10, self.RULE_oscDeclaration) try: self.state = 325 @@ -1295,17 +12323,23 @@ def oscDeclaration(self): return localctx class PhysicalTypeDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def physicalTypeName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.PhysicalTypeNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.PhysicalTypeNameContext, 0 + ) def baseUnitSpecifier(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.BaseUnitSpecifierContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BaseUnitSpecifierContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -1328,8 +12362,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def physicalTypeDeclaration(self): - - localctx = OpenSCENARIO2Parser.PhysicalTypeDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.PhysicalTypeDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 12, self.RULE_physicalTypeDeclaration) try: self.enterOuterAlt(localctx, 1) @@ -1352,9 +12387,11 @@ def physicalTypeDeclaration(self): return localctx class PhysicalTypeNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -1379,8 +12416,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def physicalTypeName(self): - - localctx = OpenSCENARIO2Parser.PhysicalTypeNameContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.PhysicalTypeNameContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 14, self.RULE_physicalTypeName) try: self.enterOuterAlt(localctx, 1) @@ -1395,14 +12433,18 @@ def physicalTypeName(self): return localctx class BaseUnitSpecifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def sIBaseUnitSpecifier(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.SIBaseUnitSpecifierContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.SIBaseUnitSpecifierContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_baseUnitSpecifier @@ -1422,8 +12464,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def baseUnitSpecifier(self): - - localctx = OpenSCENARIO2Parser.BaseUnitSpecifierContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.BaseUnitSpecifierContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 16, self.RULE_baseUnitSpecifier) try: self.enterOuterAlt(localctx, 1) @@ -1438,9 +12481,11 @@ def baseUnitSpecifier(self): return localctx class SIBaseUnitSpecifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -1448,7 +12493,9 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def sIBaseExponentList(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.SIBaseExponentListContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.SIBaseExponentListContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -1471,8 +12518,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def sIBaseUnitSpecifier(self): - - localctx = OpenSCENARIO2Parser.SIBaseUnitSpecifierContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.SIBaseUnitSpecifierContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 18, self.RULE_sIBaseUnitSpecifier) try: self.enterOuterAlt(localctx, 1) @@ -1493,15 +12541,19 @@ def sIBaseUnitSpecifier(self): return localctx class UnitDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser self.unitName = None # Token def physicalTypeName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.PhysicalTypeNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.PhysicalTypeNameContext, 0 + ) def unitSpecifier(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.UnitSpecifierContext, 0) @@ -1530,8 +12582,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def unitDeclaration(self): - - localctx = OpenSCENARIO2Parser.UnitDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.UnitDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 20, self.RULE_unitDeclaration) try: self.enterOuterAlt(localctx, 1) @@ -1558,14 +12611,18 @@ def unitDeclaration(self): return localctx class UnitSpecifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def sIUnitSpecifier(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.SIUnitSpecifierContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.SIUnitSpecifierContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_unitSpecifier @@ -1585,7 +12642,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def unitSpecifier(self): - localctx = OpenSCENARIO2Parser.UnitSpecifierContext(self, self._ctx, self.state) self.enterRule(localctx, 22, self.RULE_unitSpecifier) try: @@ -1601,9 +12657,11 @@ def unitSpecifier(self): return localctx class SIUnitSpecifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -1611,7 +12669,9 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def sIBaseExponentList(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.SIBaseExponentListContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.SIBaseExponentListContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -1640,8 +12700,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def sIUnitSpecifier(self): - - localctx = OpenSCENARIO2Parser.SIUnitSpecifierContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.SIUnitSpecifierContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 24, self.RULE_sIUnitSpecifier) self._la = 0 # Token type try: @@ -1681,17 +12742,23 @@ def sIUnitSpecifier(self): return localctx class SIBaseExponentListContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def sIBaseExponent(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.SIBaseExponentContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.SIBaseExponentContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.SIBaseExponentContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.SIBaseExponentContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_sIBaseExponentList @@ -1711,8 +12778,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def sIBaseExponentList(self): - - localctx = OpenSCENARIO2Parser.SIBaseExponentListContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.SIBaseExponentListContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 26, self.RULE_sIBaseExponentList) try: self.enterOuterAlt(localctx, 1) @@ -1740,15 +12808,19 @@ def sIBaseExponentList(self): return localctx class SIBaseExponentContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser self.sIBaseUnitName = None # Token def integerLiteral(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.IntegerLiteralContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.IntegerLiteralContext, 0 + ) def Identifier(self): return self.getToken(OpenSCENARIO2Parser.Identifier, 0) @@ -1771,25 +12843,32 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def sIBaseExponent(self): - - localctx = OpenSCENARIO2Parser.SIBaseExponentContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.SIBaseExponentContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 28, self.RULE_sIBaseExponent) try: self.enterOuterAlt(localctx, 1) self.state = 373 localctx.sIBaseUnitName = self.match(OpenSCENARIO2Parser.Identifier) - unitName = (None if localctx.sIBaseUnitName is None else localctx.sIBaseUnitName.text) - if (not (unitName == "kg") and - not (unitName == "m") and - not (unitName == "s") and - not (unitName == "A") and - not (unitName == "K") and - not (unitName == "mol") and - not (unitName == "cd") and - not (unitName == "factor") and - not (unitName == "offset") and - not (unitName == "rad")): + unitName = ( + None + if localctx.sIBaseUnitName is None + else localctx.sIBaseUnitName.text + ) + if ( + not (unitName == "kg") + and not (unitName == "m") + and not (unitName == "s") + and not (unitName == "A") + and not (unitName == "K") + and not (unitName == "mol") + and not (unitName == "cd") + and not (unitName == "factor") + and not (unitName == "offset") + and not (unitName == "rad") + ): print("unit name %s is not supported" % unitName) raise NoViableAltException(self) @@ -1806,9 +12885,11 @@ def sIBaseExponent(self): return localctx class SIFactorContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -1819,7 +12900,9 @@ def FloatLiteral(self): return self.getToken(OpenSCENARIO2Parser.FloatLiteral, 0) def integerLiteral(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.IntegerLiteralContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.IntegerLiteralContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_sIFactor @@ -1839,7 +12922,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def sIFactor(self): - localctx = OpenSCENARIO2Parser.SIFactorContext(self, self._ctx, self.state) self.enterRule(localctx, 30, self.RULE_sIFactor) try: @@ -1855,8 +12937,11 @@ def sIFactor(self): self.state = 380 self.match(OpenSCENARIO2Parser.FloatLiteral) pass - elif token in [OpenSCENARIO2Parser.UintLiteral, OpenSCENARIO2Parser.HexUintLiteral, - OpenSCENARIO2Parser.IntLiteral]: + elif token in [ + OpenSCENARIO2Parser.UintLiteral, + OpenSCENARIO2Parser.HexUintLiteral, + OpenSCENARIO2Parser.IntLiteral, + ]: self.state = 381 self.integerLiteral() pass @@ -1872,9 +12957,11 @@ def sIFactor(self): return localctx class SIOffsetContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -1885,7 +12972,9 @@ def FloatLiteral(self): return self.getToken(OpenSCENARIO2Parser.FloatLiteral, 0) def integerLiteral(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.IntegerLiteralContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.IntegerLiteralContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_sIOffset @@ -1905,7 +12994,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def sIOffset(self): - localctx = OpenSCENARIO2Parser.SIOffsetContext(self, self._ctx, self.state) self.enterRule(localctx, 32, self.RULE_sIOffset) try: @@ -1921,8 +13009,11 @@ def sIOffset(self): self.state = 386 self.match(OpenSCENARIO2Parser.FloatLiteral) pass - elif token in [OpenSCENARIO2Parser.UintLiteral, OpenSCENARIO2Parser.HexUintLiteral, - OpenSCENARIO2Parser.IntLiteral]: + elif token in [ + OpenSCENARIO2Parser.UintLiteral, + OpenSCENARIO2Parser.HexUintLiteral, + OpenSCENARIO2Parser.IntLiteral, + ]: self.state = 387 self.integerLiteral() pass @@ -1938,9 +13029,11 @@ def sIOffset(self): return localctx class EnumDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -1952,9 +13045,13 @@ def OPEN_BRACK(self): def enumMemberDecl(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.EnumMemberDeclContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.EnumMemberDeclContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumMemberDeclContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EnumMemberDeclContext, i + ) def CLOSE_BRACK(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_BRACK, 0) @@ -1980,8 +13077,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def enumDeclaration(self): - - localctx = OpenSCENARIO2Parser.EnumDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EnumDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 34, self.RULE_enumDeclaration) self._la = 0 # Token type try: @@ -2021,17 +13119,23 @@ def enumDeclaration(self): return localctx class EnumMemberDeclContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def enumMemberName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumMemberNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EnumMemberNameContext, 0 + ) def enumMemberValue(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumMemberValueContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EnumMemberValueContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_enumMemberDecl @@ -2051,8 +13155,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def enumMemberDecl(self): - - localctx = OpenSCENARIO2Parser.EnumMemberDeclContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EnumMemberDeclContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 36, self.RULE_enumMemberDecl) self._la = 0 # Token type try: @@ -2068,7 +13173,6 @@ def enumMemberDecl(self): self.state = 407 self.enumMemberValue() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2078,9 +13182,11 @@ def enumMemberDecl(self): return localctx class EnumMemberValueContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2108,15 +13214,19 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def enumMemberValue(self): - - localctx = OpenSCENARIO2Parser.EnumMemberValueContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EnumMemberValueContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 38, self.RULE_enumMemberValue) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 410 _la = self._input.LA(1) - if not (_la == OpenSCENARIO2Parser.UintLiteral or _la == OpenSCENARIO2Parser.HexUintLiteral): + if not ( + _la == OpenSCENARIO2Parser.UintLiteral + or _la == OpenSCENARIO2Parser.HexUintLiteral + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -2130,9 +13240,11 @@ def enumMemberValue(self): return localctx class EnumNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2157,7 +13269,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def enumName(self): - localctx = OpenSCENARIO2Parser.EnumNameContext(self, self._ctx, self.state) self.enterRule(localctx, 40, self.RULE_enumName) try: @@ -2173,9 +13284,11 @@ def enumName(self): return localctx class EnumMemberNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2200,8 +13313,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def enumMemberName(self): - - localctx = OpenSCENARIO2Parser.EnumMemberNameContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EnumMemberNameContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 42, self.RULE_enumMemberName) try: self.enterOuterAlt(localctx, 1) @@ -2216,9 +13330,11 @@ def enumMemberName(self): return localctx class EnumValueReferenceContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2226,7 +13342,9 @@ def enumName(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumNameContext, 0) def enumMemberName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumMemberNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EnumMemberNameContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_enumValueReference @@ -2246,8 +13364,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def enumValueReference(self): - - localctx = OpenSCENARIO2Parser.EnumValueReferenceContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EnumValueReferenceContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 44, self.RULE_enumValueReference) try: self.enterOuterAlt(localctx, 1) @@ -2266,9 +13385,11 @@ def enumValueReference(self): return localctx class InheritsConditionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2282,7 +13403,9 @@ def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) def enumValueReference(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumValueReferenceContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EnumValueReferenceContext, 0 + ) def BoolLiteral(self): return self.getToken(OpenSCENARIO2Parser.BoolLiteral, 0) @@ -2305,8 +13428,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def inheritsCondition(self): - - localctx = OpenSCENARIO2Parser.InheritsConditionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.InheritsConditionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 46, self.RULE_inheritsCondition) try: self.enterOuterAlt(localctx, 1) @@ -2341,9 +13465,11 @@ def inheritsCondition(self): return localctx class StructDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2364,9 +13490,13 @@ def DEDENT(self): def structMemberDecl(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.StructMemberDeclContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.StructMemberDeclContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.StructMemberDeclContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.StructMemberDeclContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_structDeclaration @@ -2386,8 +13516,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def structDeclaration(self): - - localctx = OpenSCENARIO2Parser.StructDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.StructDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 48, self.RULE_structDeclaration) self._la = 0 # Token type try: @@ -2422,11 +13553,25 @@ def structDeclaration(self): self.state = 440 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__27) | (1 << OpenSCENARIO2Parser.T__35) | ( - 1 << OpenSCENARIO2Parser.T__38) | (1 << OpenSCENARIO2Parser.T__41) | ( - 1 << OpenSCENARIO2Parser.T__51) | (1 << OpenSCENARIO2Parser.T__57) | ( - 1 << OpenSCENARIO2Parser.T__58))) != 0) or _la == OpenSCENARIO2Parser.Identifier): + if not ( + ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__27) + | (1 << OpenSCENARIO2Parser.T__35) + | (1 << OpenSCENARIO2Parser.T__38) + | (1 << OpenSCENARIO2Parser.T__41) + | (1 << OpenSCENARIO2Parser.T__51) + | (1 << OpenSCENARIO2Parser.T__57) + | (1 << OpenSCENARIO2Parser.T__58) + ) + ) + != 0 + ) + or _la == OpenSCENARIO2Parser.Identifier + ): break self.state = 442 @@ -2448,9 +13593,11 @@ def structDeclaration(self): return localctx class StructInhertsContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2458,7 +13605,9 @@ def structName(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.StructNameContext, 0) def inheritsCondition(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.InheritsConditionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.InheritsConditionContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_structInherts @@ -2478,7 +13627,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def structInherts(self): - localctx = OpenSCENARIO2Parser.StructInhertsContext(self, self._ctx, self.state) self.enterRule(localctx, 50, self.RULE_structInherts) self._la = 0 # Token type @@ -2495,7 +13643,6 @@ def structInherts(self): self.state = 449 self.inheritsCondition() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2505,26 +13652,38 @@ def structInherts(self): return localctx class StructMemberDeclContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def eventDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventDeclarationContext, 0 + ) def fieldDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.FieldDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.FieldDeclarationContext, 0 + ) def constraintDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ConstraintDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ConstraintDeclarationContext, 0 + ) def methodDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.MethodDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.MethodDeclarationContext, 0 + ) def coverageDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.CoverageDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.CoverageDeclarationContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_structMemberDecl @@ -2544,8 +13703,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def structMemberDecl(self): - - localctx = OpenSCENARIO2Parser.StructMemberDeclContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.StructMemberDeclContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 52, self.RULE_structMemberDecl) try: self.state = 457 @@ -2588,9 +13748,11 @@ def structMemberDecl(self): return localctx class FieldNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2615,7 +13777,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def fieldName(self): - localctx = OpenSCENARIO2Parser.FieldNameContext(self, self._ctx, self.state) self.enterRule(localctx, 54, self.RULE_fieldName) try: @@ -2631,9 +13792,11 @@ def fieldName(self): return localctx class StructNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2658,7 +13821,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def structName(self): - localctx = OpenSCENARIO2Parser.StructNameContext(self, self._ctx, self.state) self.enterRule(localctx, 56, self.RULE_structName) try: @@ -2674,9 +13836,11 @@ def structName(self): return localctx class ActorDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2697,9 +13861,13 @@ def DEDENT(self): def actorMemberDecl(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.ActorMemberDeclContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.ActorMemberDeclContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ActorMemberDeclContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ActorMemberDeclContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_actorDeclaration @@ -2719,8 +13887,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def actorDeclaration(self): - - localctx = OpenSCENARIO2Parser.ActorDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ActorDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 58, self.RULE_actorDeclaration) self._la = 0 # Token type try: @@ -2755,11 +13924,25 @@ def actorDeclaration(self): self.state = 474 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__27) | (1 << OpenSCENARIO2Parser.T__35) | ( - 1 << OpenSCENARIO2Parser.T__38) | (1 << OpenSCENARIO2Parser.T__41) | ( - 1 << OpenSCENARIO2Parser.T__51) | (1 << OpenSCENARIO2Parser.T__57) | ( - 1 << OpenSCENARIO2Parser.T__58))) != 0) or _la == OpenSCENARIO2Parser.Identifier): + if not ( + ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__27) + | (1 << OpenSCENARIO2Parser.T__35) + | (1 << OpenSCENARIO2Parser.T__38) + | (1 << OpenSCENARIO2Parser.T__41) + | (1 << OpenSCENARIO2Parser.T__51) + | (1 << OpenSCENARIO2Parser.T__57) + | (1 << OpenSCENARIO2Parser.T__58) + ) + ) + != 0 + ) + or _la == OpenSCENARIO2Parser.Identifier + ): break self.state = 476 @@ -2781,9 +13964,11 @@ def actorDeclaration(self): return localctx class ActorInhertsContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2791,7 +13976,9 @@ def actorName(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ActorNameContext, 0) def inheritsCondition(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.InheritsConditionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.InheritsConditionContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_actorInherts @@ -2811,7 +13998,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def actorInherts(self): - localctx = OpenSCENARIO2Parser.ActorInhertsContext(self, self._ctx, self.state) self.enterRule(localctx, 60, self.RULE_actorInherts) self._la = 0 # Token type @@ -2828,7 +14014,6 @@ def actorInherts(self): self.state = 483 self.inheritsCondition() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -2838,26 +14023,38 @@ def actorInherts(self): return localctx class ActorMemberDeclContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def eventDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventDeclarationContext, 0 + ) def fieldDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.FieldDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.FieldDeclarationContext, 0 + ) def constraintDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ConstraintDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ConstraintDeclarationContext, 0 + ) def methodDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.MethodDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.MethodDeclarationContext, 0 + ) def coverageDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.CoverageDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.CoverageDeclarationContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_actorMemberDecl @@ -2877,8 +14074,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def actorMemberDecl(self): - - localctx = OpenSCENARIO2Parser.ActorMemberDeclContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ActorMemberDeclContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 62, self.RULE_actorMemberDecl) try: self.state = 491 @@ -2921,9 +14119,11 @@ def actorMemberDecl(self): return localctx class ActorNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -2948,7 +14148,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def actorName(self): - localctx = OpenSCENARIO2Parser.ActorNameContext(self, self._ctx, self.state) self.enterRule(localctx, 64, self.RULE_actorName) try: @@ -2964,20 +14163,26 @@ def actorName(self): return localctx class ScenarioDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def qualifiedBehaviorName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) def scenarioInherts(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ScenarioInhertsContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ScenarioInhertsContext, 0 + ) def INDENT(self): return self.getToken(OpenSCENARIO2Parser.INDENT, 0) @@ -2987,15 +14192,23 @@ def DEDENT(self): def scenarioMemberDecl(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.ScenarioMemberDeclContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.ScenarioMemberDeclContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ScenarioMemberDeclContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ScenarioMemberDeclContext, i + ) def behaviorSpecification(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.BehaviorSpecificationContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.BehaviorSpecificationContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.BehaviorSpecificationContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BehaviorSpecificationContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_scenarioDeclaration @@ -3015,8 +14228,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def scenarioDeclaration(self): - - localctx = OpenSCENARIO2Parser.ScenarioDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ScenarioDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 66, self.RULE_scenarioDeclaration) self._la = 0 # Token type try: @@ -3049,13 +14263,23 @@ def scenarioDeclaration(self): self.state = 505 self._errHandler.sync(self) token = self._input.LA(1) - if token in [OpenSCENARIO2Parser.T__27, OpenSCENARIO2Parser.T__35, OpenSCENARIO2Parser.T__38, - OpenSCENARIO2Parser.T__41, OpenSCENARIO2Parser.T__51, OpenSCENARIO2Parser.T__57, - OpenSCENARIO2Parser.T__58, OpenSCENARIO2Parser.Identifier]: + if token in [ + OpenSCENARIO2Parser.T__27, + OpenSCENARIO2Parser.T__35, + OpenSCENARIO2Parser.T__38, + OpenSCENARIO2Parser.T__41, + OpenSCENARIO2Parser.T__51, + OpenSCENARIO2Parser.T__57, + OpenSCENARIO2Parser.T__58, + OpenSCENARIO2Parser.Identifier, + ]: self.state = 503 self.scenarioMemberDecl() pass - elif token in [OpenSCENARIO2Parser.T__42, OpenSCENARIO2Parser.T__43]: + elif token in [ + OpenSCENARIO2Parser.T__42, + OpenSCENARIO2Parser.T__43, + ]: self.state = 504 self.behaviorSpecification() pass @@ -3065,12 +14289,27 @@ def scenarioDeclaration(self): self.state = 507 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__27) | (1 << OpenSCENARIO2Parser.T__35) | ( - 1 << OpenSCENARIO2Parser.T__38) | (1 << OpenSCENARIO2Parser.T__41) | ( - 1 << OpenSCENARIO2Parser.T__42) | (1 << OpenSCENARIO2Parser.T__43) | ( - 1 << OpenSCENARIO2Parser.T__51) | (1 << OpenSCENARIO2Parser.T__57) | ( - 1 << OpenSCENARIO2Parser.T__58))) != 0) or _la == OpenSCENARIO2Parser.Identifier): + if not ( + ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__27) + | (1 << OpenSCENARIO2Parser.T__35) + | (1 << OpenSCENARIO2Parser.T__38) + | (1 << OpenSCENARIO2Parser.T__41) + | (1 << OpenSCENARIO2Parser.T__42) + | (1 << OpenSCENARIO2Parser.T__43) + | (1 << OpenSCENARIO2Parser.T__51) + | (1 << OpenSCENARIO2Parser.T__57) + | (1 << OpenSCENARIO2Parser.T__58) + ) + ) + != 0 + ) + or _la == OpenSCENARIO2Parser.Identifier + ): break self.state = 509 @@ -3092,17 +14331,23 @@ def scenarioDeclaration(self): return localctx class ScenarioInhertsContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def qualifiedBehaviorName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0 + ) def inheritsCondition(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.InheritsConditionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.InheritsConditionContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_scenarioInherts @@ -3122,8 +14367,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def scenarioInherts(self): - - localctx = OpenSCENARIO2Parser.ScenarioInhertsContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ScenarioInhertsContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 68, self.RULE_scenarioInherts) self._la = 0 # Token type try: @@ -3139,7 +14385,6 @@ def scenarioInherts(self): self.state = 516 self.inheritsCondition() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3149,29 +14394,43 @@ def scenarioInherts(self): return localctx class ScenarioMemberDeclContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def eventDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventDeclarationContext, 0 + ) def fieldDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.FieldDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.FieldDeclarationContext, 0 + ) def constraintDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ConstraintDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ConstraintDeclarationContext, 0 + ) def methodDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.MethodDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.MethodDeclarationContext, 0 + ) def coverageDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.CoverageDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.CoverageDeclarationContext, 0 + ) def modifierInvocation(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ModifierInvocationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ModifierInvocationContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_scenarioMemberDecl @@ -3191,8 +14450,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def scenarioMemberDecl(self): - - localctx = OpenSCENARIO2Parser.ScenarioMemberDeclContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ScenarioMemberDeclContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 70, self.RULE_scenarioMemberDecl) try: self.state = 525 @@ -3234,7 +14494,6 @@ def scenarioMemberDecl(self): self.modifierInvocation() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3244,9 +14503,11 @@ def scenarioMemberDecl(self): return localctx class QualifiedBehaviorNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -3274,8 +14535,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def qualifiedBehaviorName(self): - - localctx = OpenSCENARIO2Parser.QualifiedBehaviorNameContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.QualifiedBehaviorNameContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 72, self.RULE_qualifiedBehaviorName) try: self.enterOuterAlt(localctx, 1) @@ -3299,9 +14561,11 @@ def qualifiedBehaviorName(self): return localctx class BehaviorNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -3326,7 +14590,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def behaviorName(self): - localctx = OpenSCENARIO2Parser.BehaviorNameContext(self, self._ctx, self.state) self.enterRule(localctx, 74, self.RULE_behaviorName) try: @@ -3342,14 +14605,18 @@ def behaviorName(self): return localctx class ActionDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def qualifiedBehaviorName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -3365,15 +14632,23 @@ def DEDENT(self): def scenarioMemberDecl(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.ScenarioMemberDeclContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.ScenarioMemberDeclContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ScenarioMemberDeclContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ScenarioMemberDeclContext, i + ) def behaviorSpecification(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.BehaviorSpecificationContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.BehaviorSpecificationContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.BehaviorSpecificationContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BehaviorSpecificationContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_actionDeclaration @@ -3393,8 +14668,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def actionDeclaration(self): - - localctx = OpenSCENARIO2Parser.ActionDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ActionDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 76, self.RULE_actionDeclaration) self._la = 0 # Token type try: @@ -3427,13 +14703,23 @@ def actionDeclaration(self): self.state = 546 self._errHandler.sync(self) token = self._input.LA(1) - if token in [OpenSCENARIO2Parser.T__27, OpenSCENARIO2Parser.T__35, OpenSCENARIO2Parser.T__38, - OpenSCENARIO2Parser.T__41, OpenSCENARIO2Parser.T__51, OpenSCENARIO2Parser.T__57, - OpenSCENARIO2Parser.T__58, OpenSCENARIO2Parser.Identifier]: + if token in [ + OpenSCENARIO2Parser.T__27, + OpenSCENARIO2Parser.T__35, + OpenSCENARIO2Parser.T__38, + OpenSCENARIO2Parser.T__41, + OpenSCENARIO2Parser.T__51, + OpenSCENARIO2Parser.T__57, + OpenSCENARIO2Parser.T__58, + OpenSCENARIO2Parser.Identifier, + ]: self.state = 544 self.scenarioMemberDecl() pass - elif token in [OpenSCENARIO2Parser.T__42, OpenSCENARIO2Parser.T__43]: + elif token in [ + OpenSCENARIO2Parser.T__42, + OpenSCENARIO2Parser.T__43, + ]: self.state = 545 self.behaviorSpecification() pass @@ -3443,12 +14729,27 @@ def actionDeclaration(self): self.state = 548 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__27) | (1 << OpenSCENARIO2Parser.T__35) | ( - 1 << OpenSCENARIO2Parser.T__38) | (1 << OpenSCENARIO2Parser.T__41) | ( - 1 << OpenSCENARIO2Parser.T__42) | (1 << OpenSCENARIO2Parser.T__43) | ( - 1 << OpenSCENARIO2Parser.T__51) | (1 << OpenSCENARIO2Parser.T__57) | ( - 1 << OpenSCENARIO2Parser.T__58))) != 0) or _la == OpenSCENARIO2Parser.Identifier): + if not ( + ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__27) + | (1 << OpenSCENARIO2Parser.T__35) + | (1 << OpenSCENARIO2Parser.T__38) + | (1 << OpenSCENARIO2Parser.T__41) + | (1 << OpenSCENARIO2Parser.T__42) + | (1 << OpenSCENARIO2Parser.T__43) + | (1 << OpenSCENARIO2Parser.T__51) + | (1 << OpenSCENARIO2Parser.T__57) + | (1 << OpenSCENARIO2Parser.T__58) + ) + ) + != 0 + ) + or _la == OpenSCENARIO2Parser.Identifier + ): break self.state = 550 @@ -3470,17 +14771,23 @@ def actionDeclaration(self): return localctx class ActionInhertsContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def qualifiedBehaviorName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0 + ) def inheritsCondition(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.InheritsConditionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.InheritsConditionContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_actionInherts @@ -3500,7 +14807,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def actionInherts(self): - localctx = OpenSCENARIO2Parser.ActionInhertsContext(self, self._ctx, self.state) self.enterRule(localctx, 78, self.RULE_actionInherts) self._la = 0 # Token type @@ -3517,7 +14823,6 @@ def actionInherts(self): self.state = 557 self.inheritsCondition() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3527,9 +14832,11 @@ def actionInherts(self): return localctx class ModifierDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -3543,7 +14850,9 @@ def actorName(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ActorNameContext, 0) def qualifiedBehaviorName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0 + ) def INDENT(self): return self.getToken(OpenSCENARIO2Parser.INDENT, 0) @@ -3553,9 +14862,13 @@ def DEDENT(self): def scenarioMemberDecl(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.ScenarioMemberDeclContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.ScenarioMemberDeclContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ScenarioMemberDeclContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ScenarioMemberDeclContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_modifierDeclaration @@ -3575,8 +14888,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def modifierDeclaration(self): - - localctx = OpenSCENARIO2Parser.ModifierDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ModifierDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 80, self.RULE_modifierDeclaration) self._la = 0 # Token type try: @@ -3622,11 +14936,25 @@ def modifierDeclaration(self): self.state = 577 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__27) | (1 << OpenSCENARIO2Parser.T__35) | ( - 1 << OpenSCENARIO2Parser.T__38) | (1 << OpenSCENARIO2Parser.T__41) | ( - 1 << OpenSCENARIO2Parser.T__51) | (1 << OpenSCENARIO2Parser.T__57) | ( - 1 << OpenSCENARIO2Parser.T__58))) != 0) or _la == OpenSCENARIO2Parser.Identifier): + if not ( + ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__27) + | (1 << OpenSCENARIO2Parser.T__35) + | (1 << OpenSCENARIO2Parser.T__38) + | (1 << OpenSCENARIO2Parser.T__41) + | (1 << OpenSCENARIO2Parser.T__51) + | (1 << OpenSCENARIO2Parser.T__57) + | (1 << OpenSCENARIO2Parser.T__58) + ) + ) + != 0 + ) + or _la == OpenSCENARIO2Parser.Identifier + ): break self.state = 579 @@ -3648,9 +14976,11 @@ def modifierDeclaration(self): return localctx class ModifierNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -3675,7 +15005,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def modifierName(self): - localctx = OpenSCENARIO2Parser.ModifierNameContext(self, self._ctx, self.state) self.enterRule(localctx, 82, self.RULE_modifierName) try: @@ -3691,17 +15020,23 @@ def modifierName(self): return localctx class TypeExtensionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def enumTypeExtension(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumTypeExtensionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EnumTypeExtensionContext, 0 + ) def structuredTypeExtension(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.StructuredTypeExtensionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.StructuredTypeExtensionContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_typeExtension @@ -3721,7 +15056,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def typeExtension(self): - localctx = OpenSCENARIO2Parser.TypeExtensionContext(self, self._ctx, self.state) self.enterRule(localctx, 84, self.RULE_typeExtension) try: @@ -3740,7 +15074,6 @@ def typeExtension(self): self.structuredTypeExtension() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3750,9 +15083,11 @@ def typeExtension(self): return localctx class EnumTypeExtensionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -3764,9 +15099,13 @@ def OPEN_BRACK(self): def enumMemberDecl(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.EnumMemberDeclContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.EnumMemberDeclContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumMemberDeclContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EnumMemberDeclContext, i + ) def CLOSE_BRACK(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_BRACK, 0) @@ -3792,8 +15131,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def enumTypeExtension(self): - - localctx = OpenSCENARIO2Parser.EnumTypeExtensionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EnumTypeExtensionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 86, self.RULE_enumTypeExtension) self._la = 0 # Token type try: @@ -3833,14 +15173,18 @@ def enumTypeExtension(self): return localctx class StructuredTypeExtensionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def extendableTypeName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ExtendableTypeNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ExtendableTypeNameContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -3853,9 +15197,13 @@ def DEDENT(self): def extensionMemberDecl(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.ExtensionMemberDeclContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.ExtensionMemberDeclContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ExtensionMemberDeclContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ExtensionMemberDeclContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_structuredTypeExtension @@ -3875,8 +15223,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def structuredTypeExtension(self): - - localctx = OpenSCENARIO2Parser.StructuredTypeExtensionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.StructuredTypeExtensionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 88, self.RULE_structuredTypeExtension) self._la = 0 # Token type try: @@ -3900,12 +15249,27 @@ def structuredTypeExtension(self): self.state = 613 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__27) | (1 << OpenSCENARIO2Parser.T__35) | ( - 1 << OpenSCENARIO2Parser.T__38) | (1 << OpenSCENARIO2Parser.T__41) | ( - 1 << OpenSCENARIO2Parser.T__42) | (1 << OpenSCENARIO2Parser.T__43) | ( - 1 << OpenSCENARIO2Parser.T__51) | (1 << OpenSCENARIO2Parser.T__57) | ( - 1 << OpenSCENARIO2Parser.T__58))) != 0) or _la == OpenSCENARIO2Parser.Identifier): + if not ( + ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__27) + | (1 << OpenSCENARIO2Parser.T__35) + | (1 << OpenSCENARIO2Parser.T__38) + | (1 << OpenSCENARIO2Parser.T__41) + | (1 << OpenSCENARIO2Parser.T__42) + | (1 << OpenSCENARIO2Parser.T__43) + | (1 << OpenSCENARIO2Parser.T__51) + | (1 << OpenSCENARIO2Parser.T__57) + | (1 << OpenSCENARIO2Parser.T__58) + ) + ) + != 0 + ) + or _la == OpenSCENARIO2Parser.Identifier + ): break self.state = 615 @@ -3919,9 +15283,11 @@ def structuredTypeExtension(self): return localctx class ExtendableTypeNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -3929,7 +15295,9 @@ def typeName(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeNameContext, 0) def qualifiedBehaviorName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_extendableTypeName @@ -3949,8 +15317,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def extendableTypeName(self): - - localctx = OpenSCENARIO2Parser.ExtendableTypeNameContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ExtendableTypeNameContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 90, self.RULE_extendableTypeName) try: self.state = 619 @@ -3968,7 +15337,6 @@ def extendableTypeName(self): self.qualifiedBehaviorName() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3978,23 +15346,33 @@ def extendableTypeName(self): return localctx class ExtensionMemberDeclContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def structMemberDecl(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.StructMemberDeclContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.StructMemberDeclContext, 0 + ) def actorMemberDecl(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ActorMemberDeclContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ActorMemberDeclContext, 0 + ) def scenarioMemberDecl(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ScenarioMemberDeclContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ScenarioMemberDeclContext, 0 + ) def behaviorSpecification(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.BehaviorSpecificationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BehaviorSpecificationContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_extensionMemberDecl @@ -4014,8 +15392,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def extensionMemberDecl(self): - - localctx = OpenSCENARIO2Parser.ExtensionMemberDeclContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ExtensionMemberDeclContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 92, self.RULE_extensionMemberDecl) try: self.state = 625 @@ -4045,7 +15424,6 @@ def extensionMemberDecl(self): self.behaviorSpecification() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4055,9 +15433,11 @@ def extensionMemberDecl(self): return localctx class GlobalParameterDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4068,10 +15448,14 @@ def fieldName(self, i: int = None): return self.getTypedRuleContext(OpenSCENARIO2Parser.FieldNameContext, i) def typeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.TypeDeclaratorContext, 0 + ) def parameterWithDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ParameterWithDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ParameterWithDeclarationContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -4097,8 +15481,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def globalParameterDeclaration(self): - - localctx = OpenSCENARIO2Parser.GlobalParameterDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.GlobalParameterDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 94, self.RULE_globalParameterDeclaration) self._la = 0 # Token type try: @@ -4155,17 +15540,23 @@ def globalParameterDeclaration(self): return localctx class TypeDeclaratorContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def nonAggregateTypeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext, 0 + ) def aggregateTypeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.AggregateTypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.AggregateTypeDeclaratorContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_typeDeclarator @@ -4185,15 +15576,22 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def typeDeclarator(self): - - localctx = OpenSCENARIO2Parser.TypeDeclaratorContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.TypeDeclaratorContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 96, self.RULE_typeDeclarator) try: self.state = 648 self._errHandler.sync(self) token = self._input.LA(1) - if token in [OpenSCENARIO2Parser.T__22, OpenSCENARIO2Parser.T__23, OpenSCENARIO2Parser.T__24, - OpenSCENARIO2Parser.T__25, OpenSCENARIO2Parser.T__26, OpenSCENARIO2Parser.Identifier]: + if token in [ + OpenSCENARIO2Parser.T__22, + OpenSCENARIO2Parser.T__23, + OpenSCENARIO2Parser.T__24, + OpenSCENARIO2Parser.T__25, + OpenSCENARIO2Parser.T__26, + OpenSCENARIO2Parser.Identifier, + ]: self.enterOuterAlt(localctx, 1) self.state = 646 self.nonAggregateTypeDeclarator() @@ -4215,9 +15613,11 @@ def typeDeclarator(self): return localctx class NonAggregateTypeDeclaratorContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4228,7 +15628,9 @@ def typeName(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeNameContext, 0) def qualifiedBehaviorName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.QualifiedBehaviorNameContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_nonAggregateTypeDeclarator @@ -4248,8 +15650,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def nonAggregateTypeDeclarator(self): - - localctx = OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 98, self.RULE_nonAggregateTypeDeclarator) try: self.state = 653 @@ -4273,7 +15676,6 @@ def nonAggregateTypeDeclarator(self): self.qualifiedBehaviorName() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4283,14 +15685,18 @@ def nonAggregateTypeDeclarator(self): return localctx class AggregateTypeDeclaratorContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def listTypeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ListTypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ListTypeDeclaratorContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_aggregateTypeDeclarator @@ -4310,8 +15716,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def aggregateTypeDeclarator(self): - - localctx = OpenSCENARIO2Parser.AggregateTypeDeclaratorContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.AggregateTypeDeclaratorContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 100, self.RULE_aggregateTypeDeclarator) try: self.enterOuterAlt(localctx, 1) @@ -4326,14 +15733,18 @@ def aggregateTypeDeclarator(self): return localctx class ListTypeDeclaratorContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def nonAggregateTypeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_listTypeDeclarator @@ -4353,8 +15764,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def listTypeDeclarator(self): - - localctx = OpenSCENARIO2Parser.ListTypeDeclaratorContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ListTypeDeclaratorContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 102, self.RULE_listTypeDeclarator) try: self.enterOuterAlt(localctx, 1) @@ -4373,9 +15785,11 @@ def listTypeDeclarator(self): return localctx class PrimitiveTypeContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4397,7 +15811,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def primitiveType(self): - localctx = OpenSCENARIO2Parser.PrimitiveTypeContext(self, self._ctx, self.state) self.enterRule(localctx, 104, self.RULE_primitiveType) self._la = 0 # Token type @@ -4405,10 +15818,22 @@ def primitiveType(self): self.enterOuterAlt(localctx, 1) self.state = 661 _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__22) | (1 << OpenSCENARIO2Parser.T__23) | ( - 1 << OpenSCENARIO2Parser.T__24) | (1 << OpenSCENARIO2Parser.T__25) | ( - 1 << OpenSCENARIO2Parser.T__26))) != 0)): + if not ( + ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__22) + | (1 << OpenSCENARIO2Parser.T__23) + | (1 << OpenSCENARIO2Parser.T__24) + | (1 << OpenSCENARIO2Parser.T__25) + | (1 << OpenSCENARIO2Parser.T__26) + ) + ) + != 0 + ) + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -4422,9 +15847,11 @@ def primitiveType(self): return localctx class TypeNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4449,7 +15876,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def typeName(self): - localctx = OpenSCENARIO2Parser.TypeNameContext(self, self._ctx, self.state) self.enterRule(localctx, 106, self.RULE_typeName) try: @@ -4465,9 +15891,11 @@ def typeName(self): return localctx class EventDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4481,13 +15909,17 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def argumentListSpecification(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ArgumentListSpecificationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ArgumentListSpecificationContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) def eventSpecification(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventSpecificationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventSpecificationContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_eventDeclaration @@ -4507,8 +15939,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def eventDeclaration(self): - - localctx = OpenSCENARIO2Parser.EventDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EventDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 108, self.RULE_eventDeclaration) self._la = 0 # Token type try: @@ -4548,20 +15981,28 @@ def eventDeclaration(self): return localctx class EventSpecificationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def eventReference(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventReferenceContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventReferenceContext, 0 + ) def eventCondition(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventConditionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventConditionContext, 0 + ) def eventFieldDecl(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventFieldDeclContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventFieldDeclContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_eventSpecification @@ -4581,8 +16022,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def eventSpecification(self): - - localctx = OpenSCENARIO2Parser.EventSpecificationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EventSpecificationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 110, self.RULE_eventSpecification) self._la = 0 # Token type try: @@ -4610,13 +16052,25 @@ def eventSpecification(self): self.eventCondition() pass - elif token in [OpenSCENARIO2Parser.T__31, OpenSCENARIO2Parser.T__32, OpenSCENARIO2Parser.T__33, - OpenSCENARIO2Parser.T__34, OpenSCENARIO2Parser.T__59, OpenSCENARIO2Parser.T__64, - OpenSCENARIO2Parser.T__72, OpenSCENARIO2Parser.T__76, OpenSCENARIO2Parser.OPEN_BRACK, - OpenSCENARIO2Parser.OPEN_PAREN, OpenSCENARIO2Parser.StringLiteral, - OpenSCENARIO2Parser.FloatLiteral, OpenSCENARIO2Parser.UintLiteral, - OpenSCENARIO2Parser.HexUintLiteral, OpenSCENARIO2Parser.IntLiteral, - OpenSCENARIO2Parser.BoolLiteral, OpenSCENARIO2Parser.Identifier]: + elif token in [ + OpenSCENARIO2Parser.T__31, + OpenSCENARIO2Parser.T__32, + OpenSCENARIO2Parser.T__33, + OpenSCENARIO2Parser.T__34, + OpenSCENARIO2Parser.T__59, + OpenSCENARIO2Parser.T__64, + OpenSCENARIO2Parser.T__72, + OpenSCENARIO2Parser.T__76, + OpenSCENARIO2Parser.OPEN_BRACK, + OpenSCENARIO2Parser.OPEN_PAREN, + OpenSCENARIO2Parser.StringLiteral, + OpenSCENARIO2Parser.FloatLiteral, + OpenSCENARIO2Parser.UintLiteral, + OpenSCENARIO2Parser.HexUintLiteral, + OpenSCENARIO2Parser.IntLiteral, + OpenSCENARIO2Parser.BoolLiteral, + OpenSCENARIO2Parser.Identifier, + ]: self.enterOuterAlt(localctx, 2) self.state = 687 self.eventCondition() @@ -4633,9 +16087,11 @@ def eventSpecification(self): return localctx class EventReferenceContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4660,8 +16116,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def eventReference(self): - - localctx = OpenSCENARIO2Parser.EventReferenceContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EventReferenceContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 112, self.RULE_eventReference) try: self.enterOuterAlt(localctx, 1) @@ -4678,14 +16135,18 @@ def eventReference(self): return localctx class EventFieldDeclContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def eventFieldName(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventFieldNameContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventFieldNameContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_eventFieldDecl @@ -4705,8 +16166,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def eventFieldDecl(self): - - localctx = OpenSCENARIO2Parser.EventFieldDeclContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EventFieldDeclContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 114, self.RULE_eventFieldDecl) try: self.enterOuterAlt(localctx, 1) @@ -4723,9 +16185,11 @@ def eventFieldDecl(self): return localctx class EventFieldNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4750,8 +16214,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def eventFieldName(self): - - localctx = OpenSCENARIO2Parser.EventFieldNameContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EventFieldNameContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 116, self.RULE_eventFieldName) try: self.enterOuterAlt(localctx, 1) @@ -4766,9 +16231,11 @@ def eventFieldName(self): return localctx class EventNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4793,7 +16260,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def eventName(self): - localctx = OpenSCENARIO2Parser.EventNameContext(self, self._ctx, self.state) self.enterRule(localctx, 118, self.RULE_eventName) try: @@ -4809,9 +16275,11 @@ def eventName(self): return localctx class EventPathContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4839,7 +16307,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def eventPath(self): - localctx = OpenSCENARIO2Parser.EventPathContext(self, self._ctx, self.state) self.enterRule(localctx, 120, self.RULE_eventPath) try: @@ -4864,26 +16331,38 @@ def eventPath(self): return localctx class EventConditionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def boolExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.BoolExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BoolExpressionContext, 0 + ) def riseExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.RiseExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.RiseExpressionContext, 0 + ) def fallExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.FallExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.FallExpressionContext, 0 + ) def elapsedExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ElapsedExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ElapsedExpressionContext, 0 + ) def everyExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EveryExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EveryExpressionContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_eventCondition @@ -4903,19 +16382,29 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def eventCondition(self): - - localctx = OpenSCENARIO2Parser.EventConditionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EventConditionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 122, self.RULE_eventCondition) try: self.state = 712 self._errHandler.sync(self) token = self._input.LA(1) - if token in [OpenSCENARIO2Parser.T__59, OpenSCENARIO2Parser.T__64, OpenSCENARIO2Parser.T__72, - OpenSCENARIO2Parser.T__76, OpenSCENARIO2Parser.OPEN_BRACK, OpenSCENARIO2Parser.OPEN_PAREN, - OpenSCENARIO2Parser.StringLiteral, OpenSCENARIO2Parser.FloatLiteral, - OpenSCENARIO2Parser.UintLiteral, OpenSCENARIO2Parser.HexUintLiteral, - OpenSCENARIO2Parser.IntLiteral, OpenSCENARIO2Parser.BoolLiteral, - OpenSCENARIO2Parser.Identifier]: + if token in [ + OpenSCENARIO2Parser.T__59, + OpenSCENARIO2Parser.T__64, + OpenSCENARIO2Parser.T__72, + OpenSCENARIO2Parser.T__76, + OpenSCENARIO2Parser.OPEN_BRACK, + OpenSCENARIO2Parser.OPEN_PAREN, + OpenSCENARIO2Parser.StringLiteral, + OpenSCENARIO2Parser.FloatLiteral, + OpenSCENARIO2Parser.UintLiteral, + OpenSCENARIO2Parser.HexUintLiteral, + OpenSCENARIO2Parser.IntLiteral, + OpenSCENARIO2Parser.BoolLiteral, + OpenSCENARIO2Parser.Identifier, + ]: self.enterOuterAlt(localctx, 1) self.state = 707 self.boolExpression() @@ -4952,9 +16441,11 @@ def eventCondition(self): return localctx class RiseExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -4962,7 +16453,9 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def boolExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.BoolExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BoolExpressionContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -4985,8 +16478,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def riseExpression(self): - - localctx = OpenSCENARIO2Parser.RiseExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.RiseExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 124, self.RULE_riseExpression) try: self.enterOuterAlt(localctx, 1) @@ -5007,9 +16501,11 @@ def riseExpression(self): return localctx class FallExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5017,7 +16513,9 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def boolExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.BoolExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BoolExpressionContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -5040,8 +16538,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def fallExpression(self): - - localctx = OpenSCENARIO2Parser.FallExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.FallExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 126, self.RULE_fallExpression) try: self.enterOuterAlt(localctx, 1) @@ -5062,9 +16561,11 @@ def fallExpression(self): return localctx class ElapsedExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5072,7 +16573,9 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def durationExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.DurationExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.DurationExpressionContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -5095,8 +16598,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def elapsedExpression(self): - - localctx = OpenSCENARIO2Parser.ElapsedExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ElapsedExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 128, self.RULE_elapsedExpression) try: self.enterOuterAlt(localctx, 1) @@ -5117,9 +16621,11 @@ def elapsedExpression(self): return localctx class EveryExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser self._Identifier = None # Token @@ -5129,9 +16635,13 @@ def OPEN_PAREN(self): def durationExpression(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.DurationExpressionContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.DurationExpressionContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.DurationExpressionContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.DurationExpressionContext, i + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -5157,8 +16667,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def everyExpression(self): - - localctx = OpenSCENARIO2Parser.EveryExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.EveryExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 130, self.RULE_everyExpression) self._la = 0 # Token type try: @@ -5178,8 +16689,10 @@ def everyExpression(self): self.state = 733 localctx._Identifier = self.match(OpenSCENARIO2Parser.Identifier) - offsetName = (None if localctx._Identifier is None else localctx._Identifier.text) - if (not (offsetName == "offset")): + offsetName = ( + None if localctx._Identifier is None else localctx._Identifier.text + ) + if not (offsetName == "offset"): print("%s must be offset" % offsetName) raise NoViableAltException(self) @@ -5199,9 +16712,11 @@ def everyExpression(self): return localctx class BoolExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5226,8 +16741,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def boolExpression(self): - - localctx = OpenSCENARIO2Parser.BoolExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.BoolExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 132, self.RULE_boolExpression) try: self.enterOuterAlt(localctx, 1) @@ -5242,9 +16758,11 @@ def boolExpression(self): return localctx class DurationExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5269,8 +16787,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def durationExpression(self): - - localctx = OpenSCENARIO2Parser.DurationExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.DurationExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 134, self.RULE_durationExpression) try: self.enterOuterAlt(localctx, 1) @@ -5285,17 +16804,23 @@ def durationExpression(self): return localctx class FieldDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def parameterDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ParameterDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ParameterDeclarationContext, 0 + ) def variableDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.VariableDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.VariableDeclarationContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_fieldDeclaration @@ -5315,8 +16840,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def fieldDeclaration(self): - - localctx = OpenSCENARIO2Parser.FieldDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.FieldDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 136, self.RULE_fieldDeclaration) try: self.state = 747 @@ -5344,9 +16870,11 @@ def fieldDeclaration(self): return localctx class ParameterDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5357,10 +16885,14 @@ def fieldName(self, i: int = None): return self.getTypedRuleContext(OpenSCENARIO2Parser.FieldNameContext, i) def typeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.TypeDeclaratorContext, 0 + ) def parameterWithDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ParameterWithDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ParameterWithDeclarationContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -5386,8 +16918,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def parameterDeclaration(self): - - localctx = OpenSCENARIO2Parser.ParameterDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ParameterDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 138, self.RULE_parameterDeclaration) self._la = 0 # Token type try: @@ -5442,9 +16975,11 @@ def parameterDeclaration(self): return localctx class VariableDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5455,13 +16990,17 @@ def fieldName(self, i: int = None): return self.getTypedRuleContext(OpenSCENARIO2Parser.FieldNameContext, i) def typeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.TypeDeclaratorContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) def sampleExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.SampleExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.SampleExpressionContext, 0 + ) def valueExp(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ValueExpContext, 0) @@ -5484,8 +17023,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def variableDeclaration(self): - - localctx = OpenSCENARIO2Parser.VariableDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.VariableDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 140, self.RULE_variableDeclaration) self._la = 0 # Token type try: @@ -5523,11 +17063,17 @@ def variableDeclaration(self): self.state = 779 self.sampleExpression() pass - elif token in [OpenSCENARIO2Parser.T__59, OpenSCENARIO2Parser.OPEN_BRACK, - OpenSCENARIO2Parser.StringLiteral, OpenSCENARIO2Parser.FloatLiteral, - OpenSCENARIO2Parser.UintLiteral, OpenSCENARIO2Parser.HexUintLiteral, - OpenSCENARIO2Parser.IntLiteral, OpenSCENARIO2Parser.BoolLiteral, - OpenSCENARIO2Parser.Identifier]: + elif token in [ + OpenSCENARIO2Parser.T__59, + OpenSCENARIO2Parser.OPEN_BRACK, + OpenSCENARIO2Parser.StringLiteral, + OpenSCENARIO2Parser.FloatLiteral, + OpenSCENARIO2Parser.UintLiteral, + OpenSCENARIO2Parser.HexUintLiteral, + OpenSCENARIO2Parser.IntLiteral, + OpenSCENARIO2Parser.BoolLiteral, + OpenSCENARIO2Parser.Identifier, + ]: self.state = 780 self.valueExp() pass @@ -5545,9 +17091,11 @@ def variableDeclaration(self): return localctx class SampleExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5558,7 +17106,9 @@ def expression(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ExpressionContext, 0) def eventSpecification(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventSpecificationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventSpecificationContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -5584,8 +17134,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def sampleExpression(self): - - localctx = OpenSCENARIO2Parser.SampleExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.SampleExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 142, self.RULE_sampleExpression) self._la = 0 # Token type try: @@ -5620,9 +17171,11 @@ def sampleExpression(self): return localctx class DefaultValueContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5647,7 +17200,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def defaultValue(self): - localctx = OpenSCENARIO2Parser.DefaultValueContext(self, self._ctx, self.state) self.enterRule(localctx, 144, self.RULE_defaultValue) try: @@ -5663,9 +17215,11 @@ def defaultValue(self): return localctx class ParameterWithDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5680,9 +17234,13 @@ def DEDENT(self): def parameterWithMember(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.ParameterWithMemberContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.ParameterWithMemberContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ParameterWithMemberContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ParameterWithMemberContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_parameterWithDeclaration @@ -5702,8 +17260,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def parameterWithDeclaration(self): - - localctx = OpenSCENARIO2Parser.ParameterWithDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ParameterWithDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 146, self.RULE_parameterWithDeclaration) self._la = 0 # Token type try: @@ -5725,9 +17284,21 @@ def parameterWithDeclaration(self): self.state = 807 self._errHandler.sync(self) _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__38) | (1 << OpenSCENARIO2Parser.T__41) | ( - 1 << OpenSCENARIO2Parser.T__57) | (1 << OpenSCENARIO2Parser.T__58))) != 0)): + if not ( + ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__38) + | (1 << OpenSCENARIO2Parser.T__41) + | (1 << OpenSCENARIO2Parser.T__57) + | (1 << OpenSCENARIO2Parser.T__58) + ) + ) + != 0 + ) + ): break self.state = 809 @@ -5741,17 +17312,23 @@ def parameterWithDeclaration(self): return localctx class ParameterWithMemberContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def constraintDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ConstraintDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ConstraintDeclarationContext, 0 + ) def coverageDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.CoverageDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.CoverageDeclarationContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_parameterWithMember @@ -5771,8 +17348,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def parameterWithMember(self): - - localctx = OpenSCENARIO2Parser.ParameterWithMemberContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ParameterWithMemberContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 148, self.RULE_parameterWithMember) try: self.state = 813 @@ -5800,17 +17378,23 @@ def parameterWithMember(self): return localctx class ConstraintDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def keepConstraintDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.KeepConstraintDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.KeepConstraintDeclarationContext, 0 + ) def removeDefaultDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.RemoveDefaultDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.RemoveDefaultDeclarationContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_constraintDeclaration @@ -5830,8 +17414,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def constraintDeclaration(self): - - localctx = OpenSCENARIO2Parser.ConstraintDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ConstraintDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 150, self.RULE_constraintDeclaration) try: self.state = 817 @@ -5859,9 +17444,11 @@ def constraintDeclaration(self): return localctx class KeepConstraintDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5869,7 +17456,9 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def constraintExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ConstraintExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ConstraintExpressionContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -5878,7 +17467,9 @@ def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) def constraintQualifier(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ConstraintQualifierContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ConstraintQualifierContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_keepConstraintDeclaration @@ -5898,8 +17489,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def keepConstraintDeclaration(self): - - localctx = OpenSCENARIO2Parser.KeepConstraintDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.KeepConstraintDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 152, self.RULE_keepConstraintDeclaration) self._la = 0 # Token type try: @@ -5930,9 +17522,11 @@ def keepConstraintDeclaration(self): return localctx class ConstraintQualifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -5954,15 +17548,18 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def constraintQualifier(self): - - localctx = OpenSCENARIO2Parser.ConstraintQualifierContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ConstraintQualifierContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 154, self.RULE_constraintQualifier) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 828 _la = self._input.LA(1) - if not (_la == OpenSCENARIO2Parser.T__39 or _la == OpenSCENARIO2Parser.T__40): + if not ( + _la == OpenSCENARIO2Parser.T__39 or _la == OpenSCENARIO2Parser.T__40 + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -5976,9 +17573,11 @@ def constraintQualifier(self): return localctx class ConstraintExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6003,8 +17602,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def constraintExpression(self): - - localctx = OpenSCENARIO2Parser.ConstraintExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ConstraintExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 156, self.RULE_constraintExpression) try: self.enterOuterAlt(localctx, 1) @@ -6019,9 +17619,11 @@ def constraintExpression(self): return localctx class RemoveDefaultDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6029,7 +17631,9 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def parameterReference(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ParameterReferenceContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ParameterReferenceContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -6055,8 +17659,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def removeDefaultDeclaration(self): - - localctx = OpenSCENARIO2Parser.RemoveDefaultDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.RemoveDefaultDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 158, self.RULE_removeDefaultDeclaration) try: self.enterOuterAlt(localctx, 1) @@ -6079,9 +17684,11 @@ def removeDefaultDeclaration(self): return localctx class ParameterReferenceContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6109,8 +17716,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def parameterReference(self): - - localctx = OpenSCENARIO2Parser.ParameterReferenceContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ParameterReferenceContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 160, self.RULE_parameterReference) try: self.state = 840 @@ -6128,7 +17736,6 @@ def parameterReference(self): self.fieldAccess() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6138,9 +17745,11 @@ def parameterReference(self): return localctx class ModifierInvocationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6160,10 +17769,14 @@ def argumentList(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ArgumentListContext, 0) def behaviorExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.BehaviorExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BehaviorExpressionContext, 0 + ) def actorExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ActorExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ActorExpressionContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_modifierInvocation @@ -6183,8 +17796,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def modifierInvocation(self): - - localctx = OpenSCENARIO2Parser.ModifierInvocationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ModifierInvocationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 162, self.RULE_modifierInvocation) self._la = 0 # Token type try: @@ -6216,18 +17830,24 @@ def modifierInvocation(self): self.state = 853 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 60)) & ~0x3f) == 0 and ((1 << (_la - 60)) & ( - (1 << (OpenSCENARIO2Parser.T__59 - 60)) | (1 << (OpenSCENARIO2Parser.T__64 - 60)) | ( - 1 << (OpenSCENARIO2Parser.T__72 - 60)) | (1 << (OpenSCENARIO2Parser.T__76 - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) | ( - 1 << (OpenSCENARIO2Parser.StringLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.UintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.IntLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.Identifier - 60)))) != 0): + if (((_la - 60)) & ~0x3F) == 0 and ( + (1 << (_la - 60)) + & ( + (1 << (OpenSCENARIO2Parser.T__59 - 60)) + | (1 << (OpenSCENARIO2Parser.T__64 - 60)) + | (1 << (OpenSCENARIO2Parser.T__72 - 60)) + | (1 << (OpenSCENARIO2Parser.T__76 - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) + | (1 << (OpenSCENARIO2Parser.StringLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.UintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.IntLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.Identifier - 60)) + ) + ) != 0: self.state = 852 self.argumentList() @@ -6244,9 +17864,11 @@ def modifierInvocation(self): return localctx class BehaviorExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6254,7 +17876,9 @@ def behaviorName(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.BehaviorNameContext, 0) def actorExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ActorExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ActorExpressionContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_behaviorExpression @@ -6274,8 +17898,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def behaviorExpression(self): - - localctx = OpenSCENARIO2Parser.BehaviorExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.BehaviorExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 164, self.RULE_behaviorExpression) try: self.enterOuterAlt(localctx, 1) @@ -6294,9 +17919,11 @@ def behaviorExpression(self): return localctx class BehaviorSpecificationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6324,8 +17951,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def behaviorSpecification(self): - - localctx = OpenSCENARIO2Parser.BehaviorSpecificationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.BehaviorSpecificationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 166, self.RULE_behaviorSpecification) try: self.state = 865 @@ -6353,14 +17981,18 @@ def behaviorSpecification(self): return localctx class OnDirectiveContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def eventSpecification(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventSpecificationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventSpecificationContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -6395,7 +18027,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def onDirective(self): - localctx = OpenSCENARIO2Parser.OnDirectiveContext(self, self._ctx, self.state) self.enterRule(localctx, 168, self.RULE_onDirective) self._la = 0 # Token type @@ -6420,7 +18051,9 @@ def onDirective(self): self.state = 875 self._errHandler.sync(self) _la = self._input.LA(1) - if not (_la == OpenSCENARIO2Parser.T__48 or _la == OpenSCENARIO2Parser.T__49): + if not ( + _la == OpenSCENARIO2Parser.T__48 or _la == OpenSCENARIO2Parser.T__49 + ): break self.state = 877 @@ -6434,9 +18067,11 @@ def onDirective(self): return localctx class OnMemberContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6464,7 +18099,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def onMember(self): - localctx = OpenSCENARIO2Parser.OnMemberContext(self, self._ctx, self.state) self.enterRule(localctx, 170, self.RULE_onMember) try: @@ -6493,9 +18127,11 @@ def onMember(self): return localctx class DoDirectiveContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6520,7 +18156,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def doDirective(self): - localctx = OpenSCENARIO2Parser.DoDirectiveContext(self, self._ctx, self.state) self.enterRule(localctx, 172, self.RULE_doDirective) try: @@ -6538,9 +18173,11 @@ def doDirective(self): return localctx class DoMemberContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6548,7 +18185,9 @@ def composition(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.CompositionContext, 0) def behaviorInvocation(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.BehaviorInvocationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BehaviorInvocationContext, 0 + ) def waitDirective(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.WaitDirectiveContext, 0) @@ -6580,7 +18219,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def doMember(self): - localctx = OpenSCENARIO2Parser.DoMemberContext(self, self._ctx, self.state) self.enterRule(localctx, 174, self.RULE_doMember) try: @@ -6597,7 +18235,11 @@ def doMember(self): self.state = 896 self._errHandler.sync(self) token = self._input.LA(1) - if token in [OpenSCENARIO2Parser.T__44, OpenSCENARIO2Parser.T__45, OpenSCENARIO2Parser.T__46]: + if token in [ + OpenSCENARIO2Parser.T__44, + OpenSCENARIO2Parser.T__45, + OpenSCENARIO2Parser.T__46, + ]: self.state = 891 self.composition() pass @@ -6629,14 +18271,18 @@ def doMember(self): return localctx class CompositionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def compositionOperator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.CompositionOperatorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.CompositionOperatorContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -6660,7 +18306,9 @@ def doMember(self, i: int = None): return self.getTypedRuleContext(OpenSCENARIO2Parser.DoMemberContext, i) def behaviorWithDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.BehaviorWithDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BehaviorWithDeclarationContext, 0 + ) def argumentList(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ArgumentListContext, 0) @@ -6683,7 +18331,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def composition(self): - localctx = OpenSCENARIO2Parser.CompositionContext(self, self._ctx, self.state) self.enterRule(localctx, 176, self.RULE_composition) self._la = 0 # Token type @@ -6700,18 +18347,24 @@ def composition(self): self.state = 901 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 60)) & ~0x3f) == 0 and ((1 << (_la - 60)) & ( - (1 << (OpenSCENARIO2Parser.T__59 - 60)) | (1 << (OpenSCENARIO2Parser.T__64 - 60)) | ( - 1 << (OpenSCENARIO2Parser.T__72 - 60)) | (1 << (OpenSCENARIO2Parser.T__76 - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) | ( - 1 << (OpenSCENARIO2Parser.StringLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.UintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.IntLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.Identifier - 60)))) != 0): + if (((_la - 60)) & ~0x3F) == 0 and ( + (1 << (_la - 60)) + & ( + (1 << (OpenSCENARIO2Parser.T__59 - 60)) + | (1 << (OpenSCENARIO2Parser.T__64 - 60)) + | (1 << (OpenSCENARIO2Parser.T__72 - 60)) + | (1 << (OpenSCENARIO2Parser.T__76 - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) + | (1 << (OpenSCENARIO2Parser.StringLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.UintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.IntLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.Identifier - 60)) + ) + ) != 0: self.state = 900 self.argumentList() @@ -6733,11 +18386,24 @@ def composition(self): self.state = 912 self._errHandler.sync(self) _la = self._input.LA(1) - if not (((((_la - 45)) & ~0x3f) == 0 and ((1 << (_la - 45)) & ( - (1 << (OpenSCENARIO2Parser.T__44 - 45)) | (1 << (OpenSCENARIO2Parser.T__45 - 45)) | ( - 1 << (OpenSCENARIO2Parser.T__46 - 45)) | (1 << (OpenSCENARIO2Parser.T__47 - 45)) | ( - 1 << (OpenSCENARIO2Parser.T__48 - 45)) | (1 << (OpenSCENARIO2Parser.T__49 - 45)) | ( - 1 << (OpenSCENARIO2Parser.Identifier - 45)))) != 0)): + if not ( + ( + (((_la - 45)) & ~0x3F) == 0 + and ( + (1 << (_la - 45)) + & ( + (1 << (OpenSCENARIO2Parser.T__44 - 45)) + | (1 << (OpenSCENARIO2Parser.T__45 - 45)) + | (1 << (OpenSCENARIO2Parser.T__46 - 45)) + | (1 << (OpenSCENARIO2Parser.T__47 - 45)) + | (1 << (OpenSCENARIO2Parser.T__48 - 45)) + | (1 << (OpenSCENARIO2Parser.T__49 - 45)) + | (1 << (OpenSCENARIO2Parser.Identifier - 45)) + ) + ) + != 0 + ) + ): break self.state = 914 @@ -6749,7 +18415,6 @@ def composition(self): self.state = 915 self.behaviorWithDeclaration() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6759,9 +18424,11 @@ def composition(self): return localctx class CompositionOperatorContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6783,17 +18450,29 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def compositionOperator(self): - - localctx = OpenSCENARIO2Parser.CompositionOperatorContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.CompositionOperatorContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 178, self.RULE_compositionOperator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 918 _la = self._input.LA(1) - if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & ( - (1 << OpenSCENARIO2Parser.T__44) | (1 << OpenSCENARIO2Parser.T__45) | ( - 1 << OpenSCENARIO2Parser.T__46))) != 0)): + if not ( + ( + ((_la) & ~0x3F) == 0 + and ( + (1 << _la) + & ( + (1 << OpenSCENARIO2Parser.T__44) + | (1 << OpenSCENARIO2Parser.T__45) + | (1 << OpenSCENARIO2Parser.T__46) + ) + ) + != 0 + ) + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -6807,9 +18486,11 @@ def compositionOperator(self): return localctx class BehaviorInvocationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6823,13 +18504,17 @@ def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) def behaviorWithDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.BehaviorWithDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BehaviorWithDeclarationContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) def actorExpression(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ActorExpressionContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ActorExpressionContext, 0 + ) def argumentList(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ArgumentListContext, 0) @@ -6852,8 +18537,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def behaviorInvocation(self): - - localctx = OpenSCENARIO2Parser.BehaviorInvocationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.BehaviorInvocationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 180, self.RULE_behaviorInvocation) self._la = 0 # Token type try: @@ -6874,18 +18560,24 @@ def behaviorInvocation(self): self.state = 928 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 60)) & ~0x3f) == 0 and ((1 << (_la - 60)) & ( - (1 << (OpenSCENARIO2Parser.T__59 - 60)) | (1 << (OpenSCENARIO2Parser.T__64 - 60)) | ( - 1 << (OpenSCENARIO2Parser.T__72 - 60)) | (1 << (OpenSCENARIO2Parser.T__76 - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) | ( - 1 << (OpenSCENARIO2Parser.StringLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.UintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.IntLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.Identifier - 60)))) != 0): + if (((_la - 60)) & ~0x3F) == 0 and ( + (1 << (_la - 60)) + & ( + (1 << (OpenSCENARIO2Parser.T__59 - 60)) + | (1 << (OpenSCENARIO2Parser.T__64 - 60)) + | (1 << (OpenSCENARIO2Parser.T__72 - 60)) + | (1 << (OpenSCENARIO2Parser.T__76 - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) + | (1 << (OpenSCENARIO2Parser.StringLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.UintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.IntLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.Identifier - 60)) + ) + ) != 0: self.state = 927 self.argumentList() @@ -6914,9 +18606,11 @@ def behaviorInvocation(self): return localctx class BehaviorWithDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -6931,9 +18625,13 @@ def DEDENT(self): def behaviorWithMember(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.BehaviorWithMemberContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.BehaviorWithMemberContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.BehaviorWithMemberContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.BehaviorWithMemberContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_behaviorWithDeclaration @@ -6953,8 +18651,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def behaviorWithDeclaration(self): - - localctx = OpenSCENARIO2Parser.BehaviorWithDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.BehaviorWithDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 182, self.RULE_behaviorWithDeclaration) self._la = 0 # Token type try: @@ -6976,9 +18675,21 @@ def behaviorWithDeclaration(self): self.state = 942 self._errHandler.sync(self) _la = self._input.LA(1) - if not (((((_la - 39)) & ~0x3f) == 0 and ((1 << (_la - 39)) & ( - (1 << (OpenSCENARIO2Parser.T__38 - 39)) | (1 << (OpenSCENARIO2Parser.T__41 - 39)) | ( - 1 << (OpenSCENARIO2Parser.T__50 - 39)) | (1 << (OpenSCENARIO2Parser.Identifier - 39)))) != 0)): + if not ( + ( + (((_la - 39)) & ~0x3F) == 0 + and ( + (1 << (_la - 39)) + & ( + (1 << (OpenSCENARIO2Parser.T__38 - 39)) + | (1 << (OpenSCENARIO2Parser.T__41 - 39)) + | (1 << (OpenSCENARIO2Parser.T__50 - 39)) + | (1 << (OpenSCENARIO2Parser.Identifier - 39)) + ) + ) + != 0 + ) + ): break self.state = 944 @@ -6992,20 +18703,28 @@ def behaviorWithDeclaration(self): return localctx class BehaviorWithMemberContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def constraintDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ConstraintDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ConstraintDeclarationContext, 0 + ) def modifierInvocation(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ModifierInvocationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ModifierInvocationContext, 0 + ) def untilDirective(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.UntilDirectiveContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.UntilDirectiveContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_behaviorWithMember @@ -7025,8 +18744,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def behaviorWithMember(self): - - localctx = OpenSCENARIO2Parser.BehaviorWithMemberContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.BehaviorWithMemberContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 184, self.RULE_behaviorWithMember) try: self.state = 949 @@ -7059,9 +18779,11 @@ def behaviorWithMember(self): return localctx class LabelNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7086,7 +18808,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def labelName(self): - localctx = OpenSCENARIO2Parser.LabelNameContext(self, self._ctx, self.state) self.enterRule(localctx, 186, self.RULE_labelName) try: @@ -7102,9 +18823,11 @@ def labelName(self): return localctx class ActorExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7129,8 +18852,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def actorExpression(self): - - localctx = OpenSCENARIO2Parser.ActorExpressionContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ActorExpressionContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 188, self.RULE_actorExpression) try: self.enterOuterAlt(localctx, 1) @@ -7145,14 +18869,18 @@ def actorExpression(self): return localctx class WaitDirectiveContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def eventSpecification(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventSpecificationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventSpecificationContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -7175,7 +18903,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def waitDirective(self): - localctx = OpenSCENARIO2Parser.WaitDirectiveContext(self, self._ctx, self.state) self.enterRule(localctx, 190, self.RULE_waitDirective) try: @@ -7195,9 +18922,11 @@ def waitDirective(self): return localctx class EmitDirectiveContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7234,7 +18963,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def emitDirective(self): - localctx = OpenSCENARIO2Parser.EmitDirectiveContext(self, self._ctx, self.state) self.enterRule(localctx, 192, self.RULE_emitDirective) self._la = 0 # Token type @@ -7266,14 +18994,18 @@ def emitDirective(self): return localctx class CallDirectiveContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def methodInvocation(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.MethodInvocationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.MethodInvocationContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -7296,7 +19028,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def callDirective(self): - localctx = OpenSCENARIO2Parser.CallDirectiveContext(self, self._ctx, self.state) self.enterRule(localctx, 194, self.RULE_callDirective) try: @@ -7316,14 +19047,18 @@ def callDirective(self): return localctx class UntilDirectiveContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def eventSpecification(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EventSpecificationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EventSpecificationContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) @@ -7346,8 +19081,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def untilDirective(self): - - localctx = OpenSCENARIO2Parser.UntilDirectiveContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.UntilDirectiveContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 196, self.RULE_untilDirective) try: self.enterOuterAlt(localctx, 1) @@ -7366,9 +19102,11 @@ def untilDirective(self): return localctx class MethodInvocationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7402,8 +19140,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def methodInvocation(self): - - localctx = OpenSCENARIO2Parser.MethodInvocationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.MethodInvocationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 198, self.RULE_methodInvocation) self._la = 0 # Token type try: @@ -7415,18 +19154,24 @@ def methodInvocation(self): self.state = 980 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 60)) & ~0x3f) == 0 and ((1 << (_la - 60)) & ( - (1 << (OpenSCENARIO2Parser.T__59 - 60)) | (1 << (OpenSCENARIO2Parser.T__64 - 60)) | ( - 1 << (OpenSCENARIO2Parser.T__72 - 60)) | (1 << (OpenSCENARIO2Parser.T__76 - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) | ( - 1 << (OpenSCENARIO2Parser.StringLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.UintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.IntLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.Identifier - 60)))) != 0): + if (((_la - 60)) & ~0x3F) == 0 and ( + (1 << (_la - 60)) + & ( + (1 << (OpenSCENARIO2Parser.T__59 - 60)) + | (1 << (OpenSCENARIO2Parser.T__64 - 60)) + | (1 << (OpenSCENARIO2Parser.T__72 - 60)) + | (1 << (OpenSCENARIO2Parser.T__76 - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) + | (1 << (OpenSCENARIO2Parser.StringLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.UintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.IntLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.Identifier - 60)) + ) + ) != 0: self.state = 979 self.argumentList() @@ -7441,9 +19186,11 @@ def methodInvocation(self): return localctx class MethodDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7457,13 +19204,17 @@ def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) def methodImplementation(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.MethodImplementationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.MethodImplementationContext, 0 + ) def NEWLINE(self): return self.getToken(OpenSCENARIO2Parser.NEWLINE, 0) def argumentListSpecification(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ArgumentListSpecificationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ArgumentListSpecificationContext, 0 + ) def returnType(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ReturnTypeContext, 0) @@ -7486,8 +19237,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def methodDeclaration(self): - - localctx = OpenSCENARIO2Parser.MethodDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.MethodDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 200, self.RULE_methodDeclaration) self._la = 0 # Token type try: @@ -7529,14 +19281,18 @@ def methodDeclaration(self): return localctx class ReturnTypeContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def typeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.TypeDeclaratorContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_returnType @@ -7556,7 +19312,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def returnType(self): - localctx = OpenSCENARIO2Parser.ReturnTypeContext(self, self._ctx, self.state) self.enterRule(localctx, 202, self.RULE_returnType) try: @@ -7572,9 +19327,11 @@ def returnType(self): return localctx class MethodImplementationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7582,7 +19339,9 @@ def expression(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ExpressionContext, 0) def structuredIdentifier(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.StructuredIdentifierContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.StructuredIdentifierContext, 0 + ) def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) @@ -7591,7 +19350,9 @@ def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) def methodQualifier(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.MethodQualifierContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.MethodQualifierContext, 0 + ) def argumentList(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ArgumentListContext, 0) @@ -7614,8 +19375,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def methodImplementation(self): - - localctx = OpenSCENARIO2Parser.MethodImplementationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.MethodImplementationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 204, self.RULE_methodImplementation) self._la = 0 # Token type try: @@ -7652,18 +19414,24 @@ def methodImplementation(self): self.state = 1011 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 60)) & ~0x3f) == 0 and ((1 << (_la - 60)) & ( - (1 << (OpenSCENARIO2Parser.T__59 - 60)) | (1 << (OpenSCENARIO2Parser.T__64 - 60)) | ( - 1 << (OpenSCENARIO2Parser.T__72 - 60)) | (1 << (OpenSCENARIO2Parser.T__76 - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) | ( - 1 << (OpenSCENARIO2Parser.StringLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.UintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.IntLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.Identifier - 60)))) != 0): + if (((_la - 60)) & ~0x3F) == 0 and ( + (1 << (_la - 60)) + & ( + (1 << (OpenSCENARIO2Parser.T__59 - 60)) + | (1 << (OpenSCENARIO2Parser.T__64 - 60)) + | (1 << (OpenSCENARIO2Parser.T__72 - 60)) + | (1 << (OpenSCENARIO2Parser.T__76 - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) + | (1 << (OpenSCENARIO2Parser.StringLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.UintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.IntLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.Identifier - 60)) + ) + ) != 0: self.state = 1010 self.argumentList() @@ -7682,9 +19450,11 @@ def methodImplementation(self): return localctx class MethodQualifierContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7706,8 +19476,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def methodQualifier(self): - - localctx = OpenSCENARIO2Parser.MethodQualifierContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.MethodQualifierContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 206, self.RULE_methodQualifier) try: self.enterOuterAlt(localctx, 1) @@ -7722,9 +19493,11 @@ def methodQualifier(self): return localctx class MethodNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7749,7 +19522,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def methodName(self): - localctx = OpenSCENARIO2Parser.MethodNameContext(self, self._ctx, self.state) self.enterRule(localctx, 208, self.RULE_methodName) try: @@ -7765,17 +19537,23 @@ def methodName(self): return localctx class CoverageDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def coverDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.CoverDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.CoverDeclarationContext, 0 + ) def recordDeclaration(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.RecordDeclarationContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.RecordDeclarationContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_coverageDeclaration @@ -7795,8 +19573,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def coverageDeclaration(self): - - localctx = OpenSCENARIO2Parser.CoverageDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.CoverageDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 210, self.RULE_coverageDeclaration) try: self.state = 1023 @@ -7824,9 +19603,11 @@ def coverageDeclaration(self): return localctx class CoverDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7844,9 +19625,13 @@ def targetName(self): def coverageArgumentList(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.CoverageArgumentListContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.CoverageArgumentListContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.CoverageArgumentListContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.CoverageArgumentListContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_coverDeclaration @@ -7866,8 +19651,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def coverDeclaration(self): - - localctx = OpenSCENARIO2Parser.CoverDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.CoverDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 212, self.RULE_coverDeclaration) self._la = 0 # Token type try: @@ -7906,9 +19692,11 @@ def coverDeclaration(self): return localctx class RecordDeclarationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -7926,9 +19714,13 @@ def targetName(self): def coverageArgumentList(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.CoverageArgumentListContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.CoverageArgumentListContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.CoverageArgumentListContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.CoverageArgumentListContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_recordDeclaration @@ -7948,8 +19740,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def recordDeclaration(self): - - localctx = OpenSCENARIO2Parser.RecordDeclarationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.RecordDeclarationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 214, self.RULE_recordDeclaration) self._la = 0 # Token type try: @@ -7988,9 +19781,11 @@ def recordDeclaration(self): return localctx class CoverageArgumentListContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8001,9 +19796,9 @@ def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) class CoverageEventContext(CoverageArgumentListContext): - - def __init__(self, parser, - ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext super().__init__(parser) self.copyFrom(ctx) @@ -8025,9 +19820,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class CoverageEveryContext(CoverageArgumentListContext): - - def __init__(self, parser, - ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext super().__init__(parser) self.copyFrom(ctx) @@ -8049,9 +19844,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class CoverageNameArgumentContext(CoverageArgumentListContext): - - def __init__(self, parser, - ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext super().__init__(parser) self.copyFrom(ctx) @@ -8073,9 +19868,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class CoverageExpressionContext(CoverageArgumentListContext): - - def __init__(self, parser, - ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext super().__init__(parser) self.copyFrom(ctx) @@ -8097,14 +19892,16 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class CoverageRangeContext(CoverageArgumentListContext): - - def __init__(self, parser, - ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext super().__init__(parser) self.copyFrom(ctx) def rangeConstructor(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.RangeConstructorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.RangeConstructorContext, 0 + ) def enterRule(self, listener: ParseTreeListener): if hasattr(listener, "enterCoverageRange"): @@ -8121,9 +19918,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class CoverageUnitContext(CoverageArgumentListContext): - - def __init__(self, parser, - ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.CoverageArgumentListContext super().__init__(parser) self.unitName = None # Token self.copyFrom(ctx) @@ -8146,8 +19943,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def coverageArgumentList(self): - - localctx = OpenSCENARIO2Parser.CoverageArgumentListContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.CoverageArgumentListContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 216, self.RULE_coverageArgumentList) try: self.state = 1075 @@ -8219,7 +20017,9 @@ def coverageArgumentList(self): pass elif la_ == 6: - localctx = OpenSCENARIO2Parser.CoverageNameArgumentContext(self, localctx) + localctx = OpenSCENARIO2Parser.CoverageNameArgumentContext( + self, localctx + ) self.enterOuterAlt(localctx, 6) self.state = 1073 self.match(OpenSCENARIO2Parser.T__7) @@ -8227,7 +20027,6 @@ def coverageArgumentList(self): self.namedArgument() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8237,9 +20036,11 @@ def coverageArgumentList(self): return localctx class TargetNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8264,7 +20065,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def targetName(self): - localctx = OpenSCENARIO2Parser.TargetNameContext(self, self._ctx, self.state) self.enterRule(localctx, 218, self.RULE_targetName) try: @@ -8280,9 +20080,11 @@ def targetName(self): return localctx class ExpressionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8310,7 +20112,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def expression(self): - localctx = OpenSCENARIO2Parser.ExpressionContext(self, self._ctx, self.state) self.enterRule(localctx, 220, self.RULE_expression) try: @@ -8329,7 +20130,6 @@ def expression(self): self.ternaryOpExp() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8339,9 +20139,11 @@ def expression(self): return localctx class TernaryOpExpContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8352,7 +20154,9 @@ def expression(self, i: int = None): if i is None: return self.getTypedRuleContexts(OpenSCENARIO2Parser.ExpressionContext) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ExpressionContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ExpressionContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_ternaryOpExp @@ -8372,7 +20176,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def ternaryOpExp(self): - localctx = OpenSCENARIO2Parser.TernaryOpExpContext(self, self._ctx, self.state) self.enterRule(localctx, 222, self.RULE_ternaryOpExp) try: @@ -8396,9 +20199,11 @@ def ternaryOpExp(self): return localctx class ImplicationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8406,7 +20211,9 @@ def disjunction(self, i: int = None): if i is None: return self.getTypedRuleContexts(OpenSCENARIO2Parser.DisjunctionContext) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.DisjunctionContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.DisjunctionContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_implication @@ -8426,7 +20233,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def implication(self): - localctx = OpenSCENARIO2Parser.ImplicationContext(self, self._ctx, self.state) self.enterRule(localctx, 224, self.RULE_implication) self._la = 0 # Token type @@ -8455,9 +20261,11 @@ def implication(self): return localctx class DisjunctionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8465,7 +20273,9 @@ def conjunction(self, i: int = None): if i is None: return self.getTypedRuleContexts(OpenSCENARIO2Parser.ConjunctionContext) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ConjunctionContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ConjunctionContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_disjunction @@ -8485,7 +20295,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def disjunction(self): - localctx = OpenSCENARIO2Parser.DisjunctionContext(self, self._ctx, self.state) self.enterRule(localctx, 226, self.RULE_disjunction) self._la = 0 # Token type @@ -8514,9 +20323,11 @@ def disjunction(self): return localctx class ConjunctionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8544,7 +20355,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def conjunction(self): - localctx = OpenSCENARIO2Parser.ConjunctionContext(self, self._ctx, self.state) self.enterRule(localctx, 228, self.RULE_conjunction) self._la = 0 # Token type @@ -8573,9 +20383,11 @@ def conjunction(self): return localctx class InversionContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8603,7 +20415,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def inversion(self): - localctx = OpenSCENARIO2Parser.InversionContext(self, self._ctx, self.state) self.enterRule(localctx, 230, self.RULE_inversion) try: @@ -8617,12 +20428,20 @@ def inversion(self): self.state = 1114 self.inversion() pass - elif token in [OpenSCENARIO2Parser.T__59, OpenSCENARIO2Parser.T__72, OpenSCENARIO2Parser.T__76, - OpenSCENARIO2Parser.OPEN_BRACK, OpenSCENARIO2Parser.OPEN_PAREN, - OpenSCENARIO2Parser.StringLiteral, OpenSCENARIO2Parser.FloatLiteral, - OpenSCENARIO2Parser.UintLiteral, OpenSCENARIO2Parser.HexUintLiteral, - OpenSCENARIO2Parser.IntLiteral, OpenSCENARIO2Parser.BoolLiteral, - OpenSCENARIO2Parser.Identifier]: + elif token in [ + OpenSCENARIO2Parser.T__59, + OpenSCENARIO2Parser.T__72, + OpenSCENARIO2Parser.T__76, + OpenSCENARIO2Parser.OPEN_BRACK, + OpenSCENARIO2Parser.OPEN_PAREN, + OpenSCENARIO2Parser.StringLiteral, + OpenSCENARIO2Parser.FloatLiteral, + OpenSCENARIO2Parser.UintLiteral, + OpenSCENARIO2Parser.HexUintLiteral, + OpenSCENARIO2Parser.IntLiteral, + OpenSCENARIO2Parser.BoolLiteral, + OpenSCENARIO2Parser.Identifier, + ]: self.enterOuterAlt(localctx, 2) self.state = 1115 self.relation(0) @@ -8639,9 +20458,11 @@ def inversion(self): return localctx class RelationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8652,8 +20473,9 @@ def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) class RelationExpContext(RelationContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.RelationContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.RelationContext super().__init__(parser) self.copyFrom(ctx) @@ -8681,8 +20503,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class SumExpContext(RelationContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.RelationContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.RelationContext super().__init__(parser) self.copyFrom(ctx) @@ -8727,14 +20550,22 @@ def relation(self, _p: int = 0): if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx - localctx = OpenSCENARIO2Parser.RelationExpContext(self, OpenSCENARIO2Parser.RelationContext(self, - _parentctx, - _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_relation) + localctx = OpenSCENARIO2Parser.RelationExpContext( + self, + OpenSCENARIO2Parser.RelationContext( + self, _parentctx, _parentState + ), + ) + self.pushNewRecursionContext( + localctx, _startState, self.RULE_relation + ) self.state = 1121 if not self.precpred(self._ctx, 1): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + + raise FailedPredicateException( + self, "self.precpred(self._ctx, 1)" + ) self.state = 1122 self.relationalOp() self.state = 1123 @@ -8752,9 +20583,11 @@ def relation(self, _p: int = 0): return localctx class RelationalOpContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8776,7 +20609,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def relationalOp(self): - localctx = OpenSCENARIO2Parser.RelationalOpContext(self, self._ctx, self.state) self.enterRule(localctx, 234, self.RULE_relationalOp) self._la = 0 # Token type @@ -8784,11 +20616,24 @@ def relationalOp(self): self.enterOuterAlt(localctx, 1) self.state = 1130 _la = self._input.LA(1) - if not (((((_la - 13)) & ~0x3f) == 0 and ((1 << (_la - 13)) & ( - (1 << (OpenSCENARIO2Parser.T__12 - 13)) | (1 << (OpenSCENARIO2Parser.T__65 - 13)) | ( - 1 << (OpenSCENARIO2Parser.T__66 - 13)) | (1 << (OpenSCENARIO2Parser.T__67 - 13)) | ( - 1 << (OpenSCENARIO2Parser.T__68 - 13)) | (1 << (OpenSCENARIO2Parser.T__69 - 13)) | ( - 1 << (OpenSCENARIO2Parser.T__70 - 13)))) != 0)): + if not ( + ( + (((_la - 13)) & ~0x3F) == 0 + and ( + (1 << (_la - 13)) + & ( + (1 << (OpenSCENARIO2Parser.T__12 - 13)) + | (1 << (OpenSCENARIO2Parser.T__65 - 13)) + | (1 << (OpenSCENARIO2Parser.T__66 - 13)) + | (1 << (OpenSCENARIO2Parser.T__67 - 13)) + | (1 << (OpenSCENARIO2Parser.T__68 - 13)) + | (1 << (OpenSCENARIO2Parser.T__69 - 13)) + | (1 << (OpenSCENARIO2Parser.T__70 - 13)) + ) + ) + != 0 + ) + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -8802,9 +20647,11 @@ def relationalOp(self): return localctx class SumContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8815,8 +20662,9 @@ def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) class TermExpContext(SumContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.SumContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.SumContext super().__init__(parser) self.copyFrom(ctx) @@ -8838,8 +20686,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class AdditiveExpContext(SumContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.SumContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.SumContext super().__init__(parser) self.copyFrom(ctx) @@ -8890,14 +20739,18 @@ def sum_(self, _p: int = 0): if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx - localctx = OpenSCENARIO2Parser.AdditiveExpContext(self, - OpenSCENARIO2Parser.SumContext(self, _parentctx, - _parentState)) + localctx = OpenSCENARIO2Parser.AdditiveExpContext( + self, + OpenSCENARIO2Parser.SumContext(self, _parentctx, _parentState), + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_sum) self.state = 1135 if not self.precpred(self._ctx, 1): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + + raise FailedPredicateException( + self, "self.precpred(self._ctx, 1)" + ) self.state = 1136 self.additiveOp() self.state = 1137 @@ -8915,9 +20768,11 @@ def sum_(self, _p: int = 0): return localctx class AdditiveOpContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8939,7 +20794,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def additiveOp(self): - localctx = OpenSCENARIO2Parser.AdditiveOpContext(self, self._ctx, self.state) self.enterRule(localctx, 238, self.RULE_additiveOp) self._la = 0 # Token type @@ -8947,7 +20801,9 @@ def additiveOp(self): self.enterOuterAlt(localctx, 1) self.state = 1144 _la = self._input.LA(1) - if not (_la == OpenSCENARIO2Parser.T__71 or _la == OpenSCENARIO2Parser.T__72): + if not ( + _la == OpenSCENARIO2Parser.T__71 or _la == OpenSCENARIO2Parser.T__72 + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -8961,9 +20817,11 @@ def additiveOp(self): return localctx class TermContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -8974,8 +20832,9 @@ def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) class MultiplicativeExpContext(TermContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.TermContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.TermContext super().__init__(parser) self.copyFrom(ctx) @@ -8983,7 +20842,9 @@ def term(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.TermContext, 0) def multiplicativeOp(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.MultiplicativeOpContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.MultiplicativeOpContext, 0 + ) def factor(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.FactorContext, 0) @@ -9003,8 +20864,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class FactorExpContext(TermContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.TermContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.TermContext super().__init__(parser) self.copyFrom(ctx) @@ -9049,14 +20911,18 @@ def term(self, _p: int = 0): if self._parseListeners is not None: self.triggerExitRuleEvent() _prevctx = localctx - localctx = OpenSCENARIO2Parser.MultiplicativeExpContext(self, OpenSCENARIO2Parser.TermContext(self, - _parentctx, - _parentState)) + localctx = OpenSCENARIO2Parser.MultiplicativeExpContext( + self, + OpenSCENARIO2Parser.TermContext(self, _parentctx, _parentState), + ) self.pushNewRecursionContext(localctx, _startState, self.RULE_term) self.state = 1149 if not self.precpred(self._ctx, 1): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + + raise FailedPredicateException( + self, "self.precpred(self._ctx, 1)" + ) self.state = 1150 self.multiplicativeOp() self.state = 1151 @@ -9074,9 +20940,11 @@ def term(self, _p: int = 0): return localctx class MultiplicativeOpContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -9098,17 +20966,29 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def multiplicativeOp(self): - - localctx = OpenSCENARIO2Parser.MultiplicativeOpContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.MultiplicativeOpContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 242, self.RULE_multiplicativeOp) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 1158 _la = self._input.LA(1) - if not (((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & ( - (1 << (OpenSCENARIO2Parser.T__73 - 74)) | (1 << (OpenSCENARIO2Parser.T__74 - 74)) | ( - 1 << (OpenSCENARIO2Parser.T__75 - 74)))) != 0)): + if not ( + ( + (((_la - 74)) & ~0x3F) == 0 + and ( + (1 << (_la - 74)) + & ( + (1 << (OpenSCENARIO2Parser.T__73 - 74)) + | (1 << (OpenSCENARIO2Parser.T__74 - 74)) + | (1 << (OpenSCENARIO2Parser.T__75 - 74)) + ) + ) + != 0 + ) + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -9122,9 +21002,11 @@ def multiplicativeOp(self): return localctx class FactorContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -9152,18 +21034,25 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def factor(self): - localctx = OpenSCENARIO2Parser.FactorContext(self, self._ctx, self.state) self.enterRule(localctx, 244, self.RULE_factor) try: self.state = 1163 self._errHandler.sync(self) token = self._input.LA(1) - if token in [OpenSCENARIO2Parser.T__59, OpenSCENARIO2Parser.T__76, OpenSCENARIO2Parser.OPEN_BRACK, - OpenSCENARIO2Parser.OPEN_PAREN, OpenSCENARIO2Parser.StringLiteral, - OpenSCENARIO2Parser.FloatLiteral, OpenSCENARIO2Parser.UintLiteral, - OpenSCENARIO2Parser.HexUintLiteral, OpenSCENARIO2Parser.IntLiteral, - OpenSCENARIO2Parser.BoolLiteral, OpenSCENARIO2Parser.Identifier]: + if token in [ + OpenSCENARIO2Parser.T__59, + OpenSCENARIO2Parser.T__76, + OpenSCENARIO2Parser.OPEN_BRACK, + OpenSCENARIO2Parser.OPEN_PAREN, + OpenSCENARIO2Parser.StringLiteral, + OpenSCENARIO2Parser.FloatLiteral, + OpenSCENARIO2Parser.UintLiteral, + OpenSCENARIO2Parser.HexUintLiteral, + OpenSCENARIO2Parser.IntLiteral, + OpenSCENARIO2Parser.BoolLiteral, + OpenSCENARIO2Parser.Identifier, + ]: self.enterOuterAlt(localctx, 1) self.state = 1160 self.postfixExp(0) @@ -9187,9 +21076,11 @@ def factor(self): return localctx class PostfixExpContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -9200,8 +21091,9 @@ def copyFrom(self, ctx: ParserRuleContext): super().copyFrom(ctx) class PrimaryExpressionContext(PostfixExpContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.PostfixExpContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.PostfixExpContext super().__init__(parser) self.copyFrom(ctx) @@ -9223,8 +21115,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class CastExpressionContext(PostfixExpContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.PostfixExpContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.PostfixExpContext super().__init__(parser) self.copyFrom(ctx) @@ -9235,7 +21128,9 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def typeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.TypeDeclaratorContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -9255,8 +21150,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class FunctionApplicationExpressionContext(PostfixExpContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.PostfixExpContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.PostfixExpContext super().__init__(parser) self.copyFrom(ctx) @@ -9287,8 +21183,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class FieldAccessExpressionContext(PostfixExpContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.PostfixExpContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.PostfixExpContext super().__init__(parser) self.copyFrom(ctx) @@ -9313,8 +21210,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class ElementAccessExpressionContext(PostfixExpContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.PostfixExpContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.PostfixExpContext super().__init__(parser) self.copyFrom(ctx) @@ -9345,8 +21243,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) class TypeTestExpressionContext(PostfixExpContext): - - def __init__(self, parser, ctx: ParserRuleContext): # actually a OpenSCENARIO2Parser.PostfixExpContext + def __init__( + self, parser, ctx: ParserRuleContext + ): # actually a OpenSCENARIO2Parser.PostfixExpContext super().__init__(parser) self.copyFrom(ctx) @@ -9357,7 +21256,9 @@ def OPEN_PAREN(self): return self.getToken(OpenSCENARIO2Parser.OPEN_PAREN, 0) def typeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.TypeDeclaratorContext, 0 + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -9405,15 +21306,22 @@ def postfixExp(self, _p: int = 0): self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input, 111, self._ctx) if la_ == 1: - localctx = OpenSCENARIO2Parser.CastExpressionContext(self, - OpenSCENARIO2Parser.PostfixExpContext(self, - _parentctx, - _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixExp) + localctx = OpenSCENARIO2Parser.CastExpressionContext( + self, + OpenSCENARIO2Parser.PostfixExpContext( + self, _parentctx, _parentState + ), + ) + self.pushNewRecursionContext( + localctx, _startState, self.RULE_postfixExp + ) self.state = 1168 if not self.precpred(self._ctx, 5): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") + + raise FailedPredicateException( + self, "self.precpred(self._ctx, 5)" + ) self.state = 1169 self.match(OpenSCENARIO2Parser.T__1) self.state = 1170 @@ -9427,14 +21335,22 @@ def postfixExp(self, _p: int = 0): pass elif la_ == 2: - localctx = OpenSCENARIO2Parser.TypeTestExpressionContext(self, - OpenSCENARIO2Parser.PostfixExpContext( - self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixExp) + localctx = OpenSCENARIO2Parser.TypeTestExpressionContext( + self, + OpenSCENARIO2Parser.PostfixExpContext( + self, _parentctx, _parentState + ), + ) + self.pushNewRecursionContext( + localctx, _startState, self.RULE_postfixExp + ) self.state = 1175 if not self.precpred(self._ctx, 4): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") + + raise FailedPredicateException( + self, "self.precpred(self._ctx, 4)" + ) self.state = 1176 self.match(OpenSCENARIO2Parser.T__1) self.state = 1177 @@ -9448,15 +21364,22 @@ def postfixExp(self, _p: int = 0): pass elif la_ == 3: - localctx = OpenSCENARIO2Parser.ElementAccessExpressionContext(self, - OpenSCENARIO2Parser.PostfixExpContext( - self, _parentctx, - _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixExp) + localctx = OpenSCENARIO2Parser.ElementAccessExpressionContext( + self, + OpenSCENARIO2Parser.PostfixExpContext( + self, _parentctx, _parentState + ), + ) + self.pushNewRecursionContext( + localctx, _startState, self.RULE_postfixExp + ) self.state = 1182 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + + raise FailedPredicateException( + self, "self.precpred(self._ctx, 3)" + ) self.state = 1183 self.match(OpenSCENARIO2Parser.OPEN_BRACK) self.state = 1184 @@ -9466,32 +21389,47 @@ def postfixExp(self, _p: int = 0): pass elif la_ == 4: - localctx = OpenSCENARIO2Parser.FunctionApplicationExpressionContext(self, - OpenSCENARIO2Parser.PostfixExpContext( - self, _parentctx, - _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixExp) + localctx = ( + OpenSCENARIO2Parser.FunctionApplicationExpressionContext( + self, + OpenSCENARIO2Parser.PostfixExpContext( + self, _parentctx, _parentState + ), + ) + ) + self.pushNewRecursionContext( + localctx, _startState, self.RULE_postfixExp + ) self.state = 1187 if not self.precpred(self._ctx, 2): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + + raise FailedPredicateException( + self, "self.precpred(self._ctx, 2)" + ) self.state = 1188 self.match(OpenSCENARIO2Parser.OPEN_PAREN) self.state = 1190 self._errHandler.sync(self) _la = self._input.LA(1) - if ((((_la - 60)) & ~0x3f) == 0 and ((1 << (_la - 60)) & ( - (1 << (OpenSCENARIO2Parser.T__59 - 60)) | (1 << (OpenSCENARIO2Parser.T__64 - 60)) | ( - 1 << (OpenSCENARIO2Parser.T__72 - 60)) | (1 << (OpenSCENARIO2Parser.T__76 - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) | ( - 1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) | ( - 1 << (OpenSCENARIO2Parser.StringLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.UintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.IntLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) | ( - 1 << (OpenSCENARIO2Parser.Identifier - 60)))) != 0): + if (((_la - 60)) & ~0x3F) == 0 and ( + (1 << (_la - 60)) + & ( + (1 << (OpenSCENARIO2Parser.T__59 - 60)) + | (1 << (OpenSCENARIO2Parser.T__64 - 60)) + | (1 << (OpenSCENARIO2Parser.T__72 - 60)) + | (1 << (OpenSCENARIO2Parser.T__76 - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_BRACK - 60)) + | (1 << (OpenSCENARIO2Parser.OPEN_PAREN - 60)) + | (1 << (OpenSCENARIO2Parser.StringLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.FloatLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.UintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.HexUintLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.IntLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.BoolLiteral - 60)) + | (1 << (OpenSCENARIO2Parser.Identifier - 60)) + ) + ) != 0: self.state = 1189 self.argumentList() @@ -9500,14 +21438,22 @@ def postfixExp(self, _p: int = 0): pass elif la_ == 5: - localctx = OpenSCENARIO2Parser.FieldAccessExpressionContext(self, - OpenSCENARIO2Parser.PostfixExpContext( - self, _parentctx, _parentState)) - self.pushNewRecursionContext(localctx, _startState, self.RULE_postfixExp) + localctx = OpenSCENARIO2Parser.FieldAccessExpressionContext( + self, + OpenSCENARIO2Parser.PostfixExpContext( + self, _parentctx, _parentState + ), + ) + self.pushNewRecursionContext( + localctx, _startState, self.RULE_postfixExp + ) self.state = 1193 if not self.precpred(self._ctx, 1): from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + + raise FailedPredicateException( + self, "self.precpred(self._ctx, 1)" + ) self.state = 1194 self.match(OpenSCENARIO2Parser.T__1) self.state = 1195 @@ -9527,9 +21473,11 @@ def postfixExp(self, _p: int = 0): return localctx class FieldAccessContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -9557,7 +21505,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def fieldAccess(self): - localctx = OpenSCENARIO2Parser.FieldAccessContext(self, self._ctx, self.state) self.enterRule(localctx, 248, self.RULE_fieldAccess) try: @@ -9577,9 +21524,11 @@ def fieldAccess(self): return localctx class PrimaryExpContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -9616,7 +21565,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def primaryExp(self): - localctx = OpenSCENARIO2Parser.PrimaryExpContext(self, self._ctx, self.state) self.enterRule(localctx, 250, self.RULE_primaryExp) try: @@ -9651,7 +21599,6 @@ def primaryExp(self): self.match(OpenSCENARIO2Parser.CLOSE_PAREN) pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9661,20 +21608,26 @@ def primaryExp(self): return localctx class ValueExpContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def physicalLiteral(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.PhysicalLiteralContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.PhysicalLiteralContext, 0 + ) def FloatLiteral(self): return self.getToken(OpenSCENARIO2Parser.FloatLiteral, 0) def integerLiteral(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.IntegerLiteralContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.IntegerLiteralContext, 0 + ) def BoolLiteral(self): return self.getToken(OpenSCENARIO2Parser.BoolLiteral, 0) @@ -9683,16 +21636,24 @@ def StringLiteral(self): return self.getToken(OpenSCENARIO2Parser.StringLiteral, 0) def identifierReference(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.IdentifierReferenceContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.IdentifierReferenceContext, 0 + ) def enumValueReference(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.EnumValueReferenceContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.EnumValueReferenceContext, 0 + ) def listConstructor(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.ListConstructorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ListConstructorContext, 0 + ) def rangeConstructor(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.RangeConstructorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.RangeConstructorContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_valueExp @@ -9712,7 +21673,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def valueExp(self): - localctx = OpenSCENARIO2Parser.ValueExpContext(self, self._ctx, self.state) self.enterRule(localctx, 252, self.RULE_valueExp) try: @@ -9773,7 +21733,6 @@ def valueExp(self): self.rangeConstructor() pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9783,9 +21742,11 @@ def valueExp(self): return localctx class ListConstructorContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -9796,7 +21757,9 @@ def expression(self, i: int = None): if i is None: return self.getTypedRuleContexts(OpenSCENARIO2Parser.ExpressionContext) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ExpressionContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ExpressionContext, i + ) def CLOSE_BRACK(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_BRACK, 0) @@ -9819,8 +21782,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def listConstructor(self): - - localctx = OpenSCENARIO2Parser.ListConstructorContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ListConstructorContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 254, self.RULE_listConstructor) self._la = 0 # Token type try: @@ -9852,9 +21816,11 @@ def listConstructor(self): return localctx class RangeConstructorContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -9865,7 +21831,9 @@ def expression(self, i: int = None): if i is None: return self.getTypedRuleContexts(OpenSCENARIO2Parser.ExpressionContext) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ExpressionContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ExpressionContext, i + ) def CLOSE_PAREN(self): return self.getToken(OpenSCENARIO2Parser.CLOSE_PAREN, 0) @@ -9894,8 +21862,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def rangeConstructor(self): - - localctx = OpenSCENARIO2Parser.RangeConstructorContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.RangeConstructorContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 256, self.RULE_rangeConstructor) try: self.state = 1249 @@ -9941,9 +21910,11 @@ def rangeConstructor(self): return localctx class IdentifierReferenceContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -9971,8 +21942,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def identifierReference(self): - - localctx = OpenSCENARIO2Parser.IdentifierReferenceContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.IdentifierReferenceContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 258, self.RULE_identifierReference) try: self.enterOuterAlt(localctx, 1) @@ -10000,17 +21972,23 @@ def identifierReference(self): return localctx class ArgumentListSpecificationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def argumentSpecification(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.ArgumentSpecificationContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.ArgumentSpecificationContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.ArgumentSpecificationContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.ArgumentSpecificationContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_argumentListSpecification @@ -10030,8 +22008,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def argumentListSpecification(self): - - localctx = OpenSCENARIO2Parser.ArgumentListSpecificationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ArgumentListSpecificationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 260, self.RULE_argumentListSpecification) self._la = 0 # Token type try: @@ -10059,9 +22038,11 @@ def argumentListSpecification(self): return localctx class ArgumentSpecificationContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -10069,7 +22050,9 @@ def argumentName(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.ArgumentNameContext, 0) def typeDeclarator(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.TypeDeclaratorContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.TypeDeclaratorContext, 0 + ) def defaultValue(self): return self.getTypedRuleContext(OpenSCENARIO2Parser.DefaultValueContext, 0) @@ -10092,8 +22075,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def argumentSpecification(self): - - localctx = OpenSCENARIO2Parser.ArgumentSpecificationContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.ArgumentSpecificationContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 262, self.RULE_argumentSpecification) self._la = 0 # Token type try: @@ -10113,7 +22097,6 @@ def argumentSpecification(self): self.state = 1273 self.defaultValue() - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10123,9 +22106,11 @@ def argumentSpecification(self): return localctx class ArgumentNameContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -10150,7 +22135,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def argumentName(self): - localctx = OpenSCENARIO2Parser.ArgumentNameContext(self, self._ctx, self.state) self.enterRule(localctx, 264, self.RULE_argumentName) try: @@ -10166,23 +22150,33 @@ def argumentName(self): return localctx class ArgumentListContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser def positionalArgument(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.PositionalArgumentContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.PositionalArgumentContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.PositionalArgumentContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.PositionalArgumentContext, i + ) def namedArgument(self, i: int = None): if i is None: - return self.getTypedRuleContexts(OpenSCENARIO2Parser.NamedArgumentContext) + return self.getTypedRuleContexts( + OpenSCENARIO2Parser.NamedArgumentContext + ) else: - return self.getTypedRuleContext(OpenSCENARIO2Parser.NamedArgumentContext, i) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.NamedArgumentContext, i + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_argumentList @@ -10202,7 +22196,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def argumentList(self): - localctx = OpenSCENARIO2Parser.ArgumentListContext(self, self._ctx, self.state) self.enterRule(localctx, 266, self.RULE_argumentList) self._la = 0 # Token type @@ -10259,7 +22252,6 @@ def argumentList(self): pass - except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10269,9 +22261,11 @@ def argumentList(self): return localctx class PositionalArgumentContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -10296,8 +22290,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def positionalArgument(self): - - localctx = OpenSCENARIO2Parser.PositionalArgumentContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.PositionalArgumentContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 268, self.RULE_positionalArgument) try: self.enterOuterAlt(localctx, 1) @@ -10312,9 +22307,11 @@ def positionalArgument(self): return localctx class NamedArgumentContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -10342,7 +22339,6 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def namedArgument(self): - localctx = OpenSCENARIO2Parser.NamedArgumentContext(self, self._ctx, self.state) self.enterRule(localctx, 270, self.RULE_namedArgument) try: @@ -10362,9 +22358,11 @@ def namedArgument(self): return localctx class PhysicalLiteralContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser self.unitName = None # Token @@ -10376,7 +22374,9 @@ def FloatLiteral(self): return self.getToken(OpenSCENARIO2Parser.FloatLiteral, 0) def integerLiteral(self): - return self.getTypedRuleContext(OpenSCENARIO2Parser.IntegerLiteralContext, 0) + return self.getTypedRuleContext( + OpenSCENARIO2Parser.IntegerLiteralContext, 0 + ) def getRuleIndex(self): return OpenSCENARIO2Parser.RULE_physicalLiteral @@ -10396,8 +22396,9 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def physicalLiteral(self): - - localctx = OpenSCENARIO2Parser.PhysicalLiteralContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.PhysicalLiteralContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 272, self.RULE_physicalLiteral) try: self.enterOuterAlt(localctx, 1) @@ -10408,8 +22409,11 @@ def physicalLiteral(self): self.state = 1309 self.match(OpenSCENARIO2Parser.FloatLiteral) pass - elif token in [OpenSCENARIO2Parser.UintLiteral, OpenSCENARIO2Parser.HexUintLiteral, - OpenSCENARIO2Parser.IntLiteral]: + elif token in [ + OpenSCENARIO2Parser.UintLiteral, + OpenSCENARIO2Parser.HexUintLiteral, + OpenSCENARIO2Parser.IntLiteral, + ]: self.state = 1310 self.integerLiteral() pass @@ -10427,9 +22431,11 @@ def physicalLiteral(self): return localctx class IntegerLiteralContext(ParserRuleContext): - __slots__ = 'parser' + __slots__ = "parser" - def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + def __init__( + self, parser, parent: ParserRuleContext = None, invokingState: int = -1 + ): super().__init__(parent, invokingState) self.parser = parser @@ -10460,17 +22466,29 @@ def accept(self, visitor: ParseTreeVisitor): return visitor.visitChildren(self) def integerLiteral(self): - - localctx = OpenSCENARIO2Parser.IntegerLiteralContext(self, self._ctx, self.state) + localctx = OpenSCENARIO2Parser.IntegerLiteralContext( + self, self._ctx, self.state + ) self.enterRule(localctx, 274, self.RULE_integerLiteral) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) self.state = 1315 _la = self._input.LA(1) - if not (((((_la - 89)) & ~0x3f) == 0 and ((1 << (_la - 89)) & ( - (1 << (OpenSCENARIO2Parser.UintLiteral - 89)) | (1 << (OpenSCENARIO2Parser.HexUintLiteral - 89)) | ( - 1 << (OpenSCENARIO2Parser.IntLiteral - 89)))) != 0)): + if not ( + ( + (((_la - 89)) & ~0x3F) == 0 + and ( + (1 << (_la - 89)) + & ( + (1 << (OpenSCENARIO2Parser.UintLiteral - 89)) + | (1 << (OpenSCENARIO2Parser.HexUintLiteral - 89)) + | (1 << (OpenSCENARIO2Parser.IntLiteral - 89)) + ) + ) + != 0 + ) + ): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) @@ -10497,7 +22515,9 @@ def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int): else: return pred(localctx, predIndex) - def structuredIdentifier_sempred(self, localctx: StructuredIdentifierContext, predIndex: int): + def structuredIdentifier_sempred( + self, localctx: StructuredIdentifierContext, predIndex: int + ): if predIndex == 0: return self.precpred(self._ctx, 1) diff --git a/srunner/osc2/osc2_parser/OpenSCENARIO2Visitor.py b/srunner/osc2/osc2_parser/OpenSCENARIO2Visitor.py index 9c41bf139..fdaa681ff 100644 --- a/srunner/osc2/osc2_parser/OpenSCENARIO2Visitor.py +++ b/srunner/osc2/osc2_parser/OpenSCENARIO2Visitor.py @@ -9,8 +9,8 @@ # This class defines a complete generic visitor for a parse tree produced by OpenSCENARIO2Parser. -class OpenSCENARIO2Visitor(ParseTreeVisitor): +class OpenSCENARIO2Visitor(ParseTreeVisitor): # Visit a parse tree produced by OpenSCENARIO2Parser#osc_file. def visitOsc_file(self, ctx: OpenSCENARIO2Parser.Osc_fileContext): return self.visitChildren(ctx) @@ -28,7 +28,9 @@ def visitImportReference(self, ctx: OpenSCENARIO2Parser.ImportReferenceContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#structuredIdentifier. - def visitStructuredIdentifier(self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext): + def visitStructuredIdentifier( + self, ctx: OpenSCENARIO2Parser.StructuredIdentifierContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#oscDeclaration. @@ -36,7 +38,9 @@ def visitOscDeclaration(self, ctx: OpenSCENARIO2Parser.OscDeclarationContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#physicalTypeDeclaration. - def visitPhysicalTypeDeclaration(self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext): + def visitPhysicalTypeDeclaration( + self, ctx: OpenSCENARIO2Parser.PhysicalTypeDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#physicalTypeName. @@ -48,7 +52,9 @@ def visitBaseUnitSpecifier(self, ctx: OpenSCENARIO2Parser.BaseUnitSpecifierConte return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#sIBaseUnitSpecifier. - def visitSIBaseUnitSpecifier(self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext): + def visitSIBaseUnitSpecifier( + self, ctx: OpenSCENARIO2Parser.SIBaseUnitSpecifierContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#unitDeclaration. @@ -64,7 +70,9 @@ def visitSIUnitSpecifier(self, ctx: OpenSCENARIO2Parser.SIUnitSpecifierContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#sIBaseExponentList. - def visitSIBaseExponentList(self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext): + def visitSIBaseExponentList( + self, ctx: OpenSCENARIO2Parser.SIBaseExponentListContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#sIBaseExponent. @@ -100,7 +108,9 @@ def visitEnumMemberName(self, ctx: OpenSCENARIO2Parser.EnumMemberNameContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#enumValueReference. - def visitEnumValueReference(self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext): + def visitEnumValueReference( + self, ctx: OpenSCENARIO2Parser.EnumValueReferenceContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#inheritsCondition. @@ -144,7 +154,9 @@ def visitActorName(self, ctx: OpenSCENARIO2Parser.ActorNameContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#scenarioDeclaration. - def visitScenarioDeclaration(self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext): + def visitScenarioDeclaration( + self, ctx: OpenSCENARIO2Parser.ScenarioDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#scenarioInherts. @@ -152,11 +164,15 @@ def visitScenarioInherts(self, ctx: OpenSCENARIO2Parser.ScenarioInhertsContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#scenarioMemberDecl. - def visitScenarioMemberDecl(self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext): + def visitScenarioMemberDecl( + self, ctx: OpenSCENARIO2Parser.ScenarioMemberDeclContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#qualifiedBehaviorName. - def visitQualifiedBehaviorName(self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext): + def visitQualifiedBehaviorName( + self, ctx: OpenSCENARIO2Parser.QualifiedBehaviorNameContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#behaviorName. @@ -172,7 +188,9 @@ def visitActionInherts(self, ctx: OpenSCENARIO2Parser.ActionInhertsContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#modifierDeclaration. - def visitModifierDeclaration(self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext): + def visitModifierDeclaration( + self, ctx: OpenSCENARIO2Parser.ModifierDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#modifierName. @@ -188,19 +206,27 @@ def visitEnumTypeExtension(self, ctx: OpenSCENARIO2Parser.EnumTypeExtensionConte return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#structuredTypeExtension. - def visitStructuredTypeExtension(self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext): + def visitStructuredTypeExtension( + self, ctx: OpenSCENARIO2Parser.StructuredTypeExtensionContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#extendableTypeName. - def visitExtendableTypeName(self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext): + def visitExtendableTypeName( + self, ctx: OpenSCENARIO2Parser.ExtendableTypeNameContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#extensionMemberDecl. - def visitExtensionMemberDecl(self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext): + def visitExtensionMemberDecl( + self, ctx: OpenSCENARIO2Parser.ExtensionMemberDeclContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#globalParameterDeclaration. - def visitGlobalParameterDeclaration(self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext): + def visitGlobalParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.GlobalParameterDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#typeDeclarator. @@ -208,15 +234,21 @@ def visitTypeDeclarator(self, ctx: OpenSCENARIO2Parser.TypeDeclaratorContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#nonAggregateTypeDeclarator. - def visitNonAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext): + def visitNonAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.NonAggregateTypeDeclaratorContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#aggregateTypeDeclarator. - def visitAggregateTypeDeclarator(self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext): + def visitAggregateTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.AggregateTypeDeclaratorContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#listTypeDeclarator. - def visitListTypeDeclarator(self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext): + def visitListTypeDeclarator( + self, ctx: OpenSCENARIO2Parser.ListTypeDeclaratorContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#primitiveType. @@ -232,7 +264,9 @@ def visitEventDeclaration(self, ctx: OpenSCENARIO2Parser.EventDeclarationContext return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#eventSpecification. - def visitEventSpecification(self, ctx: OpenSCENARIO2Parser.EventSpecificationContext): + def visitEventSpecification( + self, ctx: OpenSCENARIO2Parser.EventSpecificationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#eventReference. @@ -280,7 +314,9 @@ def visitBoolExpression(self, ctx: OpenSCENARIO2Parser.BoolExpressionContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#durationExpression. - def visitDurationExpression(self, ctx: OpenSCENARIO2Parser.DurationExpressionContext): + def visitDurationExpression( + self, ctx: OpenSCENARIO2Parser.DurationExpressionContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#fieldDeclaration. @@ -288,11 +324,15 @@ def visitFieldDeclaration(self, ctx: OpenSCENARIO2Parser.FieldDeclarationContext return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#parameterDeclaration. - def visitParameterDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext): + def visitParameterDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#variableDeclaration. - def visitVariableDeclaration(self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext): + def visitVariableDeclaration( + self, ctx: OpenSCENARIO2Parser.VariableDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#sampleExpression. @@ -304,47 +344,69 @@ def visitDefaultValue(self, ctx: OpenSCENARIO2Parser.DefaultValueContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#parameterWithDeclaration. - def visitParameterWithDeclaration(self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext): + def visitParameterWithDeclaration( + self, ctx: OpenSCENARIO2Parser.ParameterWithDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#parameterWithMember. - def visitParameterWithMember(self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext): + def visitParameterWithMember( + self, ctx: OpenSCENARIO2Parser.ParameterWithMemberContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#constraintDeclaration. - def visitConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext): + def visitConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.ConstraintDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#keepConstraintDeclaration. - def visitKeepConstraintDeclaration(self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext): + def visitKeepConstraintDeclaration( + self, ctx: OpenSCENARIO2Parser.KeepConstraintDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#constraintQualifier. - def visitConstraintQualifier(self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext): + def visitConstraintQualifier( + self, ctx: OpenSCENARIO2Parser.ConstraintQualifierContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#constraintExpression. - def visitConstraintExpression(self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext): + def visitConstraintExpression( + self, ctx: OpenSCENARIO2Parser.ConstraintExpressionContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#removeDefaultDeclaration. - def visitRemoveDefaultDeclaration(self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext): + def visitRemoveDefaultDeclaration( + self, ctx: OpenSCENARIO2Parser.RemoveDefaultDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#parameterReference. - def visitParameterReference(self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext): + def visitParameterReference( + self, ctx: OpenSCENARIO2Parser.ParameterReferenceContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#modifierInvocation. - def visitModifierInvocation(self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext): + def visitModifierInvocation( + self, ctx: OpenSCENARIO2Parser.ModifierInvocationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#behaviorExpression. - def visitBehaviorExpression(self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext): + def visitBehaviorExpression( + self, ctx: OpenSCENARIO2Parser.BehaviorExpressionContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#behaviorSpecification. - def visitBehaviorSpecification(self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext): + def visitBehaviorSpecification( + self, ctx: OpenSCENARIO2Parser.BehaviorSpecificationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#onDirective. @@ -368,19 +430,27 @@ def visitComposition(self, ctx: OpenSCENARIO2Parser.CompositionContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#compositionOperator. - def visitCompositionOperator(self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext): + def visitCompositionOperator( + self, ctx: OpenSCENARIO2Parser.CompositionOperatorContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#behaviorInvocation. - def visitBehaviorInvocation(self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext): + def visitBehaviorInvocation( + self, ctx: OpenSCENARIO2Parser.BehaviorInvocationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#behaviorWithDeclaration. - def visitBehaviorWithDeclaration(self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext): + def visitBehaviorWithDeclaration( + self, ctx: OpenSCENARIO2Parser.BehaviorWithDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#behaviorWithMember. - def visitBehaviorWithMember(self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext): + def visitBehaviorWithMember( + self, ctx: OpenSCENARIO2Parser.BehaviorWithMemberContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#labelName. @@ -420,7 +490,9 @@ def visitReturnType(self, ctx: OpenSCENARIO2Parser.ReturnTypeContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#methodImplementation. - def visitMethodImplementation(self, ctx: OpenSCENARIO2Parser.MethodImplementationContext): + def visitMethodImplementation( + self, ctx: OpenSCENARIO2Parser.MethodImplementationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#methodQualifier. @@ -432,7 +504,9 @@ def visitMethodName(self, ctx: OpenSCENARIO2Parser.MethodNameContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#coverageDeclaration. - def visitCoverageDeclaration(self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext): + def visitCoverageDeclaration( + self, ctx: OpenSCENARIO2Parser.CoverageDeclarationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#coverDeclaration. @@ -444,7 +518,9 @@ def visitRecordDeclaration(self, ctx: OpenSCENARIO2Parser.RecordDeclarationConte return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#coverageExpression. - def visitCoverageExpression(self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext): + def visitCoverageExpression( + self, ctx: OpenSCENARIO2Parser.CoverageExpressionContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#coverageUnit. @@ -464,7 +540,9 @@ def visitCoverageEvent(self, ctx: OpenSCENARIO2Parser.CoverageEventContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#coverageNameArgument. - def visitCoverageNameArgument(self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext): + def visitCoverageNameArgument( + self, ctx: OpenSCENARIO2Parser.CoverageNameArgumentContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#targetName. @@ -544,19 +622,27 @@ def visitCastExpression(self, ctx: OpenSCENARIO2Parser.CastExpressionContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#functionApplicationExpression. - def visitFunctionApplicationExpression(self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext): + def visitFunctionApplicationExpression( + self, ctx: OpenSCENARIO2Parser.FunctionApplicationExpressionContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#fieldAccessExpression. - def visitFieldAccessExpression(self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext): + def visitFieldAccessExpression( + self, ctx: OpenSCENARIO2Parser.FieldAccessExpressionContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#elementAccessExpression. - def visitElementAccessExpression(self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext): + def visitElementAccessExpression( + self, ctx: OpenSCENARIO2Parser.ElementAccessExpressionContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#typeTestExpression. - def visitTypeTestExpression(self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext): + def visitTypeTestExpression( + self, ctx: OpenSCENARIO2Parser.TypeTestExpressionContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#fieldAccess. @@ -580,15 +666,21 @@ def visitRangeConstructor(self, ctx: OpenSCENARIO2Parser.RangeConstructorContext return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#identifierReference. - def visitIdentifierReference(self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext): + def visitIdentifierReference( + self, ctx: OpenSCENARIO2Parser.IdentifierReferenceContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#argumentListSpecification. - def visitArgumentListSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext): + def visitArgumentListSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentListSpecificationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#argumentSpecification. - def visitArgumentSpecification(self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext): + def visitArgumentSpecification( + self, ctx: OpenSCENARIO2Parser.ArgumentSpecificationContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#argumentName. @@ -600,7 +692,9 @@ def visitArgumentList(self, ctx: OpenSCENARIO2Parser.ArgumentListContext): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#positionalArgument. - def visitPositionalArgument(self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext): + def visitPositionalArgument( + self, ctx: OpenSCENARIO2Parser.PositionalArgumentContext + ): return self.visitChildren(ctx) # Visit a parse tree produced by OpenSCENARIO2Parser#namedArgument. diff --git a/srunner/osc2/osc_preprocess/import_file.py b/srunner/osc2/osc_preprocess/import_file.py index 7fdf84c2e..cd2f8bda7 100644 --- a/srunner/osc2/osc_preprocess/import_file.py +++ b/srunner/osc2/osc_preprocess/import_file.py @@ -9,7 +9,7 @@ class ImportFile: def __init__(self, base_path): self.__base_path = base_path - self.__file = open(base_path, encoding='utf-8') + self.__file = open(base_path, encoding="utf-8") # Get current path def get_path(self): @@ -30,14 +30,14 @@ def get_true_path(self, import_file_path): """ current_path = self.get_path() - import_file_path = import_file_path.rsplit('../') + import_file_path = import_file_path.rsplit("../") up_levels = len(import_file_path) - true_path = current_path.rsplit('/', up_levels)[0] + '/' + import_file_path[-1] + true_path = current_path.rsplit("/", up_levels)[0] + "/" + import_file_path[-1] return true_path # Get import members and return a queue of members def get_import_members(self): - file = open(self.get_path(), encoding='utf-8') + file = open(self.get_path(), encoding="utf-8") is_continue = True import_files = queue.Queue() while is_continue: @@ -66,7 +66,7 @@ def get_import_members(self): def get_content(self): lines = -1 # count the number of rows content = "" - file = open(self.get_path(), encoding='utf-8') + file = open(self.get_path(), encoding="utf-8") current_line = "start" pre_line = "" while current_line: @@ -80,10 +80,17 @@ def get_content(self): continue else: content += current_line - if pre_line.endswith('\n'): + if pre_line.endswith("\n"): return content, lines else: index = len(pre_line) print( - "[Error] file '" + self.get_path() + "' line " + lines.__str__() + ':' + index.__str__() + " mismatched input ''") + "[Error] file '" + + self.get_path() + + "' line " + + lines.__str__() + + ":" + + index.__str__() + + " mismatched input ''" + ) return content, lines diff --git a/srunner/osc2/osc_preprocess/import_msg.py b/srunner/osc2/osc_preprocess/import_msg.py index 6a84ca6a9..3e74242cc 100644 --- a/srunner/osc2/osc_preprocess/import_msg.py +++ b/srunner/osc2/osc_preprocess/import_msg.py @@ -19,7 +19,7 @@ def get_msg(self, line): def msg(self): msg = [] for i in range(len(self.index) - 1): - print(self.files[i] + ' : ' + str(self.index[i])) + print(self.files[i] + " : " + str(self.index[i])) # Empty stored information for running multiple files at once def clear_msg(self): diff --git a/srunner/osc2/osc_preprocess/pre_process.py b/srunner/osc2/osc_preprocess/pre_process.py index 55464e97d..e3dc7e75c 100644 --- a/srunner/osc2/osc_preprocess/pre_process.py +++ b/srunner/osc2/osc_preprocess/pre_process.py @@ -1,17 +1,18 @@ # Preprocess the osc file to expand the import import os -from srunner.osc2.utils.log_manager import * + from srunner.osc2.osc_preprocess.import_file import ImportFile # File preprocessor class from srunner.osc2.osc_preprocess.import_msg import create_ImportMsg as import_msg +from srunner.osc2.utils.log_manager import * class Preprocess: def __init__(self, current_path): self.import_msg = import_msg # The path to the current file, converted to an absolute path - self.current_path = os.getcwd() + '/' + current_path + self.current_path = os.getcwd() + "/" + current_path # invocation stack self.stack = [] # invocation record @@ -29,7 +30,7 @@ def exit(self, current, note): # Return import preprocessing results and import information def import_process(self): - self.file = open(self.result, "w+", encoding='utf-8') + self.file = open(self.result, "w+", encoding="utf-8") current = ImportFile(self.current_path) self.__import_process(current) self.file.close() diff --git a/srunner/osc2/symbol_manager/action_symbol.py b/srunner/osc2/symbol_manager/action_symbol.py index 164ee2512..f53875cb9 100644 --- a/srunner/osc2/symbol_manager/action_symbol.py +++ b/srunner/osc2/symbol_manager/action_symbol.py @@ -1,11 +1,10 @@ -from srunner.osc2.symbol_manager.scope import Scope +from srunner.osc2.symbol_manager.inherits_condition_symbol import ActionInhertsSymbol from srunner.osc2.symbol_manager.qualifiedBehavior_symbol import QualifiedBehaviorSymbol +from srunner.osc2.symbol_manager.scope import Scope from srunner.osc2.utils.log_manager import * -from srunner.osc2.symbol_manager.inherits_condition_symbol import ActionInhertsSymbol class ActionSymbol(QualifiedBehaviorSymbol, Scope): - def __init__(self, QualifiedBehaviorSymbol): super().__init__(QualifiedBehaviorSymbol.name, QualifiedBehaviorSymbol.scope) diff --git a/srunner/osc2/symbol_manager/actor_symbol.py b/srunner/osc2/symbol_manager/actor_symbol.py index b6a975380..1dcf197ae 100644 --- a/srunner/osc2/symbol_manager/actor_symbol.py +++ b/srunner/osc2/symbol_manager/actor_symbol.py @@ -3,7 +3,6 @@ class ActorSymbol(BaseSymbol): - def __init__(self, name, scope): super().__init__(name, scope) diff --git a/srunner/osc2/symbol_manager/argument_symbol.py b/srunner/osc2/symbol_manager/argument_symbol.py index b993fe3f6..29898a4ff 100644 --- a/srunner/osc2/symbol_manager/argument_symbol.py +++ b/srunner/osc2/symbol_manager/argument_symbol.py @@ -3,13 +3,11 @@ class ArgumentSymbol(BaseSymbol): - def __init__(self, name, scope): super().__init__(name, scope) class NamedArgumentSymbol(ArgumentSymbol): - def __init__(self, name, scope): super().__init__(name, scope) @@ -21,7 +19,6 @@ def __str__(self): class PositionalArgumentSymbol(ArgumentSymbol): - def __init__(self, scope): super().__init__(None, scope) @@ -31,7 +28,6 @@ def __str__(self): class ArgumentSpecificationSymbol(TypedSymbol): - def __init__(self, name, scope, type, value=None): super().__init__(name, scope, type, value) diff --git a/srunner/osc2/symbol_manager/base_scope.py b/srunner/osc2/symbol_manager/base_scope.py index fc8474405..b7584bf06 100644 --- a/srunner/osc2/symbol_manager/base_scope.py +++ b/srunner/osc2/symbol_manager/base_scope.py @@ -2,12 +2,11 @@ from srunner.osc2.symbol_manager.symbol import Symbol from srunner.osc2.utils.log_manager import * - # All symbols defined in this scope; This can include classes, functions, variables, # or any other symbolic impl. It does not include things that are not based on symbols -class BaseScope(Scope): +class BaseScope(Scope): def __init__(self, scope: Scope): self.enclosing_scope = scope self.symbols = {} @@ -44,5 +43,5 @@ def get_child_symbol(self, i): return list(self.symbols.values())[i] def __str__(self): - buf = self.get_scope_name() + ' : ' + list(self.symbols.keys()).__str__() + buf = self.get_scope_name() + " : " + list(self.symbols.keys()).__str__() return buf diff --git a/srunner/osc2/symbol_manager/base_symbol.py b/srunner/osc2/symbol_manager/base_symbol.py index e67933221..9646b414d 100644 --- a/srunner/osc2/symbol_manager/base_symbol.py +++ b/srunner/osc2/symbol_manager/base_symbol.py @@ -1,12 +1,12 @@ import copy + +from srunner.osc2.symbol_manager.local_scope import LocalScope from srunner.osc2.symbol_manager.symbol import Symbol from srunner.osc2.utils.log_manager import * from srunner.osc2.utils.tools import * -from srunner.osc2.symbol_manager.local_scope import LocalScope class BaseSymbol(Symbol): - def __init__(self, name, scope): super().__init__(name, scope) self.enclosing_scope = scope @@ -43,7 +43,7 @@ def define(self, sym, ctx): self.symbols[sub_sym.name] = sub_sym else: if self.is_key_found(sym): - sep = '#' + sep = "#" name = sym.name.split(sep, 1)[0] msg = name + " is already defined!" LOG_ERROR(msg, ctx) diff --git a/srunner/osc2/symbol_manager/behavior_symbol.py b/srunner/osc2/symbol_manager/behavior_symbol.py index f09934a60..7b8ad8bf3 100644 --- a/srunner/osc2/symbol_manager/behavior_symbol.py +++ b/srunner/osc2/symbol_manager/behavior_symbol.py @@ -3,7 +3,6 @@ class BehaviorInvocationSymbol(BaseSymbol): - def __init__(self, behavior_name, scope, actor_name=None): name = "" if actor_name is not None: @@ -23,10 +22,9 @@ def __str__(self): class BehaviorWithScope(LocalScope): - def __init__(self, scope): super().__init__(scope) - self.name = 'with' + self.name = "with" def __str__(self): - return 'with' + return "with" diff --git a/srunner/osc2/symbol_manager/composition_symbol.py b/srunner/osc2/symbol_manager/composition_symbol.py index e6682292b..287f92d57 100644 --- a/srunner/osc2/symbol_manager/composition_symbol.py +++ b/srunner/osc2/symbol_manager/composition_symbol.py @@ -1,8 +1,8 @@ from srunner.osc2.symbol_manager.base_symbol import BaseSymbol - # compositionOperator : 'serial' | 'one_of' | 'parallel'; + class CompositionSymbol(BaseSymbol): def __init__(self, name, scope): super().__init__(name, scope) @@ -10,14 +10,14 @@ def __init__(self, name, scope): class SerialSymbol(CompositionSymbol): def __init__(self, scope): - super().__init__('serial', scope) + super().__init__("serial", scope) class OneOfSymbol(CompositionSymbol): def __init__(self, scope): - super().__init__('one_of', scope) + super().__init__("one_of", scope) class ParallelSymbol(CompositionSymbol): def __init__(self, scope): - super().__init__('parallel', scope) + super().__init__("parallel", scope) diff --git a/srunner/osc2/symbol_manager/compound _symbol.py b/srunner/osc2/symbol_manager/compound _symbol.py index caa69dff4..7ece4ab78 100644 --- a/srunner/osc2/symbol_manager/compound _symbol.py +++ b/srunner/osc2/symbol_manager/compound _symbol.py @@ -1,5 +1,5 @@ -from srunner.osc2.symbol_manager.symbol import Symbol from srunner.osc2.symbol_manager.scope import Scope +from srunner.osc2.symbol_manager.symbol import Symbol class CompoundSymbol(Symbol, Scope): diff --git a/srunner/osc2/symbol_manager/constraint_decl_scope.py b/srunner/osc2/symbol_manager/constraint_decl_scope.py index 5a69dc861..3bc8c273d 100644 --- a/srunner/osc2/symbol_manager/constraint_decl_scope.py +++ b/srunner/osc2/symbol_manager/constraint_decl_scope.py @@ -2,19 +2,17 @@ class ConstraintScope(LocalScope): - def __init__(self, scope, constraint_qualifier): super().__init__(scope) self.constraint_qualifier = constraint_qualifier def get_scope_name(self): - return 'constraint' + return "constraint" class KeepScope(ConstraintScope): - def __init__(self, scope, constraint_qualifier): super().__init__(scope, constraint_qualifier) def get_scope_name(self): - return 'keep' + return "keep" diff --git a/srunner/osc2/symbol_manager/default_value_scope.py b/srunner/osc2/symbol_manager/default_value_scope.py index d4c87932e..6515f7daf 100644 --- a/srunner/osc2/symbol_manager/default_value_scope.py +++ b/srunner/osc2/symbol_manager/default_value_scope.py @@ -2,10 +2,9 @@ class DefaultValueScope(LocalScope): - def __init__(self, scope): super().__init__(scope) - self.name = '=' + self.name = "=" def __str__(self): buf = self.name diff --git a/srunner/osc2/symbol_manager/doMember_symbol.py b/srunner/osc2/symbol_manager/doMember_symbol.py index 7863a0724..96810af52 100644 --- a/srunner/osc2/symbol_manager/doMember_symbol.py +++ b/srunner/osc2/symbol_manager/doMember_symbol.py @@ -5,7 +5,6 @@ # domember scope class DoMemberSymbol(BaseSymbol): - def __init__(self, name, scope, op): super().__init__(name, scope) self.op = op diff --git a/srunner/osc2/symbol_manager/do_directive_scope.py b/srunner/osc2/symbol_manager/do_directive_scope.py index c29ed4305..e4c895605 100644 --- a/srunner/osc2/symbol_manager/do_directive_scope.py +++ b/srunner/osc2/symbol_manager/do_directive_scope.py @@ -1,13 +1,12 @@ from srunner.osc2.symbol_manager.local_scope import LocalScope - # compositionOperator : 'serial' | 'one_of' | 'parallel'; -class DoDirectiveScope(LocalScope): +class DoDirectiveScope(LocalScope): def __init__(self, scope): super().__init__(scope) - self.name = 'do' + self.name = "do" def __str__(self): buf = self.__class__.__name__ diff --git a/srunner/osc2/symbol_manager/enum_symbol.py b/srunner/osc2/symbol_manager/enum_symbol.py index 7cd395880..5a10a006f 100644 --- a/srunner/osc2/symbol_manager/enum_symbol.py +++ b/srunner/osc2/symbol_manager/enum_symbol.py @@ -1,10 +1,9 @@ from srunner.osc2.error_manager import * -from srunner.osc2.utils.log_manager import LOG_ERROR from srunner.osc2.symbol_manager.base_symbol import BaseSymbol +from srunner.osc2.utils.log_manager import LOG_ERROR class EnumValueRefSymbol(BaseSymbol): - def __init__(self, enum_name, enum_member_name, value, scope): name = enum_name + "!" + enum_member_name super().__init__(name, scope) @@ -14,26 +13,24 @@ def __init__(self, enum_name, enum_member_name, value, scope): def __str__(self): buf = self.name - buf += ' = ' + buf += " = " buf += str(self.value) return buf class EnumMemberSymbol(BaseSymbol): - def __init__(self, name, scope, member_value=0): super().__init__(name, scope) self.elems_index = member_value def __str__(self): buf = super().__str__() - buf += ' : ' + buf += " : " buf += str(self.elems_index) return buf class EnumSymbol(BaseSymbol): - def __init__(self, name, scope): super().__init__(name, scope) self.last_index = -1 @@ -41,13 +38,22 @@ def __init__(self, name, scope): def define(self, sym: EnumMemberSymbol, ctx): # Check for name conflicts if sym.name in self.symbols and sym.name: - msg = "Enum member \'" + sym.name + "\' is already defined!" + msg = "Enum member '" + sym.name + "' is already defined!" LOG_ERROR(msg, ctx) # Check that the enumeration element value is correct # The default value of an enumeration member must be a subsequent integer value - if sym.elems_index != 0 and sym.elems_index != self.last_index + 1 and self.last_index != -1: - msg = "Enum member \'" + sym.name + "\' with wrong Value: " + str(sym.elems_index) + if ( + sym.elems_index != 0 + and sym.elems_index != self.last_index + 1 + and self.last_index != -1 + ): + msg = ( + "Enum member '" + + sym.name + + "' with wrong Value: " + + str(sym.elems_index) + ) LOG_ERROR(msg, ctx) else: self.symbols[sym.name] = sym diff --git a/srunner/osc2/symbol_manager/event_symbol.py b/srunner/osc2/symbol_manager/event_symbol.py index 36ae0019a..8877660eb 100644 --- a/srunner/osc2/symbol_manager/event_symbol.py +++ b/srunner/osc2/symbol_manager/event_symbol.py @@ -1,9 +1,8 @@ -from srunner.osc2.symbol_manager.base_symbol import BaseSymbol from srunner.osc2.symbol_manager.argument_symbol import ArgumentSpecificationSymbol +from srunner.osc2.symbol_manager.base_symbol import BaseSymbol class EventSymbol(BaseSymbol): - def __init__(self, name, scope): super().__init__(name, scope) self.declaration_address = None @@ -20,6 +19,5 @@ def is_key_found(self, sym): class EventRefSymbol(BaseSymbol): - def __init__(self, name, scope): super().__init__(name, scope) diff --git a/srunner/osc2/symbol_manager/global_scope.py b/srunner/osc2/symbol_manager/global_scope.py index 5bb966712..720d9578d 100644 --- a/srunner/osc2/symbol_manager/global_scope.py +++ b/srunner/osc2/symbol_manager/global_scope.py @@ -3,12 +3,11 @@ # Global scope class GlobalScope(BaseScope): - def __init__(self, scope): super().__init__(scope) def get_scope_name(self): - return 'global' + return "global" def __str__(self): - return 'global' + return "global" diff --git a/srunner/osc2/symbol_manager/identifier_scope.py b/srunner/osc2/symbol_manager/identifier_scope.py index 0cb3ce080..84ad7e4b1 100644 --- a/srunner/osc2/symbol_manager/identifier_scope.py +++ b/srunner/osc2/symbol_manager/identifier_scope.py @@ -2,7 +2,6 @@ class IdentifierScope(LocalScope): - def __init__(self, name, scope): super().__init__(scope) self.name = name diff --git a/srunner/osc2/symbol_manager/inherits_condition_symbol.py b/srunner/osc2/symbol_manager/inherits_condition_symbol.py index ceb75b69e..abcbddba3 100644 --- a/srunner/osc2/symbol_manager/inherits_condition_symbol.py +++ b/srunner/osc2/symbol_manager/inherits_condition_symbol.py @@ -1,7 +1,6 @@ from srunner.osc2.symbol_manager.base_symbol import BaseSymbol from srunner.osc2.symbol_manager.enum_symbol import EnumValueRefSymbol - # There are two types of inheritance # 1. Unconditional inheritance # 2. Conditional inheritance @@ -12,8 +11,8 @@ # and scenarios and actions that do not belong to actors can only be inherited from scenarios # or actions that do not belong to roles.(action and actor) -class InheritsConditionSymbol(BaseSymbol): +class InheritsConditionSymbol(BaseSymbol): def __init__(self, name, scope): super().__init__(name, scope) @@ -26,7 +25,6 @@ def is_key_found(self, sym): class InheritSymbol(BaseSymbol): - def __init__(self, name, scope, super_class_scope): super().__init__(name, scope) self.super_class_scope = super_class_scope @@ -54,29 +52,33 @@ def get_child_symbol(self, i): return list(self.super_class_scope.symbols.values())[i] def __str__(self): - buf = 'inherits: ' + self.name + buf = "inherits: " + self.name return buf class StructInhertsSymbol(InheritSymbol): - def __init__(self, name, scope, super_class_scope): super().__init__(name, scope, super_class_scope) class ActorInhertsSymbol(InheritSymbol): - def __init__(self, name, scope, super_class_scope): super().__init__(name, scope, super_class_scope) class ActionInhertsSymbol(InheritSymbol): - def __init__(self, QualifiedBehaviorSymbol, super_class_scope): - super().__init__(QualifiedBehaviorSymbol.name, QualifiedBehaviorSymbol.scope, super_class_scope) + super().__init__( + QualifiedBehaviorSymbol.name, + QualifiedBehaviorSymbol.scope, + super_class_scope, + ) class ScenarioInhertsSymbol(InheritSymbol): - def __init__(self, QualifiedBehaviorSymbol, super_class_scope): - super().__init__(QualifiedBehaviorSymbol.name, QualifiedBehaviorSymbol.scope, super_class_scope) + super().__init__( + QualifiedBehaviorSymbol.name, + QualifiedBehaviorSymbol.scope, + super_class_scope, + ) diff --git a/srunner/osc2/symbol_manager/local_scope.py b/srunner/osc2/symbol_manager/local_scope.py index c4f2214ce..2fa6af27f 100644 --- a/srunner/osc2/symbol_manager/local_scope.py +++ b/srunner/osc2/symbol_manager/local_scope.py @@ -3,7 +3,6 @@ class LocalScope(BaseScope): - def __init__(self, scope): super().__init__(scope) @@ -25,4 +24,4 @@ def define(self, sym, ctx): self.symbols[sym.name] = sym def get_scope_name(self): - return 'local' + return "local" diff --git a/srunner/osc2/symbol_manager/method_symbol.py b/srunner/osc2/symbol_manager/method_symbol.py index d691b0559..1425d9ca3 100644 --- a/srunner/osc2/symbol_manager/method_symbol.py +++ b/srunner/osc2/symbol_manager/method_symbol.py @@ -1,9 +1,8 @@ -from srunner.osc2.symbol_manager.base_symbol import BaseSymbol from srunner.osc2.symbol_manager.argument_symbol import ArgumentSpecificationSymbol +from srunner.osc2.symbol_manager.base_symbol import BaseSymbol class MethodSymbol(BaseSymbol): - def __init__(self, name, scope): super().__init__(name, scope) self.declaration_address = None diff --git a/srunner/osc2/symbol_manager/modifier_symbol.py b/srunner/osc2/symbol_manager/modifier_symbol.py index 7f5f14709..6f84b563b 100644 --- a/srunner/osc2/symbol_manager/modifier_symbol.py +++ b/srunner/osc2/symbol_manager/modifier_symbol.py @@ -1,21 +1,19 @@ from srunner.osc2.symbol_manager.base_symbol import BaseSymbol from srunner.osc2.symbol_manager.local_scope import LocalScope - ############################################################### # There are two types of modifiers # 1. Atomic modifiers # 2. Compound modifiers -class ModifierSymbol(BaseSymbol): +class ModifierSymbol(BaseSymbol): def __init__(self, name, scope): super().__init__(name, scope) self.declaration_address = None class ModifierInvocationSymbol(LocalScope): - def __init__(self, behavior_name, scope, actor_name=None): name = "" if actor_name is not None: diff --git a/srunner/osc2/symbol_manager/parameter_symbol.py b/srunner/osc2/symbol_manager/parameter_symbol.py index 48717eb1f..9f7fa9303 100644 --- a/srunner/osc2/symbol_manager/parameter_symbol.py +++ b/srunner/osc2/symbol_manager/parameter_symbol.py @@ -2,7 +2,6 @@ class ParameterSymbol(TypedSymbol): - def __init__(self, name, scope, type, value=None): super().__init__(name, scope, type, value) diff --git a/srunner/osc2/symbol_manager/physical_type_symbol.py b/srunner/osc2/symbol_manager/physical_type_symbol.py index dc00dfa31..2a81dd128 100644 --- a/srunner/osc2/symbol_manager/physical_type_symbol.py +++ b/srunner/osc2/symbol_manager/physical_type_symbol.py @@ -1,9 +1,8 @@ from srunner.osc2.symbol_manager.base_symbol import BaseSymbol -from srunner.osc2.utils.log_manager import * from srunner.osc2.symbol_manager.si_exponent_symbol import SiExpSymbol +from srunner.osc2.utils.log_manager import * class PhysicalTypeSymbol(BaseSymbol): - def __init__(self, name, scope): super().__init__(name, scope) diff --git a/srunner/osc2/symbol_manager/qualifiedBehavior_symbol.py b/srunner/osc2/symbol_manager/qualifiedBehavior_symbol.py index 3c7b8e942..34dc5fe72 100644 --- a/srunner/osc2/symbol_manager/qualifiedBehavior_symbol.py +++ b/srunner/osc2/symbol_manager/qualifiedBehavior_symbol.py @@ -3,7 +3,6 @@ class QualifiedBehaviorSymbol(BaseSymbol): - # Applies only to calls to a specified scenario or as a member of that scenario # Modifiers can be associated with specific scene types. # These modifiers can be applied to calls that associate scenarios in the with block of the call. @@ -36,7 +35,11 @@ def is_actor_name_defined(self): def is_qualified_behavior_name_valid(self, ctx): if self.actor_name == self.behavior_name and self.actor_name: - error_msg = "behaviorName:\"" + self.behavior_name + "\" can not be same with actorName!" + error_msg = ( + 'behaviorName:"' + + self.behavior_name + + '" can not be same with actorName!' + ) LOG_ERROR(error_msg, ctx) elif self.is_actor_name_defined() is not True: error_msg = "actorName: " + self.actor_name + " is not defined!" diff --git a/srunner/osc2/symbol_manager/scenario_symbol.py b/srunner/osc2/symbol_manager/scenario_symbol.py index fda70bf81..4b74d3c55 100644 --- a/srunner/osc2/symbol_manager/scenario_symbol.py +++ b/srunner/osc2/symbol_manager/scenario_symbol.py @@ -1,11 +1,10 @@ -from srunner.osc2.symbol_manager.scope import Scope +from srunner.osc2.symbol_manager.inherits_condition_symbol import ScenarioInhertsSymbol from srunner.osc2.symbol_manager.qualifiedBehavior_symbol import QualifiedBehaviorSymbol +from srunner.osc2.symbol_manager.scope import Scope from srunner.osc2.utils.log_manager import * -from srunner.osc2.symbol_manager.inherits_condition_symbol import ScenarioInhertsSymbol class ScenarioSymbol(QualifiedBehaviorSymbol, Scope): - def __init__(self, QualifiedBehaviorSymbol): super().__init__(QualifiedBehaviorSymbol.name, QualifiedBehaviorSymbol.scope) self.declaration_address = None diff --git a/srunner/osc2/symbol_manager/si_exponent_symbol.py b/srunner/osc2/symbol_manager/si_exponent_symbol.py index a71999ed4..003e305b1 100644 --- a/srunner/osc2/symbol_manager/si_exponent_symbol.py +++ b/srunner/osc2/symbol_manager/si_exponent_symbol.py @@ -3,7 +3,6 @@ class SiExpSymbol(BaseSymbol): - def __init__(self, name, value, scope): super().__init__(name, scope) self.value = value @@ -16,7 +15,6 @@ def __str__(self): class SiBaseExponentListScope(LocalScope): - def __init__(self, scope): super().__init__(scope) diff --git a/srunner/osc2/symbol_manager/struct_symbol.py b/srunner/osc2/symbol_manager/struct_symbol.py index 29ebdf596..3d3eef33b 100644 --- a/srunner/osc2/symbol_manager/struct_symbol.py +++ b/srunner/osc2/symbol_manager/struct_symbol.py @@ -3,7 +3,6 @@ class StructSymbol(BaseSymbol): - def __init__(self, name, scope): super().__init__(name, scope) diff --git a/srunner/osc2/symbol_manager/symbol.py b/srunner/osc2/symbol_manager/symbol.py index cc7ba677c..59a1b61be 100644 --- a/srunner/osc2/symbol_manager/symbol.py +++ b/srunner/osc2/symbol_manager/symbol.py @@ -3,6 +3,7 @@ # symbols are added to a scope because this often translates to # register or parameter numbers. + class Symbol: def __init__(self, name=None, scope=None): self.name = name diff --git a/srunner/osc2/symbol_manager/type.py b/srunner/osc2/symbol_manager/type.py index 8d74287d5..60ec28eb9 100644 --- a/srunner/osc2/symbol_manager/type.py +++ b/srunner/osc2/symbol_manager/type.py @@ -3,16 +3,15 @@ class BaseType: - def get_type_name(self): pass - ''' + """ It is useful during type computation and code gen to assign an int index to the primitive types and possibly user-defined types like structs and classes. @return Return 0-indexed type index else -1 if no index. - ''' + """ def get_type_index(self): pass diff --git a/srunner/osc2/symbol_manager/typed_symbol.py b/srunner/osc2/symbol_manager/typed_symbol.py index c25647d1f..f054aa84f 100644 --- a/srunner/osc2/symbol_manager/typed_symbol.py +++ b/srunner/osc2/symbol_manager/typed_symbol.py @@ -1,6 +1,5 @@ from srunner.osc2.symbol_manager.base_symbol import BaseSymbol - # This interface tags user-defined symbols that have static type information, # like variables and functions. @@ -18,10 +17,10 @@ # primitiveType : 'int' | 'uint' | 'float' | 'bool' | 'string'; # typeName : Identifier; + # Here the ListMemberSymbol corresponds to the argumentSpecification: # argumentName ':' typeDeclarator ('=' defaultValue)?; class TypedSymbol(BaseSymbol): - def __init__(self, name, scope, type, value=None): super().__init__(name, scope) self.type = type @@ -35,12 +34,11 @@ def set_type(self, type): class BoolSymbol(TypedSymbol): - def __init__(self, scope, value=None): - super().__init__('bool', scope, 'bool', value) + super().__init__("bool", scope, "bool", value) def __str__(self): - buf = 'bool' + buf = "bool" if self.value is not None: buf += " : " buf += str(self.value) @@ -48,7 +46,6 @@ def __str__(self): class IntSymbol(TypedSymbol): - def __init__(self, scope, type, value=None): super().__init__(type, scope, type, value) @@ -61,9 +58,8 @@ def __str__(self): class PhysicalSymbol(TypedSymbol): - def __init__(self, scope, type, value=None): - super().__init__('physical', scope, type, value) + super().__init__("physical", scope, type, value) def __str__(self): buf = self.__class__.__name__ @@ -76,12 +72,11 @@ def __str__(self): class IdentifierSymbol(TypedSymbol): - def __init__(self, name, scope, value=None): - super().__init__(name, scope, 'identifier', value) + super().__init__(name, scope, "identifier", value) def __str__(self): - buf = 'identifier' + buf = "identifier" buf += " : " buf += self.name if self.value is not None: @@ -91,12 +86,11 @@ def __str__(self): class StringSymbol(TypedSymbol): - def __init__(self, scope, value=None): - super().__init__('string', scope, 'string', value) + super().__init__("string", scope, "string", value) def __str__(self): - buf = 'string' + buf = "string" if self.value is not None: buf += " : " buf += str(self.value) @@ -104,12 +98,11 @@ def __str__(self): class FloatSymbol(TypedSymbol): - def __init__(self, scope, value=None): - super().__init__('float', scope, 'float', value) + super().__init__("float", scope, "float", value) def __str__(self): - buf = 'float' + buf = "float" if self.value is not None: buf += ":" buf += str(self.value) diff --git a/srunner/osc2/symbol_manager/unit_symbol.py b/srunner/osc2/symbol_manager/unit_symbol.py index 170bd02be..08bff3b27 100644 --- a/srunner/osc2/symbol_manager/unit_symbol.py +++ b/srunner/osc2/symbol_manager/unit_symbol.py @@ -3,7 +3,6 @@ class UnitSymbol(BaseSymbol): - def __init__(self, name, scope, physical_name): super().__init__(name, scope) self.physical_name = physical_name diff --git a/srunner/osc2/symbol_manager/variable_symbol.py b/srunner/osc2/symbol_manager/variable_symbol.py index 2d0b56cdd..02302389c 100644 --- a/srunner/osc2/symbol_manager/variable_symbol.py +++ b/srunner/osc2/symbol_manager/variable_symbol.py @@ -2,6 +2,5 @@ class VariableSymbol(TypedSymbol): - def __init__(self, name, scope, type, value=None): super().__init__(name, scope, type, value) diff --git a/srunner/osc2/symbol_manager/wait_symbol.py b/srunner/osc2/symbol_manager/wait_symbol.py index 9979d9e5f..4987df883 100644 --- a/srunner/osc2/symbol_manager/wait_symbol.py +++ b/srunner/osc2/symbol_manager/wait_symbol.py @@ -2,6 +2,5 @@ class WaitSymbol(BaseSymbol): - def __init__(self, scope): - super().__init__('wait', scope) + super().__init__("wait", scope) diff --git a/srunner/osc2/utils/log_manager.py b/srunner/osc2/utils/log_manager.py index d69f61a75..4ea0102e8 100644 --- a/srunner/osc2/utils/log_manager.py +++ b/srunner/osc2/utils/log_manager.py @@ -1,5 +1,6 @@ import logging import sys + from srunner.osc2.osc_preprocess.import_msg import create_ImportMsg as import_msg try: @@ -12,31 +13,68 @@ ERROR_MAX_COUNT = 10 # Output the maximum number of errors LOG_LEVEL = logging.ERROR # The lowest level of output logs LOG_FORMAT = "%(message)s " # Output log format -DATE_FORMAT = '%Y-%m-%d %H:%M:%S %a ' # Format of the output time +DATE_FORMAT = "%Y-%m-%d %H:%M:%S %a " # Format of the output time -logging.basicConfig(level=LOG_LEVEL, - format=LOG_FORMAT, - datefmt=DATE_FORMAT, - ) +logging.basicConfig( + level=LOG_LEVEL, + format=LOG_FORMAT, + datefmt=DATE_FORMAT, +) def LOG_DEBUG(msg, token=None, line=None, column=None): if token is not None: file_path, line = import_msg.get_msg(token.line) - msg = '[Debug] file "' + file_path + '", line ' + str(line) + ':' + str(token.column) + ', ' + msg + msg = ( + '[Debug] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(token.column) + + ", " + + msg + ) elif line is not None and column is not None: file_path, line = import_msg.get_msg(line) - msg = '[Debug] file "' + file_path + '", line ' + str(line) + ':' + str(column) + ', ' + msg + msg = ( + '[Debug] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(column) + + ", " + + msg + ) logging.debug(msg) def LOG_INFO(msg, token=None, line=None, column=None): if token is not None: file_path, line = import_msg.get_msg(token.line) - msg = '[Info] file "' + file_path + '", line ' + str(line) + ':' + str(token.column) + ', ' + msg + msg = ( + '[Info] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(token.column) + + ", " + + msg + ) elif line is not None and column is not None: file_path, line = import_msg.get_msg(line) - msg = '[Info] file "' + file_path + '", line ' + str(line) + ':' + str(column) + ', ' + msg + msg = ( + '[Info] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(column) + + ", " + + msg + ) logging.info(msg) @@ -45,12 +83,34 @@ def LOG_WARNING(msg, token=None, line=None, column=None): run_log_msg = "" if token is not None: file_path, line = import_msg.get_msg(token.line) - run_log_msg = '[Warning]' + ' line ' + str(line) + ':' + str(token.column) + ', ' + msg - msg = '[Warning] file "' + file_path + '", line ' + str(line) + ':' + str(token.column) + ', ' + msg + run_log_msg = ( + "[Warning]" + " line " + str(line) + ":" + str(token.column) + ", " + msg + ) + msg = ( + '[Warning] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(token.column) + + ", " + + msg + ) elif line is not None and column is not None: file_path, line = import_msg.get_msg(line) - run_log_msg = '[Warning]' + ' line ' + str(line) + ':' + str(column) + ', ' + msg - msg = '[Warning] file "' + file_path + '", line ' + str(line) + ':' + str(column) + ', ' + msg + run_log_msg = ( + "[Warning]" + " line " + str(line) + ":" + str(column) + ", " + msg + ) + msg = ( + '[Warning] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(column) + + ", " + + msg + ) if log_msg and log_msg.is_open: log_msg.add_log_msg(run_log_msg) else: @@ -66,12 +126,32 @@ def LOG_ERROR(msg, token=None, line=None, column=None): run_log_msg = "" if token is not None: file_path, line = import_msg.get_msg(token.line) - run_log_msg = '[Error]' + ' line ' + str(line) + ':' + str(token.column) + ', ' + msg - msg = '[Error] file "' + file_path + '", line ' + str(line) + ':' + str(token.column) + ', ' + msg + run_log_msg = ( + "[Error]" + " line " + str(line) + ":" + str(token.column) + ", " + msg + ) + msg = ( + '[Error] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(token.column) + + ", " + + msg + ) elif line is not None and column is not None: file_path, line = import_msg.get_msg(line) - run_log_msg = '[Error]' + ' line ' + str(line) + ':' + str(column) + ', ' + msg - msg = '[Error] file "' + file_path + '", line ' + str(line) + ':' + str(column) + ', ' + msg + run_log_msg = "[Error]" + " line " + str(line) + ":" + str(column) + ", " + msg + msg = ( + '[Error] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(column) + + ", " + + msg + ) # If you run run_symbol_testcases.py, no error is reported if log_msg and log_msg.is_open: log_msg.add_log_msg(run_log_msg) @@ -94,10 +174,28 @@ def LOG_CRITICAL(msg, token=None, line=None, column=None): if token is not None: file_path, line = import_msg.get_msg(token.line) - msg = '[Error] file "' + file_path + '", line ' + str(line) + ':' + str(token.column) + ', ' + msg + msg = ( + '[Error] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(token.column) + + ", " + + msg + ) elif line is not None and column is not None: file_path, line = import_msg.get_msg(line) - msg = '[Error] file "' + file_path + '", line ' + str(line) + ':' + str(column) + ', ' + msg + msg = ( + '[Error] file "' + + file_path + + '", line ' + + str(line) + + ":" + + str(column) + + ", " + + msg + ) logging.critical(msg) ERROR_COUNT += 1 if ERROR_COUNT >= ERROR_MAX_COUNT: diff --git a/srunner/osc2/utils/relational_operator.py b/srunner/osc2/utils/relational_operator.py index d292f8287..27f5b3a49 100644 --- a/srunner/osc2/utils/relational_operator.py +++ b/srunner/osc2/utils/relational_operator.py @@ -3,13 +3,13 @@ class RelationalOperator(Enum): - EQUALITY = '==' - INEQUALITY = '!=' - LESS_THAN = '<' - LESS_OR_EQUAL = '<=' - GREATER_THAN = '>' - GREATER_OR_EQUAL = '>=' - MEMBERSHIP = 'in' + EQUALITY = "==" + INEQUALITY = "!=" + LESS_THAN = "<" + LESS_OR_EQUAL = "<=" + GREATER_THAN = ">" + GREATER_OR_EQUAL = ">=" + MEMBERSHIP = "in" @staticmethod def values(): diff --git a/srunner/osc2/utils/tools.py b/srunner/osc2/utils/tools.py index 99ca39d41..8dff2fa6f 100644 --- a/srunner/osc2/utils/tools.py +++ b/srunner/osc2/utils/tools.py @@ -1,7 +1,8 @@ import re -from antlr4.tree.Tree import TerminalNodeImpl from typing import Tuple +from antlr4.tree.Tree import TerminalNodeImpl + # node:Input parameter, node of the tree # nodes:Enter the parameter, number the nodes in traversal order, and line the nodes with the number @@ -16,7 +17,9 @@ def render_symbol(node, nodes, pindex, g): g.node(str(index), name) if index != pindex: - g.edge(str(pindex), str(index)) # The edge is from father to son, if there is no upside down tree + g.edge( + str(pindex), str(index) + ) # The edge is from father to son, if there is no upside down tree for i in range(0, node.get_number_of_symbols()): render_symbol(node.get_child_symbol(i), nodes, index, g) @@ -33,21 +36,21 @@ def print_parse_tree(tree, ruleNames, indent=0): def multi_field_name_append(names, field_name): - if names == '': + if names == "": names = field_name else: - names = names + '%' + field_name + names = names + "%" + field_name return names def multi_field_name_split(names): - return names.split('%') + return names.split("%") def is_multi_name(names): if not names: return False - elif '%' in names: + elif "%" in names: return True else: return False diff --git a/srunner/osc2_dm/map.py b/srunner/osc2_dm/map.py index 67e250caf..a700a14d3 100644 --- a/srunner/osc2_dm/map.py +++ b/srunner/osc2_dm/map.py @@ -3,7 +3,7 @@ class map: - map_file = '' + map_file = "" routes = [] junctions = [] driving_rule = [] @@ -58,8 +58,19 @@ def number_of_lanes(self, route, num_of_lanes, lane_type, lane_use, directionali def routes_are_in_sequence(self, preceding, succeeding, road): pass - def roads_follow_in_junction(self, junction, in_road, out_road, direction, clockwise_count, number_of_roads, - in_lane, out_lane, junction_route, resulting_route): + def roads_follow_in_junction( + self, + junction, + in_road, + out_road, + direction, + clockwise_count, + number_of_roads, + in_lane, + out_lane, + junction_route, + resulting_route, + ): pass def routes_overlap(route1, route2, overlap_kind): @@ -89,7 +100,7 @@ def set_map_file(file: str) -> Any: class driving_rule(IntEnum): - left_hand_traffic = 1, + left_hand_traffic = (1,) right_hand_traffic = 2 diff --git a/srunner/osc2_dm/physical_object.py b/srunner/osc2_dm/physical_object.py index 3d1a9857f..4c5c9b918 100644 --- a/srunner/osc2_dm/physical_object.py +++ b/srunner/osc2_dm/physical_object.py @@ -1,21 +1,21 @@ class PhysicalObject(object): - # All locations have been converted to meters and speeds to meters/second. + # All locations have been converted to meters and speeds to meters/second. def __init__(self, name: str, si_base_exponent: dict) -> None: self.physical_name = name self.si_base_exponent = si_base_exponent def __add__(self, right): - physical_name = self.physical_name + '+' + right.physical_name + physical_name = self.physical_name + "+" + right.physical_name si_base_exponent = self.si_base_exponent return PhysicalObject(physical_name, si_base_exponent) def __sub__(self, right): - physical_name = self.physical_name + '-' + right.physical_name + physical_name = self.physical_name + "-" + right.physical_name si_base_exponent = self.si_base_exponent return PhysicalObject(physical_name, si_base_exponent) def __truediv__(self, right): - physical_name = self.physical_name + '/' + right.physical_name + physical_name = self.physical_name + "/" + right.physical_name si_base_exponent = self.si_base_exponent for key, value in right.si_base_exponent.items(): if key in si_base_exponent: @@ -26,7 +26,7 @@ def __truediv__(self, right): # Multiplication def __mul__(self, right): - physical_name = self.physical_name + '*' + right.physical_name + physical_name = self.physical_name + "*" + right.physical_name si_base_exponent = self.si_base_exponent for key, value in right.si_base_exponent.items(): if key in si_base_exponent: @@ -37,7 +37,6 @@ def __mul__(self, right): class UnitObject(object): - def __init__(self, name, physical, factor=1.0, offset=0) -> None: self.unit_name = name self.physical = physical diff --git a/srunner/osc2_dm/physical_types.py b/srunner/osc2_dm/physical_types.py index c2eb856ed..68f0f0e7d 100644 --- a/srunner/osc2_dm/physical_types.py +++ b/srunner/osc2_dm/physical_types.py @@ -1,8 +1,9 @@ -import re -import sys import math import random +import re +import sys from typing import List + from srunner.osc2_dm.physical_object import * @@ -16,7 +17,7 @@ def __init__(self, start, end): # String initialization,[4..6] @classmethod def from_str(cls, s: str): - values = s[1:-1].split('..') + values = s[1:-1].split("..") start = float(values[0]) if values[0] else 0 end = float(values[1]) if values[1] else math.inf @@ -24,7 +25,7 @@ def from_str(cls, s: str): return cls(start, end) def __str__(self) -> str: - return '[' + str(self.start) + '..' + str(self.end) + ']' + return "[" + str(self.start) + ".." + str(self.end) + "]" def __neg__(self): self.start = -self.start @@ -59,7 +60,7 @@ def from_str(cls, s: str): range_num_indexs = match_obj.span() num_start = range_num_indexs[0] num_end = range_num_indexs[1] - num = Range.from_str(s[num_start: num_end]) + num = Range.from_str(s[num_start:num_end]) unit = s[num_end:] return cls(num, unit) else: @@ -68,14 +69,13 @@ def from_str(cls, s: str): nums_indexs = match_obj.span() num_start = nums_indexs[0] num_end = nums_indexs[1] - num = float(s[num_start: num_end]) + num = float(s[num_start:num_end]) unit = s[num_end:] return cls(num, unit) else: - print('wrong physical') + print("wrong physical") def is_in_range(self, value) -> bool: - if isinstance(self.num, Range): return self.num.is_in_range(value) else: @@ -105,20 +105,28 @@ def __str__(self) -> str: # Addition def __add__(self, right): - num = self.num + ((right.num * right.unit.factor + right.unit.offset) - self.unit.offset) / self.unit.factor + num = ( + self.num + + ((right.num * right.unit.factor + right.unit.offset) - self.unit.offset) + / self.unit.factor + ) factor = self.unit.factor offset = self.unit.offset + right.unit.offset / self.unit.factor - name = self.unit.unit_name + '+' + right.unit.unit_name + name = self.unit.unit_name + "+" + right.unit.unit_name physical = self.unit.physical + right.unit.physical unit = UnitObject(name, physical, factor, offset) return Physical(num, unit) # Subtraction def __sub__(self, right): - num = self.num - ((right.num * right.unit.factor + right.unit.offset) - self.unit.offset) / self.unit.factor + num = ( + self.num + - ((right.num * right.unit.factor + right.unit.offset) - self.unit.offset) + / self.unit.factor + ) factor = self.unit.factor offset = self.unit.offset + right.unit.offset / self.unit.factor - name = self.unit.unit_name + '-' + right.unit.unit_name + name = self.unit.unit_name + "-" + right.unit.unit_name physical = self.unit.physical - right.unit.physical unit = UnitObject(name, physical, factor, offset) return Physical(num, unit) @@ -127,8 +135,10 @@ def __sub__(self, right): def __truediv__(self, right): num = self.num / right.num factor = self.unit.factor / right.unit.factor - offset = self.unit.offset / right.unit.factor + right.unit.offset / self.unit.factor - name = self.unit.unit_name + '/' + right.unit.unit_name + offset = ( + self.unit.offset / right.unit.factor + right.unit.offset / self.unit.factor + ) + name = self.unit.unit_name + "/" + right.unit.unit_name physical = self.unit.physical / right.unit.physical unit = UnitObject(name, physical, factor, offset) return Physical(num, unit) @@ -137,8 +147,10 @@ def __truediv__(self, right): def __mul__(self, right): num = self.num * right.num factor = self.unit.factor * right.unit.factor - offset = self.unit.offset * right.unit.factor + right.unit.offset * self.unit.factor - name = self.unit.unit_name + '*' + right.unit.unit_name + offset = ( + self.unit.offset * right.unit.factor + right.unit.offset * self.unit.factor + ) + name = self.unit.unit_name + "*" + right.unit.unit_name physical = self.unit.physical * right.unit.physical unit = UnitObject(name, physical, factor, offset) return Physical(num, unit) diff --git a/srunner/osc2_stdlib/event.py b/srunner/osc2_stdlib/event.py index 1df087995..daf505e85 100644 --- a/srunner/osc2_stdlib/event.py +++ b/srunner/osc2_stdlib/event.py @@ -4,7 +4,10 @@ from srunner.osc2_stdlib.observer import Observer from srunner.osc2_stdlib.variables import Variable from srunner.scenariomanager.carla_data_provider import CarlaDataProvider -from srunner.scenariomanager.scenarioatomics.atomic_trigger_conditions import InTriggerNearCollision, DriveDistance +from srunner.scenariomanager.scenarioatomics.atomic_trigger_conditions import ( + DriveDistance, + InTriggerNearCollision, +) class Event: diff --git a/srunner/osc2_stdlib/misc_object.py b/srunner/osc2_stdlib/misc_object.py index e8cbec4de..3f054ffa4 100644 --- a/srunner/osc2_stdlib/misc_object.py +++ b/srunner/osc2_stdlib/misc_object.py @@ -26,7 +26,6 @@ def __init__(self, road_id, lane_id, offset, s) -> None: class WorldPosition(Position): - def __init__(self, x=0, y=0, z=0, pitch=0, yaw=0, roll=0) -> None: self.x = x self.y = y diff --git a/srunner/osc2_stdlib/modifier.py b/srunner/osc2_stdlib/modifier.py index ed83df840..25e5b779b 100644 --- a/srunner/osc2_stdlib/modifier.py +++ b/srunner/osc2_stdlib/modifier.py @@ -1,10 +1,9 @@ import random import sys -from srunner.osc2_stdlib.misc_object import AVCarSide -from srunner.osc2_stdlib.vehicle import Vehicle -from srunner.osc2_stdlib.misc_object import ScenarioEvent from srunner.osc2_dm.physical_types import Physical +from srunner.osc2_stdlib.misc_object import AVCarSide, ScenarioEvent +from srunner.osc2_stdlib.vehicle import Vehicle class Modifier: @@ -23,10 +22,10 @@ def get_actor_name(self) -> str: return self.actor_name def __str__(self) -> str: - s = f'{self.name}(' + s = f"{self.name}(" for key, value in self.args.items(): - s += str(key) + ':' + str(value) + ',' - return s + ')' + s += str(key) + ":" + str(value) + "," + return s + ")" class SpeedModifier(Modifier): @@ -36,21 +35,21 @@ def __init__(self, actor_name: str, name: str) -> None: self.args = {} def set_speed(self, speed) -> None: - self.args['speed'] = speed + self.args["speed"] = speed def get_speed(self): - speed = self.args['speed'] + speed = self.args["speed"] if isinstance(speed, Physical): return Physical(speed.gen_single_value(), speed.unit) else: - print('[Error] \'speed\' parameter of SpeedModifier must be \'Physical\' type') + print("[Error] 'speed' parameter of SpeedModifier must be 'Physical' type") sys.exit(1) def set_relative_car(self, car: Vehicle, side: AVCarSide) -> None: self.args[side] = car def set_trigger_point(self, trigger_point: ScenarioEvent) -> None: - self.args['at'] = trigger_point + self.args["at"] = trigger_point class PositionModifier(Modifier): @@ -59,23 +58,25 @@ def __init__(self, actor_name: str, name: str) -> None: super().__init__(actor_name, name) def get_distance(self): - dist = self.args['distance'] + dist = self.args["distance"] if isinstance(dist, Physical): return dist else: - print('[Error] \'distance\' parameter of PositionModifier must be \'Physical\' type') + print( + "[Error] 'distance' parameter of PositionModifier must be 'Physical' type" + ) sys.exit(1) def get_refer_car(self): - if self.args.get('ahead_of'): - return self.args.get('ahead_of'), 'ahead_of' - elif self.args.get('behind'): - return self.args.get('behind'), 'behind' + if self.args.get("ahead_of"): + return self.args.get("ahead_of"), "ahead_of" + elif self.args.get("behind"): + return self.args.get("behind"), "behind" else: - print('PositionModifier key error') + print("PositionModifier key error") def get_trigger_point(self) -> str: - return self.args.get('at', 'all') + return self.args.get("at", "all") class LaneModifier(Modifier): @@ -85,22 +86,22 @@ def __init__(self, actor_name: str, name: str) -> None: super().__init__(actor_name, name) def get_refer_car(self): - if self.args.get('right_of'): - return self.args.get('right_of'), 'right_of' - elif self.args.get('left_of'): - return self.args.get('left_of'), 'left_of' - elif self.args.get('same_as'): - return self.args.get('same_as'), 'same_as' - elif self.args.get('side_of'): - return self.args.get('side_of'), self.args.get('side') + if self.args.get("right_of"): + return self.args.get("right_of"), "right_of" + elif self.args.get("left_of"): + return self.args.get("left_of"), "left_of" + elif self.args.get("same_as"): + return self.args.get("same_as"), "same_as" + elif self.args.get("side_of"): + return self.args.get("side_of"), self.args.get("side") else: return None def get_lane_id(self): - return self.args.get('lane') + return self.args.get("lane") def get_trigger_point(self) -> str: - return self.args.get('at', 'all') + return self.args.get("at", "all") class ChangeSpeedModifier(Modifier): @@ -109,11 +110,13 @@ def __init__(self, actor_name: str, name: str) -> None: super().__init__(actor_name, name) def get_speed(self): - desired_speed = self.args['desired_speed'] + desired_speed = self.args["desired_speed"] if isinstance(desired_speed, Physical): return Physical(desired_speed.gen_single_value(), desired_speed.unit) else: - print('[Error] \'desired_speed\' parameter of ChangeSpeedModifier must be \'Physical\' type') + print( + "[Error] 'desired_speed' parameter of ChangeSpeedModifier must be 'Physical' type" + ) sys.exit(1) @@ -125,10 +128,13 @@ def get_lane_changes(self): if len(self.args.values()) == 1: return 1 else: - if self.args['lane_changes'][0] != '[' and self.args['lane_changes'][-1] != ']': - return int(float(self.args['lane_changes'])) + if ( + self.args["lane_changes"][0] != "[" + and self.args["lane_changes"][-1] != "]" + ): + return int(float(self.args["lane_changes"])) else: - values = self.args['lane_changes'][1:-1].split('..') + values = self.args["lane_changes"][1:-1].split("..") start = int(float(values[0])) end = int(float(values[1])) value = random.randint(start, end) @@ -136,12 +142,12 @@ def get_lane_changes(self): def get_side(self): for value in self.args.values(): - if value == 'right': - return 'right' - elif value == 'left': - return 'left' + if value == "right": + return "right" + elif value == "left": + return "left" else: - print('ChangeLaneModifier has no such position define') + print("ChangeLaneModifier has no such position define") class AccelerationModifier(Modifier): @@ -149,4 +155,4 @@ def __init__(self, actor_name: str, name: str) -> None: super().__init__(actor_name, name) def get_accelerate(self): - return self.args['acceleration'] + return self.args["acceleration"] diff --git a/srunner/osc2_stdlib/observer.py b/srunner/osc2_stdlib/observer.py index 19760a706..db9fb02b4 100644 --- a/srunner/osc2_stdlib/observer.py +++ b/srunner/osc2_stdlib/observer.py @@ -13,6 +13,7 @@ def near_collision(self, other_car, distance): self.other_car = other_car self.distance = float(distance) from srunner.osc2_stdlib.event import Event + dis = Event.abs_distance_between_locations("ego_vehicle", "npc") print(other_car, dis, distance) if self.other_car and dis <= self.distance: diff --git a/srunner/osc2_stdlib/path.py b/srunner/osc2_stdlib/path.py index 1b85258f5..7d56f0430 100644 --- a/srunner/osc2_stdlib/path.py +++ b/srunner/osc2_stdlib/path.py @@ -1,9 +1,19 @@ from typing import Set + import carla + import srunner.scenariomanager.carla_data_provider as carla_data -from srunner.osc2_stdlib.path_check import OverLanesDecreaseCheck, PathCurve, PathExplicit, PathOverDiffLimitMarks -from srunner.osc2_stdlib.path_check import OverJunctionCheck, PathTrafficSign, PathDiffDest, PathDiffOrigin from srunner.osc2_dm.physical_types import Physical +from srunner.osc2_stdlib.path_check import ( + OverJunctionCheck, + OverLanesDecreaseCheck, + PathCurve, + PathDiffDest, + PathDiffOrigin, + PathExplicit, + PathOverDiffLimitMarks, + PathTrafficSign, +) class Path: @@ -62,20 +72,29 @@ def path_has_sign(cls, sign_type: str): @classmethod def path_has_no_signs(cls): - cls.sign_types = [carla.LandmarkType.MaximumSpeed, - carla.LandmarkType.StopSign, - carla.LandmarkType.YieldSign, - carla.LandmarkType.Roundabout] + cls.sign_types = [ + carla.LandmarkType.MaximumSpeed, + carla.LandmarkType.StopSign, + carla.LandmarkType.YieldSign, + carla.LandmarkType.Roundabout, + ] @classmethod - def path_over_junction(cls, direction: Physical, distance_before: Physical = None, distance_in: Physical = None, - distance_after: Physical = None) -> None: + def path_over_junction( + cls, + direction: Physical, + distance_before: Physical = None, + distance_in: Physical = None, + distance_after: Physical = None, + ) -> None: # dir degree # #dis_before m # #dis_in m # #dis_after m - cls.over_junction_check = OverJunctionCheck(direction, distance_before, distance_in, distance_after) + cls.over_junction_check = OverJunctionCheck( + direction, distance_before, distance_in, distance_after + ) @classmethod def path_over_lanes_decrease(cls, distance: Physical) -> None: @@ -83,8 +102,8 @@ def path_over_lanes_decrease(cls, distance: Physical) -> None: @classmethod def path_explicit(cls, start_point, end_point, tolerance): - start_point = start_point.split(',') - end_point = end_point.split(',') + start_point = start_point.split(",") + end_point = end_point.split(",") cls.is_explicit = PathExplicit(start_point, end_point, tolerance) print(cls.is_explicit) @@ -101,9 +120,10 @@ def path_curve(cls, min_radius, max_radius, side): @classmethod def check(cls, pos) -> bool: - _map = carla_data.CarlaDataProvider.get_map(carla_data.CarlaDataProvider.world) - wp = _map.get_waypoint(pos.location, project_to_road=True, lane_type=carla.LaneType.Driving) + wp = _map.get_waypoint( + pos.location, project_to_road=True, lane_type=carla.LaneType.Driving + ) # Remove the intersection road_lanes = carla_data.CarlaDataProvider.get_road_lanes(wp) @@ -122,12 +142,16 @@ def check(cls, pos) -> bool: return False # Check if the test road is signposted if cls.sign_type: - is_sign = PathTrafficSign.path_has_traffic_sign(wp, cls.sign_type, cls._length) + is_sign = PathTrafficSign.path_has_traffic_sign( + wp, cls.sign_type, cls._length + ) if not is_sign: return False # Restricted test roads cannot be signposted if cls.sign_types: - no_sign = PathTrafficSign.path_has_no_traffic_signs(wp, cls.sign_types, cls._length) + no_sign = PathTrafficSign.path_has_no_traffic_signs( + wp, cls.sign_types, cls._length + ) if not no_sign: return False diff --git a/srunner/osc2_stdlib/path_check.py b/srunner/osc2_stdlib/path_check.py index 819516c8e..3d170dc78 100644 --- a/srunner/osc2_stdlib/path_check.py +++ b/srunner/osc2_stdlib/path_check.py @@ -1,15 +1,19 @@ import carla +from carla import LandmarkType, Waypoint +from srunner.osc2_dm.physical_types import Physical from srunner.scenariomanager.carla_data_provider import CarlaDataProvider from srunner.tools.osc2_helper import OSC2Helper -from carla import Waypoint, LandmarkType - -from srunner.osc2_dm.physical_types import Physical class OverJunctionCheck: - def __init__(self, direction: Physical, distance_before: Physical = None, - distance_in: Physical = None, distance_after: Physical = None) -> None: + def __init__( + self, + direction: Physical, + distance_before: Physical = None, + distance_in: Physical = None, + distance_after: Physical = None, + ) -> None: self.direction = direction self.distance_before = distance_before self.distance_in = distance_in @@ -29,11 +33,11 @@ def _check_distance_before(self, wp: Waypoint) -> bool: Side effect: If the check is successful, set line1_end to the first wp before the intersection. """ if not wp: - print('_check_distance_before wp is none') + print("_check_distance_before wp is none") return False if not self.distance_before: - print('no need to check distance before') + print("no need to check distance before") return True distance_list = [] @@ -66,15 +70,15 @@ def _check_distance_in(self, wp: Waypoint) -> bool: Side effect: Check successful, set line2_start to the second wwp after the intersection. """ if not wp: - print('_check_distance_in wp is none') + print("_check_distance_in wp is none") return False if not self.distance_in: - print('no need to check distance in') + print("no need to check distance in") return True if not wp.is_junction: - print('start waypoint is not in junction') + print("start waypoint is not in junction") return False distance_list = [] @@ -111,7 +115,7 @@ def _check_distance_after(self, wp: Waypoint) -> bool: return False if not self.distance_after: - print('no need to check distance after') + print("no need to check distance after") return True distance_list = [] @@ -133,7 +137,7 @@ def _check_distance_after(self, wp: Waypoint) -> bool: def _check_direction(self) -> bool: if not self.direction: - print('over junction check must have direction parameter') + print("over junction check must have direction parameter") return False line1_start_loc = self.line1_start.transform.location @@ -152,8 +156,12 @@ def _check_direction(self) -> bool: def check(self, wp: Waypoint) -> bool: self.line1_start = wp - return self._check_distance_before(self.line1_start) and self.check_distance_in() \ - and self._check_distance_after(self.line2_start) and self._check_direction() + return ( + self._check_distance_before(self.line1_start) + and self.check_distance_in() + and self._check_distance_after(self.line2_start) + and self._check_direction() + ) class OverLanesDecreaseCheck: @@ -196,14 +204,18 @@ def path_has_traffic_sign(waypoint: Waypoint, sign_type: str, length=None) -> bo temp_list = waypoint.next_until_lane_end(PathTrafficSign.distance_step) lane_length = len(temp_list) * PathTrafficSign.distance_step if lane_length >= PathTrafficSign._length: - sign_type_list = waypoint.get_landmarks_of_type(lane_length, sign_type, stop_at_junction=False) + sign_type_list = waypoint.get_landmarks_of_type( + lane_length, sign_type, stop_at_junction=False + ) if sign_type_list: PathTrafficSign.wps.append(waypoint.road_id) if PathTrafficSign.wps: return True @staticmethod - def path_has_no_traffic_signs(waypoint: Waypoint, sign_type: list, length=None) -> bool: + def path_has_no_traffic_signs( + waypoint: Waypoint, sign_type: list, length=None + ) -> bool: lane_length_list = [] if length: PathTrafficSign._length = length @@ -212,7 +224,9 @@ def path_has_no_traffic_signs(waypoint: Waypoint, sign_type: list, length=None) if lane_length >= PathTrafficSign._length: lane_length_list.append(lane_length) for sign in sign_type: - sign_type_list = waypoint.get_landmarks_of_type(lane_length, sign, stop_at_junction=False) + sign_type_list = waypoint.get_landmarks_of_type( + lane_length, sign, stop_at_junction=False + ) if sign_type_list: return False return True @@ -282,7 +296,9 @@ def get_diff_origin_point(self, wp): all_path = [] path_wps = [] for pos in wps: - pont = _map.get_waypoint(pos.location, project_to_road=True, lane_type=carla.LaneType.Driving) + pont = _map.get_waypoint( + pos.location, project_to_road=True, lane_type=carla.LaneType.Driving + ) if pont.road_id == wp.road_id: continue for j in range(step_num): @@ -308,21 +324,38 @@ def __init__(self, start, end, tolerance): def gen_path_by_point(self, wp): carla_map = CarlaDataProvider.get_map() - start_road_id, start_lane_id, start_s = self.start_point_parm[0], self.start_point_parm[1], \ - self.start_point_parm[2] - start_point = carla_map.get_waypoint_xodr(int(start_road_id), int(start_lane_id), int(start_s)) - - end_road_id, end_lane_id, end_s = self.end_point_parm[0], self.end_point_parm[1], self.end_point_parm[2] - end_point = carla_map.get_waypoint_xodr(int(end_road_id), int(end_lane_id), int(end_s)) + start_road_id, start_lane_id, start_s = ( + self.start_point_parm[0], + self.start_point_parm[1], + self.start_point_parm[2], + ) + start_point = carla_map.get_waypoint_xodr( + int(start_road_id), int(start_lane_id), int(start_s) + ) + + end_road_id, end_lane_id, end_s = ( + self.end_point_parm[0], + self.end_point_parm[1], + self.end_point_parm[2], + ) + end_point = carla_map.get_waypoint_xodr( + int(end_road_id), int(end_lane_id), int(end_s) + ) if start_road_id != end_road_id or start_lane_id != end_lane_id: - print("Please check parameters, start road id and lane id must remain the same.") + print( + "Please check parameters, start road id and lane id must remain the same." + ) return False if start_s == end_s: - print("Please check parameters, the start and end positions must be different.") + print( + "Please check parameters, the start and end positions must be different." + ) return False if end_point is None: - print("Please check parameters,the end point exceeds the length of the road.") + print( + "Please check parameters,the end point exceeds the length of the road." + ) return False if wp.road_id == int(start_road_id) and wp.lane_id == int(end_lane_id): @@ -350,13 +383,20 @@ def path_over_speed_limit_mark(self, wp, length): marks_value_list.append(i.value) if len(marks_value_list) > 1: - if self.speed1 == marks_value_list[0] and self.speed2 == marks_value_list[1]: - print(f"The car will cross the road section with speed limit signs of {self.speed1} and {self.speed2}") + if ( + self.speed1 == marks_value_list[0] + and self.speed2 == marks_value_list[1] + ): + print( + f"The car will cross the road section with speed limit signs of {self.speed1} and {self.speed2}" + ) return True class PathCurve: - def __init__(self, min_radius: Physical, max_radius: Physical, side: str = None) -> None: + def __init__( + self, min_radius: Physical, max_radius: Physical, side: str = None + ) -> None: self.min_radius = min_radius self.max_radius = max_radius self.side = side @@ -379,15 +419,31 @@ def check(self, wp: Waypoint) -> bool: for wp1 in points[0]: for wp2 in points[1]: for wp3 in points[2]: - point1 = [wp1.transform.location.x, wp1.transform.location.y, wp1.transform.location.z] - point2 = [wp2.transform.location.x, wp2.transform.location.y, wp2.transform.location.z] - point3 = [wp3.transform.location.x, wp3.transform.location.y, wp3.transform.location.z] + point1 = [ + wp1.transform.location.x, + wp1.transform.location.y, + wp1.transform.location.z, + ] + point2 = [ + wp2.transform.location.x, + wp2.transform.location.y, + wp2.transform.location.z, + ] + point3 = [ + wp3.transform.location.x, + wp3.transform.location.y, + wp3.transform.location.z, + ] r = OSC2Helper.curve_radius(point1, point2, point3) if r is None: continue loc = OSC2Helper.point_line_location(point1, point2, point3) - if self.min_radius.gen_single_value() <= r <= self.max_radius.gen_single_value() \ - and loc == self.side: + if ( + self.min_radius.gen_single_value() + <= r + <= self.max_radius.gen_single_value() + and loc == self.side + ): return True return False diff --git a/srunner/osc2_stdlib/pedestrian.py b/srunner/osc2_stdlib/pedestrian.py index 16bc7b9f0..91ceeae07 100644 --- a/srunner/osc2_stdlib/pedestrian.py +++ b/srunner/osc2_stdlib/pedestrian.py @@ -5,9 +5,9 @@ def __init__(self, gender: str) -> None: class Man(Pedestrian): def __init__(self) -> None: - super().__init__('male') + super().__init__("male") class Women(Pedestrian): def __init__(self) -> None: - super().__init__('female') + super().__init__("female") diff --git a/srunner/osc2_stdlib/vehicle.py b/srunner/osc2_stdlib/vehicle.py index b453105d7..95b69e2cf 100644 --- a/srunner/osc2_stdlib/vehicle.py +++ b/srunner/osc2_stdlib/vehicle.py @@ -1,22 +1,25 @@ +import math + import carla + import srunner.osc2_stdlib.misc_object as misc -import math import srunner.scenariomanager.carla_data_provider as carla_provider from srunner.tools.osc2_helper import OSC2Helper class Vehicle: - def __init__(self) -> None: - self.model = 'vehicle.*' # vehicle.tesla.model3 - self.rolename = 'scenario' # variable name + self.model = "vehicle.*" # vehicle.tesla.model3 + self.rolename = "scenario" # variable name self.position = misc.Position() # doesn't depend on the position of self.transform = carla.Transform() # initial position self.speed = 0 # the initial speed, m/s,default 0 self.autopilot = False - self.random_location = True # TODO: Random location that may conflict with map path constraints + self.random_location = ( + True # TODO: Random location that may conflict with map path constraints + ) self.color = None - self.category = 'car' # vehicle or pedestrian, vehicleCategory car + self.category = "car" # vehicle or pedestrian, vehicleCategory car self.args = dict() def set_arg(self, kw): @@ -50,8 +53,10 @@ def set_position(self, pos: misc.Position) -> None: # if not OpenScenarioParser.use_carla_coordinate_system: # y = y * (-1.0) # yaw = yaw * (-1.0) - self.transform = carla.Transform(carla.Location(x=x, y=y, z=z), - carla.Rotation(yaw=yaw, pitch=pitch, roll=roll)) + self.transform = carla.Transform( + carla.Location(x=x, y=y, z=z), + carla.Rotation(yaw=yaw, pitch=pitch, roll=roll), + ) elif type(pos) is misc.LanePosition: pass else: @@ -62,8 +67,8 @@ def get_transform(self) -> carla.Transform: actor = carla_provider.CarlaDataProvider.get_actor_by_name(self.rolename) ret = carla_provider.CarlaDataProvider.get_transform(actor) return ret - if self.args.get('init_transform'): - return self.args['init_transform'] + if self.args.get("init_transform"): + return self.args["init_transform"] actor = carla_provider.CarlaDataProvider.get_actor_by_name(self.rolename) ret = carla_provider.CarlaDataProvider.get_transform(actor) @@ -96,4 +101,4 @@ def __init__(self) -> None: class Rubicon(Car): def __init__(self) -> None: super().__init__() - self.set_model('vehicle.jeep.wrangler_rubicon') + self.set_model("vehicle.jeep.wrangler_rubicon") diff --git a/srunner/scenarioconfigs/osc2_scenario_configuration.py b/srunner/scenarioconfigs/osc2_scenario_configuration.py index 192acc957..9e01768a7 100644 --- a/srunner/scenarioconfigs/osc2_scenario_configuration.py +++ b/srunner/scenarioconfigs/osc2_scenario_configuration.py @@ -1,32 +1,35 @@ + +""" +Parse the OSC2 scenario description file, configure parameters based on type and keep constraints, +generate relevant type objects in the standard library, and set parameters + +""" import sys -import logging -import carla -from typing import Tuple, List +from typing import List, Tuple -# pylint: disable=line-too-long -from srunner.scenarioconfigs.scenario_configuration import ActorConfigurationData, ScenarioConfiguration -# pylint: enable=line-too-long -from srunner.scenariomanager.carla_data_provider import CarlaDataProvider +import carla -# OSC2 -from srunner.tools.osc2_helper import OSC2Helper +import srunner.osc2_stdlib.misc_object as misc +import srunner.osc2_stdlib.variables as variable +import srunner.osc2_stdlib.vehicle as vehicles from srunner.osc2.ast_manager import ast_node from srunner.osc2.ast_manager.ast_vistor import ASTVisitor +from srunner.osc2_dm.physical_object import * +from srunner.osc2_dm.physical_types import Physical, Range # 标准库 from srunner.osc2_stdlib.path import Path -import srunner.osc2_stdlib.vehicle as vehicles -import srunner.osc2_stdlib.variables as variable -from srunner.osc2_dm.physical_types import Range -from srunner.osc2_dm.physical_types import Physical -from srunner.osc2_dm.physical_object import * -import srunner.osc2_stdlib.misc_object as misc -''' -解析osc2场景描述文件,根据类型和keep约束的参数配置,生成标准库里相关类型对象,并设置参数 +# pylint: disable=line-too-long +from srunner.scenarioconfigs.scenario_configuration import ScenarioConfiguration -''' -vehicle_type = ['Car', 'Model3', 'Mkz2017', 'Carlacola', 'Rubicon'] +# pylint: enable=line-too-long +from srunner.scenariomanager.carla_data_provider import CarlaDataProvider + +# OSC2 +from srunner.tools.osc2_helper import OSC2Helper + +vehicle_type = ["Car", "Model3", "Mkz2017", "Carlacola", "Rubicon"] def flat_list(list_of_lists): @@ -40,9 +43,7 @@ def flat_list(list_of_lists): class OSC2ScenarioConfiguration(ScenarioConfiguration): - def __init__(self, filename, client): - self.name = self.filename = filename self.ast_tree = OSC2Helper.gen_osc2_ast(self.filename) @@ -80,40 +81,16 @@ def store_variable(self, vary): variable.Variable.set_arg(vary) class ConfigInit(ASTVisitor): - def __init__(self, configInstance) -> None: super().__init__() self.father_ins = configInstance - # def visit_compilation_unit(self, node: ast_node.CompilationUnit): - # print("visit compilation unit!") - # for child in node.get_children(): - # if isinstance(child, ast_node.ScenarioDeclaration): - # self.visit_scenario_declaration(child) - # elif isinstance(child, ast_node.PhysicalTypeDeclaration): - # self.visit_physical_type_declaration(child) - # elif isinstance(child, ast_node.UnitDeclaration): - # self.visit_unit_declaration(child) - # elif isinstance (child, ast_node.ActorDeclaration): - # self.visit_actor_declaration(child) - # elif isinstance(child, ast_node.GlobalParameterDeclaration): - # self.visit_global_parameter_declaration(child) - # else: - # pass - - # def visit_physical_type_declaration(self, node: ast_node.PhysicalTypeDeclaration): - # return super().visit_physical_type_declaration(node) - - # def visit_unit_declaration(self, node: ast_node.UnitDeclaration): - # return super().visit_unit_declaration(node) - - # def visit_actor_declaration(self, node: ast_node.ActorDeclaration): - # return super().visit_actor_declaration(node) - - def visit_global_parameter_declaration(self, node: ast_node.GlobalParameterDeclaration): + def visit_global_parameter_declaration( + self, node: ast_node.GlobalParameterDeclaration + ): para_name = node.field_name[0] - para_type = '' - para_value = '' + para_type = "" + para_value = "" arguments = self.visit_children(node) if isinstance(arguments, list) and len(arguments) == 2: para_type = arguments[0] @@ -145,7 +122,7 @@ def visit_struct_declaration(self, node: ast_node.StructDeclaration): def visit_scenario_declaration(self, node: ast_node.ScenarioDeclaration): scenario_name = node.qualified_behavior_name self.father_ins.scenario_declaration[scenario_name] = node - if scenario_name != 'top': + if scenario_name != "top": return for child in node.get_children(): @@ -167,13 +144,16 @@ def visit_do_directive(self, node: ast_node.DoDirective): def visit_parameter_declaration(self, node: ast_node.ParameterDeclaration): para_name = node.field_name[0] - para_type = '' - para_value = '' + para_type = "" + para_value = "" arguments = self.visit_children(node) if isinstance(arguments, list) and len(arguments) == 2: para_type = arguments[0] para_value = arguments[1] - if self.father_ins.variables.get(str(para_value)) is not None and para_type not in vehicle_type: + if ( + self.father_ins.variables.get(str(para_value)) is not None + and para_type not in vehicle_type + ): para_value = self.father_ins.variables.get(str(para_value)) self.father_ins.variables[para_name] = para_value elif isinstance(arguments, str): @@ -182,8 +162,7 @@ def visit_parameter_declaration(self, node: ast_node.ParameterDeclaration): vehicle_class = getattr(vehicles, para_type) v_ins = vehicle_class() - # TODO: 车辆配置参数解析和设置,需要解析keep语句 - # 车辆rolename=变量名 + # TODO: Analyzing and setting vehicle configuration parameters requires parsing the keep statement v_ins.set_name(para_name) if para_name == OSC2Helper.ego_name: self.father_ins.add_ego_vehicles(v_ins) @@ -191,27 +170,20 @@ def visit_parameter_declaration(self, node: ast_node.ParameterDeclaration): self.father_ins.add_other_actors(v_ins) self.father_ins.variables[para_name] = para_type self.father_ins.store_variable(self.father_ins.variables) - """ - field_name = node.field_name #field_name is a list - #field_type = node.field_type - arguments = self.visit_children(node) - #return ("parameter", (field_name, field_type)) - return ("parameter", (field_name, arguments)) - """ def visit_variable_declaration(self, node: ast_node.VariableDeclaration): variable_name = node.field_name[0] - variable_type = '' - variable_value = '' - arguments = (self.visit_children(node)) + # variable_type = "" + variable_value = "" + arguments = self.visit_children(node) if isinstance(arguments, list) and len(arguments) == 2: - variable_type = arguments[0] + # variable_type = arguments[0] variable_value = arguments[1] if self.father_ins.variables.get(str(variable_value)) is not None: variable_value = self.father_ins.variables.get(str(variable_value)) self.father_ins.variables[variable_name] = variable_value elif isinstance(arguments, str): - variable_type = arguments + # variable_type = arguments self.father_ins.variables[variable_name] = variable_value self.father_ins.store_variable(self.father_ins.variables) @@ -228,7 +200,9 @@ def visit_modifier_invocation(self, node: ast_node.ModifierInvocation): for arg in arguments: if isinstance(arg, Tuple): if self.father_ins.variables.get(arg[0]) is not None: - keyword_args[arg[0]] = self.father_ins.variables.get(arg[0]) + keyword_args[arg[0]] = self.father_ins.variables.get( + arg[0] + ) else: keyword_args[arg[0]] = arg[1] else: @@ -246,7 +220,9 @@ def visit_modifier_invocation(self, node: ast_node.ModifierInvocation): if hasattr(vehicles.Vehicle, function_name): position_args = [] keyword_args = {} - position_function = getattr(self.father_ins.ego_vehicles[0], function_name) + position_function = getattr( + self.father_ins.ego_vehicles[0], function_name + ) pos = misc.WorldPosition(0, 0, 0, 0, 0, 0) position_cls = getattr(pos, "__init__") @@ -265,18 +241,12 @@ def visit_modifier_invocation(self, node: ast_node.ModifierInvocation): position_cls(*position_args, **keyword_args) position_function(pos) self.father_ins.ego_vehicles[0].random_location = False - """ - modifier_name = node.modifier_name - arguments = self.visit_children(node) - - return ("modifier", (modifier_name, arguments)) - """ def visit_event_declaration(self, node: ast_node.EventDeclaration): event_name = node.field_name arguments = self.visit_children(node) if hasattr(self.father_ins.event, event_name): - event_function = getattr(self.father_ins.event, event_name) + # event_function = getattr(self.father_ins.event, event_name) position_args = [] keyword_args = {} if isinstance(arguments, List): @@ -284,7 +254,9 @@ def visit_event_declaration(self, node: ast_node.EventDeclaration): for arg in arguments: if isinstance(arg, Tuple): if self.father_ins.variables.get(arg[0]) is not None: - keyword_args[arg[0]] = self.father_ins.variables.get(arg[0]) + keyword_args[arg[0]] = self.father_ins.variables.get( + arg[0] + ) else: keyword_args[arg[0]] = arg[1] else: @@ -297,18 +269,12 @@ def visit_event_declaration(self, node: ast_node.EventDeclaration): position_args.append(self.father_ins.variables.get(arguments)) else: position_args.append(arguments) - """ - event_name = node.field_name - arguments = self.visit_children(node) - - return ("event", (event_name, arguments)) - """ def visit_method_declaration(self, node: ast_node.MethodDeclaration): pass def visit_method_body(self, node: ast_node.MethodBody): - type = node.type + # type = node.type for child in node.get_children(): if isinstance(child, ast_node.BinaryExpression): self.visit_binary_expression(child) @@ -318,10 +284,10 @@ def visit_binary_expression(self, node: ast_node.BinaryExpression): flat_arguments = flat_list(arguments) temp_stack = [] for ex in flat_arguments: - if ex == '+' or ex == '-' or ex == '*' or ex == '/' or ex == '%': + if ex in ('+', '-', '*', '/', '%'): right = temp_stack.pop() left = temp_stack.pop() - expression = left + ' ' + ex + ' ' + right + expression = left + " " + ex + " " + right temp_stack.append(expression) else: temp_stack.append(ex) @@ -335,7 +301,7 @@ def visit_named_argument(self, node: ast_node.NamedArgument): def visit_range_expression(self, node: ast_node.RangeExpression): start, end = self.visit_children(node) if type(start) != type(end): - print('[Error] different types between start and end of the range') + print("[Error] different types between start and end of the range") sys.exit(1) start_num = None @@ -358,22 +324,24 @@ def visit_range_expression(self, node: ast_node.RangeExpression): if start_unit == end_unit: unit_name = start_unit else: - print('[Error] wrong unit in the range') + print("[Error] wrong unit in the range") sys.exit(1) if start_num >= end_num: - print('[Error] wrong start and end in the range') + print("[Error] wrong start and end in the range") sys.exit(1) - range = Range(start_num, end_num) + var_range = Range(start_num, end_num) if unit_name: - return Physical(range, unit_name) + return Physical(var_range, unit_name) else: - return range + return var_range def visit_physical_literal(self, node: ast_node.PhysicalLiteral): - return Physical(self.visit_children(node), self.father_ins.unit_dict[node.unit_name]) + return Physical( + self.visit_children(node), self.father_ins.unit_dict[node.unit_name] + ) def visit_integer_literal(self, node: ast_node.IntegerLiteral): return int(node.value) @@ -396,7 +364,9 @@ def visit_identifier_reference(self, node: ast_node.IdentifierReference): def visit_type(self, node: ast_node.Type): return node.type_name - def visit_physical_type_declaration(self, node: ast_node.PhysicalTypeDeclaration): + def visit_physical_type_declaration( + self, node: ast_node.PhysicalTypeDeclaration + ): si_base_exponent = {} arguments = self.visit_children(node) arguments = flat_list(arguments) @@ -405,7 +375,9 @@ def visit_physical_type_declaration(self, node: ast_node.PhysicalTypeDeclaration else: for elem in arguments: si_base_exponent[elem[0]] = elem[1] - self.father_ins.physical_dict[node.type_name] = PhysicalObject(node.type_name, si_base_exponent) + self.father_ins.physical_dict[node.type_name] = PhysicalObject( + node.type_name, si_base_exponent + ) def visit_unit_declaration(self, node: ast_node.UnitDeclaration): arguments = self.visit_children(node) @@ -413,13 +385,16 @@ def visit_unit_declaration(self, node: ast_node.UnitDeclaration): factor = 1.0 offset = 0 for elem in arguments: - if elem[0] == 'factor': + if elem[0] == "factor": factor = elem[1] - elif elem[0] == 'offset': + elif elem[0] == "offset": offset = elem[1] - self.father_ins.unit_dict[node.unit_name] = UnitObject(node.unit_name, - self.father_ins.physical_dict[node.physical_name], - factor, offset) + self.father_ins.unit_dict[node.unit_name] = UnitObject( + node.unit_name, + self.father_ins.physical_dict[node.physical_name], + factor, + offset, + ) def visit_si_base_exponent(self, node: ast_node.SIBaseExponent): return node.unit_name, self.visit_children(node) @@ -434,8 +409,7 @@ def _parse_osc2_configuration(self): self._set_carla_town() def _set_carla_town(self): - """ - """ + """ """ self.town = self.path.get_map() # workaround for relative positions during init @@ -444,7 +418,9 @@ def _set_carla_town(self): if world: world.get_settings() wmap = world.get_map() - if world is None or (wmap is not None and wmap.name.split('/')[-1] != self.town): + if world is None or ( + wmap is not None and wmap.name.split("/")[-1] != self.town + ): self.client.load_world(self.town) world = self.client.get_world() diff --git a/srunner/scenariomanager/carla_data_provider.py b/srunner/scenariomanager/carla_data_provider.py index fbf0a5a75..a5037ad33 100644 --- a/srunner/scenariomanager/carla_data_provider.py +++ b/srunner/scenariomanager/carla_data_provider.py @@ -64,14 +64,14 @@ class CarlaDataProvider(object): # pylint: disable=too-many-public-methods _random_seed = 2000 _rng = random.RandomState(_random_seed) _local_planner = None - + @staticmethod def set_local_planner(plan): CarlaDataProvider._local_planner = plan - + @staticmethod def get_local_planner(): - return CarlaDataProvider._local_planner + return CarlaDataProvider._local_planner @staticmethod def register_actor(actor): @@ -490,11 +490,11 @@ def get_road_lanes(wp): lane_id_set.clear() wp = pre_left while wp and wp.lane_type == carla.LaneType.Driving: - + if wp.lane_id in lane_id_set: break lane_id_set.add(wp.lane_id) - + lane_list.append(wp) # carla bug: returns error, never return none, endless loop @@ -511,12 +511,12 @@ def get_road_lane_cnt(wp): def get_waypoint_by_laneid(lane_num: int): if CarlaDataProvider._spawn_points is None: CarlaDataProvider.generate_spawn_points() - + if CarlaDataProvider._spawn_index >= len(CarlaDataProvider._spawn_points): print("No more spawn points to use") return None else: - pos = CarlaDataProvider._spawn_points[CarlaDataProvider._spawn_index] + pos = CarlaDataProvider._spawn_points[CarlaDataProvider._spawn_index] # pylint: disable=unsubscriptable-object CarlaDataProvider._spawn_index += 1 wp = CarlaDataProvider.get_map().get_waypoint(pos.location, project_to_road=True, lane_type=carla.LaneType.Driving) diff --git a/srunner/scenariomanager/scenarioatomics/atomic_repeat.py b/srunner/scenariomanager/scenarioatomics/atomic_repeat.py index 91b5d2e73..9fd3bfbd9 100644 --- a/srunner/scenariomanager/scenarioatomics/atomic_repeat.py +++ b/srunner/scenariomanager/scenarioatomics/atomic_repeat.py @@ -87,6 +87,7 @@ class SuccessIsRunning(Decorator): """ It never ends... """ + def __init__(self, child, name, count): super().__init__(child, name=name) self.period = int(float(count)) diff --git a/srunner/scenarios/osc2_scenario.py b/srunner/scenarios/osc2_scenario.py index a707632d7..f36dc6a2b 100644 --- a/srunner/scenarios/osc2_scenario.py +++ b/srunner/scenarios/osc2_scenario.py @@ -1,95 +1,86 @@ from __future__ import print_function -from curses.ascii import isalpha -from decimal import DefaultContext -import os -import re -import sys -import operator -import re +import copy import math +import operator import random -import copy - -from typing import Tuple, List +import re +import sys +from typing import List, Tuple import py_trees +from agents.navigation.global_route_planner import GlobalRoutePlanner + +from srunner.osc2.ast_manager import ast_node +from srunner.osc2.ast_manager.ast_vistor import ASTVisitor +# OSC2 +from srunner.osc2.symbol_manager.method_symbol import MethodSymbol from srunner.osc2.symbol_manager.parameter_symbol import ParameterSymbol +from srunner.osc2.utils.log_manager import (LOG_INFO, LOG_ERROR, LOG_WARNING) from srunner.osc2.utils.relational_operator import RelationalOperator -# from sqlalchemy import true -from srunner.osc2_stdlib import event, variables -from srunner.osc2_stdlib.event import NearCollision -from srunner.osc2_stdlib.observer import EventListener +from srunner.osc2_dm.physical_types import Physical, Range -from srunner.scenarios.basic_scenario import BasicScenario -from srunner.scenariomanager.timer import GameTime, TimeOut - -from agents.navigation.global_route_planner import GlobalRoutePlanner -from srunner.scenariomanager.scenarioatomics.atomic_trigger_conditions import IfTriggerer, TimeOfWaitComparison -from srunner.scenariomanager.scenarioatomics.atomic_behaviors import ActorTransformSetter, ChangeTargetSpeed, \ - UniformAcceleration, \ - ChangeWeather, ChangeRoadFriction, Idle, KeepVelocity, LaneChange, StopVehicle, WaypointFollower, \ - calculate_distance, ChangeActorControl, ChangeActorTargetSpeed +# from sqlalchemy import true +# from srunner.osc2_stdlib import event, variables +from srunner.osc2_stdlib.modifier import ( + AccelerationModifier, + ChangeLaneModifier, + ChangeSpeedModifier, + LaneModifier, + PositionModifier, + SpeedModifier, +) -from srunner.tools.openscenario_parser import oneshot_with_check -from srunner.tools.py_trees_port import Decorator +# OSC2 +from srunner.scenarioconfigs.osc2_scenario_configuration import ( + OSC2ScenarioConfiguration, +) from srunner.scenariomanager.carla_data_provider import CarlaDataProvider - +from srunner.scenariomanager.scenarioatomics.atomic_behaviors import ( + ActorTransformSetter, + ChangeTargetSpeed, + LaneChange, + UniformAcceleration, + WaypointFollower, + calculate_distance, +) from srunner.scenariomanager.scenarioatomics.atomic_criteria import CollisionTest -from srunner.scenariomanager.scenarioatomics.atomic_trigger_conditions import InTriggerDistanceToVehicle, DriveDistance +from srunner.scenariomanager.scenarioatomics.atomic_trigger_conditions import ( + IfTriggerer, + TimeOfWaitComparison, +) +from srunner.scenariomanager.timer import TimeOut from srunner.scenarios.basic_scenario import BasicScenario - -from srunner.scenariomanager.scenarioatomics.atomic_repeat import SuccessIsRunning - -# OSC2 -from srunner.scenarioconfigs.osc2_scenario_configuration import OSC2ScenarioConfiguration +from srunner.tools.openscenario_parser import oneshot_with_check from srunner.tools.osc2_helper import OSC2Helper -# OSC2 -from srunner.osc2.osc2_parser.OpenSCENARIO2Lexer import OpenSCENARIO2Lexer -from srunner.osc2.osc2_parser.OpenSCENARIO2Parser import OpenSCENARIO2Parser -from srunner.osc2.ast_manager.ast_vistor import ASTVisitor -from srunner.osc2.ast_manager.ast_listener import ASTListener -import srunner.osc2.ast_manager.ast_node as ast_node - -# standard library -from srunner.osc2_stdlib.path import Path -import srunner.osc2_stdlib.vehicle as vehicles -import srunner.osc2_stdlib.pedestrian as pedestrians -import srunner.osc2_stdlib.misc_object as misc -from srunner.osc2_stdlib.modifier import ChangeSpeedModifier, LaneModifier, Modifier, ChangeLaneModifier, \ - PositionModifier, SpeedModifier, AccelerationModifier - -from srunner.osc2_dm.physical_types import Range -from srunner.osc2_dm.physical_types import Physical - -from srunner.osc2.utils.log_manager import * -from srunner.osc2.symbol_manager.method_symbol import MethodSymbol - def para_type_str_sequence(config, arguments, line, column, node): - retrieval_name = '' + retrieval_name = "" if isinstance(arguments, List): for arg in arguments: if isinstance(arg, Tuple): if isinstance(arg[1], int): - retrieval_name = retrieval_name + '#int' + retrieval_name = retrieval_name + "#int" elif isinstance(arg[1], float): - retrieval_name = retrieval_name + '#float' + retrieval_name = retrieval_name + "#float" elif isinstance(arg[1], str): - retrieval_name = retrieval_name + '#str' + retrieval_name = retrieval_name + "#str" elif isinstance(arg[1], bool): - retrieval_name = retrieval_name + '#bool' + retrieval_name = retrieval_name + "#bool" elif isinstance(arg[1], Physical): - physical_type_name = OSC2Helper.find_physical_type(config.physical_dict, - arg[1].unit.physical.si_base_exponent) + physical_type_name = OSC2Helper.find_physical_type( + config.physical_dict, arg[1].unit.physical.si_base_exponent + ) if physical_type_name is None: pass else: - physical_type = node.get_scope().resolve(physical_type_name).name - retrieval_name += '#' + physical_type + physical_type = ( + node.get_scope().resolve(physical_type_name).name + ) + retrieval_name += "#" + physical_type else: pass elif isinstance(arg, str): @@ -98,52 +89,55 @@ def para_type_str_sequence(config, arguments, line, column, node): pass elif isinstance(arguments, Tuple): if isinstance(arguments[1], int): - retrieval_name = retrieval_name + '#int' + retrieval_name = retrieval_name + "#int" elif isinstance(arguments[1], float): - retrieval_name = retrieval_name + '#float' + retrieval_name = retrieval_name + "#float" elif isinstance(arguments[1], str): - retrieval_name = retrieval_name + '#str' + retrieval_name = retrieval_name + "#str" elif isinstance(arguments[1], bool): - retrieval_name = retrieval_name + '#bool' + retrieval_name = retrieval_name + "#bool" elif isinstance(arguments[1], Physical): - physical_type_name = OSC2Helper.find_physical_type(config.physical_dict, - arguments[1].unit.physical.si_base_exponent) + physical_type_name = OSC2Helper.find_physical_type( + config.physical_dict, arguments[1].unit.physical.si_base_exponent + ) if physical_type_name is None: pass else: physical_type = node.get_scope().resolve(physical_type_name).name - retrieval_name += '#' + physical_type + retrieval_name += "#" + physical_type else: pass elif isinstance(arguments, int): - retrieval_name = retrieval_name + '#int' + retrieval_name = retrieval_name + "#int" elif isinstance(arguments, float): - retrieval_name = retrieval_name + '#float' + retrieval_name = retrieval_name + "#float" elif isinstance(arguments, str): - retrieval_name = retrieval_name + '#str' + retrieval_name = retrieval_name + "#str" elif isinstance(arguments, bool): - retrieval_name = retrieval_name + '#bool' + retrieval_name = retrieval_name + "#bool" elif isinstance(arguments, Physical): - physical_type_name = OSC2Helper.find_physical_type(config.physical_dict, - arguments.unit.physical.si_base_exponent) + physical_type_name = OSC2Helper.find_physical_type( + config.physical_dict, arguments.unit.physical.si_base_exponent + ) if physical_type_name is None: pass else: physical_type = node.get_scope().resolve(physical_type_name).name - retrieval_name += '#' + physical_type + retrieval_name += "#" + physical_type else: pass return retrieval_name -def process_speed_modifier(config, modifiers, duration: float, all_duration: float, father_tree): +def process_speed_modifier( + config, modifiers, duration: float, all_duration: float, father_tree +): if not modifiers: return for modifier in modifiers: - actor_name = modifier.get_actor_name() if isinstance(modifier, SpeedModifier): @@ -157,8 +151,10 @@ def process_speed_modifier(config, modifiers, duration: float, all_duration: flo father_tree.add_child(car_driving) car_config = config.get_car_config(actor_name) - car_config.set_arg({'target_speed': target_speed}) - LOG_WARNING(f'{actor_name} car speed will be set to {target_speed * 3.6} km/h') + car_config.set_arg({"target_speed": target_speed}) + LOG_WARNING( + f"{actor_name} car speed will be set to {target_speed * 3.6} km/h" + ) # # _velocity speed, go straight down the driveway, and will hit the wall # keep_speed = KeepVelocity(actor, target_speed, duration=father_duration.num) @@ -167,10 +163,12 @@ def process_speed_modifier(config, modifiers, duration: float, all_duration: flo speed_delta = modifier.get_speed().gen_physical_value() speed_delta = speed_delta * 3.6 current_car_conf = config.get_car_config(actor_name) - current_car_speed = current_car_conf.get_arg('target_speed') + current_car_speed = current_car_conf.get_arg("target_speed") current_car_speed = current_car_speed * 3.6 target_speed = current_car_speed + speed_delta - LOG_WARNING(f'{actor_name} car speed will be changed to {target_speed} km/h') + LOG_WARNING( + f"{actor_name} car speed will be changed to {target_speed} km/h" + ) actor = CarlaDataProvider.get_actor_by_name(actor_name) change_speed = ChangeTargetSpeed(actor, target_speed) @@ -182,20 +180,21 @@ def process_speed_modifier(config, modifiers, duration: float, all_duration: flo father_tree.add_child(car_driving) elif isinstance(modifier, AccelerationModifier): current_car_conf = config.get_car_config(actor_name) - current_car_speed = current_car_conf.get_arg('target_speed') + current_car_speed = current_car_conf.get_arg("target_speed") accelerate_speed = modifier.get_accelerate().gen_physical_value() target_velocity = current_car_speed + accelerate_speed * duration actor = CarlaDataProvider.get_actor_by_name(actor_name) start_time = all_duration - duration - uniform_accelerate_speed = UniformAcceleration(actor, current_car_speed, target_velocity, - accelerate_speed, start_time) + uniform_accelerate_speed = UniformAcceleration( + actor, current_car_speed, target_velocity, accelerate_speed, start_time + ) print("END ACCELERATION") car_driving = WaypointFollower(actor) father_tree.add_child(uniform_accelerate_speed) father_tree.add_child(car_driving) else: - LOG_WARNING('not implement modifier') + LOG_WARNING("not implement modifier") def process_location_modifier(config, modifiers, duration: float, father_tree): @@ -216,18 +215,24 @@ def process_location_modifier(config, modifiers, duration: float, father_tree): if isinstance(modifier, ChangeLaneModifier): lane_changes = modifier.get_lane_changes() av_side = modifier.get_side() - print(f'The car changes lanes to the {av_side} for {lane_changes} lanes.') + print(f"The car changes lanes to the {av_side} for {lane_changes} lanes.") npc_name = modifier.get_actor_name() actor = CarlaDataProvider.get_actor_by_name(npc_name) - lane_change = LaneChange(actor, speed=None, direction=av_side, lane_changes=lane_changes) + lane_change = LaneChange( + actor, speed=None, direction=av_side, lane_changes=lane_changes + ) continue_drive = WaypointFollower(actor) father_tree.add_child(lane_change) father_tree.add_child(continue_drive) - print('END of change lane--') + print("END of change lane--") return # start # Deal with absolute positioning vehicles first,such as lane(1, at: start) - event_start = [m for m in modifiers if m.get_trigger_point() == 'start' and m.get_refer_car() is None] + event_start = [ + m + for m in modifiers + if m.get_trigger_point() == "start" and m.get_refer_car() is None + ] for m in event_start: car_name = m.get_actor_name() @@ -238,20 +243,24 @@ def process_location_modifier(config, modifiers, duration: float, father_tree): father_tree.add_child(actor_visible) car_config = config.get_car_config(car_name) - car_config.set_arg({'init_transform': wp.transform}) + car_config.set_arg({"init_transform": wp.transform}) LOG_INFO( - f'{car_name} car init position will be set to {wp.transform.location}, roadid = {wp.road_id}, laneid={wp.lane_id}, s = {wp.s}') + f"{car_name} car init position will be set to {wp.transform.location}, roadid = {wp.road_id}, laneid={wp.lane_id}, s = {wp.s}" + ) else: - raise RuntimeError(f'no valid position to spawn {car_name} car') + raise RuntimeError(f"no valid position to spawn {car_name} car") # Handle relative positioning vehicles - start_group = [m for m in modifiers if m.get_trigger_point() == 'start' and m.get_refer_car() is not None] + start_group = [ + m + for m in modifiers + if m.get_trigger_point() == "start" and m.get_refer_car() is not None + ] init_wp = None npc_name = None for modifier in start_group: - npc_name = modifier.get_actor_name() # location reprents npc at ego_vehicle left, right, same, ahead relative_car_name, location = modifier.get_refer_car() @@ -263,29 +272,29 @@ def process_location_modifier(config, modifiers, duration: float, father_tree): if init_wp is None: init_wp = relative_wp - if location == 'left_of': + if location == "left_of": temp_lane = init_wp.get_left_lane() if temp_lane: init_wp = temp_lane - elif location == 'right_of': + elif location == "right_of": temp_lane = init_wp.get_right_lane() if temp_lane: init_wp = temp_lane - elif location == 'same_as': + elif location == "same_as": # Same lane pass - elif location == 'ahead_of' or location == 'behind': + elif location in ('ahead_of', 'behind'): distance = modifier.get_distance().gen_physical_value() - if location == 'ahead_of': + if location == "ahead_of": wp_lists = init_wp.next(distance) else: wp_lists = init_wp.previous(distance) if wp_lists: init_wp = wp_lists[0] else: - raise KeyError(f'wrong location = {location}') + raise KeyError(f"wrong location = {location}") if init_wp: actor = CarlaDataProvider.get_actor_by_name(npc_name) @@ -293,12 +302,13 @@ def process_location_modifier(config, modifiers, duration: float, father_tree): father_tree.add_child(npc_car_visible) car_config = config.get_car_config(npc_name) - car_config.set_arg({'init_transform': init_wp.transform}) + car_config.set_arg({"init_transform": init_wp.transform}) LOG_WARNING( - f'{npc_name} car init position will be set to {init_wp.transform.location},roadid = {init_wp.road_id}, laneid={init_wp.lane_id}, s={init_wp.s}') + f"{npc_name} car init position will be set to {init_wp.transform.location},roadid = {init_wp.road_id}, laneid={init_wp.lane_id}, s={init_wp.s}" + ) # end - end_group = [m for m in modifiers if m.get_trigger_point() == 'end'] + end_group = [m for m in modifiers if m.get_trigger_point() == "end"] end_wp = None end_lane_wp = None @@ -311,56 +321,62 @@ def process_location_modifier(config, modifiers, duration: float, father_tree): relative_car_location = relative_car_conf.get_transform().location LOG_WARNING(f"{relative_car_name} pos = {relative_car_location}") - relative_car_wp = CarlaDataProvider.get_map().get_waypoint(relative_car_location) - relative_car_speed = relative_car_conf.get_arg('target_speed') + relative_car_wp = CarlaDataProvider.get_map().get_waypoint( + relative_car_location + ) + relative_car_speed = relative_car_conf.get_arg("target_speed") distance_will_drive = relative_car_speed * float(duration) - LOG_WARNING(f'{relative_car_name} drive distance = {distance_will_drive}') + LOG_WARNING(f"{relative_car_name} drive distance = {distance_will_drive}") end_position = relative_car_wp.next(distance_will_drive) if end_position is None or len(end_position) == 0: - raise RuntimeError('the road is not long enough') + raise RuntimeError("the road is not long enough") end_position = end_position[0] - if location == 'ahead_of' or location == 'behind': + if location in ('ahead_of', 'behind'): # End position constraint distance = modifier.get_distance().gen_physical_value() - if location == 'ahead_of': + if location == "ahead_of": wp_lists = end_position.next(distance) else: wp_lists = end_position.previous(distance) if wp_lists: end_wp = wp_lists[0] - elif location == 'left_of' or location == 'right_of' or location == 'same_as': + elif location in ('left_of', 'right_of', 'same_as'): # Lane restraint at the end - if location == 'left_of': + if location == "left_of": temp_wp = relative_car_wp.get_left_lane() - elif location == 'right_of': + elif location == "right_of": temp_wp = relative_car_wp.get_right_lane() - elif location == 'same_as': + elif location == "same_as": temp_wp = relative_car_wp else: - LOG_INFO('lane spec is error') + LOG_INFO("lane spec is error") end_lane_wp = temp_wp else: - raise RuntimeError('relative position is igeal') + raise RuntimeError("relative position is igeal") if end_wp: current_car_conf = config.get_car_config(npc_name) - current_car_transform = current_car_conf.get_arg('init_transform') + current_car_transform = current_car_conf.get_arg("init_transform") # Get the global route planner, used to calculate the route grp = GlobalRoutePlanner(CarlaDataProvider.get_world().get_map(), 0.5) # grp.setup() - distance = calculate_distance(current_car_transform.location, end_wp.transform.location, grp) + distance = calculate_distance( + current_car_transform.location, end_wp.transform.location, grp + ) car_need_speed = distance / float(duration) - current_car_conf.set_arg({'desired_speed': car_need_speed}) - LOG_WARNING(f'{npc_name} car desired speed will be set to {car_need_speed * 3.6} km/h') + current_car_conf.set_arg({"desired_speed": car_need_speed}) + LOG_WARNING( + f"{npc_name} car desired speed will be set to {car_need_speed * 3.6} km/h" + ) car_actor = CarlaDataProvider.get_actor_by_name(npc_name) car_driving = WaypointFollower(car_actor, car_need_speed) @@ -368,35 +384,41 @@ def process_location_modifier(config, modifiers, duration: float, father_tree): father_tree.add_child(car_driving) if end_lane_wp: - current_car_conf = config.get_car_config(npc_name) - current_car_transform = current_car_conf.get_arg('init_transform') - car_lane_wp = CarlaDataProvider.get_map().get_waypoint(current_car_transform.location) + current_car_transform = current_car_conf.get_arg("init_transform") + car_lane_wp = CarlaDataProvider.get_map().get_waypoint( + current_car_transform.location + ) direction = None if end_lane_wp and car_lane_wp: end_lane_id = end_lane_wp.lane_id end_lane = None if end_lane_id == car_lane_wp.get_left_lane().lane_id: - direction = 'left' + direction = "left" end_lane = car_lane_wp.get_left_lane() elif end_lane_id == car_lane_wp.get_right_lane().lane_id: - direction = 'right' + direction = "right" end_lane = car_lane_wp.get_right_lane() else: - print('no need change lane') + print("no need change lane") car_actor = CarlaDataProvider.get_actor_by_name(npc_name) lane_change = LaneChange( - car_actor, speed=None, direction=direction, distance_same_lane=5, distance_other_lane=10) + car_actor, + speed=None, + direction=direction, + distance_same_lane=5, + distance_other_lane=10, + ) # lane_change.set_duration(duration) if end_lane: # After lane change, the car needs to modify its lane information. # Here, there should be a special variable to save the current transform car_config = config.get_car_config(npc_name) - car_config.set_arg({'init_transform': end_lane.transform}) + car_config.set_arg({"init_transform": end_lane.transform}) continue_drive = WaypointFollower(car_actor) # car_driving.set_duration(duration) @@ -409,8 +431,16 @@ class OSC2Scenario(BasicScenario): Implementation of the osc2 Scenario """ - def __init__(self, world, ego_vehicles, config: OSC2ScenarioConfiguration, osc2_file, debug_mode=False, - criteria_enable=True, timeout=300): + def __init__( + self, + world, + ego_vehicles, + config: OSC2ScenarioConfiguration, + osc2_file, + debug_mode=False, + criteria_enable=True, + timeout=300, + ): """ Setup all relevant parameters and create scenario """ @@ -433,9 +463,15 @@ def __init__(self, world, ego_vehicles, config: OSC2ScenarioConfiguration, osc2_ # Use struct_parameters to store parameters of type struct, so that we can recognize it in keep constraint self.struct_parameters = {} - super(OSC2Scenario, self).__init__("OSC2Scenario", ego_vehicles=ego_vehicles, config=config, - world=world, debug_mode=debug_mode, - terminate_on_failure=False, criteria_enable=criteria_enable) + super(OSC2Scenario, self).__init__( + "OSC2Scenario", + ego_vehicles=ego_vehicles, + config=config, + world=world, + debug_mode=debug_mode, + terminate_on_failure=False, + criteria_enable=criteria_enable, + ) def set_behavior_tree(self, behavior): self.behavior = behavior @@ -455,10 +491,10 @@ def get_behavior_tree(self): def visit_scenario_declaration(self, node: ast_node.ScenarioDeclaration): scenario_name = node.qualified_behavior_name - if scenario_name != 'top' and not self.father_ins.visit_power: + if scenario_name != "top" and not self.father_ins.visit_power: return - if scenario_name == 'top' and self.father_ins.visit_power: + if scenario_name == "top" and self.father_ins.visit_power: return for child in node.get_children(): @@ -476,8 +512,8 @@ def visit_do_directive(self, node: ast_node.DoDirective): def bool_result(self, option): # wait(x < y) @drive_distance Handling of Boolean expressions x < y - expression_value = re.split('\W+', option) - symbol = re.search('\W+', option).group() + expression_value = re.split("\W+", option) + symbol = re.search("\W+", option).group() if symbol == "<": symbol = operator.lt elif symbol == ">": @@ -499,31 +535,39 @@ def visit_do_member(self, node: ast_node.DoMember): self.__duration = 1000000000.0 composition_operator = node.composition_operator sub_node = None - if composition_operator in ['serial', 'parallel', 'one_of']: - if composition_operator == 'serial': + if composition_operator in ["serial", "parallel", "one_of"]: + if composition_operator == "serial": self.__cur_behavior = py_trees.composites.Sequence( policy=py_trees.common.ParallelPolicy.SUCCESS_ON_ALL, - name="serial") - elif composition_operator == 'parallel': + name="serial", + ) + elif composition_operator == "parallel": self.__cur_behavior = py_trees.composites.Parallel( policy=py_trees.common.ParallelPolicy.SUCCESS_ON_ALL, - name="parallel") - elif composition_operator == 'one_of': + name="parallel", + ) + elif composition_operator == "one_of": self.__cur_behavior = py_trees.composites.Sequence( policy=py_trees.common.ParallelPolicy.SUCCESS_ON_ALL, - name="one_of") + name="one_of", + ) do_member_list = [] for child in node.get_children(): if isinstance(child, ast_node.DoMember): do_member_list.append(child) sub_node = random.choice(do_member_list) else: - raise NotImplementedError(f'no supported scenario operator {composition_operator}') + raise NotImplementedError( + f"no supported scenario operator {composition_operator}" + ) if self.root_behavior is None: self.root_behavior = self.__cur_behavior self.__parent_behavior[node] = self.__cur_behavior - elif self.root_behavior is not None and self.__parent_behavior.get(node) is None: + elif ( + self.root_behavior is not None + and self.__parent_behavior.get(node) is None + ): self.__parent_behavior[node] = self.root_behavior parent = self.__parent_behavior[node] parent.add_child(self.__cur_behavior) @@ -535,8 +579,7 @@ def visit_do_member(self, node: ast_node.DoMember): if not isinstance(child, ast_node.AST): continue - if isinstance(child, ast_node.DoMember) or isinstance(child, ast_node.WaitDirective) or isinstance( - child, ast_node.EmitDirective): + if isinstance(child, (ast_node.DoMember, ast_node.EmitDirective, ast_node.WaitDirective)): self.__parent_behavior[child] = self.__cur_behavior if sub_node is None: @@ -552,7 +595,9 @@ def visit_do_member(self, node: ast_node.DoMember): if isinstance(named_arg[1], Physical): self.__duration = named_arg[1].gen_physical_value() else: - print('[Error] \'duration\' parameter must be \'Physical\' type') + print( + "[Error] 'duration' parameter must be 'Physical' type" + ) sys.exit(1) elif isinstance(child, ast_node.BehaviorInvocation): self.visit_behavior_invocation(child) @@ -563,57 +608,67 @@ def visit_do_member(self, node: ast_node.DoMember): elif isinstance(child, ast_node.CallDirective): self.visit_call_directive(child) else: - raise NotImplementedError(f'no implentment AST node {child}') + raise NotImplementedError(f"no implentment AST node {child}") else: if isinstance(sub_node, ast_node.DoMember): self.visit_do_member(sub_node) else: - raise NotImplementedError(f'no supported ast node') + raise NotImplementedError("no supported ast node") if re.match("\d", str(self.__duration)) and self.__duration != math.inf: self.father_ins.all_duration += int(self.__duration) def visit_wait_directive(self, node: ast_node.WaitDirective): - behaviors = py_trees.composites.Sequence(policy=py_trees.common.ParallelPolicy.SUCCESS_ON_ALL, - name="wait") - subbehavior = py_trees.composites.Sequence(policy=py_trees.common.ParallelPolicy.SUCCESS_ON_ALL, - name="behavior") - - if node.get_child_count() == 1 and isinstance(node.get_child(0), ast_node.EventCondition): + behaviors = py_trees.composites.Sequence( + policy=py_trees.common.ParallelPolicy.SUCCESS_ON_ALL, name="wait" + ) + subbehavior = py_trees.composites.Sequence( + policy=py_trees.common.ParallelPolicy.SUCCESS_ON_ALL, name="behavior" + ) + + if node.get_child_count() == 1 and isinstance( + node.get_child(0), ast_node.EventCondition + ): elapsed_condition = self.visit_event_condition(node.get_child(0)) self.__duration = elapsed_condition.gen_physical_value() print(elapsed_condition, self.__duration) self.father_ins.all_duration += int(self.__duration) waitTriggerer = TimeOfWaitComparison(self.__duration) - waitTriggerer = oneshot_with_check(variable_name="wait_time", behaviour=waitTriggerer) + waitTriggerer = oneshot_with_check( + variable_name="wait_time", behaviour=waitTriggerer + ) subbehavior.add_child(waitTriggerer) behaviors.add_child(subbehavior) parent = self.__parent_behavior[node] parent.add_child(behaviors) return - bool_condition = '' + bool_condition = "" for child in node.get_children(): if not isinstance(child, ast_node.AST): continue if isinstance(child, ast_node.EventReference): - event_declaration_node, event_name = self.visit_event_reference(child) + event_declaration_node, event_name = self.visit_event_reference( + child + ) elif isinstance(child, ast_node.EventFieldDecl): pass elif isinstance(child, ast_node.EventCondition): # string bool_condition = 'x) modifier_ins = ChangeSpeedModifier(actor, modifier_name) @@ -811,40 +875,42 @@ def visit_behavior_invocation(self, node: ast_node.BehaviorInvocation): if isinstance(arguments, Tuple): keyword_args[arguments[0]] = arguments[1] elif isinstance(arguments, Physical): - keyword_args['desired_speed'] = arguments + keyword_args["desired_speed"] = arguments else: - return f'Needed 1 arguments, but given {len(arguments)}arguments.' + return f"Needed 1 arguments, but given {len(arguments)}arguments." modifier_ins.set_args(keyword_args) speed_modifiers.append(modifier_ins) - elif modifier_name == 'change_lane': + elif modifier_name == "change_lane": modifier_ins = ChangeLaneModifier(actor, modifier_name) keyword_args = {} count = 0 - for k, v in enumerate(arguments): + for _, _ in enumerate(arguments): count += 1 if count == 1: - keyword_args['side'] = arguments + keyword_args["side"] = arguments elif count == 2: if isinstance(arguments[0], Tuple): keyword_args[arguments[0][0]] = str(arguments[0][1]) else: - keyword_args['lane_changes'] = str(arguments[0]) + keyword_args["lane_changes"] = str(arguments[0]) if isinstance(arguments[1], Tuple): keyword_args[arguments[1][0]] = arguments[1][1] else: - keyword_args['side'] = arguments[1] + keyword_args["side"] = arguments[1] else: - return f'Needed 2 arguments, but given {len(arguments)}arguments.' + return f"Needed 2 arguments, but given {len(arguments)}arguments." modifier_ins.set_args(keyword_args) location_modifiers.append(modifier_ins) else: - raise NotImplementedError(f'no implentment function: {modifier_name}') + raise NotImplementedError( + f"no implentment function: {modifier_name}" + ) if modifier_invocation_no_occur: car_actor = CarlaDataProvider.get_actor_by_name(actor) @@ -854,30 +920,55 @@ def visit_behavior_invocation(self, node: ast_node.BehaviorInvocation): self.__cur_behavior.add_child(behavior) return - process_location_modifier(self.father_ins.config, location_modifiers, self.__duration, actor_drive) - process_speed_modifier(self.father_ins.config, speed_modifiers, self.__duration, - self.father_ins.all_duration, actor_drive) + process_location_modifier( + self.father_ins.config, location_modifiers, self.__duration, actor_drive + ) + process_speed_modifier( + self.father_ins.config, + speed_modifiers, + self.__duration, + self.father_ins.all_duration, + actor_drive, + ) behavior.add_child(actor_drive) self.__cur_behavior.add_child(behavior) def visit_modifier_invocation(self, node: ast_node.ModifierInvocation): - actor = node.actor + # actor = node.actor modifier_name = node.modifier_name - LOG_INFO(f'modifier invocation name {node.modifier_name}') + LOG_INFO(f"modifier invocation name {node.modifier_name}") arguments = self.visit_children(node) line, column = node.get_loc() # retrieval_name = modifier_name + para_type_str_sequence(config=self.father_ins.config, # arguments=arguments, line=line, column=column, node=node) retrieval_name = modifier_name method_scope = node.get_scope().resolve(retrieval_name) - if method_scope is None and modifier_name not in dir(self.father_ins.config.path) \ - and modifier_name not in ( - 'speed', 'lane', 'position', 'acceleration', 'keep_lane', 'change_speed', 'change_lane'): + if ( + method_scope is None + and modifier_name not in dir(self.father_ins.config.path) + and modifier_name + not in ( + "speed", + "lane", + "position", + "acceleration", + "keep_lane", + "change_speed", + "change_lane", + ) + ): line, column = node.get_loc() - LOG_ERROR("Not Find " + modifier_name + " Method Declaration", token=None, line=line, column=column) + LOG_ERROR( + "Not Find " + modifier_name + " Method Declaration", + token=None, + line=line, + column=column, + ) if isinstance(method_scope, MethodSymbol): - method_declaration_node = copy.deepcopy(method_scope.declaration_address) + method_declaration_node = copy.deepcopy( + method_scope.declaration_address + ) method_scope = method_declaration_node.get_scope() if isinstance(arguments, List): for arg in arguments: @@ -901,14 +992,19 @@ def visit_modifier_invocation(self, node: ast_node.ModifierInvocation): return modifier_name, arguments def visit_event_reference(self, node: ast_node.EventReference): - return copy.deepcopy(node.get_scope().resolve(node.event_path).declaration_address), node.event_path + return ( + copy.deepcopy( + node.get_scope().resolve(node.event_path).declaration_address + ), + node.event_path, + ) # return node.event_path def visit_event_field_declaration(self, node: ast_node.EventFieldDecl): return super().visit_event_field_declaration(node) def visit_event_condition(self, node: ast_node.EventCondition): - expression = '' + expression = "" for child in node.get_children(): if isinstance(child, ast_node.RelationExpression): flat_arguments = self.visit_relation_expression(child) @@ -919,11 +1015,13 @@ def visit_event_condition(self, node: ast_node.EventCondition): left = temp_stack.pop() expression = left + ex + str(right) temp_stack.append(expression) - elif ex == 'in': + elif ex == "in": right = temp_stack.pop() left = temp_stack.pop() innum = temp_stack.pop() - expression = innum + ' ' + ex + ' [' + left + ', ' + right + ']' + expression = ( + innum + " " + ex + " [" + left + ", " + right + "]" + ) temp_stack.append(expression) else: temp_stack.append(ex) @@ -946,20 +1044,20 @@ def visit_logical_expression(self, node: ast_node.LogicalExpression): flat_arguments = OSC2Helper.flat_list(arguments) temp_stack = [] for ex in flat_arguments: - if ex == 'and' or ex == 'or' or ex == '=>': - expression = '' + if ex in ('and', 'or', '=>'): + expression = "" length = len(temp_stack) - 1 for num in temp_stack: if length > 0: - expression = expression + num + ' ' + ex + ' ' + expression = expression + num + " " + ex + " " length = length - 1 else: expression = expression + num temp_stack.clear() temp_stack.append(expression) - elif ex == 'not': + elif ex == "not": num = temp_stack.pop() - expression = ex + ' ' + num + expression = ex + " " + num temp_stack.append(expression) else: temp_stack.append(ex) @@ -973,34 +1071,36 @@ def visit_elapsed_expression(self, node: ast_node.ElapsedExpression): return self.visit_physical_literal(child) elif isinstance(child, ast_node.RangeExpression): return self.visit_range_expression(child) + else: + return None def visit_binary_expression(self, node: ast_node.BinaryExpression): arguments = [self.visit_children(node), node.operator] flat_arguments = OSC2Helper.flat_list(arguments) - LOG_INFO(f'{flat_arguments}') + LOG_INFO(f"{flat_arguments}") temp_stack = [] for ex in flat_arguments: - if ex == '+' or ex == '-' or ex == '*' or ex == '/' or ex == '%': + if ex in ('+', '-', '*', '/', '%'): right = temp_stack.pop() left = temp_stack.pop() # expression = left + ' ' + ex + ' ' + right - if ex == '+': + if ex == "+": expression = left + right - elif ex == '-': + elif ex == "-": expression = left - right - elif ex == '*': + elif ex == "*": expression = left * right - elif ex == '/': + elif ex == "/": expression = left / right - elif ex == '%': + elif ex == "%": expression = left % right else: - LOG_INFO(f'undefined Binary Expression operator: {ex}') + LOG_INFO(f"undefined Binary Expression operator: {ex}") temp_stack.append(expression) else: temp_stack.append(ex) binary_expression = temp_stack.pop() - LOG_INFO(f'Relation Expression Value: {binary_expression}') + LOG_INFO(f"Relation Expression Value: {binary_expression}") # return [self.visit_children(node), node.operator] return binary_expression @@ -1010,13 +1110,10 @@ def visit_named_argument(self, node: ast_node.NamedArgument): def visit_positional_argument(self, node: ast_node.PositionalArgument): return self.visit_children(node) - def visit_argument(self, node: ast_node.Argument): - return node.argument_name, self.visit_children(node) - def visit_range_expression(self, node: ast_node.RangeExpression): start, end = self.visit_children(node) if type(start) != type(end): - print('[Error] different types between start and end of the range') + print("[Error] different types between start and end of the range") sys.exit(1) start_num = None @@ -1039,22 +1136,25 @@ def visit_range_expression(self, node: ast_node.RangeExpression): if start_unit == end_unit: unit_name = start_unit else: - print('[Error] wrong unit in the range') + print("[Error] wrong unit in the range") sys.exit(1) if start_num >= end_num: - print('[Error] wrong start and end in the range') + print("[Error] wrong start and end in the range") sys.exit(1) - range = Range(start_num, end_num) + var_range = Range(start_num, end_num) if unit_name: - return Physical(range, unit_name) + return Physical(var_range, unit_name) else: - return range + return var_range def visit_physical_literal(self, node: ast_node.PhysicalLiteral): - return Physical(self.visit_children(node), self.father_ins.config.unit_dict[node.unit_name]) + return Physical( + self.visit_children(node), + self.father_ins.config.unit_dict[node.unit_name], + ) def visit_integer_literal(self, node: ast_node.IntegerLiteral): return int(node.value) @@ -1063,10 +1163,7 @@ def visit_float_literal(self, node: ast_node.FloatLiteral): return float(node.value) def visit_bool_literal(self, node: ast_node.BoolLiteral): - if node.value == "true": - return True - else: - return False + return node.value == "true" def visit_string_literal(self, node: ast_node.StringLiteral): return node.value @@ -1079,7 +1176,7 @@ def visit_identifier_reference(self, node: ast_node.IdentifierReference): para_type = None para_value = None if node.get_scope() is not None: - if not hasattr(node.get_scope(), 'type'): + if not hasattr(node.get_scope(), "type"): return para_name para_type = node.get_scope().type symbol = node.get_scope() @@ -1094,30 +1191,33 @@ def visit_identifier_reference(self, node: ast_node.IdentifierReference): else: para_value = cur_value if para_value is not None: - if isinstance(para_value, Physical) or isinstance(para_value, int) or isinstance(para_value, float): + if isinstance(para_value, (Physical, float, int)): return para_value para_value = para_value.strip('"') - if re.fullmatch('(^[-]?[0-9]+(\.[0-9]+)?)\s*(\w+)', para_value): + if re.fullmatch("(^[-]?[0-9]+(\.[0-9]+)?)\s*(\w+)", para_value): # Regular expression ^[-]?[0-9]+(\.[0-9]+)? matching float # para_value_num = re.findall('^[-]?[0-9]+(\.[0-9]+)?', para_value)[0] - patter = re.compile('(^[-]?[0-9]+[\.[0-9]+]?)\s*(\w+)') + patter = re.compile("(^[-]?[0-9]+[\.[0-9]+]?)\s*(\w+)") para_value_num, para_value_unit = patter.match(para_value).groups() - if para_value_num.count('.') == 1: - return Physical(float(para_value_num), self.father_ins.config.unit_dict[para_value_unit]) + if para_value_num.count(".") == 1: + return Physical( + float(para_value_num), + self.father_ins.config.unit_dict[para_value_unit], + ) else: - return Physical(int(para_value_num), self.father_ins.config.unit_dict[para_value_unit]) - elif para_type == 'int': + return Physical( + int(para_value_num), + self.father_ins.config.unit_dict[para_value_unit], + ) + elif para_type == "int": return int(para_value) - elif para_type == 'uint': + elif para_type == "uint": return int(para_value) - elif para_type == 'float': + elif para_type == "float": return float(para_value) - elif para_type == 'bool': - if para_value == "true": - return True - else: - return False - elif para_type == 'string': + elif para_type == "bool": + return para_value == "true" + elif para_type == "string": return para_value else: return para_value @@ -1136,9 +1236,9 @@ def visit_parameter_declaration(self, node: ast_node.ParameterDeclaration): # Save variables of type struct for later access if para_type in self.father_ins.struct_declaration: - self.father_ins.struct_parameters.update({ - para_name[0]: self.father_ins.struct_declaration[para_type] - }) + self.father_ins.struct_parameters.update( + {para_name[0]: self.father_ins.struct_declaration[para_type]} + ) def visit_method_declaration(self, node: ast_node.MethodDeclaration): pass @@ -1149,12 +1249,17 @@ def visit_argument(self, node: ast_node.Argument): def visit_method_body(self, node: ast_node.MethodBody): type = node.type method_value = None - if type == 'external': + if type == "external": external_list = [] for child in node.get_children(): if isinstance(child, ast_node.PositionalArgument): line, column = node.get_loc() - LOG_ERROR("not support external format.!", token=None, line=line, column=column) + LOG_ERROR( + "not support external format.!", + token=None, + line=line, + column=column, + ) elif isinstance(child, ast_node.NamedArgument): name, value = self.visit_named_argument(child) external_list.append((name, value)) @@ -1162,18 +1267,18 @@ def visit_method_body(self, node: ast_node.MethodBody): exec_context = "" module_name = None for elem in external_list: - if 'module' == elem[0]: + if "module" == elem[0]: exec_context += "import " + str(elem[1]) + "\n" module_name = str(elem[1]) - elif 'name' == elem[0]: + elif "name" == elem[0]: exec_context += "ret = " if module_name is not None: - exec_context += module_name + '.' + str(elem[1]) + '(' + exec_context += module_name + "." + str(elem[1]) + "(" else: - exec_context += str(elem[1]) + '(' + exec_context += str(elem[1]) + "(" else: exec_context += str(elem[1]) - exec_context += ')\n' + exec_context += ")\n" try: exec_data = {} @@ -1181,7 +1286,12 @@ def visit_method_body(self, node: ast_node.MethodBody): method_value = exec_data["ret"] except Exception: line, column = node.get_loc() - LOG_ERROR("not support external format.!", token=None, line=line, column=column) + LOG_ERROR( + "not support external format.!", + token=None, + line=line, + column=column, + ) return method_value else: @@ -1190,23 +1300,33 @@ def visit_method_body(self, node: ast_node.MethodBody): method_value = self.visit_binary_expression(child) if method_value is not None: return method_value + return - def visit_function_application_expression(self, node: ast_node.FunctionApplicationExpression): + def visit_function_application_expression( + self, node: ast_node.FunctionApplicationExpression + ): LOG_INFO("visit function application expression!") LOG_INFO("func name:" + node.func_name) arguments = OSC2Helper.flat_list(self.visit_children(node)) line, column = node.get_loc() # retrieval_name = para_type_str_sequence(config=self.father_ins.config, arguments=arguments, line=line, column=column, node=node) - retrieval_name = arguments[0].split('.')[-1] + retrieval_name = arguments[0].split(".")[-1] method_scope = node.get_scope().resolve(retrieval_name) method_name = arguments[0] if method_scope is None: - LOG_ERROR("Not Find " + method_name + " Method Declaration", token=None, line=line, column=column) + LOG_ERROR( + "Not Find " + method_name + " Method Declaration", + token=None, + line=line, + column=column, + ) para_value = None if isinstance(method_scope, MethodSymbol): - method_declaration_node = copy.deepcopy(method_scope.declaration_address) + method_declaration_node = copy.deepcopy( + method_scope.declaration_address + ) method_scope = method_declaration_node.get_scope() if isinstance(arguments, List): for arg in arguments: @@ -1228,16 +1348,18 @@ def visit_function_application_expression(self, node: ast_node.FunctionApplicati else: pass - def visit_keep_constraint_declaration(self, node: ast_node.KeepConstraintDeclaration): + def visit_keep_constraint_declaration( + self, node: ast_node.KeepConstraintDeclaration + ): arguments = self.visit_children(node) retrieval_name = arguments[0] # Struct parameter or actor parameter contains '.' - if '.' in retrieval_name: - layered_names = retrieval_name.split('.') + if "." in retrieval_name: + layered_names = retrieval_name.split(".") prefix = layered_names[0] suffix = layered_names[1:] - if prefix == 'it': + if prefix == "it": pass elif prefix in self.father_ins.struct_parameters: # param_name is the name of the struct variable, and param_scope is a ParameterSymbol @@ -1265,8 +1387,9 @@ def visit_keep_constraint_declaration(self, node: ast_node.KeepConstraintDeclara # The struct variable tree is a subtree of the symbol tree def _build_struct_tree(self, param_symbol: ParameterSymbol): if param_symbol.value is None: - param_symbol.value = copy.deepcopy(self.father_ins - .struct_parameters[param_symbol.name]).get_scope() + param_symbol.value = copy.deepcopy( + self.father_ins.struct_parameters[param_symbol.name] + ).get_scope() for key in param_symbol.value.symbols: child_symbol = param_symbol.value.symbols[key] if isinstance(child_symbol, ParameterSymbol): @@ -1275,7 +1398,9 @@ def _build_struct_tree(self, param_symbol: ParameterSymbol): self._build_struct_tree(child_symbol) # visit struct variable tree and assign value - def _visit_struct_tree(self, root: ParameterSymbol, suffix: list, index: int, value): + def _visit_struct_tree( + self, root: ParameterSymbol, suffix: list, index: int, value + ): if root.type not in self.father_ins.struct_declaration: root.value = value return @@ -1285,7 +1410,9 @@ def _visit_struct_tree(self, root: ParameterSymbol, suffix: list, index: int, va child_symbols = root.value.symbols if to_visit_param not in child_symbols: return - self._visit_struct_tree(child_symbols[to_visit_param], suffix, index + 1, value) + self._visit_struct_tree( + child_symbols[to_visit_param], suffix, index + 1, value + ) def _create_behavior(self): """ diff --git a/srunner/tools/openscenario_parser.py b/srunner/tools/openscenario_parser.py index 8664563c1..adc0f9ed7 100644 --- a/srunner/tools/openscenario_parser.py +++ b/srunner/tools/openscenario_parser.py @@ -682,7 +682,7 @@ def convert_position_to_transform(position, actor_list=None): droll = 0 if rel_pos.find('Orientation') is not None: orientation = rel_pos.find('Orientation') - is_absolute = (orientation.attrib.get('type') == "absolute") + is_absolute = orientation.attrib.get('type') == "absolute" dyaw = math.degrees(float(ParameterRef(orientation.attrib.get('h', 0)))) dpitch = math.degrees(float(ParameterRef(orientation.attrib.get('p', 0)))) droll = math.degrees(float(ParameterRef(orientation.attrib.get('r', 0)))) diff --git a/srunner/tools/osc2_helper.py b/srunner/tools/osc2_helper.py index c0e3e2ef8..33e4f5955 100644 --- a/srunner/tools/osc2_helper.py +++ b/srunner/tools/osc2_helper.py @@ -1,36 +1,29 @@ from __future__ import print_function -from distutils.util import strtobool -import copy -import datetime import math import operator - -import py_trees -import carla - from typing import List, Tuple -from srunner.osc2.osc_preprocess.pre_process import Preprocess -from srunner.tools.py_trees_port import oneshot_behavior - +import carla +import numpy as np from antlr4.CommonTokenStream import CommonTokenStream -from antlr4.tree.Tree import ParseTreeWalker from antlr4.FileStream import FileStream - -import numpy as np +from antlr4.tree.Tree import ParseTreeWalker from numpy.linalg import det -from srunner.osc2.osc2_parser.OpenSCENARIO2Lexer import OpenSCENARIO2Lexer as OSC2Lexer -from srunner.osc2.osc2_parser.OpenSCENARIO2Parser import OpenSCENARIO2Parser as OSC2Parser from srunner.osc2.ast_manager.ast_builder import ASTBuilder from srunner.osc2.error_manager.error_listener import OscErrorListener +from srunner.osc2.osc2_parser.OpenSCENARIO2Lexer import OpenSCENARIO2Lexer as OSC2Lexer +from srunner.osc2.osc2_parser.OpenSCENARIO2Parser import ( + OpenSCENARIO2Parser as OSC2Parser, +) +from srunner.osc2.osc_preprocess.pre_process import Preprocess class OSC2Helper(object): osc2_file = None ast_tree = None - ego_name = 'ego_vehicle' + ego_name = "ego_vehicle" wait_for_ego = False @classmethod @@ -39,18 +32,18 @@ def gen_osc2_ast(cls, osc2_file_name: str): return cls.ast_tree else: # preprocessing - new_file, import_msg = Preprocess(osc2_file_name).import_process() - input_stream = FileStream(new_file, encoding='utf-8') + new_file, _ = Preprocess(osc2_file_name).import_process() + input_stream = FileStream(new_file, encoding="utf-8") - OscErrorListeners = OscErrorListener(input_stream) + osc_error_listeners = OscErrorListener(input_stream) lexer = OSC2Lexer(input_stream) lexer.removeErrorListeners() - lexer.addErrorListener(OscErrorListeners) + lexer.addErrorListener(osc_error_listeners) tokens = CommonTokenStream(lexer) parser = OSC2Parser(tokens) parser.removeErrorListeners() - parser.addErrorListener(OscErrorListeners) + parser.addErrorListener(osc_error_listeners) parse_tree = parser.osc_file() osc2_ast_builder = ASTBuilder() @@ -122,7 +115,7 @@ def curve_radius(p1: List, p2: List, p3: List) -> Tuple: temp02 = p3 - p2 temp03 = np.cross(temp01, temp02) temp = (temp03 @ temp03) / (temp01 @ temp01) / (temp02 @ temp02) - if temp < 10 ** -6: + if temp < 10**-6: return None temp1 = np.vstack((p1, p2, p3)) @@ -147,16 +140,16 @@ def curve_radius(p1: List, p2: List, p3: List) -> Tuple: pc = -np.array([B, C, D]) / 2 / A r = np.sqrt(B * B + C * C + D * D - 4 * A * E) / 2 / abs(A) - ret_list = list(map(lambda n: round(n, 2), pc.tolist())) + _ = list(map(lambda n: round(n, 2), pc.tolist())) return round(r, 2) @staticmethod def point_line_location(A: Tuple, B: Tuple, C: Tuple) -> str: - ''' + """ The position of point C relative to directed line segment AB. return: string, left, on, right - ''' + """ xa = A[0] ya = A[1] xb = B[0] @@ -165,11 +158,11 @@ def point_line_location(A: Tuple, B: Tuple, C: Tuple) -> str: yc = C[1] f = (xb - xa) * (yc - ya) - (xc - xa) * (yb - ya) if f > 0: - return 'left' + return "left" elif f == 0: - return 'on' + return "on" else: - return 'right' + return "right" @staticmethod def find_physical_type(src_si_base_exponent: dict, si_base_exponent: dict): @@ -180,18 +173,21 @@ def find_physical_type(src_si_base_exponent: dict, si_base_exponent: dict): @staticmethod def euler_orientation(rotation: carla.Rotation): - pitch = rotation.pitch yaw = rotation.yaw roll = rotation.roll - x = math.sin(pitch / 2) * math.sin(yaw / 2) * math.cos(roll / 2) + math.cos(pitch / 2) * math.cos( - yaw / 2) * math.sin(roll / 2) - y = math.sin(pitch / 2) * math.cos(yaw / 2) * math.cos(roll / 2) + math.cos(pitch / 2) * math.sin( - yaw / 2) * math.sin(roll / 2) - z = math.cos(pitch / 2) * math.sin(yaw / 2) * math.cos(roll / 2) - math.sin(pitch / 2) * math.cos( - yaw / 2) * math.sin(roll / 2) - w = math.cos(pitch / 2) * math.cos(yaw / 2) * math.cos(roll / 2) - math.sin(pitch / 2) * math.sin( - yaw / 2) * math.sin(roll / 2) + x = math.sin(pitch / 2) * math.sin(yaw / 2) * math.cos(roll / 2) + math.cos( + pitch / 2 + ) * math.cos(yaw / 2) * math.sin(roll / 2) + y = math.sin(pitch / 2) * math.cos(yaw / 2) * math.cos(roll / 2) + math.cos( + pitch / 2 + ) * math.sin(yaw / 2) * math.sin(roll / 2) + z = math.cos(pitch / 2) * math.sin(yaw / 2) * math.cos(roll / 2) - math.sin( + pitch / 2 + ) * math.cos(yaw / 2) * math.sin(roll / 2) + w = math.cos(pitch / 2) * math.cos(yaw / 2) * math.cos(roll / 2) - math.sin( + pitch / 2 + ) * math.sin(yaw / 2) * math.sin(roll / 2) return x, y, z, w @staticmethod @@ -200,6 +196,8 @@ def flat_list(list_of_lists): return list_of_lists if isinstance(list_of_lists[0], list): - return OSC2Helper.flat_list(list_of_lists[0]) + OSC2Helper.flat_list(list_of_lists[1:]) + return OSC2Helper.flat_list(list_of_lists[0]) + OSC2Helper.flat_list( + list_of_lists[1:] + ) return list_of_lists[:1] + OSC2Helper.flat_list(list_of_lists[1:])