{"payload":{"allShortcutsEnabled":false,"fileTree":{"qiskit/transpiler/passes/routing":{"items":[{"name":"algorithms","path":"qiskit/transpiler/passes/routing/algorithms","contentType":"directory"},{"name":"commuting_2q_gate_routing","path":"qiskit/transpiler/passes/routing/commuting_2q_gate_routing","contentType":"directory"},{"name":"__init__.py","path":"qiskit/transpiler/passes/routing/__init__.py","contentType":"file"},{"name":"basic_swap.py","path":"qiskit/transpiler/passes/routing/basic_swap.py","contentType":"file"},{"name":"layout_transformation.py","path":"qiskit/transpiler/passes/routing/layout_transformation.py","contentType":"file"},{"name":"lookahead_swap.py","path":"qiskit/transpiler/passes/routing/lookahead_swap.py","contentType":"file"},{"name":"sabre_swap.py","path":"qiskit/transpiler/passes/routing/sabre_swap.py","contentType":"file"},{"name":"stochastic_swap.py","path":"qiskit/transpiler/passes/routing/stochastic_swap.py","contentType":"file"},{"name":"utils.py","path":"qiskit/transpiler/passes/routing/utils.py","contentType":"file"}],"totalCount":9},"qiskit/transpiler/passes":{"items":[{"name":"analysis","path":"qiskit/transpiler/passes/analysis","contentType":"directory"},{"name":"basis","path":"qiskit/transpiler/passes/basis","contentType":"directory"},{"name":"calibration","path":"qiskit/transpiler/passes/calibration","contentType":"directory"},{"name":"layout","path":"qiskit/transpiler/passes/layout","contentType":"directory"},{"name":"optimization","path":"qiskit/transpiler/passes/optimization","contentType":"directory"},{"name":"routing","path":"qiskit/transpiler/passes/routing","contentType":"directory"},{"name":"scheduling","path":"qiskit/transpiler/passes/scheduling","contentType":"directory"},{"name":"synthesis","path":"qiskit/transpiler/passes/synthesis","contentType":"directory"},{"name":"utils","path":"qiskit/transpiler/passes/utils","contentType":"directory"},{"name":"__init__.py","path":"qiskit/transpiler/passes/__init__.py","contentType":"file"}],"totalCount":10},"qiskit/transpiler":{"items":[{"name":"passes","path":"qiskit/transpiler/passes","contentType":"directory"},{"name":"preset_passmanagers","path":"qiskit/transpiler/preset_passmanagers","contentType":"directory"},{"name":"__init__.py","path":"qiskit/transpiler/__init__.py","contentType":"file"},{"name":"basepasses.py","path":"qiskit/transpiler/basepasses.py","contentType":"file"},{"name":"coupling.py","path":"qiskit/transpiler/coupling.py","contentType":"file"},{"name":"exceptions.py","path":"qiskit/transpiler/exceptions.py","contentType":"file"},{"name":"instruction_durations.py","path":"qiskit/transpiler/instruction_durations.py","contentType":"file"},{"name":"layout.py","path":"qiskit/transpiler/layout.py","contentType":"file"},{"name":"passmanager.py","path":"qiskit/transpiler/passmanager.py","contentType":"file"},{"name":"passmanager_config.py","path":"qiskit/transpiler/passmanager_config.py","contentType":"file"},{"name":"target.py","path":"qiskit/transpiler/target.py","contentType":"file"},{"name":"timing_constraints.py","path":"qiskit/transpiler/timing_constraints.py","contentType":"file"}],"totalCount":12},"qiskit":{"items":[{"name":"assembler","path":"qiskit/assembler","contentType":"directory"},{"name":"circuit","path":"qiskit/circuit","contentType":"directory"},{"name":"compiler","path":"qiskit/compiler","contentType":"directory"},{"name":"converters","path":"qiskit/converters","contentType":"directory"},{"name":"dagcircuit","path":"qiskit/dagcircuit","contentType":"directory"},{"name":"passmanager","path":"qiskit/passmanager","contentType":"directory"},{"name":"primitives","path":"qiskit/primitives","contentType":"directory"},{"name":"providers","path":"qiskit/providers","contentType":"directory"},{"name":"pulse","path":"qiskit/pulse","contentType":"directory"},{"name":"qasm","path":"qiskit/qasm","contentType":"directory"},{"name":"qasm2","path":"qiskit/qasm2","contentType":"directory"},{"name":"qasm3","path":"qiskit/qasm3","contentType":"directory"},{"name":"qobj","path":"qiskit/qobj","contentType":"directory"},{"name":"qpy","path":"qiskit/qpy","contentType":"directory"},{"name":"quantum_info","path":"qiskit/quantum_info","contentType":"directory"},{"name":"result","path":"qiskit/result","contentType":"directory"},{"name":"scheduler","path":"qiskit/scheduler","contentType":"directory"},{"name":"synthesis","path":"qiskit/synthesis","contentType":"directory"},{"name":"transpiler","path":"qiskit/transpiler","contentType":"directory"},{"name":"utils","path":"qiskit/utils","contentType":"directory"},{"name":"visualization","path":"qiskit/visualization","contentType":"directory"},{"name":"VERSION.txt","path":"qiskit/VERSION.txt","contentType":"file"},{"name":"__init__.py","path":"qiskit/__init__.py","contentType":"file"},{"name":"exceptions.py","path":"qiskit/exceptions.py","contentType":"file"},{"name":"user_config.py","path":"qiskit/user_config.py","contentType":"file"},{"name":"version.py","path":"qiskit/version.py","contentType":"file"}],"totalCount":26},"":{"items":[{"name":".azure","path":".azure","contentType":"directory"},{"name":".binder","path":".binder","contentType":"directory"},{"name":".cargo","path":".cargo","contentType":"directory"},{"name":".github","path":".github","contentType":"directory"},{"name":"crates","path":"crates","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"examples","path":"examples","contentType":"directory"},{"name":"qiskit","path":"qiskit","contentType":"directory"},{"name":"releasenotes","path":"releasenotes","contentType":"directory"},{"name":"test","path":"test","contentType":"directory"},{"name":"tools","path":"tools","contentType":"directory"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".git-blame-ignore-revs","path":".git-blame-ignore-revs","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".local-spellings","path":".local-spellings","contentType":"file"},{"name":".mailmap","path":".mailmap","contentType":"file"},{"name":".mergify.yml","path":".mergify.yml","contentType":"file"},{"name":".stestr.conf","path":".stestr.conf","contentType":"file"},{"name":"CITATION.bib","path":"CITATION.bib","contentType":"file"},{"name":"CODE_OF_CONDUCT.md","path":"CODE_OF_CONDUCT.md","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"Cargo.lock","path":"Cargo.lock","contentType":"file"},{"name":"Cargo.toml","path":"Cargo.toml","contentType":"file"},{"name":"DEPRECATION.md","path":"DEPRECATION.md","contentType":"file"},{"name":"LICENSE.txt","path":"LICENSE.txt","contentType":"file"},{"name":"MAINTAINING.md","path":"MAINTAINING.md","contentType":"file"},{"name":"MANIFEST.in","path":"MANIFEST.in","contentType":"file"},{"name":"Makefile","path":"Makefile","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"SECURITY.md","path":"SECURITY.md","contentType":"file"},{"name":"asv.conf.json","path":"asv.conf.json","contentType":"file"},{"name":"azure-pipelines.yml","path":"azure-pipelines.yml","contentType":"file"},{"name":"constraints.txt","path":"constraints.txt","contentType":"file"},{"name":"pyproject.toml","path":"pyproject.toml","contentType":"file"},{"name":"qiskit_bot.yaml","path":"qiskit_bot.yaml","contentType":"file"},{"name":"requirements-dev.txt","path":"requirements-dev.txt","contentType":"file"},{"name":"requirements-optional.txt","path":"requirements-optional.txt","contentType":"file"},{"name":"requirements.txt","path":"requirements.txt","contentType":"file"},{"name":"rust-toolchain.toml","path":"rust-toolchain.toml","contentType":"file"},{"name":"setup.py","path":"setup.py","contentType":"file"},{"name":"tox.ini","path":"tox.ini","contentType":"file"}],"totalCount":41}},"fileTreeProcessingTime":23.038609,"foldersToFetch":[],"repo":{"id":83821669,"defaultBranch":"main","name":"qiskit","ownerLogin":"Qiskit","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-03-03T17:02:42.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/30696987?v=4","public":true,"private":false,"isOrgOwned":true},"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"main","listCacheKey":"v0:1710785011.0","canEdit":false,"refType":"branch","currentOid":"43381ae1b159c01b55159d2dc1e8a65970b72746"},"path":"qiskit/transpiler/passes/routing/stochastic_swap.py","currentUser":null,"blob":{"rawLines":["# This code is part of Qiskit.","#","# (C) Copyright IBM 2017, 2018.","#","# This code is licensed under the Apache License, Version 2.0. You may","# obtain a copy of this license in the LICENSE.txt file in the root directory","# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.","#","# Any modifications or derivative works of this code must retain this","# copyright notice, and modified files need to carry a notice indicating","# that they have been altered from the originals.","","\"\"\"Map a DAGCircuit onto a ``coupling_map`` adding swap gates.\"\"\"","","import itertools","import logging","from math import inf","import numpy as np","","from qiskit.converters import dag_to_circuit, circuit_to_dag","from qiskit.circuit.classical import expr, types","from qiskit.circuit.quantumregister import QuantumRegister","from qiskit.transpiler.basepasses import TransformationPass","from qiskit.transpiler.exceptions import TranspilerError","from qiskit.dagcircuit import DAGCircuit","from qiskit.circuit.library.standard_gates import SwapGate","from qiskit.transpiler.layout import Layout","from qiskit.transpiler.target import Target","from qiskit.circuit import ("," Clbit,"," IfElseOp,"," WhileLoopOp,"," ForLoopOp,"," SwitchCaseOp,"," ControlFlowOp,"," Instruction,"," CASE_DEFAULT,",")","from qiskit._accelerate import stochastic_swap as stochastic_swap_rs","from qiskit._accelerate import nlayout","from qiskit.transpiler.passes.layout import disjoint_utils","","from .utils import get_swap_map_dag","","logger = logging.getLogger(__name__)","","","class StochasticSwap(TransformationPass):"," \"\"\"Map a DAGCircuit onto a `coupling_map` adding swap gates.",""," Uses a randomized algorithm.",""," Notes:"," 1. Measurements may occur and be followed by swaps that result in repeated"," measurement of the same qubit. Near-term experiments cannot implement"," these circuits, so some care is required when using this mapper"," with experimental backend targets.",""," 2. We do not use the fact that the input state is zero to simplify"," the circuit."," \"\"\"",""," def __init__(self, coupling_map, trials=20, seed=None, fake_run=False, initial_layout=None):"," \"\"\"StochasticSwap initializer.",""," The coupling map is a connected graph",""," If these are not satisfied, the behavior is undefined.",""," Args:"," coupling_map (Union[CouplingMap, Target]): Directed graph representing a coupling"," map."," trials (int): maximum number of iterations to attempt"," seed (int): seed for random number generator"," fake_run (bool): if true, it will only pretend to do routing, i.e., no"," swap is effectively added."," initial_layout (Layout): starting layout at beginning of pass."," \"\"\""," super().__init__()"," if isinstance(coupling_map, Target):"," self.target = coupling_map"," self.coupling_map = self.target.build_coupling_map()"," else:"," self.target = None"," self.coupling_map = coupling_map"," self.trials = trials"," self.seed = seed"," self.rng = None"," self.fake_run = fake_run"," self.qregs = None"," self.initial_layout = initial_layout"," self._int_to_qubit = None",""," def run(self, dag):"," \"\"\"Run the StochasticSwap pass on `dag`.",""," Args:"," dag (DAGCircuit): DAG to map.",""," Returns:"," DAGCircuit: A mapped DAG.",""," Raises:"," TranspilerError: if the coupling map or the layout are not"," compatible with the DAG, or if the coupling_map=None"," \"\"\"",""," if self.coupling_map is None:"," raise TranspilerError(\"StochasticSwap cannot run with coupling_map=None\")",""," if len(dag.qregs) != 1 or dag.qregs.get(\"q\", None) is None:"," raise TranspilerError(\"StochasticSwap runs on physical circuits only\")",""," if len(dag.qubits) > len(self.coupling_map.physical_qubits):"," raise TranspilerError(\"The layout does not match the amount of qubits in the DAG\")"," disjoint_utils.require_layout_isolated_to_component("," dag, self.coupling_map if self.target is None else self.target"," )",""," self.rng = np.random.default_rng(self.seed)",""," canonical_register = dag.qregs[\"q\"]"," if self.initial_layout is None:"," self.initial_layout = Layout.generate_trivial_layout(canonical_register)"," # Qubit indices are used to assign an integer to each virtual qubit during the routing: it's"," # a mapping of {virtual: virtual}, for converting between Python and Rust forms."," self._int_to_qubit = tuple(dag.qubits)",""," self.qregs = dag.qregs"," logger.debug(\"StochasticSwap rng seeded with seed=%s\", self.seed)"," self.coupling_map.compute_distance_matrix()"," new_dag = self._mapper(dag, self.coupling_map, trials=self.trials)"," return new_dag",""," def _layer_permutation(self, dag, layer_partition, layout, qubit_subset, coupling, trials):"," \"\"\"Find a swap circuit that implements a permutation for this layer.",""," The goal is to swap qubits such that qubits in the same two-qubit gates"," are adjacent.",""," Based on S. Bravyi's algorithm.",""," Args:"," layer_partition (list): The layer_partition is a list of (qu)bit"," lists and each qubit is a tuple (qreg, index)."," layout (Layout): The layout is a Layout object mapping virtual"," qubits in the input circuit to physical qubits in the coupling"," graph. It reflects the current positions of the data."," qubit_subset (list): The qubit_subset is the set of qubits in"," the coupling graph that we have chosen to map into, as tuples"," (Register, index)."," coupling (CouplingMap): Directed graph representing a coupling map."," This coupling map should be one that was provided to the"," stochastic mapper."," trials (int): Number of attempts the randomized algorithm makes.",""," Returns:"," Tuple: success_flag, best_circuit, best_depth, best_layout",""," If success_flag is True, then best_circuit contains a DAGCircuit with"," the swap circuit, best_depth contains the depth of the swap circuit,"," and best_layout contains the new positions of the data qubits after the"," swap circuit has been applied.",""," Raises:"," TranspilerError: if anything went wrong."," \"\"\""," logger.debug(\"layer_permutation: layer_partition = %s\", layer_partition)"," logger.debug(\"layer_permutation: layout = %s\", layout.get_virtual_bits())"," logger.debug(\"layer_permutation: qubit_subset = %s\", qubit_subset)"," logger.debug(\"layer_permutation: trials = %s\", trials)",""," # The input dag is on a flat canonical register"," canonical_register = QuantumRegister(len(layout), \"q\")",""," gates = [] # list of lists of tuples [[(register, index), ...], ...]"," for gate_args in layer_partition:"," if len(gate_args) > 2:"," raise TranspilerError(\"Layer contains > 2-qubit gates\")"," if len(gate_args) == 2:"," gates.append(tuple(gate_args))"," logger.debug(\"layer_permutation: gates = %s\", gates)",""," # Can we already apply the gates? If so, there is no work to do."," # Accessing via private attributes to avoid overhead from __getitem__"," # and to optimize performance of the distance matrix access"," dist = sum(coupling._dist_matrix[layout._v2p[g[0]], layout._v2p[g[1]]] for g in gates)"," logger.debug(\"layer_permutation: distance = %s\", dist)"," if dist == len(gates):"," logger.debug(\"layer_permutation: nothing to do\")"," circ = DAGCircuit()"," circ.add_qreg(canonical_register)"," return True, circ, 0, layout",""," # Begin loop over trials of randomized algorithm"," num_qubits = len(layout)"," best_depth = inf # initialize best depth"," best_edges = None # best edges found"," best_circuit = None # initialize best swap circuit"," best_layout = None # initialize best final layout",""," cdist2 = coupling._dist_matrix**2"," int_qubit_subset = np.fromiter("," (dag.find_bit(bit).index for bit in qubit_subset),"," dtype=np.uint32,"," count=len(qubit_subset),"," )",""," int_gates = np.fromiter("," (dag.find_bit(bit).index for gate in gates for bit in gate),"," dtype=np.uint32,"," count=2 * len(gates),"," )",""," layout_mapping = {dag.find_bit(k).index: v for k, v in layout.get_virtual_bits().items()}"," int_layout = nlayout.NLayout(layout_mapping, num_qubits, coupling.size())",""," trial_circuit = DAGCircuit() # SWAP circuit for slice of swaps in this trial"," trial_circuit.add_qubits(layout.get_virtual_bits())",""," edges = np.asarray(coupling.get_edges(), dtype=np.uint32).ravel()"," cdist = coupling._dist_matrix"," best_edges, best_layout, best_depth = stochastic_swap_rs.swap_trials("," trials,"," num_qubits,"," int_layout,"," int_qubit_subset,"," int_gates,"," cdist,"," cdist2,"," edges,"," seed=self.seed,"," )"," # If we have no best circuit for this layer, all of the trials have failed"," if best_layout is None:"," logger.debug(\"layer_permutation: failed!\")"," return False, None, None, None",""," edges = best_edges.edges()"," for idx in range(len(edges) // 2):"," swap_src = self._int_to_qubit[edges[2 * idx]]"," swap_tgt = self._int_to_qubit[edges[2 * idx + 1]]"," trial_circuit.apply_operation_back(SwapGate(), (swap_src, swap_tgt), (), check=False)"," best_circuit = trial_circuit",""," # Otherwise, we return our result for this layer"," logger.debug(\"layer_permutation: success!\")"," layout_mapping = best_layout.layout_mapping()",""," best_lay = Layout({best_circuit.qubits[k]: v for (k, v) in layout_mapping})"," return True, best_circuit, best_depth, best_lay",""," def _layer_update(self, dag, layer, best_layout, best_depth, best_circuit):"," \"\"\"Add swaps followed by the now mapped layer from the original circuit.",""," Args:"," dag (DAGCircuit): The DAGCircuit object that the _mapper method is building"," layer (DAGCircuit): A DAGCircuit layer from the original circuit"," best_layout (Layout): layout returned from _layer_permutation"," best_depth (int): depth returned from _layer_permutation"," best_circuit (DAGCircuit): swap circuit returned from _layer_permutation"," \"\"\""," logger.debug(\"layer_update: layout = %s\", best_layout)"," logger.debug(\"layer_update: self.initial_layout = %s\", self.initial_layout)",""," # Output any swaps"," if best_depth > 0:"," logger.debug(\"layer_update: there are swaps in this layer, depth %d\", best_depth)"," dag.compose(best_circuit, qubits={bit: bit for bit in best_circuit.qubits})"," else:"," logger.debug(\"layer_update: there are no swaps in this layer\")"," # Output this layer"," dag.compose(layer[\"graph\"], qubits=best_layout.reorder_bits(dag.qubits))",""," def _mapper(self, circuit_graph, coupling_graph, trials=20):"," \"\"\"Map a DAGCircuit onto a CouplingMap using swap gates.",""," Args:"," circuit_graph (DAGCircuit): input DAG circuit"," coupling_graph (CouplingMap): coupling graph to map onto"," trials (int): number of trials.",""," Returns:"," DAGCircuit: object containing a circuit equivalent to"," circuit_graph that respects couplings in coupling_graph",""," Raises:"," TranspilerError: if there was any error during the mapping"," or with the parameters."," \"\"\""," # Schedule the input circuit by calling layers()"," layerlist = list(circuit_graph.layers())"," logger.debug(\"schedule:\")"," for i, v in enumerate(layerlist):"," logger.debug(\" %d: %s\", i, v[\"partition\"])",""," qubit_subset = self.initial_layout.get_virtual_bits().keys()",""," # Find swap circuit to precede each layer of input circuit"," layout = self.initial_layout.copy()",""," # Construct an empty DAGCircuit with the same set of"," # qregs and cregs as the input circuit"," dagcircuit_output = None"," if not self.fake_run:"," dagcircuit_output = circuit_graph.copy_empty_like()",""," logger.debug(\"layout = %s\", layout)",""," # Iterate over layers"," for i, layer in enumerate(layerlist):"," # First try and compute a route for the entire layer in one go."," if not layer[\"graph\"].op_nodes(op=ControlFlowOp):"," success_flag, best_circuit, best_depth, best_layout = self._layer_permutation("," circuit_graph, layer[\"partition\"], layout, qubit_subset, coupling_graph, trials"," )",""," logger.debug(\"mapper: layer %d\", i)"," logger.debug(\"mapper: success_flag=%s,best_depth=%s\", success_flag, str(best_depth))"," if success_flag:"," layout = best_layout",""," # Update the DAG"," if not self.fake_run:"," self._layer_update("," dagcircuit_output, layerlist[i], best_layout, best_depth, best_circuit"," )"," continue",""," # If we're here, we need to go through every gate in the layer serially."," logger.debug(\"mapper: failed, layer %d, retrying sequentially\", i)"," # Go through each gate in the layer"," for j, serial_layer in enumerate(layer[\"graph\"].serial_layers()):"," layer_dag = serial_layer[\"graph\"]"," # layer_dag has only one operation"," op_node = layer_dag.op_nodes()[0]"," if isinstance(op_node.op, ControlFlowOp):"," layout = self._controlflow_layer_update("," dagcircuit_output, layer_dag, layout, circuit_graph"," )"," else:"," (success_flag, best_circuit, best_depth, best_layout) = self._layer_permutation("," circuit_graph,"," serial_layer[\"partition\"],"," layout,"," qubit_subset,"," coupling_graph,"," trials,"," )"," logger.debug(\"mapper: layer %d, sublayer %d\", i, j)"," logger.debug("," \"mapper: success_flag=%s,best_depth=%s,\", success_flag, str(best_depth)"," )",""," # Give up if we fail again"," if not success_flag:"," raise TranspilerError("," \"swap mapper failed: \" + \"layer %d, sublayer %d\" % (i, j)"," )",""," # Update the record of qubit positions"," # for each inner iteration"," layout = best_layout"," # Update the DAG"," if not self.fake_run:"," self._layer_update("," dagcircuit_output,"," serial_layer,"," best_layout,"," best_depth,"," best_circuit,"," )",""," # This is the final edgemap. We might use it to correctly replace"," # any measurements that needed to be removed earlier."," logger.debug(\"mapper: self.initial_layout = %s\", self.initial_layout)"," logger.debug(\"mapper: layout = %s\", layout)",""," self.property_set[\"final_layout\"] = layout"," if self.fake_run:"," return circuit_graph"," return dagcircuit_output",""," def _controlflow_layer_update(self, dagcircuit_output, layer_dag, current_layout, root_dag):"," \"\"\""," Updates the new dagcircuit with a routed control flow operation.",""," Args:"," dagcircuit_output (DAGCircuit): dagcircuit that is being built with routed operations."," layer_dag (DAGCircuit): layer to route containing a single controlflow operation."," current_layout (Layout): current layout coming into this layer."," root_dag (DAGCircuit): root dag of pass",""," Returns:"," Layout: updated layout after this layer has been routed.",""," Raises:"," TranspilerError: if layer_dag does not contain a recognized ControlFlowOp.",""," \"\"\""," node = layer_dag.op_nodes()[0]"," if not isinstance(node.op, (IfElseOp, ForLoopOp, WhileLoopOp, SwitchCaseOp)):"," raise TranspilerError(f\"unsupported control flow operation: {node}\")"," # For each block, expand it up be the full width of the containing DAG so we can be certain"," # that it is routable, then route it within that. When we recombine later, we'll reduce all"," # these blocks down to remove any qubits that are idle."," block_dags = []"," block_layouts = []"," for block in node.op.blocks:"," inner_pass = self._recursive_pass(current_layout)"," block_dags.append(inner_pass.run(_dag_from_block(block, node, root_dag)))"," block_layouts.append(inner_pass.property_set[\"final_layout\"].copy())",""," # Determine what layout we need to go towards. For some blocks (such as `for`), we must"," # guarantee that the final layout is the same as the initial or the loop won't work."," if _controlflow_exhaustive_acyclic(node.op):"," # We heuristically just choose to use the layout of whatever the deepest block is, to"," # avoid extending the total depth by too much."," final_layout = max("," zip(block_layouts, block_dags), key=lambda x: x[1].depth(recurse=True)"," )[0]"," else:"," final_layout = current_layout"," if self.fake_run:"," return final_layout",""," # Add swaps to the end of each block to make sure they all have the same layout at the end."," # Adding these swaps can cause fewer wires to be idle than we expect (if we have to swap"," # across unused qubits), so we track that at this point too."," idle_qubits = set(root_dag.qubits)"," for layout, updated_dag_block in zip(block_layouts, block_dags):"," swap_dag, swap_qubits = get_swap_map_dag("," root_dag, self.coupling_map, layout, final_layout, seed=self._new_seed()"," )"," if swap_dag.size(recurse=False):"," updated_dag_block.compose(swap_dag, qubits=swap_qubits)"," idle_qubits &= set(updated_dag_block.idle_wires())",""," # Now for each block, expand it to be full width over all active wires (all blocks of a"," # control-flow operation need to have equal input wires), and convert it to circuit form."," block_circuits = []"," for updated_dag_block in block_dags:"," updated_dag_block.remove_qubits(*idle_qubits)"," block_circuits.append(dag_to_circuit(updated_dag_block))",""," new_op = node.op.replace_blocks(block_circuits)"," new_qargs = block_circuits[0].qubits"," dagcircuit_output.apply_operation_back(new_op, new_qargs, node.cargs, check=False)"," return final_layout",""," def _new_seed(self):"," \"\"\"Get a seed for a new RNG instance.\"\"\""," return self.rng.integers(0x7FFF_FFFF_FFFF_FFFF)",""," def _recursive_pass(self, initial_layout):"," \"\"\"Get a new instance of this class to handle a recursive call for a control-flow block.",""," Each pass starts with its own new seed, determined deterministically from our own.\"\"\""," return self.__class__("," self.coupling_map,"," # This doesn't cause an exponential explosion of the trials because we only generate a"," # recursive pass instance for control-flow operations, while the trial multiplicity is"," # only for non-control-flow layers."," trials=self.trials,"," seed=self._new_seed(),"," fake_run=self.fake_run,"," initial_layout=initial_layout,"," )","","","def _controlflow_exhaustive_acyclic(operation: ControlFlowOp):"," \"\"\"Return True if the entire control-flow operation represents a block that is guaranteed to be"," entered, and does not cycle back to the initial layout.\"\"\""," if isinstance(operation, IfElseOp):"," return len(operation.blocks) == 2"," if isinstance(operation, SwitchCaseOp):"," cases = operation.cases()"," if isinstance(operation.target, expr.Expr):"," type_ = operation.target.type"," if type_.kind is types.Bool:"," max_matches = 2"," elif type_.kind is types.Uint:"," max_matches = 1 << type_.width"," else:"," raise RuntimeError(f\"unhandled target type: '{type_}'\")"," else:"," max_matches = 2 if isinstance(operation.target, Clbit) else 1 << len(operation.target)"," return CASE_DEFAULT in cases or len(cases) == max_matches"," return False","","","def _dag_from_block(block, node, root_dag):"," \"\"\"Get a :class:`DAGCircuit` that represents the :class:`.QuantumCircuit` ``block`` embedded"," within the ``root_dag`` for full-width routing purposes. This means that all the qubits are in"," the output DAG, but only the necessary clbits and classical registers are.\"\"\""," out = DAGCircuit()"," # The pass already ensured that `root_dag` has only a single quantum register with everything."," for qreg in root_dag.qregs.values():"," out.add_qreg(qreg)"," # For clbits, we need to take more care. Nested control-flow might need registers to exist for"," # conditions on inner blocks. `DAGCircuit.substitute_node_with_dag` handles this register"," # mapping when required, so we use that with a dummy block."," out.add_clbits(node.cargs)"," dummy = out.apply_operation_back("," Instruction(\"dummy\", len(node.qargs), len(node.cargs), []),"," node.qargs,"," node.cargs,"," check=False,"," )"," wire_map = dict(itertools.chain(zip(block.qubits, node.qargs), zip(block.clbits, node.cargs)))"," out.substitute_node_with_dag(dummy, circuit_to_dag(block), wires=wire_map)"," return out"],"stylingDirectives":[[{"start":0,"end":30,"cssClass":"pl-c"}],[{"start":0,"end":1,"cssClass":"pl-c"}],[{"start":0,"end":31,"cssClass":"pl-c"}],[{"start":0,"end":1,"cssClass":"pl-c"}],[{"start":0,"end":70,"cssClass":"pl-c"}],[{"start":0,"end":77,"cssClass":"pl-c"}],[{"start":0,"end":71,"cssClass":"pl-c"}],[{"start":0,"end":1,"cssClass":"pl-c"}],[{"start":0,"end":69,"cssClass":"pl-c"}],[{"start":0,"end":72,"cssClass":"pl-c"}],[{"start":0,"end":49,"cssClass":"pl-c"}],[],[{"start":0,"end":65,"cssClass":"pl-s"}],[],[{"start":0,"end":6,"cssClass":"pl-k"},{"start":7,"end":16,"cssClass":"pl-s1"}],[{"start":0,"end":6,"cssClass":"pl-k"},{"start":7,"end":14,"cssClass":"pl-s1"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":9,"cssClass":"pl-s1"},{"start":10,"end":16,"cssClass":"pl-k"},{"start":17,"end":20,"cssClass":"pl-s1"}],[{"start":0,"end":6,"cssClass":"pl-k"},{"start":7,"end":12,"cssClass":"pl-s1"},{"start":13,"end":15,"cssClass":"pl-k"},{"start":16,"end":18,"cssClass":"pl-s1"}],[],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":29,"cssClass":"pl-k"},{"start":30,"end":44,"cssClass":"pl-s1"},{"start":46,"end":60,"cssClass":"pl-s1"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":29,"cssClass":"pl-s1"},{"start":30,"end":36,"cssClass":"pl-k"},{"start":37,"end":41,"cssClass":"pl-s1"},{"start":43,"end":48,"cssClass":"pl-s1"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":35,"cssClass":"pl-s1"},{"start":36,"end":42,"cssClass":"pl-k"},{"start":43,"end":58,"cssClass":"pl-v"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":33,"cssClass":"pl-s1"},{"start":34,"end":40,"cssClass":"pl-k"},{"start":41,"end":59,"cssClass":"pl-v"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":33,"cssClass":"pl-s1"},{"start":34,"end":40,"cssClass":"pl-k"},{"start":41,"end":56,"cssClass":"pl-v"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":29,"cssClass":"pl-k"},{"start":30,"end":40,"cssClass":"pl-v"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":27,"cssClass":"pl-s1"},{"start":28,"end":42,"cssClass":"pl-s1"},{"start":43,"end":49,"cssClass":"pl-k"},{"start":50,"end":58,"cssClass":"pl-v"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":29,"cssClass":"pl-s1"},{"start":30,"end":36,"cssClass":"pl-k"},{"start":37,"end":43,"cssClass":"pl-v"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":29,"cssClass":"pl-s1"},{"start":30,"end":36,"cssClass":"pl-k"},{"start":37,"end":43,"cssClass":"pl-v"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":26,"cssClass":"pl-k"}],[{"start":4,"end":9,"cssClass":"pl-v"}],[{"start":4,"end":12,"cssClass":"pl-v"}],[{"start":4,"end":15,"cssClass":"pl-v"}],[{"start":4,"end":13,"cssClass":"pl-v"}],[{"start":4,"end":16,"cssClass":"pl-v"}],[{"start":4,"end":17,"cssClass":"pl-v"}],[{"start":4,"end":15,"cssClass":"pl-v"}],[{"start":4,"end":16,"cssClass":"pl-v"}],[],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":23,"cssClass":"pl-s1"},{"start":24,"end":30,"cssClass":"pl-k"},{"start":31,"end":46,"cssClass":"pl-s1"},{"start":47,"end":49,"cssClass":"pl-k"},{"start":50,"end":68,"cssClass":"pl-s1"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":23,"cssClass":"pl-s1"},{"start":24,"end":30,"cssClass":"pl-k"},{"start":31,"end":38,"cssClass":"pl-s1"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":29,"cssClass":"pl-s1"},{"start":30,"end":36,"cssClass":"pl-s1"},{"start":37,"end":43,"cssClass":"pl-k"},{"start":44,"end":58,"cssClass":"pl-s1"}],[],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":6,"end":11,"cssClass":"pl-s1"},{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":35,"cssClass":"pl-s1"}],[],[{"start":0,"end":6,"cssClass":"pl-s1"},{"start":7,"end":8,"cssClass":"pl-c1"},{"start":9,"end":16,"cssClass":"pl-s1"},{"start":17,"end":26,"cssClass":"pl-en"},{"start":27,"end":35,"cssClass":"pl-s1"}],[],[],[{"start":0,"end":5,"cssClass":"pl-k"},{"start":6,"end":20,"cssClass":"pl-v"},{"start":21,"end":39,"cssClass":"pl-v"}],[{"start":4,"end":64,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":32,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":10,"cssClass":"pl-s"}],[{"start":0,"end":82,"cssClass":"pl-s"}],[{"start":0,"end":80,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":45,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":23,"cssClass":"pl-s"}],[{"start":0,"end":7,"cssClass":"pl-s"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":16,"cssClass":"pl-en"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":23,"end":35,"cssClass":"pl-s1"},{"start":37,"end":43,"cssClass":"pl-s1"},{"start":43,"end":44,"cssClass":"pl-c1"},{"start":44,"end":46,"cssClass":"pl-c1"},{"start":48,"end":52,"cssClass":"pl-s1"},{"start":52,"end":53,"cssClass":"pl-c1"},{"start":53,"end":57,"cssClass":"pl-c1"},{"start":59,"end":67,"cssClass":"pl-s1"},{"start":67,"end":68,"cssClass":"pl-c1"},{"start":68,"end":73,"cssClass":"pl-c1"},{"start":75,"end":89,"cssClass":"pl-s1"},{"start":89,"end":90,"cssClass":"pl-c1"},{"start":90,"end":94,"cssClass":"pl-c1"}],[{"start":8,"end":38,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":45,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":62,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":93,"cssClass":"pl-s"}],[{"start":0,"end":20,"cssClass":"pl-s"}],[{"start":0,"end":65,"cssClass":"pl-s"}],[{"start":0,"end":56,"cssClass":"pl-s"}],[{"start":0,"end":82,"cssClass":"pl-s"}],[{"start":0,"end":42,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":13,"cssClass":"pl-en"},{"start":16,"end":24,"cssClass":"pl-en"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":21,"cssClass":"pl-en"},{"start":22,"end":34,"cssClass":"pl-s1"},{"start":36,"end":42,"cssClass":"pl-v"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":38,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":36,"cssClass":"pl-s1"},{"start":37,"end":43,"cssClass":"pl-s1"},{"start":44,"end":62,"cssClass":"pl-en"}],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":30,"cssClass":"pl-c1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":44,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":19,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-c1"},{"start":22,"end":28,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":24,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":23,"cssClass":"pl-c1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":32,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":25,"cssClass":"pl-c1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":30,"end":44,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":33,"cssClass":"pl-c1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":11,"cssClass":"pl-en"},{"start":12,"end":16,"cssClass":"pl-s1"},{"start":18,"end":21,"cssClass":"pl-s1"}],[{"start":8,"end":48,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":41,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":37,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":15,"cssClass":"pl-s"}],[{"start":0,"end":70,"cssClass":"pl-s"}],[{"start":0,"end":64,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":28,"cssClass":"pl-s1"},{"start":29,"end":31,"cssClass":"pl-c1"},{"start":32,"end":36,"cssClass":"pl-c1"}],[{"start":12,"end":17,"cssClass":"pl-k"},{"start":18,"end":33,"cssClass":"pl-v"},{"start":34,"end":84,"cssClass":"pl-s"}],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":14,"cssClass":"pl-en"},{"start":15,"end":18,"cssClass":"pl-s1"},{"start":19,"end":24,"cssClass":"pl-s1"},{"start":26,"end":28,"cssClass":"pl-c1"},{"start":29,"end":30,"cssClass":"pl-c1"},{"start":31,"end":33,"cssClass":"pl-c1"},{"start":34,"end":37,"cssClass":"pl-s1"},{"start":38,"end":43,"cssClass":"pl-s1"},{"start":44,"end":47,"cssClass":"pl-en"},{"start":48,"end":51,"cssClass":"pl-s"},{"start":53,"end":57,"cssClass":"pl-c1"},{"start":59,"end":61,"cssClass":"pl-c1"},{"start":62,"end":66,"cssClass":"pl-c1"}],[{"start":12,"end":17,"cssClass":"pl-k"},{"start":18,"end":33,"cssClass":"pl-v"},{"start":34,"end":81,"cssClass":"pl-s"}],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":14,"cssClass":"pl-en"},{"start":15,"end":18,"cssClass":"pl-s1"},{"start":19,"end":25,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":32,"cssClass":"pl-en"},{"start":33,"end":37,"cssClass":"pl-s1"},{"start":38,"end":50,"cssClass":"pl-s1"},{"start":51,"end":66,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-k"},{"start":18,"end":33,"cssClass":"pl-v"},{"start":34,"end":93,"cssClass":"pl-s"}],[{"start":8,"end":22,"cssClass":"pl-s1"},{"start":23,"end":59,"cssClass":"pl-en"}],[{"start":12,"end":15,"cssClass":"pl-s1"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":22,"end":34,"cssClass":"pl-s1"},{"start":35,"end":37,"cssClass":"pl-k"},{"start":38,"end":42,"cssClass":"pl-s1"},{"start":43,"end":49,"cssClass":"pl-s1"},{"start":50,"end":52,"cssClass":"pl-c1"},{"start":53,"end":57,"cssClass":"pl-c1"},{"start":58,"end":62,"cssClass":"pl-k"},{"start":63,"end":67,"cssClass":"pl-s1"},{"start":68,"end":74,"cssClass":"pl-s1"}],[],[],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":21,"cssClass":"pl-s1"},{"start":22,"end":28,"cssClass":"pl-s1"},{"start":29,"end":40,"cssClass":"pl-en"},{"start":41,"end":45,"cssClass":"pl-s1"},{"start":46,"end":50,"cssClass":"pl-s1"}],[],[{"start":8,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":32,"cssClass":"pl-s1"},{"start":33,"end":38,"cssClass":"pl-s1"},{"start":39,"end":42,"cssClass":"pl-s"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":30,"cssClass":"pl-s1"},{"start":31,"end":33,"cssClass":"pl-c1"},{"start":34,"end":38,"cssClass":"pl-c1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":31,"cssClass":"pl-s1"},{"start":32,"end":33,"cssClass":"pl-c1"},{"start":34,"end":40,"cssClass":"pl-v"},{"start":41,"end":64,"cssClass":"pl-en"},{"start":65,"end":83,"cssClass":"pl-s1"}],[{"start":8,"end":100,"cssClass":"pl-c"}],[{"start":8,"end":88,"cssClass":"pl-c"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":34,"cssClass":"pl-en"},{"start":35,"end":38,"cssClass":"pl-s1"},{"start":39,"end":45,"cssClass":"pl-s1"}],[],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":24,"cssClass":"pl-s1"},{"start":25,"end":30,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":61,"cssClass":"pl-s"},{"start":63,"end":67,"cssClass":"pl-s1"},{"start":68,"end":72,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":25,"cssClass":"pl-s1"},{"start":26,"end":49,"cssClass":"pl-en"}],[{"start":8,"end":15,"cssClass":"pl-s1"},{"start":16,"end":17,"cssClass":"pl-c1"},{"start":18,"end":22,"cssClass":"pl-s1"},{"start":23,"end":30,"cssClass":"pl-en"},{"start":31,"end":34,"cssClass":"pl-s1"},{"start":36,"end":40,"cssClass":"pl-s1"},{"start":41,"end":53,"cssClass":"pl-s1"},{"start":55,"end":61,"cssClass":"pl-s1"},{"start":61,"end":62,"cssClass":"pl-c1"},{"start":62,"end":66,"cssClass":"pl-s1"},{"start":67,"end":73,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":22,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":26,"cssClass":"pl-en"},{"start":27,"end":31,"cssClass":"pl-s1"},{"start":33,"end":36,"cssClass":"pl-s1"},{"start":38,"end":53,"cssClass":"pl-s1"},{"start":55,"end":61,"cssClass":"pl-s1"},{"start":63,"end":75,"cssClass":"pl-s1"},{"start":77,"end":85,"cssClass":"pl-s1"},{"start":87,"end":93,"cssClass":"pl-s1"}],[{"start":8,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":79,"cssClass":"pl-s"}],[{"start":0,"end":21,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":39,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":62,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":78,"cssClass":"pl-s"}],[{"start":0,"end":69,"cssClass":"pl-s"}],[{"start":0,"end":73,"cssClass":"pl-s"}],[{"start":0,"end":77,"cssClass":"pl-s"}],[{"start":0,"end":34,"cssClass":"pl-s"}],[{"start":0,"end":79,"cssClass":"pl-s"}],[{"start":0,"end":72,"cssClass":"pl-s"}],[{"start":0,"end":34,"cssClass":"pl-s"}],[{"start":0,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":70,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":77,"cssClass":"pl-s"}],[{"start":0,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":79,"cssClass":"pl-s"}],[{"start":0,"end":38,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":15,"cssClass":"pl-s"}],[{"start":0,"end":52,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":62,"cssClass":"pl-s"},{"start":64,"end":79,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":53,"cssClass":"pl-s"},{"start":55,"end":61,"cssClass":"pl-s1"},{"start":62,"end":78,"cssClass":"pl-en"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":59,"cssClass":"pl-s"},{"start":61,"end":73,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":53,"cssClass":"pl-s"},{"start":55,"end":61,"cssClass":"pl-s1"}],[],[{"start":8,"end":55,"cssClass":"pl-c"}],[{"start":8,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":44,"cssClass":"pl-v"},{"start":45,"end":48,"cssClass":"pl-en"},{"start":49,"end":55,"cssClass":"pl-s1"},{"start":58,"end":61,"cssClass":"pl-s"}],[],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":15,"cssClass":"pl-c1"},{"start":20,"end":77,"cssClass":"pl-c"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":24,"cssClass":"pl-c1"},{"start":25,"end":40,"cssClass":"pl-s1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":18,"cssClass":"pl-en"},{"start":19,"end":28,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":33,"cssClass":"pl-c1"}],[{"start":16,"end":21,"cssClass":"pl-k"},{"start":22,"end":37,"cssClass":"pl-v"},{"start":38,"end":70,"cssClass":"pl-s"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":18,"cssClass":"pl-en"},{"start":19,"end":28,"cssClass":"pl-s1"},{"start":30,"end":32,"cssClass":"pl-c1"},{"start":33,"end":34,"cssClass":"pl-c1"}],[{"start":16,"end":21,"cssClass":"pl-s1"},{"start":22,"end":28,"cssClass":"pl-en"},{"start":29,"end":34,"cssClass":"pl-en"},{"start":35,"end":44,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":52,"cssClass":"pl-s"},{"start":54,"end":59,"cssClass":"pl-s1"}],[],[{"start":8,"end":72,"cssClass":"pl-c"}],[{"start":8,"end":77,"cssClass":"pl-c"}],[{"start":8,"end":67,"cssClass":"pl-c"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":14,"cssClass":"pl-c1"},{"start":15,"end":18,"cssClass":"pl-en"},{"start":19,"end":27,"cssClass":"pl-s1"},{"start":28,"end":40,"cssClass":"pl-s1"},{"start":41,"end":47,"cssClass":"pl-s1"},{"start":48,"end":52,"cssClass":"pl-s1"},{"start":53,"end":54,"cssClass":"pl-s1"},{"start":55,"end":56,"cssClass":"pl-c1"},{"start":60,"end":66,"cssClass":"pl-s1"},{"start":67,"end":71,"cssClass":"pl-s1"},{"start":72,"end":73,"cssClass":"pl-s1"},{"start":74,"end":75,"cssClass":"pl-c1"},{"start":79,"end":82,"cssClass":"pl-k"},{"start":83,"end":84,"cssClass":"pl-s1"},{"start":85,"end":87,"cssClass":"pl-c1"},{"start":88,"end":93,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":55,"cssClass":"pl-s"},{"start":57,"end":61,"cssClass":"pl-s1"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":18,"cssClass":"pl-c1"},{"start":19,"end":22,"cssClass":"pl-en"},{"start":23,"end":28,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-s1"},{"start":19,"end":24,"cssClass":"pl-en"},{"start":25,"end":59,"cssClass":"pl-s"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":29,"cssClass":"pl-v"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":25,"cssClass":"pl-en"},{"start":26,"end":44,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":23,"cssClass":"pl-c1"},{"start":25,"end":29,"cssClass":"pl-s1"},{"start":31,"end":32,"cssClass":"pl-c1"},{"start":34,"end":40,"cssClass":"pl-s1"}],[],[{"start":8,"end":56,"cssClass":"pl-c"}],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":24,"cssClass":"pl-en"},{"start":25,"end":31,"cssClass":"pl-s1"}],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":24,"cssClass":"pl-s1"},{"start":26,"end":49,"cssClass":"pl-c"}],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":25,"cssClass":"pl-c1"},{"start":27,"end":45,"cssClass":"pl-c"}],[{"start":8,"end":20,"cssClass":"pl-s1"},{"start":21,"end":22,"cssClass":"pl-c1"},{"start":23,"end":27,"cssClass":"pl-c1"},{"start":29,"end":59,"cssClass":"pl-c"}],[{"start":8,"end":19,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-c1"},{"start":22,"end":26,"cssClass":"pl-c1"},{"start":28,"end":58,"cssClass":"pl-c"}],[],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":16,"cssClass":"pl-c1"},{"start":17,"end":25,"cssClass":"pl-s1"},{"start":26,"end":38,"cssClass":"pl-s1"},{"start":38,"end":40,"cssClass":"pl-c1"},{"start":40,"end":41,"cssClass":"pl-c1"}],[{"start":8,"end":24,"cssClass":"pl-s1"},{"start":25,"end":26,"cssClass":"pl-c1"},{"start":27,"end":29,"cssClass":"pl-s1"},{"start":30,"end":38,"cssClass":"pl-en"}],[{"start":13,"end":16,"cssClass":"pl-s1"},{"start":17,"end":25,"cssClass":"pl-en"},{"start":26,"end":29,"cssClass":"pl-s1"},{"start":31,"end":36,"cssClass":"pl-s1"},{"start":37,"end":40,"cssClass":"pl-k"},{"start":41,"end":44,"cssClass":"pl-s1"},{"start":45,"end":47,"cssClass":"pl-c1"},{"start":48,"end":60,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":18,"end":20,"cssClass":"pl-s1"},{"start":21,"end":27,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":18,"end":21,"cssClass":"pl-en"},{"start":22,"end":34,"cssClass":"pl-s1"}],[],[],[{"start":8,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":22,"cssClass":"pl-s1"},{"start":23,"end":31,"cssClass":"pl-en"}],[{"start":13,"end":16,"cssClass":"pl-s1"},{"start":17,"end":25,"cssClass":"pl-en"},{"start":26,"end":29,"cssClass":"pl-s1"},{"start":31,"end":36,"cssClass":"pl-s1"},{"start":37,"end":40,"cssClass":"pl-k"},{"start":41,"end":45,"cssClass":"pl-s1"},{"start":46,"end":48,"cssClass":"pl-c1"},{"start":49,"end":54,"cssClass":"pl-s1"},{"start":55,"end":58,"cssClass":"pl-k"},{"start":59,"end":62,"cssClass":"pl-s1"},{"start":63,"end":65,"cssClass":"pl-c1"},{"start":66,"end":70,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":18,"end":20,"cssClass":"pl-s1"},{"start":21,"end":27,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":21,"cssClass":"pl-c1"},{"start":22,"end":25,"cssClass":"pl-en"},{"start":26,"end":31,"cssClass":"pl-s1"}],[],[],[{"start":8,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":26,"end":29,"cssClass":"pl-s1"},{"start":30,"end":38,"cssClass":"pl-en"},{"start":39,"end":40,"cssClass":"pl-s1"},{"start":42,"end":47,"cssClass":"pl-s1"},{"start":49,"end":50,"cssClass":"pl-s1"},{"start":51,"end":54,"cssClass":"pl-k"},{"start":55,"end":56,"cssClass":"pl-s1"},{"start":58,"end":59,"cssClass":"pl-s1"},{"start":60,"end":62,"cssClass":"pl-c1"},{"start":63,"end":69,"cssClass":"pl-s1"},{"start":70,"end":86,"cssClass":"pl-en"},{"start":89,"end":94,"cssClass":"pl-en"}],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":28,"cssClass":"pl-s1"},{"start":29,"end":36,"cssClass":"pl-v"},{"start":37,"end":51,"cssClass":"pl-s1"},{"start":53,"end":63,"cssClass":"pl-s1"},{"start":65,"end":73,"cssClass":"pl-s1"},{"start":74,"end":78,"cssClass":"pl-en"}],[],[{"start":8,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":34,"cssClass":"pl-v"},{"start":38,"end":85,"cssClass":"pl-c"}],[{"start":8,"end":21,"cssClass":"pl-s1"},{"start":22,"end":32,"cssClass":"pl-en"},{"start":33,"end":39,"cssClass":"pl-s1"},{"start":40,"end":56,"cssClass":"pl-en"}],[],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":15,"cssClass":"pl-c1"},{"start":16,"end":18,"cssClass":"pl-s1"},{"start":19,"end":26,"cssClass":"pl-en"},{"start":27,"end":35,"cssClass":"pl-s1"},{"start":36,"end":45,"cssClass":"pl-en"},{"start":49,"end":54,"cssClass":"pl-s1"},{"start":54,"end":55,"cssClass":"pl-c1"},{"start":55,"end":57,"cssClass":"pl-s1"},{"start":58,"end":64,"cssClass":"pl-s1"},{"start":66,"end":71,"cssClass":"pl-en"}],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":15,"cssClass":"pl-c1"},{"start":16,"end":24,"cssClass":"pl-s1"},{"start":25,"end":37,"cssClass":"pl-s1"}],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":20,"end":31,"cssClass":"pl-s1"},{"start":33,"end":43,"cssClass":"pl-s1"},{"start":44,"end":45,"cssClass":"pl-c1"},{"start":46,"end":64,"cssClass":"pl-s1"},{"start":65,"end":76,"cssClass":"pl-en"}],[{"start":12,"end":18,"cssClass":"pl-s1"}],[{"start":12,"end":22,"cssClass":"pl-s1"}],[{"start":12,"end":22,"cssClass":"pl-s1"}],[{"start":12,"end":28,"cssClass":"pl-s1"}],[{"start":12,"end":21,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":16,"end":17,"cssClass":"pl-c1"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":22,"end":26,"cssClass":"pl-s1"}],[],[{"start":8,"end":82,"cssClass":"pl-c"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":22,"cssClass":"pl-s1"},{"start":23,"end":25,"cssClass":"pl-c1"},{"start":26,"end":30,"cssClass":"pl-c1"}],[{"start":12,"end":18,"cssClass":"pl-s1"},{"start":19,"end":24,"cssClass":"pl-en"},{"start":25,"end":53,"cssClass":"pl-s"}],[{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":24,"cssClass":"pl-c1"},{"start":26,"end":30,"cssClass":"pl-c1"},{"start":32,"end":36,"cssClass":"pl-c1"},{"start":38,"end":42,"cssClass":"pl-c1"}],[],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":15,"cssClass":"pl-c1"},{"start":16,"end":26,"cssClass":"pl-s1"},{"start":27,"end":32,"cssClass":"pl-en"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":15,"cssClass":"pl-s1"},{"start":16,"end":18,"cssClass":"pl-c1"},{"start":19,"end":24,"cssClass":"pl-en"},{"start":25,"end":28,"cssClass":"pl-en"},{"start":29,"end":34,"cssClass":"pl-s1"},{"start":36,"end":38,"cssClass":"pl-c1"},{"start":39,"end":40,"cssClass":"pl-c1"}],[{"start":12,"end":20,"cssClass":"pl-s1"},{"start":21,"end":22,"cssClass":"pl-c1"},{"start":23,"end":27,"cssClass":"pl-s1"},{"start":28,"end":41,"cssClass":"pl-s1"},{"start":42,"end":47,"cssClass":"pl-s1"},{"start":48,"end":49,"cssClass":"pl-c1"},{"start":50,"end":51,"cssClass":"pl-c1"},{"start":52,"end":55,"cssClass":"pl-s1"}],[{"start":12,"end":20,"cssClass":"pl-s1"},{"start":21,"end":22,"cssClass":"pl-c1"},{"start":23,"end":27,"cssClass":"pl-s1"},{"start":28,"end":41,"cssClass":"pl-s1"},{"start":42,"end":47,"cssClass":"pl-s1"},{"start":48,"end":49,"cssClass":"pl-c1"},{"start":50,"end":51,"cssClass":"pl-c1"},{"start":52,"end":55,"cssClass":"pl-s1"},{"start":56,"end":57,"cssClass":"pl-c1"},{"start":58,"end":59,"cssClass":"pl-c1"}],[{"start":12,"end":25,"cssClass":"pl-s1"},{"start":26,"end":46,"cssClass":"pl-en"},{"start":47,"end":55,"cssClass":"pl-v"},{"start":60,"end":68,"cssClass":"pl-s1"},{"start":70,"end":78,"cssClass":"pl-s1"},{"start":85,"end":90,"cssClass":"pl-s1"},{"start":90,"end":91,"cssClass":"pl-c1"},{"start":91,"end":96,"cssClass":"pl-c1"}],[{"start":8,"end":20,"cssClass":"pl-s1"},{"start":21,"end":22,"cssClass":"pl-c1"},{"start":23,"end":36,"cssClass":"pl-s1"}],[],[{"start":8,"end":56,"cssClass":"pl-c"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":50,"cssClass":"pl-s"}],[{"start":8,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":36,"cssClass":"pl-s1"},{"start":37,"end":51,"cssClass":"pl-en"}],[],[{"start":8,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":25,"cssClass":"pl-v"},{"start":27,"end":39,"cssClass":"pl-s1"},{"start":40,"end":46,"cssClass":"pl-s1"},{"start":47,"end":48,"cssClass":"pl-s1"},{"start":51,"end":52,"cssClass":"pl-s1"},{"start":53,"end":56,"cssClass":"pl-k"},{"start":58,"end":59,"cssClass":"pl-s1"},{"start":61,"end":62,"cssClass":"pl-s1"},{"start":64,"end":66,"cssClass":"pl-c1"},{"start":67,"end":81,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-c1"},{"start":21,"end":33,"cssClass":"pl-s1"},{"start":35,"end":45,"cssClass":"pl-s1"},{"start":47,"end":55,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":21,"cssClass":"pl-en"},{"start":22,"end":26,"cssClass":"pl-s1"},{"start":28,"end":31,"cssClass":"pl-s1"},{"start":33,"end":38,"cssClass":"pl-s1"},{"start":40,"end":51,"cssClass":"pl-s1"},{"start":53,"end":63,"cssClass":"pl-s1"},{"start":65,"end":77,"cssClass":"pl-s1"}],[{"start":8,"end":80,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":87,"cssClass":"pl-s"}],[{"start":0,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":73,"cssClass":"pl-s"}],[{"start":0,"end":68,"cssClass":"pl-s"}],[{"start":0,"end":84,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":48,"cssClass":"pl-s"},{"start":50,"end":61,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":61,"cssClass":"pl-s"},{"start":63,"end":67,"cssClass":"pl-s1"},{"start":68,"end":82,"cssClass":"pl-s1"}],[],[{"start":8,"end":26,"cssClass":"pl-c"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":25,"cssClass":"pl-c1"}],[{"start":12,"end":18,"cssClass":"pl-s1"},{"start":19,"end":24,"cssClass":"pl-en"},{"start":25,"end":80,"cssClass":"pl-s"},{"start":82,"end":92,"cssClass":"pl-s1"}],[{"start":12,"end":15,"cssClass":"pl-s1"},{"start":16,"end":23,"cssClass":"pl-en"},{"start":24,"end":36,"cssClass":"pl-s1"},{"start":38,"end":44,"cssClass":"pl-s1"},{"start":44,"end":45,"cssClass":"pl-c1"},{"start":46,"end":49,"cssClass":"pl-s1"},{"start":51,"end":54,"cssClass":"pl-s1"},{"start":55,"end":58,"cssClass":"pl-k"},{"start":59,"end":62,"cssClass":"pl-s1"},{"start":63,"end":65,"cssClass":"pl-c1"},{"start":66,"end":78,"cssClass":"pl-s1"},{"start":79,"end":85,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":18,"cssClass":"pl-s1"},{"start":19,"end":24,"cssClass":"pl-en"},{"start":25,"end":73,"cssClass":"pl-s"}],[{"start":8,"end":27,"cssClass":"pl-c"}],[{"start":8,"end":11,"cssClass":"pl-s1"},{"start":12,"end":19,"cssClass":"pl-en"},{"start":20,"end":25,"cssClass":"pl-s1"},{"start":26,"end":33,"cssClass":"pl-s"},{"start":36,"end":42,"cssClass":"pl-s1"},{"start":42,"end":43,"cssClass":"pl-c1"},{"start":43,"end":54,"cssClass":"pl-s1"},{"start":55,"end":67,"cssClass":"pl-en"},{"start":68,"end":71,"cssClass":"pl-s1"},{"start":72,"end":78,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":15,"cssClass":"pl-en"},{"start":16,"end":20,"cssClass":"pl-s1"},{"start":22,"end":35,"cssClass":"pl-s1"},{"start":37,"end":51,"cssClass":"pl-s1"},{"start":53,"end":59,"cssClass":"pl-s1"},{"start":59,"end":60,"cssClass":"pl-c1"},{"start":60,"end":62,"cssClass":"pl-c1"}],[{"start":8,"end":64,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":57,"cssClass":"pl-s"}],[{"start":0,"end":68,"cssClass":"pl-s"}],[{"start":0,"end":43,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":65,"cssClass":"pl-s"}],[{"start":0,"end":71,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":15,"cssClass":"pl-s"}],[{"start":0,"end":70,"cssClass":"pl-s"}],[{"start":0,"end":39,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":56,"cssClass":"pl-c"}],[{"start":8,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":24,"cssClass":"pl-en"},{"start":25,"end":38,"cssClass":"pl-s1"},{"start":39,"end":45,"cssClass":"pl-en"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":32,"cssClass":"pl-s"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":13,"cssClass":"pl-s1"},{"start":15,"end":16,"cssClass":"pl-s1"},{"start":17,"end":19,"cssClass":"pl-c1"},{"start":20,"end":29,"cssClass":"pl-en"},{"start":30,"end":39,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-s1"},{"start":19,"end":24,"cssClass":"pl-en"},{"start":25,"end":37,"cssClass":"pl-s"},{"start":39,"end":40,"cssClass":"pl-s1"},{"start":42,"end":43,"cssClass":"pl-s1"},{"start":44,"end":55,"cssClass":"pl-s"}],[],[{"start":8,"end":20,"cssClass":"pl-s1"},{"start":21,"end":22,"cssClass":"pl-c1"},{"start":23,"end":27,"cssClass":"pl-s1"},{"start":28,"end":42,"cssClass":"pl-s1"},{"start":43,"end":59,"cssClass":"pl-en"},{"start":62,"end":66,"cssClass":"pl-en"}],[],[{"start":8,"end":66,"cssClass":"pl-c"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":16,"cssClass":"pl-c1"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":22,"end":36,"cssClass":"pl-s1"},{"start":37,"end":41,"cssClass":"pl-en"}],[],[{"start":8,"end":60,"cssClass":"pl-c"}],[{"start":8,"end":46,"cssClass":"pl-c"}],[{"start":8,"end":25,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":28,"end":32,"cssClass":"pl-c1"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":14,"cssClass":"pl-c1"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":28,"cssClass":"pl-s1"}],[{"start":12,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":45,"cssClass":"pl-s1"},{"start":46,"end":61,"cssClass":"pl-en"}],[],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":34,"cssClass":"pl-s"},{"start":36,"end":42,"cssClass":"pl-s1"}],[],[{"start":8,"end":29,"cssClass":"pl-c"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":13,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-s1"},{"start":21,"end":23,"cssClass":"pl-c1"},{"start":24,"end":33,"cssClass":"pl-en"},{"start":34,"end":43,"cssClass":"pl-s1"}],[{"start":12,"end":75,"cssClass":"pl-c"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":18,"cssClass":"pl-c1"},{"start":19,"end":24,"cssClass":"pl-s1"},{"start":25,"end":32,"cssClass":"pl-s"},{"start":34,"end":42,"cssClass":"pl-en"},{"start":43,"end":45,"cssClass":"pl-s1"},{"start":45,"end":46,"cssClass":"pl-c1"},{"start":46,"end":59,"cssClass":"pl-v"}],[{"start":16,"end":28,"cssClass":"pl-s1"},{"start":30,"end":42,"cssClass":"pl-s1"},{"start":44,"end":54,"cssClass":"pl-s1"},{"start":56,"end":67,"cssClass":"pl-s1"},{"start":68,"end":69,"cssClass":"pl-c1"},{"start":70,"end":74,"cssClass":"pl-s1"},{"start":75,"end":93,"cssClass":"pl-en"}],[{"start":20,"end":33,"cssClass":"pl-s1"},{"start":35,"end":40,"cssClass":"pl-s1"},{"start":41,"end":52,"cssClass":"pl-s"},{"start":55,"end":61,"cssClass":"pl-s1"},{"start":63,"end":75,"cssClass":"pl-s1"},{"start":77,"end":91,"cssClass":"pl-s1"},{"start":93,"end":99,"cssClass":"pl-s1"}],[],[],[{"start":16,"end":22,"cssClass":"pl-s1"},{"start":23,"end":28,"cssClass":"pl-en"},{"start":29,"end":47,"cssClass":"pl-s"},{"start":49,"end":50,"cssClass":"pl-s1"}],[{"start":16,"end":22,"cssClass":"pl-s1"},{"start":23,"end":28,"cssClass":"pl-en"},{"start":29,"end":68,"cssClass":"pl-s"},{"start":70,"end":82,"cssClass":"pl-s1"},{"start":84,"end":87,"cssClass":"pl-en"},{"start":88,"end":98,"cssClass":"pl-s1"}],[{"start":16,"end":18,"cssClass":"pl-k"},{"start":19,"end":31,"cssClass":"pl-s1"}],[{"start":20,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":40,"cssClass":"pl-s1"}],[],[{"start":20,"end":36,"cssClass":"pl-c"}],[{"start":20,"end":22,"cssClass":"pl-k"},{"start":23,"end":26,"cssClass":"pl-c1"},{"start":27,"end":31,"cssClass":"pl-s1"},{"start":32,"end":40,"cssClass":"pl-s1"}],[{"start":24,"end":28,"cssClass":"pl-s1"},{"start":29,"end":42,"cssClass":"pl-en"}],[{"start":28,"end":45,"cssClass":"pl-s1"},{"start":47,"end":56,"cssClass":"pl-s1"},{"start":57,"end":58,"cssClass":"pl-s1"},{"start":61,"end":72,"cssClass":"pl-s1"},{"start":74,"end":84,"cssClass":"pl-s1"},{"start":86,"end":98,"cssClass":"pl-s1"}],[],[{"start":20,"end":28,"cssClass":"pl-k"}],[],[{"start":12,"end":84,"cssClass":"pl-c"}],[{"start":12,"end":18,"cssClass":"pl-s1"},{"start":19,"end":24,"cssClass":"pl-en"},{"start":25,"end":74,"cssClass":"pl-s"},{"start":76,"end":77,"cssClass":"pl-s1"}],[{"start":12,"end":47,"cssClass":"pl-c"}],[{"start":12,"end":15,"cssClass":"pl-k"},{"start":16,"end":17,"cssClass":"pl-s1"},{"start":19,"end":31,"cssClass":"pl-s1"},{"start":32,"end":34,"cssClass":"pl-c1"},{"start":35,"end":44,"cssClass":"pl-en"},{"start":45,"end":50,"cssClass":"pl-s1"},{"start":51,"end":58,"cssClass":"pl-s"},{"start":60,"end":73,"cssClass":"pl-en"}],[{"start":16,"end":25,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":28,"end":40,"cssClass":"pl-s1"},{"start":41,"end":48,"cssClass":"pl-s"}],[{"start":16,"end":50,"cssClass":"pl-c"}],[{"start":16,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":35,"cssClass":"pl-s1"},{"start":36,"end":44,"cssClass":"pl-en"},{"start":47,"end":48,"cssClass":"pl-c1"}],[{"start":16,"end":18,"cssClass":"pl-k"},{"start":19,"end":29,"cssClass":"pl-en"},{"start":30,"end":37,"cssClass":"pl-s1"},{"start":38,"end":40,"cssClass":"pl-s1"},{"start":42,"end":55,"cssClass":"pl-v"}],[{"start":20,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":33,"cssClass":"pl-s1"},{"start":34,"end":59,"cssClass":"pl-en"}],[{"start":24,"end":41,"cssClass":"pl-s1"},{"start":43,"end":52,"cssClass":"pl-s1"},{"start":54,"end":60,"cssClass":"pl-s1"},{"start":62,"end":75,"cssClass":"pl-s1"}],[],[{"start":16,"end":20,"cssClass":"pl-k"}],[{"start":21,"end":33,"cssClass":"pl-s1"},{"start":35,"end":47,"cssClass":"pl-s1"},{"start":49,"end":59,"cssClass":"pl-s1"},{"start":61,"end":72,"cssClass":"pl-s1"},{"start":74,"end":75,"cssClass":"pl-c1"},{"start":76,"end":80,"cssClass":"pl-s1"},{"start":81,"end":99,"cssClass":"pl-en"}],[{"start":24,"end":37,"cssClass":"pl-s1"}],[{"start":24,"end":36,"cssClass":"pl-s1"},{"start":37,"end":48,"cssClass":"pl-s"}],[{"start":24,"end":30,"cssClass":"pl-s1"}],[{"start":24,"end":36,"cssClass":"pl-s1"}],[{"start":24,"end":38,"cssClass":"pl-s1"}],[{"start":24,"end":30,"cssClass":"pl-s1"}],[],[{"start":20,"end":26,"cssClass":"pl-s1"},{"start":27,"end":32,"cssClass":"pl-en"},{"start":33,"end":64,"cssClass":"pl-s"},{"start":66,"end":67,"cssClass":"pl-s1"},{"start":69,"end":70,"cssClass":"pl-s1"}],[{"start":20,"end":26,"cssClass":"pl-s1"},{"start":27,"end":32,"cssClass":"pl-en"}],[{"start":24,"end":64,"cssClass":"pl-s"},{"start":66,"end":78,"cssClass":"pl-s1"},{"start":80,"end":83,"cssClass":"pl-en"},{"start":84,"end":94,"cssClass":"pl-s1"}],[],[],[{"start":20,"end":46,"cssClass":"pl-c"}],[{"start":20,"end":22,"cssClass":"pl-k"},{"start":23,"end":26,"cssClass":"pl-c1"},{"start":27,"end":39,"cssClass":"pl-s1"}],[{"start":24,"end":29,"cssClass":"pl-k"},{"start":30,"end":45,"cssClass":"pl-v"}],[{"start":28,"end":50,"cssClass":"pl-s"},{"start":51,"end":52,"cssClass":"pl-c1"},{"start":53,"end":76,"cssClass":"pl-s"},{"start":77,"end":78,"cssClass":"pl-c1"},{"start":80,"end":81,"cssClass":"pl-s1"},{"start":83,"end":84,"cssClass":"pl-s1"}],[],[],[{"start":20,"end":58,"cssClass":"pl-c"}],[{"start":20,"end":46,"cssClass":"pl-c"}],[{"start":20,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":40,"cssClass":"pl-s1"}],[{"start":20,"end":36,"cssClass":"pl-c"}],[{"start":20,"end":22,"cssClass":"pl-k"},{"start":23,"end":26,"cssClass":"pl-c1"},{"start":27,"end":31,"cssClass":"pl-s1"},{"start":32,"end":40,"cssClass":"pl-s1"}],[{"start":24,"end":28,"cssClass":"pl-s1"},{"start":29,"end":42,"cssClass":"pl-en"}],[{"start":28,"end":45,"cssClass":"pl-s1"}],[{"start":28,"end":40,"cssClass":"pl-s1"}],[{"start":28,"end":39,"cssClass":"pl-s1"}],[{"start":28,"end":38,"cssClass":"pl-s1"}],[{"start":28,"end":40,"cssClass":"pl-s1"}],[],[],[{"start":8,"end":73,"cssClass":"pl-c"}],[{"start":8,"end":61,"cssClass":"pl-c"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":55,"cssClass":"pl-s"},{"start":57,"end":61,"cssClass":"pl-s1"},{"start":62,"end":76,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":21,"end":42,"cssClass":"pl-s"},{"start":44,"end":50,"cssClass":"pl-s1"}],[],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":25,"cssClass":"pl-s1"},{"start":26,"end":40,"cssClass":"pl-s"},{"start":42,"end":43,"cssClass":"pl-c1"},{"start":44,"end":50,"cssClass":"pl-s1"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":24,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":32,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":32,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":33,"cssClass":"pl-en"},{"start":34,"end":38,"cssClass":"pl-s1"},{"start":40,"end":57,"cssClass":"pl-s1"},{"start":59,"end":68,"cssClass":"pl-s1"},{"start":70,"end":84,"cssClass":"pl-s1"},{"start":86,"end":94,"cssClass":"pl-s1"}],[{"start":8,"end":11,"cssClass":"pl-s"}],[{"start":0,"end":72,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":97,"cssClass":"pl-s"}],[{"start":0,"end":92,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":50,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":67,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":15,"cssClass":"pl-s"}],[{"start":0,"end":86,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":14,"cssClass":"pl-c1"},{"start":15,"end":24,"cssClass":"pl-s1"},{"start":25,"end":33,"cssClass":"pl-en"},{"start":36,"end":37,"cssClass":"pl-c1"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":14,"cssClass":"pl-c1"},{"start":15,"end":25,"cssClass":"pl-en"},{"start":26,"end":30,"cssClass":"pl-s1"},{"start":31,"end":33,"cssClass":"pl-s1"},{"start":36,"end":44,"cssClass":"pl-v"},{"start":46,"end":55,"cssClass":"pl-v"},{"start":57,"end":68,"cssClass":"pl-v"},{"start":70,"end":82,"cssClass":"pl-v"}],[{"start":12,"end":17,"cssClass":"pl-k"},{"start":18,"end":33,"cssClass":"pl-v"},{"start":34,"end":79,"cssClass":"pl-s"},{"start":72,"end":78,"cssClass":"pl-s1"},{"start":72,"end":73,"cssClass":"pl-kos"},{"start":73,"end":77,"cssClass":"pl-s1"},{"start":77,"end":78,"cssClass":"pl-kos"}],[{"start":8,"end":99,"cssClass":"pl-c"}],[{"start":8,"end":100,"cssClass":"pl-c"}],[{"start":8,"end":63,"cssClass":"pl-c"}],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"}],[{"start":8,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":17,"cssClass":"pl-s1"},{"start":18,"end":20,"cssClass":"pl-c1"},{"start":21,"end":25,"cssClass":"pl-s1"},{"start":26,"end":28,"cssClass":"pl-s1"},{"start":29,"end":35,"cssClass":"pl-s1"}],[{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":29,"cssClass":"pl-s1"},{"start":30,"end":45,"cssClass":"pl-en"},{"start":46,"end":60,"cssClass":"pl-s1"}],[{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":29,"cssClass":"pl-en"},{"start":30,"end":40,"cssClass":"pl-s1"},{"start":41,"end":44,"cssClass":"pl-en"},{"start":45,"end":60,"cssClass":"pl-en"},{"start":61,"end":66,"cssClass":"pl-s1"},{"start":68,"end":72,"cssClass":"pl-s1"},{"start":74,"end":82,"cssClass":"pl-s1"}],[{"start":12,"end":25,"cssClass":"pl-s1"},{"start":26,"end":32,"cssClass":"pl-en"},{"start":33,"end":43,"cssClass":"pl-s1"},{"start":44,"end":56,"cssClass":"pl-s1"},{"start":57,"end":71,"cssClass":"pl-s"},{"start":73,"end":77,"cssClass":"pl-en"}],[],[{"start":8,"end":96,"cssClass":"pl-c"}],[{"start":8,"end":92,"cssClass":"pl-c"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":42,"cssClass":"pl-en"},{"start":43,"end":47,"cssClass":"pl-s1"},{"start":48,"end":50,"cssClass":"pl-s1"}],[{"start":12,"end":97,"cssClass":"pl-c"}],[{"start":12,"end":58,"cssClass":"pl-c"}],[{"start":12,"end":24,"cssClass":"pl-s1"},{"start":25,"end":26,"cssClass":"pl-c1"},{"start":27,"end":30,"cssClass":"pl-en"}],[{"start":16,"end":19,"cssClass":"pl-en"},{"start":20,"end":33,"cssClass":"pl-s1"},{"start":35,"end":45,"cssClass":"pl-s1"},{"start":48,"end":51,"cssClass":"pl-s1"},{"start":51,"end":52,"cssClass":"pl-c1"},{"start":52,"end":58,"cssClass":"pl-k"},{"start":59,"end":60,"cssClass":"pl-s1"},{"start":62,"end":63,"cssClass":"pl-s1"},{"start":64,"end":65,"cssClass":"pl-c1"},{"start":67,"end":72,"cssClass":"pl-en"},{"start":73,"end":80,"cssClass":"pl-s1"},{"start":80,"end":81,"cssClass":"pl-c1"},{"start":81,"end":85,"cssClass":"pl-c1"}],[{"start":14,"end":15,"cssClass":"pl-c1"}],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":24,"cssClass":"pl-s1"},{"start":25,"end":26,"cssClass":"pl-c1"},{"start":27,"end":41,"cssClass":"pl-s1"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":24,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":31,"cssClass":"pl-s1"}],[],[{"start":8,"end":99,"cssClass":"pl-c"}],[{"start":8,"end":96,"cssClass":"pl-c"}],[{"start":8,"end":68,"cssClass":"pl-c"}],[{"start":8,"end":19,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-c1"},{"start":22,"end":25,"cssClass":"pl-en"},{"start":26,"end":34,"cssClass":"pl-s1"},{"start":35,"end":41,"cssClass":"pl-s1"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":18,"cssClass":"pl-s1"},{"start":20,"end":37,"cssClass":"pl-s1"},{"start":38,"end":40,"cssClass":"pl-c1"},{"start":41,"end":44,"cssClass":"pl-en"},{"start":45,"end":58,"cssClass":"pl-s1"},{"start":60,"end":70,"cssClass":"pl-s1"}],[{"start":12,"end":20,"cssClass":"pl-s1"},{"start":22,"end":33,"cssClass":"pl-s1"},{"start":34,"end":35,"cssClass":"pl-c1"},{"start":36,"end":52,"cssClass":"pl-en"}],[{"start":16,"end":24,"cssClass":"pl-s1"},{"start":26,"end":30,"cssClass":"pl-s1"},{"start":31,"end":43,"cssClass":"pl-s1"},{"start":45,"end":51,"cssClass":"pl-s1"},{"start":53,"end":65,"cssClass":"pl-s1"},{"start":67,"end":71,"cssClass":"pl-s1"},{"start":71,"end":72,"cssClass":"pl-c1"},{"start":72,"end":76,"cssClass":"pl-s1"},{"start":77,"end":86,"cssClass":"pl-en"}],[],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":23,"cssClass":"pl-s1"},{"start":24,"end":28,"cssClass":"pl-en"},{"start":29,"end":36,"cssClass":"pl-s1"},{"start":36,"end":37,"cssClass":"pl-c1"},{"start":37,"end":42,"cssClass":"pl-c1"}],[{"start":16,"end":33,"cssClass":"pl-s1"},{"start":34,"end":41,"cssClass":"pl-en"},{"start":42,"end":50,"cssClass":"pl-s1"},{"start":52,"end":58,"cssClass":"pl-s1"},{"start":58,"end":59,"cssClass":"pl-c1"},{"start":59,"end":70,"cssClass":"pl-s1"}],[{"start":12,"end":23,"cssClass":"pl-s1"},{"start":27,"end":30,"cssClass":"pl-en"},{"start":31,"end":48,"cssClass":"pl-s1"},{"start":49,"end":59,"cssClass":"pl-en"}],[],[{"start":8,"end":95,"cssClass":"pl-c"}],[{"start":8,"end":97,"cssClass":"pl-c"}],[{"start":8,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":29,"cssClass":"pl-s1"},{"start":30,"end":32,"cssClass":"pl-c1"},{"start":33,"end":43,"cssClass":"pl-s1"}],[{"start":12,"end":29,"cssClass":"pl-s1"},{"start":30,"end":43,"cssClass":"pl-en"},{"start":44,"end":45,"cssClass":"pl-c1"},{"start":45,"end":56,"cssClass":"pl-s1"}],[{"start":12,"end":26,"cssClass":"pl-s1"},{"start":27,"end":33,"cssClass":"pl-en"},{"start":34,"end":48,"cssClass":"pl-en"},{"start":49,"end":66,"cssClass":"pl-s1"}],[],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":16,"cssClass":"pl-c1"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":22,"end":24,"cssClass":"pl-s1"},{"start":25,"end":39,"cssClass":"pl-en"},{"start":40,"end":54,"cssClass":"pl-s1"}],[{"start":8,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":34,"cssClass":"pl-s1"},{"start":35,"end":36,"cssClass":"pl-c1"},{"start":38,"end":44,"cssClass":"pl-s1"}],[{"start":8,"end":25,"cssClass":"pl-s1"},{"start":26,"end":46,"cssClass":"pl-en"},{"start":47,"end":53,"cssClass":"pl-s1"},{"start":55,"end":64,"cssClass":"pl-s1"},{"start":66,"end":70,"cssClass":"pl-s1"},{"start":71,"end":76,"cssClass":"pl-s1"},{"start":78,"end":83,"cssClass":"pl-s1"},{"start":83,"end":84,"cssClass":"pl-c1"},{"start":84,"end":89,"cssClass":"pl-c1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":27,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":17,"cssClass":"pl-en"},{"start":18,"end":22,"cssClass":"pl-s1"}],[{"start":8,"end":48,"cssClass":"pl-s"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":23,"cssClass":"pl-s1"},{"start":24,"end":32,"cssClass":"pl-en"},{"start":33,"end":54,"cssClass":"pl-c1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":23,"cssClass":"pl-en"},{"start":24,"end":28,"cssClass":"pl-s1"},{"start":30,"end":44,"cssClass":"pl-s1"}],[{"start":8,"end":96,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":93,"cssClass":"pl-s"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":29,"cssClass":"pl-en"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":29,"cssClass":"pl-s1"}],[{"start":12,"end":98,"cssClass":"pl-c"}],[{"start":12,"end":98,"cssClass":"pl-c"}],[{"start":12,"end":47,"cssClass":"pl-c"}],[{"start":12,"end":18,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":19,"end":23,"cssClass":"pl-s1"},{"start":24,"end":30,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":16,"end":17,"cssClass":"pl-c1"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":22,"end":31,"cssClass":"pl-en"}],[{"start":12,"end":20,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-c1"},{"start":21,"end":25,"cssClass":"pl-s1"},{"start":26,"end":34,"cssClass":"pl-s1"}],[{"start":12,"end":26,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":27,"end":41,"cssClass":"pl-s1"}],[],[],[],[{"start":0,"end":3,"cssClass":"pl-k"},{"start":4,"end":35,"cssClass":"pl-en"},{"start":36,"end":45,"cssClass":"pl-s1"},{"start":47,"end":60,"cssClass":"pl-v"}],[{"start":4,"end":99,"cssClass":"pl-s"}],[{"start":0,"end":62,"cssClass":"pl-s"}],[{"start":4,"end":6,"cssClass":"pl-k"},{"start":7,"end":17,"cssClass":"pl-en"},{"start":18,"end":27,"cssClass":"pl-s1"},{"start":29,"end":37,"cssClass":"pl-v"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":18,"cssClass":"pl-en"},{"start":19,"end":28,"cssClass":"pl-s1"},{"start":29,"end":35,"cssClass":"pl-s1"},{"start":37,"end":39,"cssClass":"pl-c1"},{"start":40,"end":41,"cssClass":"pl-c1"}],[{"start":4,"end":6,"cssClass":"pl-k"},{"start":7,"end":17,"cssClass":"pl-en"},{"start":18,"end":27,"cssClass":"pl-s1"},{"start":29,"end":41,"cssClass":"pl-v"}],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":15,"cssClass":"pl-c1"},{"start":16,"end":25,"cssClass":"pl-s1"},{"start":26,"end":31,"cssClass":"pl-en"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":21,"cssClass":"pl-en"},{"start":22,"end":31,"cssClass":"pl-s1"},{"start":32,"end":38,"cssClass":"pl-s1"},{"start":40,"end":44,"cssClass":"pl-s1"},{"start":45,"end":49,"cssClass":"pl-v"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":29,"cssClass":"pl-s1"},{"start":30,"end":36,"cssClass":"pl-s1"},{"start":37,"end":41,"cssClass":"pl-s1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":20,"cssClass":"pl-s1"},{"start":21,"end":25,"cssClass":"pl-s1"},{"start":26,"end":28,"cssClass":"pl-c1"},{"start":29,"end":34,"cssClass":"pl-s1"},{"start":35,"end":39,"cssClass":"pl-v"}],[{"start":16,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":30,"end":31,"cssClass":"pl-c1"}],[{"start":12,"end":16,"cssClass":"pl-k"},{"start":17,"end":22,"cssClass":"pl-s1"},{"start":23,"end":27,"cssClass":"pl-s1"},{"start":28,"end":30,"cssClass":"pl-c1"},{"start":31,"end":36,"cssClass":"pl-s1"},{"start":37,"end":41,"cssClass":"pl-v"}],[{"start":16,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":34,"cssClass":"pl-c1"},{"start":35,"end":40,"cssClass":"pl-s1"},{"start":41,"end":46,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-k"}],[{"start":16,"end":21,"cssClass":"pl-k"},{"start":22,"end":34,"cssClass":"pl-v"},{"start":35,"end":70,"cssClass":"pl-s"},{"start":61,"end":68,"cssClass":"pl-s1"},{"start":61,"end":62,"cssClass":"pl-kos"},{"start":62,"end":67,"cssClass":"pl-s1"},{"start":67,"end":68,"cssClass":"pl-kos"}],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":28,"end":30,"cssClass":"pl-k"},{"start":31,"end":41,"cssClass":"pl-en"},{"start":42,"end":51,"cssClass":"pl-s1"},{"start":52,"end":58,"cssClass":"pl-s1"},{"start":60,"end":65,"cssClass":"pl-v"},{"start":67,"end":71,"cssClass":"pl-k"},{"start":72,"end":73,"cssClass":"pl-c1"},{"start":74,"end":76,"cssClass":"pl-c1"},{"start":77,"end":80,"cssClass":"pl-en"},{"start":81,"end":90,"cssClass":"pl-s1"},{"start":91,"end":97,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":27,"cssClass":"pl-v"},{"start":28,"end":30,"cssClass":"pl-c1"},{"start":31,"end":36,"cssClass":"pl-s1"},{"start":37,"end":39,"cssClass":"pl-c1"},{"start":40,"end":43,"cssClass":"pl-en"},{"start":44,"end":49,"cssClass":"pl-s1"},{"start":51,"end":53,"cssClass":"pl-c1"},{"start":54,"end":65,"cssClass":"pl-s1"}],[{"start":4,"end":10,"cssClass":"pl-k"},{"start":11,"end":16,"cssClass":"pl-c1"}],[],[],[{"start":0,"end":3,"cssClass":"pl-k"},{"start":4,"end":19,"cssClass":"pl-en"},{"start":20,"end":25,"cssClass":"pl-s1"},{"start":27,"end":31,"cssClass":"pl-s1"},{"start":33,"end":41,"cssClass":"pl-s1"}],[{"start":4,"end":96,"cssClass":"pl-s"}],[{"start":0,"end":99,"cssClass":"pl-s"}],[{"start":0,"end":81,"cssClass":"pl-s"}],[{"start":4,"end":7,"cssClass":"pl-s1"},{"start":8,"end":9,"cssClass":"pl-c1"},{"start":10,"end":20,"cssClass":"pl-v"}],[{"start":4,"end":98,"cssClass":"pl-c"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":15,"cssClass":"pl-c1"},{"start":16,"end":24,"cssClass":"pl-s1"},{"start":25,"end":30,"cssClass":"pl-s1"},{"start":31,"end":37,"cssClass":"pl-en"}],[{"start":8,"end":11,"cssClass":"pl-s1"},{"start":12,"end":20,"cssClass":"pl-en"},{"start":21,"end":25,"cssClass":"pl-s1"}],[{"start":4,"end":99,"cssClass":"pl-c"}],[{"start":4,"end":94,"cssClass":"pl-c"}],[{"start":4,"end":63,"cssClass":"pl-c"}],[{"start":4,"end":7,"cssClass":"pl-s1"},{"start":8,"end":18,"cssClass":"pl-en"},{"start":19,"end":23,"cssClass":"pl-s1"},{"start":24,"end":29,"cssClass":"pl-s1"}],[{"start":4,"end":9,"cssClass":"pl-s1"},{"start":10,"end":11,"cssClass":"pl-c1"},{"start":12,"end":15,"cssClass":"pl-s1"},{"start":16,"end":36,"cssClass":"pl-en"}],[{"start":8,"end":19,"cssClass":"pl-v"},{"start":20,"end":27,"cssClass":"pl-s"},{"start":29,"end":32,"cssClass":"pl-en"},{"start":33,"end":37,"cssClass":"pl-s1"},{"start":38,"end":43,"cssClass":"pl-s1"},{"start":46,"end":49,"cssClass":"pl-en"},{"start":50,"end":54,"cssClass":"pl-s1"},{"start":55,"end":60,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":18,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":18,"cssClass":"pl-s1"}],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":13,"end":14,"cssClass":"pl-c1"},{"start":14,"end":19,"cssClass":"pl-c1"}],[],[{"start":4,"end":12,"cssClass":"pl-s1"},{"start":13,"end":14,"cssClass":"pl-c1"},{"start":15,"end":19,"cssClass":"pl-en"},{"start":20,"end":29,"cssClass":"pl-s1"},{"start":30,"end":35,"cssClass":"pl-en"},{"start":36,"end":39,"cssClass":"pl-en"},{"start":40,"end":45,"cssClass":"pl-s1"},{"start":46,"end":52,"cssClass":"pl-s1"},{"start":54,"end":58,"cssClass":"pl-s1"},{"start":59,"end":64,"cssClass":"pl-s1"},{"start":67,"end":70,"cssClass":"pl-en"},{"start":71,"end":76,"cssClass":"pl-s1"},{"start":77,"end":83,"cssClass":"pl-s1"},{"start":85,"end":89,"cssClass":"pl-s1"},{"start":90,"end":95,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-s1"},{"start":8,"end":32,"cssClass":"pl-en"},{"start":33,"end":38,"cssClass":"pl-s1"},{"start":40,"end":54,"cssClass":"pl-en"},{"start":55,"end":60,"cssClass":"pl-s1"},{"start":63,"end":68,"cssClass":"pl-s1"},{"start":68,"end":69,"cssClass":"pl-c1"},{"start":69,"end":77,"cssClass":"pl-s1"}],[{"start":4,"end":10,"cssClass":"pl-k"},{"start":11,"end":14,"cssClass":"pl-s1"}]],"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/Qiskit/qiskit/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"stochastic_swap.py","displayUrl":"https://github.com/Qiskit/qiskit/blob/main/qiskit/transpiler/passes/routing/stochastic_swap.py?raw=true","headerInfo":{"blobSize":"21.9 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"52f0d56","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FQiskit%2Fqiskit%2Fblob%2Fmain%2Fqiskit%2Ftranspiler%2Fpasses%2Frouting%2Fstochastic_swap.py","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"512","truncatedSloc":"434"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"Python","languageID":303,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/Qiskit/qiskit/blob/main/qiskit/transpiler/passes/routing/stochastic_swap.py","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/Qiskit/qiskit/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/Qiskit/qiskit/raw/main/qiskit/transpiler/passes/routing/stochastic_swap.py","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":4,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"logger","kind":"constant","ident_start":1463,"ident_end":1469,"extent_start":1463,"extent_end":1499,"fully_qualified_name":"logger","ident_utf16":{"start":{"line_number":44,"utf16_col":0},"end":{"line_number":44,"utf16_col":6}},"extent_utf16":{"start":{"line_number":44,"utf16_col":0},"end":{"line_number":44,"utf16_col":36}}},{"name":"StochasticSwap","kind":"class","ident_start":1508,"ident_end":1522,"extent_start":1502,"extent_end":20342,"fully_qualified_name":"StochasticSwap","ident_utf16":{"start":{"line_number":47,"utf16_col":6},"end":{"line_number":47,"utf16_col":20}},"extent_utf16":{"start":{"line_number":47,"utf16_col":0},"end":{"line_number":467,"utf16_col":9}}},{"name":"__init__","kind":"function","ident_start":2057,"ident_end":2065,"extent_start":2053,"extent_end":3243,"fully_qualified_name":"StochasticSwap.__init__","ident_utf16":{"start":{"line_number":62,"utf16_col":8},"end":{"line_number":62,"utf16_col":16}},"extent_utf16":{"start":{"line_number":62,"utf16_col":4},"end":{"line_number":91,"utf16_col":33}}},{"name":"run","kind":"function","ident_start":3253,"ident_end":3256,"extent_start":3249,"extent_end":4899,"fully_qualified_name":"StochasticSwap.run","ident_utf16":{"start":{"line_number":93,"utf16_col":8},"end":{"line_number":93,"utf16_col":11}},"extent_utf16":{"start":{"line_number":93,"utf16_col":4},"end":{"line_number":132,"utf16_col":22}}},{"name":"_layer_permutation","kind":"function","ident_start":4909,"ident_end":4927,"extent_start":4905,"extent_end":10172,"fully_qualified_name":"StochasticSwap._layer_permutation","ident_utf16":{"start":{"line_number":134,"utf16_col":8},"end":{"line_number":134,"utf16_col":26}},"extent_utf16":{"start":{"line_number":134,"utf16_col":4},"end":{"line_number":250,"utf16_col":55}}},{"name":"_layer_update","kind":"function","ident_start":10182,"ident_end":10195,"extent_start":10178,"extent_end":11336,"fully_qualified_name":"StochasticSwap._layer_update","ident_utf16":{"start":{"line_number":252,"utf16_col":8},"end":{"line_number":252,"utf16_col":21}},"extent_utf16":{"start":{"line_number":252,"utf16_col":4},"end":{"line_number":272,"utf16_col":80}}},{"name":"_mapper","kind":"function","ident_start":11346,"ident_end":11353,"extent_start":11342,"extent_end":16014,"fully_qualified_name":"StochasticSwap._mapper","ident_utf16":{"start":{"line_number":274,"utf16_col":8},"end":{"line_number":274,"utf16_col":15}},"extent_utf16":{"start":{"line_number":274,"utf16_col":4},"end":{"line_number":381,"utf16_col":32}}},{"name":"_controlflow_layer_update","kind":"function","ident_start":16024,"ident_end":16049,"extent_start":16020,"extent_end":19507,"fully_qualified_name":"StochasticSwap._controlflow_layer_update","ident_utf16":{"start":{"line_number":383,"utf16_col":8},"end":{"line_number":383,"utf16_col":33}},"extent_utf16":{"start":{"line_number":383,"utf16_col":4},"end":{"line_number":448,"utf16_col":27}}},{"name":"_new_seed","kind":"function","ident_start":19517,"ident_end":19526,"extent_start":19513,"extent_end":19638,"fully_qualified_name":"StochasticSwap._new_seed","ident_utf16":{"start":{"line_number":450,"utf16_col":8},"end":{"line_number":450,"utf16_col":17}},"extent_utf16":{"start":{"line_number":450,"utf16_col":4},"end":{"line_number":452,"utf16_col":55}}},{"name":"_recursive_pass","kind":"function","ident_start":19648,"ident_end":19663,"extent_start":19644,"extent_end":20342,"fully_qualified_name":"StochasticSwap._recursive_pass","ident_utf16":{"start":{"line_number":454,"utf16_col":8},"end":{"line_number":454,"utf16_col":23}},"extent_utf16":{"start":{"line_number":454,"utf16_col":4},"end":{"line_number":467,"utf16_col":9}}},{"name":"_controlflow_exhaustive_acyclic","kind":"function","ident_start":20349,"ident_end":20380,"extent_start":20345,"extent_end":21273,"fully_qualified_name":"_controlflow_exhaustive_acyclic","ident_utf16":{"start":{"line_number":470,"utf16_col":4},"end":{"line_number":470,"utf16_col":35}},"extent_utf16":{"start":{"line_number":470,"utf16_col":0},"end":{"line_number":488,"utf16_col":16}}},{"name":"_dag_from_block","kind":"function","ident_start":21280,"ident_end":21295,"extent_start":21276,"extent_end":22444,"fully_qualified_name":"_dag_from_block","ident_utf16":{"start":{"line_number":491,"utf16_col":4},"end":{"line_number":491,"utf16_col":19}},"extent_utf16":{"start":{"line_number":491,"utf16_col":0},"end":{"line_number":511,"utf16_col":14}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"csrf_tokens":{"/Qiskit/qiskit/branches":{"post":"p3YemDO9jUeTmQLcJ15duU6vd8lrpTqH_QZ-dhZjI9PoUPVx7LeEuxwGTmNqDsGeycl-Gj4gmdCaOLa-fst5zw"},"/repos/preferences":{"post":"DQRvD-UIUpUs4RSzja1u4-jcI7USn0dA8VrI9Sg88aLwccxdjDYvSa5Wjfg1AXB7kbdj2T1UNSJJWthJQ_BsUw"}}},"title":"qiskit/qiskit/transpiler/passes/routing/stochastic_swap.py at main ยท Qiskit/qiskit"}