{"payload":{"allShortcutsEnabled":false,"fileTree":{"qiskit/circuit/library/basis_change":{"items":[{"name":"__init__.py","path":"qiskit/circuit/library/basis_change/__init__.py","contentType":"file"},{"name":"qft.py","path":"qiskit/circuit/library/basis_change/qft.py","contentType":"file"}],"totalCount":2},"qiskit/circuit/library":{"items":[{"name":"arithmetic","path":"qiskit/circuit/library/arithmetic","contentType":"directory"},{"name":"basis_change","path":"qiskit/circuit/library/basis_change","contentType":"directory"},{"name":"boolean_logic","path":"qiskit/circuit/library/boolean_logic","contentType":"directory"},{"name":"data_preparation","path":"qiskit/circuit/library/data_preparation","contentType":"directory"},{"name":"generalized_gates","path":"qiskit/circuit/library/generalized_gates","contentType":"directory"},{"name":"n_local","path":"qiskit/circuit/library/n_local","contentType":"directory"},{"name":"standard_gates","path":"qiskit/circuit/library/standard_gates","contentType":"directory"},{"name":"templates","path":"qiskit/circuit/library/templates","contentType":"directory"},{"name":"__init__.py","path":"qiskit/circuit/library/__init__.py","contentType":"file"},{"name":"blueprintcircuit.py","path":"qiskit/circuit/library/blueprintcircuit.py","contentType":"file"},{"name":"fourier_checking.py","path":"qiskit/circuit/library/fourier_checking.py","contentType":"file"},{"name":"graph_state.py","path":"qiskit/circuit/library/graph_state.py","contentType":"file"},{"name":"grover_operator.py","path":"qiskit/circuit/library/grover_operator.py","contentType":"file"},{"name":"hamiltonian_gate.py","path":"qiskit/circuit/library/hamiltonian_gate.py","contentType":"file"},{"name":"hidden_linear_function.py","path":"qiskit/circuit/library/hidden_linear_function.py","contentType":"file"},{"name":"iqp.py","path":"qiskit/circuit/library/iqp.py","contentType":"file"},{"name":"overlap.py","path":"qiskit/circuit/library/overlap.py","contentType":"file"},{"name":"pauli_evolution.py","path":"qiskit/circuit/library/pauli_evolution.py","contentType":"file"},{"name":"phase_estimation.py","path":"qiskit/circuit/library/phase_estimation.py","contentType":"file"},{"name":"phase_oracle.py","path":"qiskit/circuit/library/phase_oracle.py","contentType":"file"},{"name":"quantum_volume.py","path":"qiskit/circuit/library/quantum_volume.py","contentType":"file"}],"totalCount":21},"qiskit/circuit":{"items":[{"name":"classical","path":"qiskit/circuit/classical","contentType":"directory"},{"name":"classicalfunction","path":"qiskit/circuit/classicalfunction","contentType":"directory"},{"name":"controlflow","path":"qiskit/circuit/controlflow","contentType":"directory"},{"name":"library","path":"qiskit/circuit/library","contentType":"directory"},{"name":"random","path":"qiskit/circuit/random","contentType":"directory"},{"name":"tools","path":"qiskit/circuit/tools","contentType":"directory"},{"name":"__init__.py","path":"qiskit/circuit/__init__.py","contentType":"file"},{"name":"_classical_resource_map.py","path":"qiskit/circuit/_classical_resource_map.py","contentType":"file"},{"name":"_standard_gates_commutations.py","path":"qiskit/circuit/_standard_gates_commutations.py","contentType":"file"},{"name":"_utils.py","path":"qiskit/circuit/_utils.py","contentType":"file"},{"name":"add_control.py","path":"qiskit/circuit/add_control.py","contentType":"file"},{"name":"annotated_operation.py","path":"qiskit/circuit/annotated_operation.py","contentType":"file"},{"name":"barrier.py","path":"qiskit/circuit/barrier.py","contentType":"file"},{"name":"bit.py","path":"qiskit/circuit/bit.py","contentType":"file"},{"name":"classicalregister.py","path":"qiskit/circuit/classicalregister.py","contentType":"file"},{"name":"commutation_checker.py","path":"qiskit/circuit/commutation_checker.py","contentType":"file"},{"name":"commutation_library.py","path":"qiskit/circuit/commutation_library.py","contentType":"file"},{"name":"controlledgate.py","path":"qiskit/circuit/controlledgate.py","contentType":"file"},{"name":"delay.py","path":"qiskit/circuit/delay.py","contentType":"file"},{"name":"duration.py","path":"qiskit/circuit/duration.py","contentType":"file"},{"name":"equivalence.py","path":"qiskit/circuit/equivalence.py","contentType":"file"},{"name":"equivalence_library.py","path":"qiskit/circuit/equivalence_library.py","contentType":"file"},{"name":"exceptions.py","path":"qiskit/circuit/exceptions.py","contentType":"file"},{"name":"gate.py","path":"qiskit/circuit/gate.py","contentType":"file"},{"name":"instruction.py","path":"qiskit/circuit/instruction.py","contentType":"file"},{"name":"instructionset.py","path":"qiskit/circuit/instructionset.py","contentType":"file"},{"name":"measure.py","path":"qiskit/circuit/measure.py","contentType":"file"},{"name":"operation.py","path":"qiskit/circuit/operation.py","contentType":"file"},{"name":"parameter.py","path":"qiskit/circuit/parameter.py","contentType":"file"},{"name":"parameterexpression.py","path":"qiskit/circuit/parameterexpression.py","contentType":"file"},{"name":"parametertable.py","path":"qiskit/circuit/parametertable.py","contentType":"file"},{"name":"parametervector.py","path":"qiskit/circuit/parametervector.py","contentType":"file"},{"name":"quantumcircuit.py","path":"qiskit/circuit/quantumcircuit.py","contentType":"file"},{"name":"quantumcircuitdata.py","path":"qiskit/circuit/quantumcircuitdata.py","contentType":"file"},{"name":"quantumregister.py","path":"qiskit/circuit/quantumregister.py","contentType":"file"},{"name":"register.py","path":"qiskit/circuit/register.py","contentType":"file"},{"name":"reset.py","path":"qiskit/circuit/reset.py","contentType":"file"},{"name":"singleton.py","path":"qiskit/circuit/singleton.py","contentType":"file"},{"name":"store.py","path":"qiskit/circuit/store.py","contentType":"file"}],"totalCount":39},"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":15.945431999999998,"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/circuit/library/basis_change/qft.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.","","\"\"\"Quantum Fourier Transform Circuit.\"\"\"","","from typing import Optional","import warnings","import numpy as np","","from qiskit.circuit import QuantumCircuit, QuantumRegister, CircuitInstruction","","from ..blueprintcircuit import BlueprintCircuit","","","class QFT(BlueprintCircuit):"," r\"\"\"Quantum Fourier Transform Circuit.",""," The Quantum Fourier Transform (QFT) on :math:`n` qubits is the operation",""," .. math::",""," |j\\rangle \\mapsto \\frac{1}{2^{n/2}} \\sum_{k=0}^{2^n - 1} e^{2\\pi ijk / 2^n} |k\\rangle",""," The circuit that implements this transformation can be implemented using Hadamard gates"," on each qubit, a series of controlled-U1 (or Z, depending on the phase) gates and a"," layer of Swap gates. The layer of Swap gates can in principle be dropped if the QFT appears"," at the end of the circuit, since then the re-ordering can be done classically. They"," can be turned off using the ``do_swaps`` attribute.",""," For 4 qubits, the circuit that implements this transformation is:",""," .. plot::",""," from qiskit.circuit.library import QFT"," from qiskit.visualization.library import _generate_circuit_library_visualization"," circuit = QFT(4)"," _generate_circuit_library_visualization(circuit)",""," The inverse QFT can be obtained by calling the ``inverse`` method on this class."," The respective circuit diagram is:",""," .. plot::",""," from qiskit.circuit.library import QFT"," from qiskit.visualization.library import _generate_circuit_library_visualization"," circuit = QFT(4).inverse()"," _generate_circuit_library_visualization(circuit)",""," One method to reduce circuit depth is to implement the QFT approximately by ignoring"," controlled-phase rotations where the angle is beneath a threshold. This is discussed"," in more detail in https://arxiv.org/abs/quant-ph/9601018 or"," https://arxiv.org/abs/quant-ph/0403071.",""," Here, this can be adjusted using the ``approximation_degree`` attribute: the smallest"," ``approximation_degree`` rotation angles are dropped from the QFT. For instance, a QFT"," on 5 qubits with approximation degree 2 yields (the barriers are dropped in this example):",""," .. plot::",""," from qiskit.circuit.library import QFT"," from qiskit.visualization.library import _generate_circuit_library_visualization"," circuit = QFT(5, approximation_degree=2)"," _generate_circuit_library_visualization(circuit)",""," \"\"\"",""," def __init__("," self,"," num_qubits: Optional[int] = None,"," approximation_degree: int = 0,"," do_swaps: bool = True,"," inverse: bool = False,"," insert_barriers: bool = False,"," name: Optional[str] = None,"," ) -> None:"," \"\"\"Construct a new QFT circuit.",""," Args:"," num_qubits: The number of qubits on which the QFT acts."," approximation_degree: The degree of approximation (0 for no approximation)."," do_swaps: Whether to include the final swaps in the QFT."," inverse: If True, the inverse Fourier transform is constructed."," insert_barriers: If True, barriers are inserted as visualization improvement."," name: The name of the circuit."," \"\"\""," if name is None:"," name = \"IQFT\" if inverse else \"QFT\"",""," super().__init__(name=name)"," self._approximation_degree = approximation_degree"," self._do_swaps = do_swaps"," self._insert_barriers = insert_barriers"," self._inverse = inverse"," self.num_qubits = num_qubits",""," @property"," def num_qubits(self) -> int:"," \"\"\"The number of qubits in the QFT circuit.",""," Returns:"," The number of qubits in the circuit."," \"\"\""," # This method needs to be overwritten to allow adding the setter for num_qubits while still"," # complying to pylint."," return super().num_qubits",""," @num_qubits.setter"," def num_qubits(self, num_qubits: int) -> None:"," \"\"\"Set the number of qubits.",""," Note that this changes the registers of the circuit.",""," Args:"," num_qubits: The new number of qubits."," \"\"\""," if num_qubits != self.num_qubits:"," self._invalidate()",""," self.qregs = []"," if num_qubits is not None and num_qubits > 0:"," self.qregs = [QuantumRegister(num_qubits, name=\"q\")]",""," @property"," def approximation_degree(self) -> int:"," \"\"\"The approximation degree of the QFT.",""," Returns:"," The currently set approximation degree."," \"\"\""," return self._approximation_degree",""," @approximation_degree.setter"," def approximation_degree(self, approximation_degree: int) -> None:"," \"\"\"Set the approximation degree of the QFT.",""," Args:"," approximation_degree: The new approximation degree.",""," Raises:"," ValueError: If the approximation degree is smaller than 0."," \"\"\""," if approximation_degree < 0:"," raise ValueError(\"Approximation degree cannot be smaller than 0.\")",""," if approximation_degree != self._approximation_degree:"," self._invalidate()"," self._approximation_degree = approximation_degree",""," @property"," def insert_barriers(self) -> bool:"," \"\"\"Whether barriers are inserted for better visualization or not.",""," Returns:"," True, if barriers are inserted, False if not."," \"\"\""," return self._insert_barriers",""," @insert_barriers.setter"," def insert_barriers(self, insert_barriers: bool) -> None:"," \"\"\"Specify whether barriers are inserted for better visualization or not.",""," Args:"," insert_barriers: If True, barriers are inserted, if False not."," \"\"\""," if insert_barriers != self._insert_barriers:"," self._invalidate()"," self._insert_barriers = insert_barriers",""," @property"," def do_swaps(self) -> bool:"," \"\"\"Whether the final swaps of the QFT are applied or not.",""," Returns:"," True, if the final swaps are applied, False if not."," \"\"\""," return self._do_swaps",""," @do_swaps.setter"," def do_swaps(self, do_swaps: bool) -> None:"," \"\"\"Specify whether to do the final swaps of the QFT circuit or not.",""," Args:"," do_swaps: If True, the final swaps are applied, if False not."," \"\"\""," if do_swaps != self._do_swaps:"," self._invalidate()"," self._do_swaps = do_swaps",""," def is_inverse(self) -> bool:"," \"\"\"Whether the inverse Fourier transform is implemented.",""," Returns:"," True, if the inverse Fourier transform is implemented, False otherwise."," \"\"\""," return self._inverse",""," def inverse(self, annotated: bool = False) -> \"QFT\":"," \"\"\"Invert this circuit.",""," Args:"," annotated: indicates whether the inverse gate can be implemented"," as an annotated gate. The value of this argument is ignored as the"," inverse of a QFT is an IQFT which is just another instance of"," :class:`.QFT`.",""," Returns:"," The inverted circuit."," \"\"\"",""," if self.name in (\"QFT\", \"IQFT\"):"," name = \"QFT\" if self._inverse else \"IQFT\""," else:"," name = self.name + \"_dg\"",""," inverted = self.copy(name=name)",""," # data consists of the QFT gate only"," iqft = self.data[0].operation.inverse()"," iqft.name = name",""," inverted.data.clear()"," inverted._append(CircuitInstruction(iqft, inverted.qubits, []))",""," inverted._inverse = not self._inverse"," return inverted",""," def _warn_if_precision_loss(self):"," \"\"\"Issue a warning if constructing the circuit will lose precision.",""," If we need an angle smaller than ``pi * 2**-1022``, we start to lose precision by going into"," the subnormal numbers. We won't lose _all_ precision until an exponent of about 1075, but"," beyond 1022 we're using fractional bits to represent leading zeros.\"\"\""," max_num_entanglements = self.num_qubits - self.approximation_degree - 1"," if max_num_entanglements > -np.finfo(float).minexp: # > 1022 for doubles."," warnings.warn("," \"precision loss in QFT.\""," f\" The rotation needed to represent {max_num_entanglements} entanglements\""," \" is smaller than the smallest normal floating-point number.\","," category=RuntimeWarning,"," stacklevel=3,"," )",""," def _check_configuration(self, raise_on_failure: bool = True) -> bool:"," \"\"\"Check if the current configuration is valid.\"\"\""," valid = True"," if self.num_qubits is None:"," valid = False"," if raise_on_failure:"," raise AttributeError(\"The number of qubits has not been set.\")"," self._warn_if_precision_loss()"," return valid",""," def _build(self) -> None:"," \"\"\"If not already built, build the circuit.\"\"\""," if self._is_built:"," return",""," super()._build()",""," num_qubits = self.num_qubits",""," if num_qubits == 0:"," return",""," circuit = QuantumCircuit(*self.qregs, name=self.name)"," for j in reversed(range(num_qubits)):"," circuit.h(j)"," num_entanglements = max(0, j - max(0, self.approximation_degree - (num_qubits - j - 1)))"," for k in reversed(range(j - num_entanglements, j)):"," # Use negative exponents so that the angle safely underflows to zero, rather than"," # using a temporary variable that overflows to infinity in the worst case."," lam = np.pi * (2.0 ** (k - j))"," circuit.cp(lam, j, k)",""," if self.insert_barriers:"," circuit.barrier()",""," if self._do_swaps:"," for i in range(num_qubits // 2):"," circuit.swap(i, num_qubits - i - 1)",""," if self._inverse:"," circuit = circuit.inverse()",""," wrapped = circuit.to_instruction() if self.insert_barriers else circuit.to_gate()"," self.compose(wrapped, qubits=self.qubits, inplace=True)"],"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":40,"cssClass":"pl-s"}],[],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":27,"cssClass":"pl-v"}],[{"start":0,"end":6,"cssClass":"pl-k"},{"start":7,"end":15,"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":19,"cssClass":"pl-s1"},{"start":20,"end":26,"cssClass":"pl-k"},{"start":27,"end":41,"cssClass":"pl-v"},{"start":43,"end":58,"cssClass":"pl-v"},{"start":60,"end":78,"cssClass":"pl-v"}],[],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":7,"end":23,"cssClass":"pl-s1"},{"start":24,"end":30,"cssClass":"pl-k"},{"start":31,"end":47,"cssClass":"pl-v"}],[],[],[{"start":0,"end":5,"cssClass":"pl-k"},{"start":6,"end":9,"cssClass":"pl-v"},{"start":10,"end":26,"cssClass":"pl-v"}],[{"start":4,"end":42,"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":13,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":93,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":91,"cssClass":"pl-s"}],[{"start":0,"end":87,"cssClass":"pl-s"}],[{"start":0,"end":95,"cssClass":"pl-s"}],[{"start":0,"end":87,"cssClass":"pl-s"}],[{"start":0,"end":55,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":69,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":45,"cssClass":"pl-s"}],[{"start":0,"end":87,"cssClass":"pl-s"}],[{"start":0,"end":23,"cssClass":"pl-s"}],[{"start":0,"end":55,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":84,"cssClass":"pl-s"}],[{"start":0,"end":38,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":45,"cssClass":"pl-s"}],[{"start":0,"end":87,"cssClass":"pl-s"}],[{"start":0,"end":33,"cssClass":"pl-s"}],[{"start":0,"end":55,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":88,"cssClass":"pl-s"}],[{"start":0,"end":88,"cssClass":"pl-s"}],[{"start":0,"end":63,"cssClass":"pl-s"}],[{"start":0,"end":43,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":89,"cssClass":"pl-s"}],[{"start":0,"end":90,"cssClass":"pl-s"}],[{"start":0,"end":94,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":45,"cssClass":"pl-s"}],[{"start":0,"end":87,"cssClass":"pl-s"}],[{"start":0,"end":47,"cssClass":"pl-s"}],[{"start":0,"end":55,"cssClass":"pl-s"}],[{"start":0,"end":0,"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":8,"end":12,"cssClass":"pl-s1"}],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":20,"end":28,"cssClass":"pl-v"},{"start":29,"end":32,"cssClass":"pl-s1"},{"start":34,"end":35,"cssClass":"pl-c1"},{"start":36,"end":40,"cssClass":"pl-c1"}],[{"start":8,"end":28,"cssClass":"pl-s1"},{"start":30,"end":33,"cssClass":"pl-s1"},{"start":34,"end":35,"cssClass":"pl-c1"},{"start":36,"end":37,"cssClass":"pl-c1"}],[{"start":8,"end":16,"cssClass":"pl-s1"},{"start":18,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":29,"cssClass":"pl-c1"}],[{"start":8,"end":15,"cssClass":"pl-s1"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":29,"cssClass":"pl-c1"}],[{"start":8,"end":23,"cssClass":"pl-s1"},{"start":25,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":37,"cssClass":"pl-c1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":14,"end":22,"cssClass":"pl-v"},{"start":23,"end":26,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":30,"end":34,"cssClass":"pl-c1"}],[{"start":6,"end":8,"cssClass":"pl-c1"},{"start":9,"end":13,"cssClass":"pl-c1"}],[{"start":8,"end":39,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":67,"cssClass":"pl-s"}],[{"start":0,"end":87,"cssClass":"pl-s"}],[{"start":0,"end":68,"cssClass":"pl-s"}],[{"start":0,"end":75,"cssClass":"pl-s"}],[{"start":0,"end":89,"cssClass":"pl-s"}],[{"start":0,"end":42,"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":18,"cssClass":"pl-c1"},{"start":19,"end":23,"cssClass":"pl-c1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":25,"cssClass":"pl-s"},{"start":26,"end":28,"cssClass":"pl-k"},{"start":29,"end":36,"cssClass":"pl-s1"},{"start":37,"end":41,"cssClass":"pl-k"},{"start":42,"end":47,"cssClass":"pl-s"}],[],[{"start":8,"end":13,"cssClass":"pl-en"},{"start":16,"end":24,"cssClass":"pl-en"},{"start":25,"end":29,"cssClass":"pl-s1"},{"start":29,"end":30,"cssClass":"pl-c1"},{"start":30,"end":34,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":34,"cssClass":"pl-s1"},{"start":35,"end":36,"cssClass":"pl-c1"},{"start":37,"end":57,"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":33,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":47,"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":31,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":36,"cssClass":"pl-s1"}],[],[{"start":4,"end":13,"cssClass":"pl-en"},{"start":5,"end":13,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":18,"cssClass":"pl-en"},{"start":19,"end":23,"cssClass":"pl-s1"},{"start":25,"end":27,"cssClass":"pl-c1"},{"start":28,"end":31,"cssClass":"pl-s1"}],[{"start":8,"end":51,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":48,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":99,"cssClass":"pl-c"}],[{"start":8,"end":30,"cssClass":"pl-c"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":20,"cssClass":"pl-en"},{"start":23,"end":33,"cssClass":"pl-s1"}],[],[{"start":4,"end":22,"cssClass":"pl-en"},{"start":5,"end":15,"cssClass":"pl-s1"},{"start":16,"end":22,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":18,"cssClass":"pl-en"},{"start":19,"end":23,"cssClass":"pl-s1"},{"start":25,"end":35,"cssClass":"pl-s1"},{"start":37,"end":40,"cssClass":"pl-s1"},{"start":42,"end":44,"cssClass":"pl-c1"},{"start":45,"end":49,"cssClass":"pl-c1"}],[{"start":8,"end":36,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":60,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":49,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":21,"cssClass":"pl-s1"},{"start":22,"end":24,"cssClass":"pl-c1"},{"start":25,"end":29,"cssClass":"pl-s1"},{"start":30,"end":40,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":28,"cssClass":"pl-en"}],[],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":25,"cssClass":"pl-s1"},{"start":26,"end":28,"cssClass":"pl-c1"},{"start":29,"end":32,"cssClass":"pl-c1"},{"start":33,"end":37,"cssClass":"pl-c1"},{"start":38,"end":41,"cssClass":"pl-c1"},{"start":42,"end":52,"cssClass":"pl-s1"},{"start":53,"end":54,"cssClass":"pl-c1"},{"start":55,"end":56,"cssClass":"pl-c1"}],[{"start":16,"end":20,"cssClass":"pl-s1"},{"start":21,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":30,"end":45,"cssClass":"pl-v"},{"start":46,"end":56,"cssClass":"pl-s1"},{"start":58,"end":62,"cssClass":"pl-s1"},{"start":62,"end":63,"cssClass":"pl-c1"},{"start":63,"end":66,"cssClass":"pl-s"}],[],[{"start":4,"end":13,"cssClass":"pl-en"},{"start":5,"end":13,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":28,"cssClass":"pl-en"},{"start":29,"end":33,"cssClass":"pl-s1"},{"start":35,"end":37,"cssClass":"pl-c1"},{"start":38,"end":41,"cssClass":"pl-s1"}],[{"start":8,"end":47,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":51,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":41,"cssClass":"pl-s1"}],[],[{"start":4,"end":32,"cssClass":"pl-en"},{"start":5,"end":25,"cssClass":"pl-s1"},{"start":26,"end":32,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":28,"cssClass":"pl-en"},{"start":29,"end":33,"cssClass":"pl-s1"},{"start":35,"end":55,"cssClass":"pl-s1"},{"start":57,"end":60,"cssClass":"pl-s1"},{"start":62,"end":64,"cssClass":"pl-c1"},{"start":65,"end":69,"cssClass":"pl-c1"}],[{"start":8,"end":51,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":63,"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":11,"cssClass":"pl-s"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":31,"cssClass":"pl-s1"},{"start":32,"end":33,"cssClass":"pl-c1"},{"start":34,"end":35,"cssClass":"pl-c1"}],[{"start":12,"end":17,"cssClass":"pl-k"},{"start":18,"end":28,"cssClass":"pl-v"},{"start":29,"end":77,"cssClass":"pl-s"}],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":31,"cssClass":"pl-s1"},{"start":32,"end":34,"cssClass":"pl-c1"},{"start":35,"end":39,"cssClass":"pl-s1"},{"start":40,"end":61,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":28,"cssClass":"pl-en"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":38,"cssClass":"pl-s1"},{"start":39,"end":40,"cssClass":"pl-c1"},{"start":41,"end":61,"cssClass":"pl-s1"}],[],[{"start":4,"end":13,"cssClass":"pl-en"},{"start":5,"end":13,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":23,"cssClass":"pl-en"},{"start":24,"end":28,"cssClass":"pl-s1"},{"start":30,"end":32,"cssClass":"pl-c1"},{"start":33,"end":37,"cssClass":"pl-s1"}],[{"start":8,"end":73,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":57,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":36,"cssClass":"pl-s1"}],[],[{"start":4,"end":27,"cssClass":"pl-en"},{"start":5,"end":20,"cssClass":"pl-s1"},{"start":21,"end":27,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":23,"cssClass":"pl-en"},{"start":24,"end":28,"cssClass":"pl-s1"},{"start":30,"end":45,"cssClass":"pl-s1"},{"start":47,"end":51,"cssClass":"pl-s1"},{"start":53,"end":55,"cssClass":"pl-c1"},{"start":56,"end":60,"cssClass":"pl-c1"}],[{"start":8,"end":81,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":74,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":26,"cssClass":"pl-s1"},{"start":27,"end":29,"cssClass":"pl-c1"},{"start":30,"end":34,"cssClass":"pl-s1"},{"start":35,"end":51,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":28,"cssClass":"pl-en"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":33,"cssClass":"pl-s1"},{"start":34,"end":35,"cssClass":"pl-c1"},{"start":36,"end":51,"cssClass":"pl-s1"}],[],[{"start":4,"end":13,"cssClass":"pl-en"},{"start":5,"end":13,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":16,"cssClass":"pl-en"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":23,"end":25,"cssClass":"pl-c1"},{"start":26,"end":30,"cssClass":"pl-s1"}],[{"start":8,"end":65,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":63,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":29,"cssClass":"pl-s1"}],[],[{"start":4,"end":20,"cssClass":"pl-en"},{"start":5,"end":13,"cssClass":"pl-s1"},{"start":14,"end":20,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":16,"cssClass":"pl-en"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":23,"end":31,"cssClass":"pl-s1"},{"start":33,"end":37,"cssClass":"pl-s1"},{"start":39,"end":41,"cssClass":"pl-c1"},{"start":42,"end":46,"cssClass":"pl-c1"}],[{"start":8,"end":75,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":73,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":19,"cssClass":"pl-s1"},{"start":20,"end":22,"cssClass":"pl-c1"},{"start":23,"end":27,"cssClass":"pl-s1"},{"start":28,"end":37,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":28,"cssClass":"pl-en"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":37,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":18,"cssClass":"pl-en"},{"start":19,"end":23,"cssClass":"pl-s1"},{"start":25,"end":27,"cssClass":"pl-c1"},{"start":28,"end":32,"cssClass":"pl-s1"}],[{"start":8,"end":64,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":83,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":28,"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":31,"cssClass":"pl-s1"},{"start":33,"end":37,"cssClass":"pl-s1"},{"start":38,"end":39,"cssClass":"pl-c1"},{"start":40,"end":45,"cssClass":"pl-c1"},{"start":47,"end":49,"cssClass":"pl-c1"},{"start":50,"end":55,"cssClass":"pl-s"}],[{"start":8,"end":31,"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":82,"cssClass":"pl-s"}],[{"start":0,"end":77,"cssClass":"pl-s"}],[{"start":0,"end":30,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":33,"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":20,"cssClass":"pl-s1"},{"start":21,"end":23,"cssClass":"pl-c1"},{"start":25,"end":30,"cssClass":"pl-s"},{"start":32,"end":38,"cssClass":"pl-s"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":24,"cssClass":"pl-s"},{"start":25,"end":27,"cssClass":"pl-k"},{"start":28,"end":32,"cssClass":"pl-s1"},{"start":33,"end":41,"cssClass":"pl-s1"},{"start":42,"end":46,"cssClass":"pl-k"},{"start":47,"end":53,"cssClass":"pl-s"}],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":23,"cssClass":"pl-s1"},{"start":24,"end":28,"cssClass":"pl-s1"},{"start":29,"end":30,"cssClass":"pl-c1"},{"start":31,"end":36,"cssClass":"pl-s"}],[],[{"start":8,"end":16,"cssClass":"pl-s1"},{"start":17,"end":18,"cssClass":"pl-c1"},{"start":19,"end":23,"cssClass":"pl-s1"},{"start":24,"end":28,"cssClass":"pl-en"},{"start":29,"end":33,"cssClass":"pl-s1"},{"start":33,"end":34,"cssClass":"pl-c1"},{"start":34,"end":38,"cssClass":"pl-s1"}],[],[{"start":8,"end":44,"cssClass":"pl-c"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":14,"cssClass":"pl-c1"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":24,"cssClass":"pl-s1"},{"start":25,"end":26,"cssClass":"pl-c1"},{"start":28,"end":37,"cssClass":"pl-s1"},{"start":38,"end":45,"cssClass":"pl-en"}],[{"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":16,"cssClass":"pl-s1"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":22,"end":27,"cssClass":"pl-en"}],[{"start":8,"end":16,"cssClass":"pl-s1"},{"start":17,"end":24,"cssClass":"pl-en"},{"start":25,"end":43,"cssClass":"pl-v"},{"start":44,"end":48,"cssClass":"pl-s1"},{"start":50,"end":58,"cssClass":"pl-s1"},{"start":59,"end":65,"cssClass":"pl-s1"}],[],[{"start":8,"end":16,"cssClass":"pl-s1"},{"start":17,"end":25,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":28,"end":31,"cssClass":"pl-c1"},{"start":32,"end":36,"cssClass":"pl-s1"},{"start":37,"end":45,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":23,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":31,"cssClass":"pl-en"},{"start":32,"end":36,"cssClass":"pl-s1"}],[{"start":8,"end":75,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":100,"cssClass":"pl-s"}],[{"start":0,"end":98,"cssClass":"pl-s"}],[{"start":0,"end":78,"cssClass":"pl-s"}],[{"start":8,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":36,"cssClass":"pl-s1"},{"start":37,"end":47,"cssClass":"pl-s1"},{"start":48,"end":49,"cssClass":"pl-c1"},{"start":50,"end":54,"cssClass":"pl-s1"},{"start":55,"end":75,"cssClass":"pl-s1"},{"start":76,"end":77,"cssClass":"pl-c1"},{"start":78,"end":79,"cssClass":"pl-c1"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":32,"cssClass":"pl-s1"},{"start":33,"end":34,"cssClass":"pl-c1"},{"start":35,"end":36,"cssClass":"pl-c1"},{"start":36,"end":38,"cssClass":"pl-s1"},{"start":39,"end":44,"cssClass":"pl-en"},{"start":45,"end":50,"cssClass":"pl-s1"},{"start":52,"end":58,"cssClass":"pl-s1"},{"start":61,"end":82,"cssClass":"pl-c"}],[{"start":12,"end":20,"cssClass":"pl-s1"},{"start":21,"end":25,"cssClass":"pl-en"}],[{"start":16,"end":40,"cssClass":"pl-s"}],[{"start":16,"end":90,"cssClass":"pl-s"},{"start":52,"end":75,"cssClass":"pl-s1"},{"start":52,"end":53,"cssClass":"pl-kos"},{"start":53,"end":74,"cssClass":"pl-s1"},{"start":74,"end":75,"cssClass":"pl-kos"}],[{"start":16,"end":77,"cssClass":"pl-s"}],[{"start":16,"end":24,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":25,"end":39,"cssClass":"pl-v"}],[{"start":16,"end":26,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":27,"end":28,"cssClass":"pl-c1"}],[],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":28,"cssClass":"pl-en"},{"start":29,"end":33,"cssClass":"pl-s1"},{"start":35,"end":51,"cssClass":"pl-s1"},{"start":53,"end":57,"cssClass":"pl-s1"},{"start":58,"end":59,"cssClass":"pl-c1"},{"start":60,"end":64,"cssClass":"pl-c1"},{"start":66,"end":68,"cssClass":"pl-c1"},{"start":69,"end":73,"cssClass":"pl-s1"}],[{"start":8,"end":58,"cssClass":"pl-s"}],[{"start":8,"end":13,"cssClass":"pl-s1"},{"start":14,"end":15,"cssClass":"pl-c1"},{"start":16,"end":20,"cssClass":"pl-c1"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":26,"cssClass":"pl-s1"},{"start":27,"end":29,"cssClass":"pl-c1"},{"start":30,"end":34,"cssClass":"pl-c1"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":25,"cssClass":"pl-c1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":31,"cssClass":"pl-s1"}],[{"start":16,"end":21,"cssClass":"pl-k"},{"start":22,"end":36,"cssClass":"pl-v"},{"start":37,"end":77,"cssClass":"pl-s"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":36,"cssClass":"pl-en"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":20,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":14,"cssClass":"pl-en"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":21,"end":23,"cssClass":"pl-c1"},{"start":24,"end":28,"cssClass":"pl-c1"}],[{"start":8,"end":54,"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":12,"end":18,"cssClass":"pl-k"}],[],[{"start":8,"end":13,"cssClass":"pl-en"},{"start":16,"end":22,"cssClass":"pl-en"}],[],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":25,"cssClass":"pl-s1"},{"start":26,"end":36,"cssClass":"pl-s1"}],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":21,"cssClass":"pl-s1"},{"start":22,"end":24,"cssClass":"pl-c1"},{"start":25,"end":26,"cssClass":"pl-c1"}],[{"start":12,"end":18,"cssClass":"pl-k"}],[],[{"start":8,"end":15,"cssClass":"pl-s1"},{"start":16,"end":17,"cssClass":"pl-c1"},{"start":18,"end":32,"cssClass":"pl-v"},{"start":33,"end":34,"cssClass":"pl-c1"},{"start":34,"end":38,"cssClass":"pl-s1"},{"start":39,"end":44,"cssClass":"pl-s1"},{"start":46,"end":50,"cssClass":"pl-s1"},{"start":50,"end":51,"cssClass":"pl-c1"},{"start":51,"end":55,"cssClass":"pl-s1"},{"start":56,"end":60,"cssClass":"pl-s1"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":13,"cssClass":"pl-s1"},{"start":14,"end":16,"cssClass":"pl-c1"},{"start":17,"end":25,"cssClass":"pl-en"},{"start":26,"end":31,"cssClass":"pl-en"},{"start":32,"end":42,"cssClass":"pl-s1"}],[{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-en"},{"start":22,"end":23,"cssClass":"pl-s1"}],[{"start":12,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":35,"cssClass":"pl-en"},{"start":36,"end":37,"cssClass":"pl-c1"},{"start":39,"end":40,"cssClass":"pl-s1"},{"start":41,"end":42,"cssClass":"pl-c1"},{"start":43,"end":46,"cssClass":"pl-en"},{"start":47,"end":48,"cssClass":"pl-c1"},{"start":50,"end":54,"cssClass":"pl-s1"},{"start":55,"end":75,"cssClass":"pl-s1"},{"start":76,"end":77,"cssClass":"pl-c1"},{"start":79,"end":89,"cssClass":"pl-s1"},{"start":90,"end":91,"cssClass":"pl-c1"},{"start":92,"end":93,"cssClass":"pl-s1"},{"start":94,"end":95,"cssClass":"pl-c1"},{"start":96,"end":97,"cssClass":"pl-c1"}],[{"start":12,"end":15,"cssClass":"pl-k"},{"start":16,"end":17,"cssClass":"pl-s1"},{"start":18,"end":20,"cssClass":"pl-c1"},{"start":21,"end":29,"cssClass":"pl-en"},{"start":30,"end":35,"cssClass":"pl-en"},{"start":36,"end":37,"cssClass":"pl-s1"},{"start":38,"end":39,"cssClass":"pl-c1"},{"start":40,"end":57,"cssClass":"pl-s1"},{"start":59,"end":60,"cssClass":"pl-s1"}],[{"start":16,"end":97,"cssClass":"pl-c"}],[{"start":16,"end":90,"cssClass":"pl-c"}],[{"start":16,"end":19,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-c1"},{"start":22,"end":24,"cssClass":"pl-s1"},{"start":25,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":31,"end":34,"cssClass":"pl-c1"},{"start":35,"end":37,"cssClass":"pl-c1"},{"start":39,"end":40,"cssClass":"pl-s1"},{"start":41,"end":42,"cssClass":"pl-c1"},{"start":43,"end":44,"cssClass":"pl-s1"}],[{"start":16,"end":23,"cssClass":"pl-s1"},{"start":24,"end":26,"cssClass":"pl-en"},{"start":27,"end":30,"cssClass":"pl-s1"},{"start":32,"end":33,"cssClass":"pl-s1"},{"start":35,"end":36,"cssClass":"pl-s1"}],[],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":35,"cssClass":"pl-s1"}],[{"start":16,"end":23,"cssClass":"pl-s1"},{"start":24,"end":31,"cssClass":"pl-en"}],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":25,"cssClass":"pl-s1"}],[{"start":12,"end":15,"cssClass":"pl-k"},{"start":16,"end":17,"cssClass":"pl-s1"},{"start":18,"end":20,"cssClass":"pl-c1"},{"start":21,"end":26,"cssClass":"pl-en"},{"start":27,"end":37,"cssClass":"pl-s1"},{"start":38,"end":40,"cssClass":"pl-c1"},{"start":41,"end":42,"cssClass":"pl-c1"}],[{"start":16,"end":23,"cssClass":"pl-s1"},{"start":24,"end":28,"cssClass":"pl-en"},{"start":29,"end":30,"cssClass":"pl-s1"},{"start":32,"end":42,"cssClass":"pl-s1"},{"start":43,"end":44,"cssClass":"pl-c1"},{"start":45,"end":46,"cssClass":"pl-s1"},{"start":47,"end":48,"cssClass":"pl-c1"},{"start":49,"end":50,"cssClass":"pl-c1"}],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":24,"cssClass":"pl-s1"}],[{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-c1"},{"start":22,"end":29,"cssClass":"pl-s1"},{"start":30,"end":37,"cssClass":"pl-en"}],[],[{"start":8,"end":15,"cssClass":"pl-s1"},{"start":16,"end":17,"cssClass":"pl-c1"},{"start":18,"end":25,"cssClass":"pl-s1"},{"start":26,"end":40,"cssClass":"pl-en"},{"start":43,"end":45,"cssClass":"pl-k"},{"start":46,"end":50,"cssClass":"pl-s1"},{"start":51,"end":66,"cssClass":"pl-s1"},{"start":67,"end":71,"cssClass":"pl-k"},{"start":72,"end":79,"cssClass":"pl-s1"},{"start":80,"end":87,"cssClass":"pl-en"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":20,"cssClass":"pl-en"},{"start":21,"end":28,"cssClass":"pl-s1"},{"start":30,"end":36,"cssClass":"pl-s1"},{"start":36,"end":37,"cssClass":"pl-c1"},{"start":37,"end":41,"cssClass":"pl-s1"},{"start":42,"end":48,"cssClass":"pl-s1"},{"start":50,"end":57,"cssClass":"pl-s1"},{"start":57,"end":58,"cssClass":"pl-c1"},{"start":58,"end":62,"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":"qft.py","displayUrl":"https://github.com/Qiskit/qiskit/blob/main/qiskit/circuit/library/basis_change/qft.py?raw=true","headerInfo":{"blobSize":"10.3 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":"a8816ad","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FQiskit%2Fqiskit%2Fblob%2Fmain%2Fqiskit%2Fcircuit%2Flibrary%2Fbasis_change%2Fqft.py","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"295","truncatedSloc":"229"},"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/circuit/library/basis_change/qft.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/circuit/library/basis_change/qft.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":"QFT","kind":"class","ident_start":726,"ident_end":729,"extent_start":720,"extent_end":10568,"fully_qualified_name":"QFT","ident_utf16":{"start":{"line_number":23,"utf16_col":6},"end":{"line_number":23,"utf16_col":9}},"extent_utf16":{"start":{"line_number":23,"utf16_col":0},"end":{"line_number":294,"utf16_col":63}}},{"name":"__init__","kind":"function","ident_start":2903,"ident_end":2911,"extent_start":2899,"extent_end":3979,"fully_qualified_name":"QFT.__init__","ident_utf16":{"start":{"line_number":75,"utf16_col":8},"end":{"line_number":75,"utf16_col":16}},"extent_utf16":{"start":{"line_number":75,"utf16_col":4},"end":{"line_number":102,"utf16_col":36}}},{"name":"num_qubits","kind":"function","ident_start":4003,"ident_end":4013,"extent_start":3999,"extent_end":4323,"fully_qualified_name":"QFT.num_qubits","ident_utf16":{"start":{"line_number":105,"utf16_col":8},"end":{"line_number":105,"utf16_col":18}},"extent_utf16":{"start":{"line_number":105,"utf16_col":4},"end":{"line_number":113,"utf16_col":33}}},{"name":"num_qubits","kind":"function","ident_start":4356,"ident_end":4366,"extent_start":4352,"extent_end":4803,"fully_qualified_name":"QFT.num_qubits","ident_utf16":{"start":{"line_number":116,"utf16_col":8},"end":{"line_number":116,"utf16_col":18}},"extent_utf16":{"start":{"line_number":116,"utf16_col":4},"end":{"line_number":129,"utf16_col":68}}},{"name":"approximation_degree","kind":"function","ident_start":4827,"ident_end":4847,"extent_start":4823,"extent_end":5033,"fully_qualified_name":"QFT.approximation_degree","ident_utf16":{"start":{"line_number":132,"utf16_col":8},"end":{"line_number":132,"utf16_col":28}},"extent_utf16":{"start":{"line_number":132,"utf16_col":4},"end":{"line_number":138,"utf16_col":41}}},{"name":"approximation_degree","kind":"function","ident_start":5076,"ident_end":5096,"extent_start":5072,"extent_end":5642,"fully_qualified_name":"QFT.approximation_degree","ident_utf16":{"start":{"line_number":141,"utf16_col":8},"end":{"line_number":141,"utf16_col":28}},"extent_utf16":{"start":{"line_number":141,"utf16_col":4},"end":{"line_number":155,"utf16_col":61}}},{"name":"insert_barriers","kind":"function","ident_start":5666,"ident_end":5681,"extent_start":5662,"extent_end":5895,"fully_qualified_name":"QFT.insert_barriers","ident_utf16":{"start":{"line_number":158,"utf16_col":8},"end":{"line_number":158,"utf16_col":23}},"extent_utf16":{"start":{"line_number":158,"utf16_col":4},"end":{"line_number":164,"utf16_col":36}}},{"name":"insert_barriers","kind":"function","ident_start":5933,"ident_end":5948,"extent_start":5929,"extent_end":6306,"fully_qualified_name":"QFT.insert_barriers","ident_utf16":{"start":{"line_number":167,"utf16_col":8},"end":{"line_number":167,"utf16_col":23}},"extent_utf16":{"start":{"line_number":167,"utf16_col":4},"end":{"line_number":175,"utf16_col":51}}},{"name":"do_swaps","kind":"function","ident_start":6330,"ident_end":6338,"extent_start":6326,"extent_end":6543,"fully_qualified_name":"QFT.do_swaps","ident_utf16":{"start":{"line_number":178,"utf16_col":8},"end":{"line_number":178,"utf16_col":16}},"extent_utf16":{"start":{"line_number":178,"utf16_col":4},"end":{"line_number":184,"utf16_col":29}}},{"name":"do_swaps","kind":"function","ident_start":6574,"ident_end":6582,"extent_start":6570,"extent_end":6898,"fully_qualified_name":"QFT.do_swaps","ident_utf16":{"start":{"line_number":187,"utf16_col":8},"end":{"line_number":187,"utf16_col":16}},"extent_utf16":{"start":{"line_number":187,"utf16_col":4},"end":{"line_number":195,"utf16_col":37}}},{"name":"is_inverse","kind":"function","ident_start":6908,"ident_end":6918,"extent_start":6904,"extent_end":7141,"fully_qualified_name":"QFT.is_inverse","ident_utf16":{"start":{"line_number":197,"utf16_col":8},"end":{"line_number":197,"utf16_col":18}},"extent_utf16":{"start":{"line_number":197,"utf16_col":4},"end":{"line_number":203,"utf16_col":28}}},{"name":"inverse","kind":"function","ident_start":7151,"ident_end":7158,"extent_start":7147,"extent_end":8060,"fully_qualified_name":"QFT.inverse","ident_utf16":{"start":{"line_number":205,"utf16_col":8},"end":{"line_number":205,"utf16_col":15}},"extent_utf16":{"start":{"line_number":205,"utf16_col":4},"end":{"line_number":233,"utf16_col":23}}},{"name":"_warn_if_precision_loss","kind":"function","ident_start":8070,"ident_end":8093,"extent_start":8066,"extent_end":8942,"fully_qualified_name":"QFT._warn_if_precision_loss","ident_utf16":{"start":{"line_number":235,"utf16_col":8},"end":{"line_number":235,"utf16_col":31}},"extent_utf16":{"start":{"line_number":235,"utf16_col":4},"end":{"line_number":249,"utf16_col":13}}},{"name":"_check_configuration","kind":"function","ident_start":8952,"ident_end":8972,"extent_start":8948,"extent_end":9332,"fully_qualified_name":"QFT._check_configuration","ident_utf16":{"start":{"line_number":251,"utf16_col":8},"end":{"line_number":251,"utf16_col":28}},"extent_utf16":{"start":{"line_number":251,"utf16_col":4},"end":{"line_number":259,"utf16_col":20}}},{"name":"_build","kind":"function","ident_start":9342,"ident_end":9348,"extent_start":9338,"extent_end":10568,"fully_qualified_name":"QFT._build","ident_utf16":{"start":{"line_number":261,"utf16_col":8},"end":{"line_number":261,"utf16_col":14}},"extent_utf16":{"start":{"line_number":261,"utf16_col":4},"end":{"line_number":294,"utf16_col":63}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"csrf_tokens":{"/Qiskit/qiskit/branches":{"post":"PmhYnZ1yWjOKFnNbfa67Mj-e64hBn-FxFrXuiGCP01P5zCpe3vU19k5yM_tXIyQnDYcG5Q7-UY_tfYSC4ll60A"},"/repos/preferences":{"post":"5iEhwTDoeOiHJ6Y0KOtWciT0FfiuOx7PyjdoHoXg7VIZGcGMkWEp0yVLikTtDgGHOob-4Y_CAyj8K3fCaEpVQQ"}}},"title":"qiskit/qiskit/circuit/library/basis_change/qft.py at main ยท Qiskit/qiskit"}