{"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":20.654128,"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/sabre_swap.py","currentUser":null,"blob":{"rawLines":["# This code is part of Qiskit.","#","# (C) Copyright IBM 2017, 2020.","#","# 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.","","\"\"\"Routing via SWAP insertion using the SABRE method from Li et al.\"\"\"","","import logging","from copy import deepcopy","import time","","import rustworkx","","from qiskit.circuit import SwitchCaseOp, ControlFlowOp, Clbit, ClassicalRegister","from qiskit.circuit.library.standard_gates import SwapGate","from qiskit.circuit.controlflow import condition_resources, node_resources","from qiskit.converters import dag_to_circuit","from qiskit.transpiler.basepasses import TransformationPass","from qiskit.transpiler.coupling import CouplingMap","from qiskit.transpiler.exceptions import TranspilerError","from qiskit.transpiler.layout import Layout","from qiskit.transpiler.target import Target","from qiskit.transpiler.passes.layout import disjoint_utils","from qiskit.dagcircuit import DAGCircuit","from qiskit.utils.parallel import CPU_COUNT","","from qiskit._accelerate.sabre_swap import ("," build_swap_map,"," Heuristic,"," NeighborTable,"," SabreDAG,",")","from qiskit._accelerate.nlayout import NLayout","","logger = logging.getLogger(__name__)","","","class SabreSwap(TransformationPass):"," r\"\"\"Map input circuit onto a backend topology via insertion of SWAPs.",""," Implementation of the SWAP-based heuristic search from the SABRE qubit"," mapping paper [1] (Algorithm 1). The heuristic aims to minimize the number"," of lossy SWAPs inserted and the depth of the circuit.",""," This algorithm starts from an initial layout of virtual qubits onto physical"," qubits, and iterates over the circuit DAG until all gates are exhausted,"," inserting SWAPs along the way. It only considers 2-qubit gates as only those"," are germane for the mapping problem (it is assumed that 3+ qubit gates are"," already decomposed).",""," In each iteration, it will first check if there are any gates in the"," ``front_layer`` that can be directly applied. If so, it will apply them and"," remove them from ``front_layer``, and replenish that layer with new gates"," if possible. Otherwise, it will try to search for SWAPs, insert the SWAPs,"," and update the mapping.",""," The search for SWAPs is restricted, in the sense that we only consider"," physical qubits in the neighborhood of those qubits involved in"," ``front_layer``. These give rise to a ``swap_candidate_list`` which is"," scored according to some heuristic cost function. The best SWAP is"," implemented and ``current_layout`` updated.",""," This transpiler pass adds onto the SABRE algorithm in that it will run"," multiple trials of the algorithm with different seeds. The best output,"," determined by the trial with the least amount of SWAPed inserted, will"," be selected from the random trials.",""," **References:**",""," [1] Li, Gushu, Yufei Ding, and Yuan Xie. \"Tackling the qubit mapping problem"," for NISQ-era quantum devices.\" ASPLOS 2019."," `arXiv:1809.02573 `_"," \"\"\"",""," def __init__(self, coupling_map, heuristic=\"basic\", seed=None, fake_run=False, trials=None):"," r\"\"\"SabreSwap initializer.",""," Args:"," coupling_map (Union[CouplingMap, Target]): CouplingMap of the target backend."," heuristic (str): The type of heuristic to use when deciding best"," swap strategy ('basic' or 'lookahead' or 'decay')."," seed (int): random seed used to tie-break among candidate swaps."," fake_run (bool): if true, it only pretend to do routing, i.e., no"," swap is effectively added."," trials (int): The number of seed trials to run sabre with. These will"," be run in parallel (unless the PassManager is already running in"," parallel). If not specified this defaults to the number of physical"," CPUs on the local system. For reproducible results it is recommended"," that you set this explicitly, as the output will be deterministic for"," a fixed number of trials.",""," Raises:"," TranspilerError: If the specified heuristic is not valid.",""," Additional Information:",""," The search space of possible SWAPs on physical qubits is explored"," by assigning a score to the layout that would result from each SWAP."," The goodness of a layout is evaluated based on how viable it makes"," the remaining virtual gates that must be applied. A few heuristic"," cost functions are supported",""," - 'basic':",""," The sum of distances for corresponding physical qubits of"," interacting virtual qubits in the front_layer.",""," .. math::",""," H_{basic} = \\sum_{gate \\in F} D[\\pi(gate.q_1)][\\pi(gate.q2)]",""," - 'lookahead':",""," This is the sum of two costs: first is the same as the basic cost."," Second is the basic cost but now evaluated for the"," extended set as well (i.e. :math:`|E|` number of upcoming successors to gates in"," front_layer F). This is weighted by some amount EXTENDED_SET_WEIGHT (W) to"," signify that upcoming gates are less important that the front_layer.",""," .. math::",""," H_{decay}=\\frac{1}{\\left|{F}\\right|}\\sum_{gate \\in F} D[\\pi(gate.q_1)][\\pi(gate.q2)]"," + W*\\frac{1}{\\left|{E}\\right|} \\sum_{gate \\in E} D[\\pi(gate.q_1)][\\pi(gate.q2)]",""," - 'decay':",""," This is the same as 'lookahead', but the whole cost is multiplied by a"," decay factor. This increases the cost if the SWAP that generated the"," trial layout was recently used (i.e. it penalizes increase in depth).",""," .. math::",""," H_{decay} = max(decay(SWAP.q_1), decay(SWAP.q_2)) {"," \\frac{1}{\\left|{F}\\right|} \\sum_{gate \\in F} D[\\pi(gate.q_1)][\\pi(gate.q2)]\\\\"," + W *\\frac{1}{\\left|{E}\\right|} \\sum_{gate \\in E} D[\\pi(gate.q_1)][\\pi(gate.q2)]"," }"," \"\"\"",""," super().__init__()",""," # Assume bidirectional couplings, fixing gate direction is easy later."," if isinstance(coupling_map, Target):"," self.target = coupling_map"," self.coupling_map = self.target.build_coupling_map()"," else:"," self.coupling_map = coupling_map"," self.target = None"," if self.coupling_map is not None and not self.coupling_map.is_symmetric:"," # A deepcopy is needed here if we don't own the coupling map (i.e. we were given it,"," # rather than calculated it from the Target), to avoid modifications updating shared"," # references in passes which require directional constraints."," if isinstance(coupling_map, CouplingMap):"," self.coupling_map = deepcopy(self.coupling_map)"," self.coupling_map.make_symmetric()"," self._neighbor_table = None"," if self.coupling_map is not None:"," self._neighbor_table = NeighborTable("," rustworkx.adjacency_matrix(self.coupling_map.graph)"," )",""," self.heuristic = heuristic"," self.seed = seed"," if trials is None:"," self.trials = CPU_COUNT"," else:"," self.trials = trials",""," self.fake_run = fake_run"," self._qubit_indices = None"," self._clbit_indices = None"," self.dist_matrix = None",""," def run(self, dag):"," \"\"\"Run the SabreSwap pass on `dag`.",""," Args:"," dag (DAGCircuit): the directed acyclic graph to be mapped."," Returns:"," DAGCircuit: A dag mapped to be compatible with the coupling_map."," 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(\"SabreSwap cannot run with coupling_map=None\")",""," if len(dag.qregs) != 1 or dag.qregs.get(\"q\", None) is None:"," raise TranspilerError(\"Sabre swap runs on physical circuits only.\")",""," num_dag_qubits = len(dag.qubits)"," num_coupling_qubits = self.coupling_map.size()"," if num_dag_qubits < num_coupling_qubits:"," raise TranspilerError("," f\"Fewer qubits in the circuit ({num_dag_qubits}) than the coupling map\""," f\" ({num_coupling_qubits}).\""," \" Have you run a layout pass and then expanded your DAG with ancillas?\""," \" See `FullAncillaAllocation`, `EnlargeWithAncilla` and `ApplyLayout`.\""," )"," if num_dag_qubits > num_coupling_qubits:"," raise TranspilerError("," f\"More qubits in the circuit ({num_dag_qubits}) than available in the coupling map\""," f\" ({num_coupling_qubits}).\""," \" This circuit cannot be routed to this device.\""," )",""," if self.heuristic == \"basic\":"," heuristic = Heuristic.Basic"," elif self.heuristic == \"lookahead\":"," heuristic = Heuristic.Lookahead"," elif self.heuristic == \"decay\":"," heuristic = Heuristic.Decay"," else:"," raise TranspilerError(\"Heuristic %s not recognized.\" % self.heuristic)"," disjoint_utils.require_layout_isolated_to_component("," dag, self.coupling_map if self.target is None else self.target"," )",""," self.dist_matrix = self.coupling_map.distance_matrix",""," canonical_register = dag.qregs[\"q\"]"," current_layout = Layout.generate_trivial_layout(canonical_register)"," self._qubit_indices = {bit: idx for idx, bit in enumerate(canonical_register)}"," layout_mapping = {"," self._qubit_indices[k]: v for k, v in current_layout.get_virtual_bits().items()"," }"," initial_layout = NLayout(layout_mapping, len(dag.qubits), self.coupling_map.size())",""," sabre_dag, circuit_to_dag_dict = _build_sabre_dag("," dag,"," self.coupling_map.size(),"," self._qubit_indices,"," )"," sabre_start = time.perf_counter()"," *sabre_result, final_permutation = build_swap_map("," len(dag.qubits),"," sabre_dag,"," self._neighbor_table,"," self.dist_matrix,"," heuristic,"," initial_layout,"," self.trials,"," self.seed,"," )"," sabre_stop = time.perf_counter()"," logging.debug(\"Sabre swap algorithm execution complete in: %s\", sabre_stop - sabre_start)",""," self.property_set[\"final_layout\"] = Layout(dict(zip(dag.qubits, final_permutation)))"," if self.fake_run:"," return dag"," return _apply_sabre_result("," dag.copy_empty_like(),"," dag,"," sabre_result,"," initial_layout,"," dag.qubits,"," circuit_to_dag_dict,"," )","","","def _build_sabre_dag(dag, num_physical_qubits, qubit_indices):"," from qiskit.converters import circuit_to_dag",""," # Maps id(block): circuit_to_dag(block) for all descendant blocks"," circuit_to_dag_dict = {}",""," def recurse(block, block_qubit_indices):"," block_id = id(block)"," if block_id in circuit_to_dag_dict:"," block_dag = circuit_to_dag_dict[block_id]"," else:"," block_dag = circuit_to_dag(block)"," circuit_to_dag_dict[block_id] = block_dag"," return process_dag(block_dag, block_qubit_indices)",""," def process_dag(block_dag, wire_map):"," dag_list = []"," node_blocks = {}"," for node in block_dag.topological_op_nodes():"," cargs_bits = set(node.cargs)"," if node.op.condition is not None:"," cargs_bits.update(condition_resources(node.op.condition).clbits)"," if isinstance(node.op, SwitchCaseOp):"," target = node.op.target"," if isinstance(target, Clbit):"," cargs_bits.add(target)"," elif isinstance(target, ClassicalRegister):"," cargs_bits.update(target)"," else: # Expr"," cargs_bits.update(node_resources(target).clbits)"," cargs = {block_dag.find_bit(x).index for x in cargs_bits}"," if isinstance(node.op, ControlFlowOp):"," node_blocks[node._node_id] = ["," recurse("," block,"," {inner: wire_map[outer] for inner, outer in zip(block.qubits, node.qargs)},"," )"," for block in node.op.blocks"," ]"," dag_list.append("," ("," node._node_id,"," [wire_map[x] for x in node.qargs],"," cargs,"," getattr(node.op, \"_directive\", False),"," )"," )"," return SabreDAG(num_physical_qubits, block_dag.num_clbits(), dag_list, node_blocks)",""," return process_dag(dag, qubit_indices), circuit_to_dag_dict","","","def _apply_sabre_result("," out_dag,"," in_dag,"," sabre_result,"," initial_layout,"," physical_qubits,"," circuit_to_dag_dict,","):"," \"\"\"Apply the ``SabreResult`` to ``out_dag``, mutating it in place. This function in effect"," performs the :class:`.ApplyLayout` transpiler pass with ``initial_layout`` and the Sabre routing"," simultaneously, though it assumes that ``out_dag`` has already been prepared as containing the"," right physical qubits.",""," Mutates ``out_dag`` in place and returns it. Mutates ``initial_layout`` in place as scratch"," space.",""," Args:"," out_dag (DAGCircuit): the physical DAG that the output should be written to."," in_dag (DAGCircuit): the source of the nodes that are being routed."," sabre_result (tuple[SwapMap, Sequence[int], NodeBlockResults]): the result object from the"," Rust run of the Sabre routing algorithm."," initial_layout (NLayout): a Rust-space mapping of virtual indices (i.e. those of the qubits"," in ``in_dag``) to physical ones."," physical_qubits (list[Qubit]): an indexable sequence of :class:`.circuit.Qubit` objects"," representing the physical qubits of the circuit. Note that disjoint-coupling"," handling can mean that these are not strictly a \"canonical physical register\" in order."," circuit_to_dag_dict (Mapping[int, DAGCircuit]): a mapping of the Python object identity"," (as returned by :func:`id`) of a control-flow block :class:`.QuantumCircuit` to a"," :class:`.DAGCircuit` that represents the same thing."," \"\"\"",""," # The swap gate is a singleton instance, so we don't need to waste time reconstructing it each"," # time we need to use it."," swap_singleton = SwapGate()",""," def empty_dag(block):"," empty = DAGCircuit()"," empty.add_qubits(out_dag.qubits)"," for qreg in out_dag.qregs.values():"," empty.add_qreg(qreg)"," empty.add_clbits(block.clbits)"," for creg in block.cregs:"," empty.add_creg(creg)"," empty._global_phase = block.global_phase"," return empty",""," def apply_swaps(dest_dag, swaps, layout):"," for a, b in swaps:"," qubits = (physical_qubits[a], physical_qubits[b])"," layout.swap_physical(a, b)"," dest_dag.apply_operation_back(swap_singleton, qubits, (), check=False)",""," def recurse(dest_dag, source_dag, result, root_logical_map, layout):"," \"\"\"The main recursive worker. Mutates ``dest_dag`` and ``layout`` and returns them.",""," ``root_virtual_map`` is a mapping of the (virtual) qubit in ``source_dag`` to the index of"," the virtual qubit in the root source DAG that it is bound to.\"\"\""," swap_map, node_order, node_block_results = result"," for node_id in node_order:"," node = source_dag._multi_graph[node_id]"," if node_id in swap_map:"," apply_swaps(dest_dag, swap_map[node_id], layout)"," if not isinstance(node.op, ControlFlowOp):"," dest_dag.apply_operation_back("," node.op,"," ["," physical_qubits[layout.virtual_to_physical(root_logical_map[q])]"," for q in node.qargs"," ],"," node.cargs,"," check=False,"," )"," continue",""," # At this point, we have to handle a control-flow node."," block_results = node_block_results[node_id]"," mapped_block_dags = []"," idle_qubits = set(dest_dag.qubits)"," for block, block_result in zip(node.op.blocks, block_results):"," block_root_logical_map = {"," inner: root_logical_map[outer] for inner, outer in zip(block.qubits, node.qargs)"," }"," block_dag, block_layout = recurse("," empty_dag(block),"," circuit_to_dag_dict[id(block)],"," ("," block_result.result.map,"," block_result.result.node_order,"," block_result.result.node_block_results,"," ),"," block_root_logical_map,"," layout.copy(),"," )"," apply_swaps(block_dag, block_result.swap_epilogue, block_layout)"," mapped_block_dags.append(block_dag)"," idle_qubits.intersection_update(block_dag.idle_wires())",""," mapped_blocks = []"," for mapped_block_dag in mapped_block_dags:"," # Remove wires that are idle in all blocks."," mapped_block_dag.remove_qubits(*idle_qubits)"," mapped_blocks.append(dag_to_circuit(mapped_block_dag))",""," # Apply the control flow gate to the dag."," mapped_node = node.op.replace_blocks(mapped_blocks)"," mapped_node_qargs = mapped_blocks[0].qubits if mapped_blocks else ()"," dest_dag.apply_operation_back(mapped_node, mapped_node_qargs, node.cargs, check=False)"," return dest_dag, layout",""," root_logical_map = {bit: index for index, bit in enumerate(in_dag.qubits)}"," return recurse(out_dag, in_dag, sabre_result, root_logical_map, initial_layout)[0]"],"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":70,"cssClass":"pl-s"}],[],[{"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":25,"cssClass":"pl-s1"}],[{"start":0,"end":6,"cssClass":"pl-k"},{"start":7,"end":11,"cssClass":"pl-s1"}],[],[{"start":0,"end":6,"cssClass":"pl-k"},{"start":7,"end":16,"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":26,"cssClass":"pl-k"},{"start":27,"end":39,"cssClass":"pl-v"},{"start":41,"end":54,"cssClass":"pl-v"},{"start":56,"end":61,"cssClass":"pl-v"},{"start":63,"end":80,"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":19,"cssClass":"pl-s1"},{"start":20,"end":31,"cssClass":"pl-s1"},{"start":32,"end":38,"cssClass":"pl-k"},{"start":39,"end":58,"cssClass":"pl-s1"},{"start":60,"end":74,"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":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":31,"cssClass":"pl-s1"},{"start":32,"end":38,"cssClass":"pl-k"},{"start":39,"end":50,"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-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":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":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":17,"cssClass":"pl-s1"},{"start":18,"end":26,"cssClass":"pl-s1"},{"start":27,"end":33,"cssClass":"pl-k"},{"start":34,"end":43,"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":34,"cssClass":"pl-s1"},{"start":35,"end":41,"cssClass":"pl-k"}],[{"start":4,"end":18,"cssClass":"pl-s1"}],[{"start":4,"end":13,"cssClass":"pl-v"}],[{"start":4,"end":17,"cssClass":"pl-v"}],[{"start":4,"end":12,"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":31,"cssClass":"pl-s1"},{"start":32,"end":38,"cssClass":"pl-k"},{"start":39,"end":46,"cssClass":"pl-v"}],[],[{"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":15,"cssClass":"pl-v"},{"start":16,"end":34,"cssClass":"pl-v"}],[{"start":4,"end":73,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":78,"cssClass":"pl-s"}],[{"start":0,"end":57,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":80,"cssClass":"pl-s"}],[{"start":0,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":80,"cssClass":"pl-s"}],[{"start":0,"end":78,"cssClass":"pl-s"}],[{"start":0,"end":24,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":72,"cssClass":"pl-s"}],[{"start":0,"end":79,"cssClass":"pl-s"}],[{"start":0,"end":77,"cssClass":"pl-s"}],[{"start":0,"end":78,"cssClass":"pl-s"}],[{"start":0,"end":27,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":67,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":70,"cssClass":"pl-s"}],[{"start":0,"end":47,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":75,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":39,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":19,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":80,"cssClass":"pl-s"}],[{"start":0,"end":47,"cssClass":"pl-s"}],[{"start":0,"end":62,"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":46,"cssClass":"pl-s1"},{"start":46,"end":47,"cssClass":"pl-c1"},{"start":47,"end":54,"cssClass":"pl-s"},{"start":56,"end":60,"cssClass":"pl-s1"},{"start":60,"end":61,"cssClass":"pl-c1"},{"start":61,"end":65,"cssClass":"pl-c1"},{"start":67,"end":75,"cssClass":"pl-s1"},{"start":75,"end":76,"cssClass":"pl-c1"},{"start":76,"end":81,"cssClass":"pl-c1"},{"start":83,"end":89,"cssClass":"pl-s1"},{"start":89,"end":90,"cssClass":"pl-c1"},{"start":90,"end":94,"cssClass":"pl-c1"}],[{"start":8,"end":34,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":89,"cssClass":"pl-s"}],[{"start":0,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":66,"cssClass":"pl-s"}],[{"start":0,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":77,"cssClass":"pl-s"}],[{"start":0,"end":42,"cssClass":"pl-s"}],[{"start":0,"end":81,"cssClass":"pl-s"}],[{"start":0,"end":80,"cssClass":"pl-s"}],[{"start":0,"end":83,"cssClass":"pl-s"}],[{"start":0,"end":84,"cssClass":"pl-s"}],[{"start":0,"end":85,"cssClass":"pl-s"}],[{"start":0,"end":41,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":15,"cssClass":"pl-s"}],[{"start":0,"end":69,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":31,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":77,"cssClass":"pl-s"}],[{"start":0,"end":80,"cssClass":"pl-s"}],[{"start":0,"end":78,"cssClass":"pl-s"}],[{"start":0,"end":77,"cssClass":"pl-s"}],[{"start":0,"end":40,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":22,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":69,"cssClass":"pl-s"}],[{"start":0,"end":58,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":21,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":26,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":78,"cssClass":"pl-s"}],[{"start":0,"end":62,"cssClass":"pl-s"}],[{"start":0,"end":92,"cssClass":"pl-s"}],[{"start":0,"end":86,"cssClass":"pl-s"}],[{"start":0,"end":80,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":21,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":100,"cssClass":"pl-s"}],[{"start":0,"end":99,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":22,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":82,"cssClass":"pl-s"}],[{"start":0,"end":80,"cssClass":"pl-s"}],[{"start":0,"end":81,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":21,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":67,"cssClass":"pl-s"}],[{"start":0,"end":97,"cssClass":"pl-s"}],[{"start":0,"end":100,"cssClass":"pl-s"}],[{"start":0,"end":21,"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":78,"cssClass":"pl-c"}],[{"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":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":44,"cssClass":"pl-s1"}],[{"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":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":35,"cssClass":"pl-c1"},{"start":36,"end":40,"cssClass":"pl-c1"},{"start":41,"end":44,"cssClass":"pl-c1"},{"start":45,"end":48,"cssClass":"pl-c1"},{"start":49,"end":53,"cssClass":"pl-s1"},{"start":54,"end":66,"cssClass":"pl-s1"},{"start":67,"end":79,"cssClass":"pl-s1"}],[{"start":12,"end":96,"cssClass":"pl-c"}],[{"start":12,"end":96,"cssClass":"pl-c"}],[{"start":12,"end":73,"cssClass":"pl-c"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":25,"cssClass":"pl-en"},{"start":26,"end":38,"cssClass":"pl-s1"},{"start":40,"end":51,"cssClass":"pl-v"}],[{"start":16,"end":20,"cssClass":"pl-s1"},{"start":21,"end":33,"cssClass":"pl-s1"},{"start":34,"end":35,"cssClass":"pl-c1"},{"start":36,"end":44,"cssClass":"pl-en"},{"start":45,"end":49,"cssClass":"pl-s1"},{"start":50,"end":62,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":29,"cssClass":"pl-s1"},{"start":30,"end":44,"cssClass":"pl-en"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":28,"cssClass":"pl-s1"},{"start":29,"end":30,"cssClass":"pl-c1"},{"start":31,"end":35,"cssClass":"pl-c1"}],[{"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":35,"cssClass":"pl-c1"},{"start":36,"end":40,"cssClass":"pl-c1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":32,"cssClass":"pl-s1"},{"start":33,"end":34,"cssClass":"pl-c1"},{"start":35,"end":48,"cssClass":"pl-v"}],[{"start":16,"end":25,"cssClass":"pl-s1"},{"start":26,"end":42,"cssClass":"pl-en"},{"start":43,"end":47,"cssClass":"pl-s1"},{"start":48,"end":60,"cssClass":"pl-s1"},{"start":61,"end":66,"cssClass":"pl-s1"}],[],[],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":34,"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":10,"cssClass":"pl-k"},{"start":11,"end":17,"cssClass":"pl-s1"},{"start":18,"end":20,"cssClass":"pl-c1"},{"start":21,"end":25,"cssClass":"pl-c1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":35,"cssClass":"pl-v"}],[{"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":32,"cssClass":"pl-s1"}],[],[{"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":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":30,"end":34,"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":34,"cssClass":"pl-c1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":24,"cssClass":"pl-s1"},{"start":25,"end":26,"cssClass":"pl-c1"},{"start":27,"end":31,"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":43,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":70,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":76,"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":79,"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":78,"cssClass":"pl-s"}],[],[{"start":8,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":28,"cssClass":"pl-en"},{"start":29,"end":32,"cssClass":"pl-s1"},{"start":33,"end":39,"cssClass":"pl-s1"}],[{"start":8,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":30,"end":34,"cssClass":"pl-s1"},{"start":35,"end":47,"cssClass":"pl-s1"},{"start":48,"end":52,"cssClass":"pl-en"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":25,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":28,"end":47,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-k"},{"start":18,"end":33,"cssClass":"pl-v"}],[{"start":16,"end":87,"cssClass":"pl-s"},{"start":47,"end":63,"cssClass":"pl-s1"},{"start":47,"end":48,"cssClass":"pl-kos"},{"start":48,"end":62,"cssClass":"pl-s1"},{"start":62,"end":63,"cssClass":"pl-kos"}],[{"start":16,"end":44,"cssClass":"pl-s"},{"start":20,"end":41,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-kos"},{"start":21,"end":40,"cssClass":"pl-s1"},{"start":40,"end":41,"cssClass":"pl-kos"}],[{"start":16,"end":87,"cssClass":"pl-s"}],[{"start":16,"end":87,"cssClass":"pl-s"}],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":25,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":28,"end":47,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-k"},{"start":18,"end":33,"cssClass":"pl-v"}],[{"start":16,"end":99,"cssClass":"pl-s"},{"start":46,"end":62,"cssClass":"pl-s1"},{"start":46,"end":47,"cssClass":"pl-kos"},{"start":47,"end":61,"cssClass":"pl-s1"},{"start":61,"end":62,"cssClass":"pl-kos"}],[{"start":16,"end":44,"cssClass":"pl-s"},{"start":20,"end":41,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-kos"},{"start":21,"end":40,"cssClass":"pl-s1"},{"start":40,"end":41,"cssClass":"pl-kos"}],[{"start":16,"end":64,"cssClass":"pl-s"}],[],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":25,"cssClass":"pl-s1"},{"start":26,"end":28,"cssClass":"pl-c1"},{"start":29,"end":36,"cssClass":"pl-s"}],[{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":33,"cssClass":"pl-v"},{"start":34,"end":39,"cssClass":"pl-v"}],[{"start":8,"end":12,"cssClass":"pl-k"},{"start":13,"end":17,"cssClass":"pl-s1"},{"start":18,"end":27,"cssClass":"pl-s1"},{"start":28,"end":30,"cssClass":"pl-c1"},{"start":31,"end":42,"cssClass":"pl-s"}],[{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":33,"cssClass":"pl-v"},{"start":34,"end":43,"cssClass":"pl-v"}],[{"start":8,"end":12,"cssClass":"pl-k"},{"start":13,"end":17,"cssClass":"pl-s1"},{"start":18,"end":27,"cssClass":"pl-s1"},{"start":28,"end":30,"cssClass":"pl-c1"},{"start":31,"end":38,"cssClass":"pl-s"}],[{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":33,"cssClass":"pl-v"},{"start":34,"end":39,"cssClass":"pl-v"}],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":17,"cssClass":"pl-k"},{"start":18,"end":33,"cssClass":"pl-v"},{"start":34,"end":64,"cssClass":"pl-s"},{"start":65,"end":66,"cssClass":"pl-c1"},{"start":67,"end":71,"cssClass":"pl-s1"},{"start":72,"end":81,"cssClass":"pl-s1"}],[{"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":24,"cssClass":"pl-s1"},{"start":25,"end":26,"cssClass":"pl-c1"},{"start":27,"end":31,"cssClass":"pl-s1"},{"start":32,"end":44,"cssClass":"pl-s1"},{"start":45,"end":60,"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":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":31,"cssClass":"pl-v"},{"start":32,"end":55,"cssClass":"pl-en"},{"start":56,"end":74,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":31,"end":34,"cssClass":"pl-s1"},{"start":36,"end":39,"cssClass":"pl-s1"},{"start":40,"end":43,"cssClass":"pl-k"},{"start":44,"end":47,"cssClass":"pl-s1"},{"start":49,"end":52,"cssClass":"pl-s1"},{"start":53,"end":55,"cssClass":"pl-c1"},{"start":56,"end":65,"cssClass":"pl-en"},{"start":66,"end":84,"cssClass":"pl-s1"}],[{"start":8,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":31,"cssClass":"pl-s1"},{"start":32,"end":33,"cssClass":"pl-s1"},{"start":36,"end":37,"cssClass":"pl-s1"},{"start":38,"end":41,"cssClass":"pl-k"},{"start":42,"end":43,"cssClass":"pl-s1"},{"start":45,"end":46,"cssClass":"pl-s1"},{"start":47,"end":49,"cssClass":"pl-c1"},{"start":50,"end":64,"cssClass":"pl-s1"},{"start":65,"end":81,"cssClass":"pl-en"},{"start":84,"end":89,"cssClass":"pl-en"}],[],[{"start":8,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":32,"cssClass":"pl-v"},{"start":33,"end":47,"cssClass":"pl-s1"},{"start":49,"end":52,"cssClass":"pl-en"},{"start":53,"end":56,"cssClass":"pl-s1"},{"start":57,"end":63,"cssClass":"pl-s1"},{"start":66,"end":70,"cssClass":"pl-s1"},{"start":71,"end":83,"cssClass":"pl-s1"},{"start":84,"end":88,"cssClass":"pl-en"}],[],[{"start":8,"end":17,"cssClass":"pl-s1"},{"start":19,"end":38,"cssClass":"pl-s1"},{"start":39,"end":40,"cssClass":"pl-c1"},{"start":41,"end":57,"cssClass":"pl-en"}],[{"start":12,"end":15,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":29,"cssClass":"pl-s1"},{"start":30,"end":34,"cssClass":"pl-en"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":31,"cssClass":"pl-s1"}],[],[{"start":8,"end":19,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-c1"},{"start":22,"end":26,"cssClass":"pl-s1"},{"start":27,"end":39,"cssClass":"pl-en"}],[{"start":8,"end":9,"cssClass":"pl-c1"},{"start":9,"end":21,"cssClass":"pl-s1"},{"start":23,"end":40,"cssClass":"pl-s1"},{"start":41,"end":42,"cssClass":"pl-c1"},{"start":43,"end":57,"cssClass":"pl-en"}],[{"start":12,"end":15,"cssClass":"pl-en"},{"start":16,"end":19,"cssClass":"pl-s1"},{"start":20,"end":26,"cssClass":"pl-s1"}],[{"start":12,"end":21,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":32,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":28,"cssClass":"pl-s1"}],[{"start":12,"end":21,"cssClass":"pl-s1"}],[{"start":12,"end":26,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":23,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":21,"cssClass":"pl-s1"}],[],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":25,"cssClass":"pl-s1"},{"start":26,"end":38,"cssClass":"pl-en"}],[{"start":8,"end":15,"cssClass":"pl-s1"},{"start":16,"end":21,"cssClass":"pl-en"},{"start":22,"end":70,"cssClass":"pl-s"},{"start":72,"end":82,"cssClass":"pl-s1"},{"start":83,"end":84,"cssClass":"pl-c1"},{"start":85,"end":96,"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-v"},{"start":51,"end":55,"cssClass":"pl-en"},{"start":56,"end":59,"cssClass":"pl-en"},{"start":60,"end":63,"cssClass":"pl-s1"},{"start":64,"end":70,"cssClass":"pl-s1"},{"start":72,"end":89,"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":22,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":34,"cssClass":"pl-en"}],[{"start":12,"end":15,"cssClass":"pl-s1"},{"start":16,"end":31,"cssClass":"pl-en"}],[{"start":12,"end":15,"cssClass":"pl-s1"}],[{"start":12,"end":24,"cssClass":"pl-s1"}],[{"start":12,"end":26,"cssClass":"pl-s1"}],[{"start":12,"end":15,"cssClass":"pl-s1"},{"start":16,"end":22,"cssClass":"pl-s1"}],[{"start":12,"end":31,"cssClass":"pl-s1"}],[],[],[],[{"start":0,"end":3,"cssClass":"pl-k"},{"start":4,"end":20,"cssClass":"pl-en"},{"start":21,"end":24,"cssClass":"pl-s1"},{"start":26,"end":45,"cssClass":"pl-s1"},{"start":47,"end":60,"cssClass":"pl-s1"}],[{"start":4,"end":8,"cssClass":"pl-k"},{"start":9,"end":15,"cssClass":"pl-s1"},{"start":16,"end":26,"cssClass":"pl-s1"},{"start":27,"end":33,"cssClass":"pl-k"},{"start":34,"end":48,"cssClass":"pl-s1"}],[],[{"start":4,"end":69,"cssClass":"pl-c"}],[{"start":4,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":15,"cssClass":"pl-en"},{"start":16,"end":21,"cssClass":"pl-s1"},{"start":23,"end":42,"cssClass":"pl-s1"}],[{"start":8,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":21,"cssClass":"pl-en"},{"start":22,"end":27,"cssClass":"pl-s1"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":19,"cssClass":"pl-s1"},{"start":20,"end":22,"cssClass":"pl-c1"},{"start":23,"end":42,"cssClass":"pl-s1"}],[{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":43,"cssClass":"pl-s1"},{"start":44,"end":52,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":38,"cssClass":"pl-en"},{"start":39,"end":44,"cssClass":"pl-s1"}],[{"start":12,"end":31,"cssClass":"pl-s1"},{"start":32,"end":40,"cssClass":"pl-s1"},{"start":42,"end":43,"cssClass":"pl-c1"},{"start":44,"end":53,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":26,"cssClass":"pl-en"},{"start":27,"end":36,"cssClass":"pl-s1"},{"start":38,"end":57,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":19,"cssClass":"pl-en"},{"start":20,"end":29,"cssClass":"pl-s1"},{"start":31,"end":39,"cssClass":"pl-s1"}],[{"start":8,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"}],[{"start":8,"end":19,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-c1"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":19,"cssClass":"pl-c1"},{"start":20,"end":29,"cssClass":"pl-s1"},{"start":30,"end":50,"cssClass":"pl-en"}],[{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":28,"cssClass":"pl-en"},{"start":29,"end":33,"cssClass":"pl-s1"},{"start":34,"end":39,"cssClass":"pl-s1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":22,"cssClass":"pl-s1"},{"start":23,"end":32,"cssClass":"pl-s1"},{"start":33,"end":35,"cssClass":"pl-c1"},{"start":36,"end":39,"cssClass":"pl-c1"},{"start":40,"end":44,"cssClass":"pl-c1"}],[{"start":16,"end":26,"cssClass":"pl-s1"},{"start":27,"end":33,"cssClass":"pl-en"},{"start":34,"end":53,"cssClass":"pl-en"},{"start":54,"end":58,"cssClass":"pl-s1"},{"start":59,"end":61,"cssClass":"pl-s1"},{"start":62,"end":71,"cssClass":"pl-s1"},{"start":73,"end":79,"cssClass":"pl-s1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":25,"cssClass":"pl-en"},{"start":26,"end":30,"cssClass":"pl-s1"},{"start":31,"end":33,"cssClass":"pl-s1"},{"start":35,"end":47,"cssClass":"pl-v"}],[{"start":16,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":29,"cssClass":"pl-s1"},{"start":30,"end":32,"cssClass":"pl-s1"},{"start":33,"end":39,"cssClass":"pl-s1"}],[{"start":16,"end":18,"cssClass":"pl-k"},{"start":19,"end":29,"cssClass":"pl-en"},{"start":30,"end":36,"cssClass":"pl-s1"},{"start":38,"end":43,"cssClass":"pl-v"}],[{"start":20,"end":30,"cssClass":"pl-s1"},{"start":31,"end":34,"cssClass":"pl-en"},{"start":35,"end":41,"cssClass":"pl-s1"}],[{"start":16,"end":20,"cssClass":"pl-k"},{"start":21,"end":31,"cssClass":"pl-en"},{"start":32,"end":38,"cssClass":"pl-s1"},{"start":40,"end":57,"cssClass":"pl-v"}],[{"start":20,"end":30,"cssClass":"pl-s1"},{"start":31,"end":37,"cssClass":"pl-en"},{"start":38,"end":44,"cssClass":"pl-s1"}],[{"start":16,"end":20,"cssClass":"pl-k"},{"start":23,"end":29,"cssClass":"pl-c"}],[{"start":20,"end":30,"cssClass":"pl-s1"},{"start":31,"end":37,"cssClass":"pl-en"},{"start":38,"end":52,"cssClass":"pl-en"},{"start":53,"end":59,"cssClass":"pl-s1"},{"start":61,"end":67,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":21,"end":30,"cssClass":"pl-s1"},{"start":31,"end":39,"cssClass":"pl-en"},{"start":40,"end":41,"cssClass":"pl-s1"},{"start":43,"end":48,"cssClass":"pl-s1"},{"start":49,"end":52,"cssClass":"pl-k"},{"start":53,"end":54,"cssClass":"pl-s1"},{"start":55,"end":57,"cssClass":"pl-c1"},{"start":58,"end":68,"cssClass":"pl-s1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":25,"cssClass":"pl-en"},{"start":26,"end":30,"cssClass":"pl-s1"},{"start":31,"end":33,"cssClass":"pl-s1"},{"start":35,"end":48,"cssClass":"pl-v"}],[{"start":16,"end":27,"cssClass":"pl-s1"},{"start":28,"end":32,"cssClass":"pl-s1"},{"start":33,"end":41,"cssClass":"pl-s1"},{"start":43,"end":44,"cssClass":"pl-c1"}],[{"start":20,"end":27,"cssClass":"pl-en"}],[{"start":24,"end":29,"cssClass":"pl-s1"}],[{"start":25,"end":30,"cssClass":"pl-s1"},{"start":32,"end":40,"cssClass":"pl-s1"},{"start":41,"end":46,"cssClass":"pl-s1"},{"start":48,"end":51,"cssClass":"pl-k"},{"start":52,"end":57,"cssClass":"pl-s1"},{"start":59,"end":64,"cssClass":"pl-s1"},{"start":65,"end":67,"cssClass":"pl-c1"},{"start":68,"end":71,"cssClass":"pl-en"},{"start":72,"end":77,"cssClass":"pl-s1"},{"start":78,"end":84,"cssClass":"pl-s1"},{"start":86,"end":90,"cssClass":"pl-s1"},{"start":91,"end":96,"cssClass":"pl-s1"}],[],[{"start":20,"end":23,"cssClass":"pl-k"},{"start":24,"end":29,"cssClass":"pl-s1"},{"start":30,"end":32,"cssClass":"pl-c1"},{"start":33,"end":37,"cssClass":"pl-s1"},{"start":38,"end":40,"cssClass":"pl-s1"},{"start":41,"end":47,"cssClass":"pl-s1"}],[],[{"start":12,"end":20,"cssClass":"pl-s1"},{"start":21,"end":27,"cssClass":"pl-en"}],[],[{"start":20,"end":24,"cssClass":"pl-s1"},{"start":25,"end":33,"cssClass":"pl-s1"}],[{"start":21,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-s1"},{"start":33,"end":36,"cssClass":"pl-k"},{"start":37,"end":38,"cssClass":"pl-s1"},{"start":39,"end":41,"cssClass":"pl-c1"},{"start":42,"end":46,"cssClass":"pl-s1"},{"start":47,"end":52,"cssClass":"pl-s1"}],[{"start":20,"end":25,"cssClass":"pl-s1"}],[{"start":20,"end":27,"cssClass":"pl-en"},{"start":28,"end":32,"cssClass":"pl-s1"},{"start":33,"end":35,"cssClass":"pl-s1"},{"start":37,"end":49,"cssClass":"pl-s"},{"start":51,"end":56,"cssClass":"pl-c1"}],[],[],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":23,"cssClass":"pl-v"},{"start":24,"end":43,"cssClass":"pl-s1"},{"start":45,"end":54,"cssClass":"pl-s1"},{"start":55,"end":65,"cssClass":"pl-en"},{"start":69,"end":77,"cssClass":"pl-s1"},{"start":79,"end":90,"cssClass":"pl-s1"}],[],[{"start":4,"end":10,"cssClass":"pl-k"},{"start":11,"end":22,"cssClass":"pl-en"},{"start":23,"end":26,"cssClass":"pl-s1"},{"start":28,"end":41,"cssClass":"pl-s1"},{"start":44,"end":63,"cssClass":"pl-s1"}],[],[],[{"start":0,"end":3,"cssClass":"pl-k"},{"start":4,"end":23,"cssClass":"pl-en"}],[{"start":4,"end":11,"cssClass":"pl-s1"}],[{"start":4,"end":10,"cssClass":"pl-s1"}],[{"start":4,"end":16,"cssClass":"pl-s1"}],[{"start":4,"end":18,"cssClass":"pl-s1"}],[{"start":4,"end":19,"cssClass":"pl-s1"}],[{"start":4,"end":23,"cssClass":"pl-s1"}],[],[{"start":4,"end":95,"cssClass":"pl-s"}],[{"start":0,"end":100,"cssClass":"pl-s"}],[{"start":0,"end":98,"cssClass":"pl-s"}],[{"start":0,"end":26,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":96,"cssClass":"pl-s"}],[{"start":0,"end":10,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":9,"cssClass":"pl-s"}],[{"start":0,"end":84,"cssClass":"pl-s"}],[{"start":0,"end":75,"cssClass":"pl-s"}],[{"start":0,"end":98,"cssClass":"pl-s"}],[{"start":0,"end":52,"cssClass":"pl-s"}],[{"start":0,"end":99,"cssClass":"pl-s"}],[{"start":0,"end":44,"cssClass":"pl-s"}],[{"start":0,"end":95,"cssClass":"pl-s"}],[{"start":0,"end":89,"cssClass":"pl-s"}],[{"start":0,"end":99,"cssClass":"pl-s"}],[{"start":0,"end":95,"cssClass":"pl-s"}],[{"start":0,"end":93,"cssClass":"pl-s"}],[{"start":0,"end":64,"cssClass":"pl-s"}],[{"start":0,"end":7,"cssClass":"pl-s"}],[],[{"start":4,"end":98,"cssClass":"pl-c"}],[{"start":4,"end":29,"cssClass":"pl-c"}],[{"start":4,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":29,"cssClass":"pl-v"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":17,"cssClass":"pl-en"},{"start":18,"end":23,"cssClass":"pl-s1"}],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":15,"cssClass":"pl-c1"},{"start":16,"end":26,"cssClass":"pl-v"}],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":24,"cssClass":"pl-en"},{"start":25,"end":32,"cssClass":"pl-s1"},{"start":33,"end":39,"cssClass":"pl-s1"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":19,"cssClass":"pl-c1"},{"start":20,"end":27,"cssClass":"pl-s1"},{"start":28,"end":33,"cssClass":"pl-s1"},{"start":34,"end":40,"cssClass":"pl-en"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":18,"end":26,"cssClass":"pl-en"},{"start":27,"end":31,"cssClass":"pl-s1"}],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":24,"cssClass":"pl-en"},{"start":25,"end":30,"cssClass":"pl-s1"},{"start":31,"end":37,"cssClass":"pl-s1"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":19,"cssClass":"pl-c1"},{"start":20,"end":25,"cssClass":"pl-s1"},{"start":26,"end":31,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":18,"end":26,"cssClass":"pl-en"},{"start":27,"end":31,"cssClass":"pl-s1"}],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":30,"end":35,"cssClass":"pl-s1"},{"start":36,"end":48,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":20,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":19,"cssClass":"pl-en"},{"start":20,"end":28,"cssClass":"pl-s1"},{"start":30,"end":35,"cssClass":"pl-s1"},{"start":37,"end":43,"cssClass":"pl-s1"}],[{"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":25,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":22,"end":37,"cssClass":"pl-s1"},{"start":38,"end":39,"cssClass":"pl-s1"},{"start":42,"end":57,"cssClass":"pl-s1"},{"start":58,"end":59,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-s1"},{"start":19,"end":32,"cssClass":"pl-en"},{"start":33,"end":34,"cssClass":"pl-s1"},{"start":36,"end":37,"cssClass":"pl-s1"}],[{"start":12,"end":20,"cssClass":"pl-s1"},{"start":21,"end":41,"cssClass":"pl-en"},{"start":42,"end":56,"cssClass":"pl-s1"},{"start":58,"end":64,"cssClass":"pl-s1"},{"start":70,"end":75,"cssClass":"pl-s1"},{"start":75,"end":76,"cssClass":"pl-c1"},{"start":76,"end":81,"cssClass":"pl-c1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":15,"cssClass":"pl-en"},{"start":16,"end":24,"cssClass":"pl-s1"},{"start":26,"end":36,"cssClass":"pl-s1"},{"start":38,"end":44,"cssClass":"pl-s1"},{"start":46,"end":62,"cssClass":"pl-s1"},{"start":64,"end":70,"cssClass":"pl-s1"}],[{"start":8,"end":92,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":98,"cssClass":"pl-s"}],[{"start":0,"end":72,"cssClass":"pl-s"}],[{"start":8,"end":16,"cssClass":"pl-s1"},{"start":18,"end":28,"cssClass":"pl-s1"},{"start":30,"end":48,"cssClass":"pl-s1"},{"start":49,"end":50,"cssClass":"pl-c1"},{"start":51,"end":57,"cssClass":"pl-s1"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":22,"cssClass":"pl-c1"},{"start":23,"end":33,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":29,"cssClass":"pl-s1"},{"start":30,"end":42,"cssClass":"pl-s1"},{"start":43,"end":50,"cssClass":"pl-s1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":22,"cssClass":"pl-s1"},{"start":23,"end":25,"cssClass":"pl-c1"},{"start":26,"end":34,"cssClass":"pl-s1"}],[{"start":16,"end":27,"cssClass":"pl-en"},{"start":28,"end":36,"cssClass":"pl-s1"},{"start":38,"end":46,"cssClass":"pl-s1"},{"start":47,"end":54,"cssClass":"pl-s1"},{"start":57,"end":63,"cssClass":"pl-s1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":18,"cssClass":"pl-c1"},{"start":19,"end":29,"cssClass":"pl-en"},{"start":30,"end":34,"cssClass":"pl-s1"},{"start":35,"end":37,"cssClass":"pl-s1"},{"start":39,"end":52,"cssClass":"pl-v"}],[{"start":16,"end":24,"cssClass":"pl-s1"},{"start":25,"end":45,"cssClass":"pl-en"}],[{"start":20,"end":24,"cssClass":"pl-s1"},{"start":25,"end":27,"cssClass":"pl-s1"}],[],[{"start":24,"end":39,"cssClass":"pl-s1"},{"start":40,"end":46,"cssClass":"pl-s1"},{"start":47,"end":66,"cssClass":"pl-en"},{"start":67,"end":83,"cssClass":"pl-s1"},{"start":84,"end":85,"cssClass":"pl-s1"}],[{"start":24,"end":27,"cssClass":"pl-k"},{"start":28,"end":29,"cssClass":"pl-s1"},{"start":30,"end":32,"cssClass":"pl-c1"},{"start":33,"end":37,"cssClass":"pl-s1"},{"start":38,"end":43,"cssClass":"pl-s1"}],[],[{"start":20,"end":24,"cssClass":"pl-s1"},{"start":25,"end":30,"cssClass":"pl-s1"}],[{"start":20,"end":25,"cssClass":"pl-s1"},{"start":25,"end":26,"cssClass":"pl-c1"},{"start":26,"end":31,"cssClass":"pl-c1"}],[],[{"start":16,"end":24,"cssClass":"pl-k"}],[],[{"start":12,"end":67,"cssClass":"pl-c"}],[{"start":12,"end":25,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":28,"end":46,"cssClass":"pl-s1"},{"start":47,"end":54,"cssClass":"pl-s1"}],[{"start":12,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"}],[{"start":12,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":29,"cssClass":"pl-en"},{"start":30,"end":38,"cssClass":"pl-s1"},{"start":39,"end":45,"cssClass":"pl-s1"}],[{"start":12,"end":15,"cssClass":"pl-k"},{"start":16,"end":21,"cssClass":"pl-s1"},{"start":23,"end":35,"cssClass":"pl-s1"},{"start":36,"end":38,"cssClass":"pl-c1"},{"start":39,"end":42,"cssClass":"pl-en"},{"start":43,"end":47,"cssClass":"pl-s1"},{"start":48,"end":50,"cssClass":"pl-s1"},{"start":51,"end":57,"cssClass":"pl-s1"},{"start":59,"end":72,"cssClass":"pl-s1"}],[{"start":16,"end":38,"cssClass":"pl-s1"},{"start":39,"end":40,"cssClass":"pl-c1"}],[{"start":20,"end":25,"cssClass":"pl-s1"},{"start":27,"end":43,"cssClass":"pl-s1"},{"start":44,"end":49,"cssClass":"pl-s1"},{"start":51,"end":54,"cssClass":"pl-k"},{"start":55,"end":60,"cssClass":"pl-s1"},{"start":62,"end":67,"cssClass":"pl-s1"},{"start":68,"end":70,"cssClass":"pl-c1"},{"start":71,"end":74,"cssClass":"pl-en"},{"start":75,"end":80,"cssClass":"pl-s1"},{"start":81,"end":87,"cssClass":"pl-s1"},{"start":89,"end":93,"cssClass":"pl-s1"},{"start":94,"end":99,"cssClass":"pl-s1"}],[],[{"start":16,"end":25,"cssClass":"pl-s1"},{"start":27,"end":39,"cssClass":"pl-s1"},{"start":40,"end":41,"cssClass":"pl-c1"},{"start":42,"end":49,"cssClass":"pl-en"}],[{"start":20,"end":29,"cssClass":"pl-en"},{"start":30,"end":35,"cssClass":"pl-s1"}],[{"start":20,"end":39,"cssClass":"pl-s1"},{"start":40,"end":42,"cssClass":"pl-en"},{"start":43,"end":48,"cssClass":"pl-s1"}],[],[{"start":24,"end":36,"cssClass":"pl-s1"},{"start":37,"end":43,"cssClass":"pl-s1"},{"start":44,"end":47,"cssClass":"pl-s1"}],[{"start":24,"end":36,"cssClass":"pl-s1"},{"start":37,"end":43,"cssClass":"pl-s1"},{"start":44,"end":54,"cssClass":"pl-s1"}],[{"start":24,"end":36,"cssClass":"pl-s1"},{"start":37,"end":43,"cssClass":"pl-s1"},{"start":44,"end":62,"cssClass":"pl-s1"}],[],[{"start":20,"end":42,"cssClass":"pl-s1"}],[{"start":20,"end":26,"cssClass":"pl-s1"},{"start":27,"end":31,"cssClass":"pl-en"}],[],[{"start":16,"end":27,"cssClass":"pl-en"},{"start":28,"end":37,"cssClass":"pl-s1"},{"start":39,"end":51,"cssClass":"pl-s1"},{"start":52,"end":65,"cssClass":"pl-s1"},{"start":67,"end":79,"cssClass":"pl-s1"}],[{"start":16,"end":33,"cssClass":"pl-s1"},{"start":34,"end":40,"cssClass":"pl-en"},{"start":41,"end":50,"cssClass":"pl-s1"}],[{"start":16,"end":27,"cssClass":"pl-s1"},{"start":28,"end":47,"cssClass":"pl-en"},{"start":48,"end":57,"cssClass":"pl-s1"},{"start":58,"end":68,"cssClass":"pl-en"}],[],[{"start":12,"end":25,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"}],[{"start":12,"end":15,"cssClass":"pl-k"},{"start":16,"end":32,"cssClass":"pl-s1"},{"start":33,"end":35,"cssClass":"pl-c1"},{"start":36,"end":53,"cssClass":"pl-s1"}],[{"start":16,"end":59,"cssClass":"pl-c"}],[{"start":16,"end":32,"cssClass":"pl-s1"},{"start":33,"end":46,"cssClass":"pl-en"},{"start":47,"end":48,"cssClass":"pl-c1"},{"start":48,"end":59,"cssClass":"pl-s1"}],[{"start":16,"end":29,"cssClass":"pl-s1"},{"start":30,"end":36,"cssClass":"pl-en"},{"start":37,"end":51,"cssClass":"pl-en"},{"start":52,"end":68,"cssClass":"pl-s1"}],[],[{"start":12,"end":53,"cssClass":"pl-c"}],[{"start":12,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":30,"cssClass":"pl-s1"},{"start":31,"end":33,"cssClass":"pl-s1"},{"start":34,"end":48,"cssClass":"pl-en"},{"start":49,"end":62,"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":47,"cssClass":"pl-c1"},{"start":49,"end":55,"cssClass":"pl-s1"},{"start":56,"end":58,"cssClass":"pl-k"},{"start":59,"end":72,"cssClass":"pl-s1"},{"start":73,"end":77,"cssClass":"pl-k"}],[{"start":12,"end":20,"cssClass":"pl-s1"},{"start":21,"end":41,"cssClass":"pl-en"},{"start":42,"end":53,"cssClass":"pl-s1"},{"start":55,"end":72,"cssClass":"pl-s1"},{"start":74,"end":78,"cssClass":"pl-s1"},{"start":79,"end":84,"cssClass":"pl-s1"},{"start":86,"end":91,"cssClass":"pl-s1"},{"start":91,"end":92,"cssClass":"pl-c1"},{"start":92,"end":97,"cssClass":"pl-c1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":23,"cssClass":"pl-s1"},{"start":25,"end":31,"cssClass":"pl-s1"}],[],[{"start":4,"end":20,"cssClass":"pl-s1"},{"start":21,"end":22,"cssClass":"pl-c1"},{"start":24,"end":27,"cssClass":"pl-s1"},{"start":29,"end":34,"cssClass":"pl-s1"},{"start":35,"end":38,"cssClass":"pl-k"},{"start":39,"end":44,"cssClass":"pl-s1"},{"start":46,"end":49,"cssClass":"pl-s1"},{"start":50,"end":52,"cssClass":"pl-c1"},{"start":53,"end":62,"cssClass":"pl-en"},{"start":63,"end":69,"cssClass":"pl-s1"},{"start":70,"end":76,"cssClass":"pl-s1"}],[{"start":4,"end":10,"cssClass":"pl-k"},{"start":11,"end":18,"cssClass":"pl-en"},{"start":19,"end":26,"cssClass":"pl-s1"},{"start":28,"end":34,"cssClass":"pl-s1"},{"start":36,"end":48,"cssClass":"pl-s1"},{"start":50,"end":66,"cssClass":"pl-s1"},{"start":68,"end":82,"cssClass":"pl-s1"},{"start":84,"end":85,"cssClass":"pl-c1"}]],"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":"sabre_swap.py","displayUrl":"https://github.com/Qiskit/qiskit/blob/main/qiskit/transpiler/passes/routing/sabre_swap.py?raw=true","headerInfo":{"blobSize":"18.1 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":"e8d8a43","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FQiskit%2Fqiskit%2Fblob%2Fmain%2Fqiskit%2Ftranspiler%2Fpasses%2Frouting%2Fsabre_swap.py","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"430","truncatedSloc":"365"},"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/sabre_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/sabre_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":1451,"ident_end":1457,"extent_start":1451,"extent_end":1487,"fully_qualified_name":"logger","ident_utf16":{"start":{"line_number":41,"utf16_col":0},"end":{"line_number":41,"utf16_col":6}},"extent_utf16":{"start":{"line_number":41,"utf16_col":0},"end":{"line_number":41,"utf16_col":36}}},{"name":"SabreSwap","kind":"class","ident_start":1496,"ident_end":1505,"extent_start":1490,"extent_end":11177,"fully_qualified_name":"SabreSwap","ident_utf16":{"start":{"line_number":44,"utf16_col":6},"end":{"line_number":44,"utf16_col":15}},"extent_utf16":{"start":{"line_number":44,"utf16_col":0},"end":{"line_number":264,"utf16_col":9}}},{"name":"__init__","kind":"function","ident_start":3333,"ident_end":3341,"extent_start":3329,"extent_end":7727,"fully_qualified_name":"SabreSwap.__init__","ident_utf16":{"start":{"line_number":81,"utf16_col":8},"end":{"line_number":81,"utf16_col":16}},"extent_utf16":{"start":{"line_number":81,"utf16_col":4},"end":{"line_number":177,"utf16_col":31}}},{"name":"run","kind":"function","ident_start":7737,"ident_end":7740,"extent_start":7733,"extent_end":11177,"fully_qualified_name":"SabreSwap.run","ident_utf16":{"start":{"line_number":179,"utf16_col":8},"end":{"line_number":179,"utf16_col":11}},"extent_utf16":{"start":{"line_number":179,"utf16_col":4},"end":{"line_number":264,"utf16_col":9}}},{"name":"_build_sabre_dag","kind":"function","ident_start":11184,"ident_end":11200,"extent_start":11180,"extent_end":13261,"fully_qualified_name":"_build_sabre_dag","ident_utf16":{"start":{"line_number":267,"utf16_col":4},"end":{"line_number":267,"utf16_col":20}},"extent_utf16":{"start":{"line_number":267,"utf16_col":0},"end":{"line_number":316,"utf16_col":63}}},{"name":"recurse","kind":"function","ident_start":11401,"ident_end":11408,"extent_start":11397,"extent_end":11737,"fully_qualified_name":"recurse","ident_utf16":{"start":{"line_number":273,"utf16_col":8},"end":{"line_number":273,"utf16_col":15}},"extent_utf16":{"start":{"line_number":273,"utf16_col":4},"end":{"line_number":280,"utf16_col":58}}},{"name":"process_dag","kind":"function","ident_start":11747,"ident_end":11758,"extent_start":11743,"extent_end":13196,"fully_qualified_name":"process_dag","ident_utf16":{"start":{"line_number":282,"utf16_col":8},"end":{"line_number":282,"utf16_col":19}},"extent_utf16":{"start":{"line_number":282,"utf16_col":4},"end":{"line_number":314,"utf16_col":91}}},{"name":"_apply_sabre_result","kind":"function","ident_start":13268,"ident_end":13287,"extent_start":13264,"extent_end":18500,"fully_qualified_name":"_apply_sabre_result","ident_utf16":{"start":{"line_number":319,"utf16_col":4},"end":{"line_number":319,"utf16_col":23}},"extent_utf16":{"start":{"line_number":319,"utf16_col":0},"end":{"line_number":429,"utf16_col":86}}},{"name":"empty_dag","kind":"function","ident_start":15022,"ident_end":15031,"extent_start":15018,"extent_end":15361,"fully_qualified_name":"empty_dag","ident_utf16":{"start":{"line_number":354,"utf16_col":8},"end":{"line_number":354,"utf16_col":17}},"extent_utf16":{"start":{"line_number":354,"utf16_col":4},"end":{"line_number":363,"utf16_col":20}}},{"name":"apply_swaps","kind":"function","ident_start":15371,"ident_end":15382,"extent_start":15367,"extent_end":15619,"fully_qualified_name":"apply_swaps","ident_utf16":{"start":{"line_number":365,"utf16_col":8},"end":{"line_number":365,"utf16_col":19}},"extent_utf16":{"start":{"line_number":365,"utf16_col":4},"end":{"line_number":369,"utf16_col":82}}},{"name":"recurse","kind":"function","ident_start":15629,"ident_end":15636,"extent_start":15625,"extent_end":18333,"fully_qualified_name":"recurse","ident_utf16":{"start":{"line_number":371,"utf16_col":8},"end":{"line_number":371,"utf16_col":15}},"extent_utf16":{"start":{"line_number":371,"utf16_col":4},"end":{"line_number":426,"utf16_col":31}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"csrf_tokens":{"/Qiskit/qiskit/branches":{"post":"jJLu0EJu3gYsgx602xLefMVRJLnYX4i9X6QluOuPgGJnLqIDSVxrfhRhneV0gtTAlLPY-wtKqa6S_9Sruvz5AA"},"/repos/preferences":{"post":"E7o6XKElWN6kip0qvrwIxZX4sMie3r8OY6acuHHuPGZC8SdnEwkurvLZMiZOUnM7dl-c7UBkXuJ-g6XSoK-RFg"}}},"title":"qiskit/qiskit/transpiler/passes/routing/sabre_swap.py at main ยท Qiskit/qiskit"}